@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
@@ -1 +1 @@
1
- {"version":3,"file":"PageHelpers.mjs","sources":["../../../../../admin/src/components/PageHelpers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n EmptyStateLayout,\n type EmptyStateLayoutProps,\n Flex,\n Loader,\n Main,\n MainProps,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { EmptyPermissions, EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useCheckPermissionsQuery } from '../services/auth';\n\n/* -------------------------------------------------------------------------------------------------\n * Main\n * -----------------------------------------------------------------------------------------------*/\ninterface PageMainProps extends MainProps {\n children: React.ReactNode;\n}\n\nconst PageMain = ({ children, ...restProps }: PageMainProps) => {\n return <Main {...restProps}>{children}</Main>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Loading\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingProps {\n /**\n * @default 'Loading content.'\n */\n children?: React.ReactNode;\n}\n\n/**\n * @public\n * @description A loading component that should be rendered as the page\n * whilst you load the content for the aforementioned page.\n */\nconst Loading = ({ children = 'Loading content.' }: LoadingProps) => {\n return (\n <PageMain height=\"100vh\" aria-busy={true}>\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Loader>{children}</Loader>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Error\n * -----------------------------------------------------------------------------------------------*/\ninterface ErrorProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * TODO: should we start passing our errors here so they're persisted on the screen?\n * This could follow something similar to how the global app error works...?\n */\n\n/**\n * @public\n * @description An error component that should be rendered as the page\n * when an error occurs.\n */\nconst Error = (props: ErrorProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n {...props}\n />\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoPermissions\n * -----------------------------------------------------------------------------------------------*/\ninterface NoPermissionsProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when the user does not have the permissions to access the content.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoPermissions = (props: NoPermissionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyPermissions width=\"16rem\" />}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-permissions',\n defaultMessage: \"You don't have the permissions to access that content\",\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoData\n * -----------------------------------------------------------------------------------------------*/\ninterface NoDataProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when there is no data available to display.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoData = (props: NoDataProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\" background=\"neutral100\">\n <Flex alignItems=\"center\" height=\"100%\" width=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n action={props.action}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Protect\n * -----------------------------------------------------------------------------------------------*/\nexport interface ProtectProps {\n /**\n * The children to render if the user has the required permissions.\n * If providing a function, it will be called with an object containing\n * the permissions the user has based on the array you passed to the component.\n */\n children: React.ReactNode | ((args: { permissions: Permission[] }) => React.ReactNode);\n /**\n * The permissions the user needs to have to access the content.\n */\n permissions?: Array<Omit<Partial<Permission>, 'action'> & Pick<Permission, 'action'>>;\n}\n\n/**\n * @public\n * @description A wrapper component that should be used to protect a page. It will check the permissions\n * you pass to it and render the children if the user has the required permissions. If a user does not have ALL\n * the required permissions, it will redirect the user to the home page. Whilst these checks happen it will render\n * the loading component and should the check fail it will render the error component with a notification.\n */\nconst Protect = ({ permissions = [], children }: ProtectProps) => {\n const userPermissions = useAuth('Protect', (state) => state.permissions);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const matchingPermissions = userPermissions.filter(\n (permission) =>\n permissions.findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const shouldCheckConditions = matchingPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n const { isLoading, error, data } = useCheckPermissionsQuery(\n {\n permissions: matchingPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n },\n {\n skip: !shouldCheckConditions,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (isLoading) {\n return <Loading />;\n }\n\n if (error) {\n return <Error />;\n }\n\n const { data: permissionsData } = data || {};\n\n const canAccess =\n shouldCheckConditions && permissionsData\n ? !permissionsData.includes(false)\n : matchingPermissions.length > 0;\n\n if (!canAccess) {\n return <NoPermissions />;\n }\n\n return (\n <>\n {typeof children === 'function' ? children({ permissions: matchingPermissions }) : children}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Title\n * -----------------------------------------------------------------------------------------------*/\nexport interface TitleProps {\n children: string;\n}\n\n/**\n * @public\n * @description This component takes the children (must be a string) and sets\n * it as the title of the html.\n */\nconst Title = ({ children: title }: TitleProps) => {\n React.useEffect(() => {\n document.title = `${title} | Strapi`;\n }, [title]);\n\n return null;\n};\n\nconst Page = {\n Error,\n Loading,\n NoPermissions,\n Protect,\n NoData,\n Main: PageMain,\n Title,\n};\n\nexport { Page };\nexport type { ErrorProps, LoadingProps, NoPermissionsProps, PageMainProps as MainProps };\n"],"names":["PageMain","children","restProps","_jsx","Main","Loading","height","aria-busy","Flex","alignItems","justifyContent","Loader","Error","props","formatMessage","useIntl","EmptyStateLayout","icon","WarningCircle","width","content","id","defaultMessage","NoPermissions","Box","minWidth","EmptyPermissions","NoData","background","EmptyDocuments","action","Protect","permissions","userPermissions","useAuth","state","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","matchingPermissions","filter","permission","findIndex","perm","subject","shouldCheckConditions","some","Array","isArray","conditions","length","isLoading","error","data","useCheckPermissionsQuery","map","skip","React","useEffect","type","message","permissionsData","canAccess","includes","_Fragment","Title","title","document","Page"],"mappings":";;;;;;;;;;;AA2BA,MAAMA,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,SAA0B,EAAA,GAAA;AACzD,IAAA,qBAAOC,GAACC,CAAAA,IAAAA,EAAAA;AAAM,QAAA,GAAGF,SAAS;AAAGD,QAAAA,QAAAA,EAAAA;;AAC/B,CAAA;AAYA;;;;AAIC,IACD,MAAMI,OAAU,GAAA,CAAC,EAAEJ,QAAAA,GAAW,kBAAkB,EAAgB,GAAA;AAC9D,IAAA,qBACEE,GAACH,CAAAA,QAAAA,EAAAA;QAASM,MAAO,EAAA,OAAA;QAAQC,WAAW,EAAA,IAAA;AAClC,QAAA,QAAA,gBAAAJ,GAACK,CAAAA,IAAAA,EAAAA;YAAKC,UAAW,EAAA,QAAA;YAASH,MAAO,EAAA,MAAA;YAAOI,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAP,GAACQ,CAAAA,MAAAA,EAAAA;AAAQV,gBAAAA,QAAAA,EAAAA;;;;AAIjB,CAAA;AAOA;;;;;;;IAUA,MAAMW,QAAQ,CAACC,KAAAA,GAAAA;IACb,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEZ,GAACH,CAAAA,QAAAA,EAAAA;QAASM,MAAO,EAAA,MAAA;AACf,QAAA,QAAA,gBAAAH,GAACK,CAAAA,IAAAA,EAAAA;YAAKC,UAAW,EAAA,QAAA;YAASH,MAAO,EAAA,MAAA;YAAOI,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAP,GAACa,CAAAA,gBAAAA,EAAAA;AACCC,gBAAAA,IAAAA,gBAAMd,GAACe,CAAAA,aAAAA,EAAAA;oBAAcC,KAAM,EAAA;;AAC3BC,gBAAAA,OAAAA,EAASN,aAAc,CAAA;oBACrBO,EAAI,EAAA,iBAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACC,gBAAA,GAAGT;;;;AAKd,CAAA;AAOA;;;;;;IAOA,MAAMU,gBAAgB,CAACV,KAAAA,GAAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEZ,GAACH,CAAAA,QAAAA,EAAAA;QAASM,MAAO,EAAA,MAAA;AACf,QAAA,QAAA,gBAAAH,GAACK,CAAAA,IAAAA,EAAAA;YAAKC,UAAW,EAAA,QAAA;YAASH,MAAO,EAAA,MAAA;YAAOI,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAP,GAACqB,CAAAA,GAAAA,EAAAA;gBAAIC,QAAS,EAAA,KAAA;AACZ,gBAAA,QAAA,gBAAAtB,GAACa,CAAAA,gBAAAA,EAAAA;AACCC,oBAAAA,IAAAA,gBAAMd,GAACuB,CAAAA,gBAAAA,EAAAA;wBAAiBP,KAAM,EAAA;;AAC9BC,oBAAAA,OAAAA,EAASN,aAAc,CAAA;wBACrBO,EAAI,EAAA,qDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACC,oBAAA,GAAGT;;;;;AAMhB,CAAA;AAOA;;;;;;IAOA,MAAMc,SAAS,CAACd,KAAAA,GAAAA;IACd,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEZ,GAACH,CAAAA,QAAAA,EAAAA;QAASM,MAAO,EAAA,MAAA;QAAOsB,UAAW,EAAA,YAAA;AACjC,QAAA,QAAA,gBAAAzB,GAACK,CAAAA,IAAAA,EAAAA;YAAKC,UAAW,EAAA,QAAA;YAASH,MAAO,EAAA,MAAA;YAAOa,KAAM,EAAA,MAAA;YAAOT,cAAe,EAAA,QAAA;AAClE,YAAA,QAAA,gBAAAP,GAACqB,CAAAA,GAAAA,EAAAA;gBAAIC,QAAS,EAAA,KAAA;AACZ,gBAAA,QAAA,gBAAAtB,GAACa,CAAAA,gBAAAA,EAAAA;AACCC,oBAAAA,IAAAA,gBAAMd,GAAC0B,CAAAA,cAAAA,EAAAA;wBAAeV,KAAM,EAAA;;AAC5BW,oBAAAA,MAAAA,EAAQjB,MAAMiB,MAAM;AACpBV,oBAAAA,OAAAA,EAASN,aAAc,CAAA;wBACrBO,EAAI,EAAA,kDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACC,oBAAA,GAAGT;;;;;AAMhB,CAAA;AAkBA;;;;;;IAOA,MAAMkB,UAAU,CAAC,EAAEC,cAAc,EAAE,EAAE/B,QAAQ,EAAgB,GAAA;AAC3D,IAAA,MAAMgC,kBAAkBC,OAAQ,CAAA,SAAA,EAAW,CAACC,KAAAA,GAAUA,MAAMH,WAAW,CAAA;IACvE,MAAM,EAAEI,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;IAEpD,MAAMC,mBAAAA,GAAsBR,gBAAgBS,MAAM,CAChD,CAACC,UACCX,GAAAA,WAAAA,CAAYY,SAAS,CACnB,CAACC,IAAAA,GAASA,KAAKf,MAAM,KAAKa,WAAWb,MAAM,IAAIe,KAAKC,OAAO,KAAKH,UAAWG,CAAAA,OAAO,CAC/E,IAAA,CAAA,CAAA;AAGT,IAAA,MAAMC,wBAAwBN,mBAAoBO,CAAAA,IAAI,CACpD,CAACH,OAASI,KAAMC,CAAAA,OAAO,CAACL,IAAAA,CAAKM,UAAU,CAAKN,IAAAA,IAAAA,CAAKM,UAAU,CAACC,MAAM,GAAG,CAAA,CAAA;IAGvE,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGC,wBACjC,CAAA;AACExB,QAAAA,WAAAA,EAAaS,mBAAoBgB,CAAAA,GAAG,CAAC,CAACZ,QAAU;AAC9Cf,gBAAAA,MAAAA,EAAQe,KAAKf,MAAM;AACnBgB,gBAAAA,OAAAA,EAASD,KAAKC;aAChB,CAAA;KAEF,EAAA;AACEY,QAAAA,IAAAA,EAAM,CAACX;AACT,KAAA,CAAA;AAGFY,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIN,KAAO,EAAA;YACTlB,kBAAmB,CAAA;gBACjByB,IAAM,EAAA,QAAA;AACNC,gBAAAA,OAAAA,EAASvB,cAAee,CAAAA,KAAAA;AAC1B,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA,KAAAA;AAAOf,QAAAA,cAAAA;AAAgBH,QAAAA;AAAmB,KAAA,CAAA;AAE9C,IAAA,IAAIiB,SAAW,EAAA;AACb,QAAA,qBAAOlD,GAACE,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA;AACV;AAEA,IAAA,IAAIiD,KAAO,EAAA;AACT,QAAA,qBAAOnD,GAACS,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;AACV;AAEA,IAAA,MAAM,EAAE2C,IAAMQ,EAAAA,eAAe,EAAE,GAAGR,QAAQ,EAAC;IAE3C,MAAMS,SAAAA,GACJjB,qBAAyBgB,IAAAA,eAAAA,GACrB,CAACA,eAAAA,CAAgBE,QAAQ,CAAC,KAAA,CAAA,GAC1BxB,mBAAoBW,CAAAA,MAAM,GAAG,CAAA;AAEnC,IAAA,IAAI,CAACY,SAAW,EAAA;AACd,QAAA,qBAAO7D,GAACoB,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;AACV;IAEA,qBACEpB,GAAA,CAAA+D,QAAA,EAAA;kBACG,OAAOjE,QAAAA,KAAa,aAAaA,QAAS,CAAA;YAAE+B,WAAaS,EAAAA;SAAyBxC,CAAAA,GAAAA;;AAGzF,CAAA;AASA;;;;AAIC,IACD,MAAMkE,KAAQ,GAAA,CAAC,EAAElE,QAAAA,EAAUmE,KAAK,EAAc,GAAA;AAC5CT,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACdS,QAAAA,QAAAA,CAASD,KAAK,GAAG,CAAC,EAAEA,KAAAA,CAAM,SAAS,CAAC;KACnC,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEV,OAAO,IAAA;AACT,CAAA;AAEA,MAAME,IAAO,GAAA;AACX1D,IAAAA,KAAAA;AACAP,IAAAA,OAAAA;AACAkB,IAAAA,aAAAA;AACAQ,IAAAA,OAAAA;AACAJ,IAAAA,MAAAA;IACAvB,IAAMJ,EAAAA,QAAAA;AACNmE,IAAAA;AACF;;;;"}
1
+ {"version":3,"file":"PageHelpers.mjs","sources":["../../../../../admin/src/components/PageHelpers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n EmptyStateLayout,\n type EmptyStateLayoutProps,\n Flex,\n Loader,\n Main,\n MainProps,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { EmptyPermissions, EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useCheckPermissionsQuery } from '../services/auth';\n\n/* -------------------------------------------------------------------------------------------------\n * Main\n * -----------------------------------------------------------------------------------------------*/\ninterface PageMainProps extends MainProps {\n children: React.ReactNode;\n}\n\nconst PageMain = ({ children, ...restProps }: PageMainProps) => {\n return <Main {...restProps}>{children}</Main>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Loading\n * -----------------------------------------------------------------------------------------------*/\ninterface LoadingProps {\n /**\n * @default 'Loading content.'\n */\n children?: React.ReactNode;\n}\n\n/**\n * @public\n * @description A loading component that should be rendered as the page\n * whilst you load the content for the aforementioned page.\n */\nconst Loading = ({ children = 'Loading content.' }: LoadingProps) => {\n return (\n <PageMain height=\"100dvh\" aria-busy={true}>\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Loader>{children}</Loader>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Error\n * -----------------------------------------------------------------------------------------------*/\ninterface ErrorProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * TODO: should we start passing our errors here so they're persisted on the screen?\n * This could follow something similar to how the global app error works...?\n */\n\n/**\n * @public\n * @description An error component that should be rendered as the page\n * when an error occurs.\n */\nconst Error = (props: ErrorProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n {...props}\n />\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoPermissions\n * -----------------------------------------------------------------------------------------------*/\ninterface NoPermissionsProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when the user does not have the permissions to access the content.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoPermissions = (props: NoPermissionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\">\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyPermissions width=\"16rem\" />}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-permissions',\n defaultMessage: \"You don't have the permissions to access that content\",\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * NoData\n * -----------------------------------------------------------------------------------------------*/\ninterface NoDataProps extends Partial<EmptyStateLayoutProps> {}\n\n/**\n * @public\n * @description A component that should be rendered as the page\n * when there is no data available to display.\n * This component does not check any permissions, it's up to you to decide\n * when it should be rendered.\n */\nconst NoData = (props: NoDataProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <PageMain height=\"100%\" background=\"neutral100\">\n <Flex alignItems=\"center\" height=\"100%\" width=\"100%\" justifyContent=\"center\">\n <Box minWidth=\"50%\">\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n action={props.action}\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n {...props}\n />\n </Box>\n </Flex>\n </PageMain>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Protect\n * -----------------------------------------------------------------------------------------------*/\nexport interface ProtectProps {\n /**\n * The children to render if the user has the required permissions.\n * If providing a function, it will be called with an object containing\n * the permissions the user has based on the array you passed to the component.\n */\n children: React.ReactNode | ((args: { permissions: Permission[] }) => React.ReactNode);\n /**\n * The permissions the user needs to have to access the content.\n */\n permissions?: Array<Omit<Partial<Permission>, 'action'> & Pick<Permission, 'action'>>;\n}\n\n/**\n * @public\n * @description A wrapper component that should be used to protect a page. It will check the permissions\n * you pass to it and render the children if the user has the required permissions. If a user does not have ALL\n * the required permissions, it will redirect the user to the home page. Whilst these checks happen it will render\n * the loading component and should the check fail it will render the error component with a notification.\n */\nconst Protect = ({ permissions = [], children }: ProtectProps) => {\n const userPermissions = useAuth('Protect', (state) => state.permissions);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const matchingPermissions = userPermissions.filter(\n (permission) =>\n permissions.findIndex(\n (perm) => perm.action === permission.action && perm.subject === permission.subject\n ) >= 0\n );\n\n const shouldCheckConditions = matchingPermissions.some(\n (perm) => Array.isArray(perm.conditions) && perm.conditions.length > 0\n );\n\n const { isLoading, error, data } = useCheckPermissionsQuery(\n {\n permissions: matchingPermissions.map((perm) => ({\n action: perm.action,\n subject: perm.subject,\n })),\n },\n {\n skip: !shouldCheckConditions,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (isLoading) {\n return <Loading />;\n }\n\n if (error) {\n return <Error />;\n }\n\n const { data: permissionsData } = data || {};\n\n const canAccess =\n shouldCheckConditions && permissionsData\n ? !permissionsData.includes(false)\n : matchingPermissions.length > 0;\n\n if (!canAccess) {\n return <NoPermissions />;\n }\n\n return (\n <>\n {typeof children === 'function' ? children({ permissions: matchingPermissions }) : children}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Title\n * -----------------------------------------------------------------------------------------------*/\nexport interface TitleProps {\n children: string;\n}\n\n/**\n * @public\n * @description This component takes the children (must be a string) and sets\n * it as the title of the html.\n */\nconst Title = ({ children: title }: TitleProps) => {\n React.useEffect(() => {\n document.title = `${title} | Strapi`;\n }, [title]);\n\n return null;\n};\n\nconst Page = {\n Error,\n Loading,\n NoPermissions,\n Protect,\n NoData,\n Main: PageMain,\n Title,\n};\n\nexport { Page };\nexport type { ErrorProps, LoadingProps, NoPermissionsProps, PageMainProps as MainProps };\n"],"names":["PageMain","children","restProps","_jsx","Main","Loading","height","aria-busy","Flex","alignItems","justifyContent","Loader","Error","props","formatMessage","useIntl","EmptyStateLayout","icon","WarningCircle","width","content","id","defaultMessage","NoPermissions","Box","minWidth","EmptyPermissions","NoData","background","EmptyDocuments","action","Protect","permissions","userPermissions","useAuth","state","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","matchingPermissions","filter","permission","findIndex","perm","subject","shouldCheckConditions","some","Array","isArray","conditions","length","isLoading","error","data","useCheckPermissionsQuery","map","skip","React","useEffect","type","message","permissionsData","canAccess","includes","_Fragment","Title","title","document","Page"],"mappings":"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"}
@@ -10,7 +10,7 @@ var Configuration = require('../features/Configuration.js');
10
10
  var Notifications = require('../features/Notifications.js');
11
11
  var StrapiApp = require('../features/StrapiApp.js');
12
12
  var Tracking = require('../features/Tracking.js');
13
- var Context = require('./GuidedTour/Context.js');
13
+ var GuidedTourProvider = require('./GuidedTour/GuidedTourProvider.js');
14
14
  var LanguageProvider = require('./LanguageProvider.js');
15
15
  var Theme = require('./Theme.js');
16
16
 
@@ -22,7 +22,6 @@ const queryClient = new reactQuery.QueryClient({
22
22
  }
23
23
  });
24
24
  const Providers = ({ children, strapi, store })=>{
25
- const isGuidedTourEnabled = process.env.NODE_ENV !== 'test';
26
25
  return /*#__PURE__*/ jsxRuntime.jsx(StrapiApp.StrapiAppProvider, {
27
26
  components: strapi.library.components,
28
27
  customFields: strapi.customFields,
@@ -49,8 +48,7 @@ const Providers = ({ children, strapi, store })=>{
49
48
  themes: strapi.configurations.themes,
50
49
  children: /*#__PURE__*/ jsxRuntime.jsx(Notifications.NotificationsProvider, {
51
50
  children: /*#__PURE__*/ jsxRuntime.jsx(Tracking.TrackingProvider, {
52
- children: /*#__PURE__*/ jsxRuntime.jsx(Context.GuidedTourContext, {
53
- enabled: isGuidedTourEnabled,
51
+ children: /*#__PURE__*/ jsxRuntime.jsx(GuidedTourProvider.GuidedTourProvider, {
54
52
  children: /*#__PURE__*/ jsxRuntime.jsx(Configuration.ConfigurationProvider, {
55
53
  defaultAuthLogo: strapi.configurations.authLogo,
56
54
  defaultMenuLogo: strapi.configurations.menuLogo,
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.js","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourContext } from './GuidedTour/Context';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n const isGuidedTourEnabled = process.env.NODE_ENV !== 'test';\n\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourContext enabled={isGuidedTourEnabled}>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourContext>\n </TrackingProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","isGuidedTourEnabled","process","env","NODE_ENV","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","NotificationsProvider","TrackingProvider","GuidedTourContext","enabled","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,sBAAY,CAAA;IAClCC,cAAgB,EAAA;QACdC,OAAS,EAAA;YACPC,oBAAsB,EAAA;AACxB;AACF;AACF,CAAA,CAAA;AAQMC,MAAAA,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,MAAMC,mBAAsBC,GAAAA,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,MAAA;AAErD,IAAA,qBACEC,cAACC,CAAAA,2BAAAA,EAAAA;QACCC,UAAYR,EAAAA,MAAAA,CAAOS,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcV,OAAOU,YAAY;AACjCC,QAAAA,OAAAA,EAASX,OAAOW,OAAO;QACvBC,MAAQZ,EAAAA,MAAAA,CAAOS,OAAO,CAACG,MAAM;QAC7BC,IAAMb,EAAAA,MAAAA,CAAOc,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4Bf,OAAOe,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWhB,OAAOgB,SAAS;AAC3BC,QAAAA,OAAAA,EAASjB,OAAOiB,OAAO;AACvBC,QAAAA,IAAAA,EAAMlB,OAAOkB,IAAI;AACjBC,QAAAA,eAAAA,EAAiBnB,OAAOmB,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAMC,EAAAA,YAAAA,GAAiBtB,OAAOoB,gBAAgB,CAACC,MAAMC,YAAcrB,EAAAA,KAAAA,CAAAA;AACtFsB,QAAAA,aAAAA,EAAevB,OAAOuB,aAAa;QACnCC,QAAUxB,EAAAA,MAAAA,CAAOc,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,cAACmB,CAAAA,mBAAAA,EAAAA;YAASxB,KAAOA,EAAAA,KAAAA;AACf,YAAA,QAAA,gBAAAK,cAACoB,CAAAA,8BAAAA,EAAAA;gBAAoBC,MAAQlC,EAAAA,WAAAA;AAC3B,gBAAA,QAAA,gBAAAa,cAACsB,CAAAA,iBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,cAACuB,CAAAA,0BAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,cAACwB,CAAAA,iCAAAA,EAAAA;4BAAiBC,QAAU/B,EAAAA,MAAAA,CAAOgC,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,cAAC4B,CAAAA,WAAAA,EAAAA;gCAAMC,MAAQnC,EAAAA,MAAAA,CAAOgC,cAAc,CAACG,MAAM;AACzC,gCAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,mCAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,cAAC+B,CAAAA,yBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,cAACgC,CAAAA,yBAAAA,EAAAA;4CAAkBC,OAASrC,EAAAA,mBAAAA;AAC1B,4CAAA,QAAA,gBAAAI,cAACkC,CAAAA,mCAAAA,EAAAA;gDACCC,eAAiBzC,EAAAA,MAAAA,CAAOgC,cAAc,CAACU,QAAQ;gDAC/CC,eAAiB3C,EAAAA,MAAAA,CAAOgC,cAAc,CAACY,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyB7C,MAAOgC,CAAAA,cAAc,CAACc,aAAa,CAACC,QAAQ;AAEpEhD,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
1
+ {"version":3,"file":"Providers.js","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","NotificationsProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,sBAAY,CAAA;IAClCC,cAAgB,EAAA;QACdC,OAAS,EAAA;YACPC,oBAAsB,EAAA;AACxB;AACF;AACF,CAAA,CAAA;AAQMC,MAAAA,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,qBACEC,cAACC,CAAAA,2BAAAA,EAAAA;QACCC,UAAYJ,EAAAA,MAAAA,CAAOK,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcN,OAAOM,YAAY;AACjCC,QAAAA,OAAAA,EAASP,OAAOO,OAAO;QACvBC,MAAQR,EAAAA,MAAAA,CAAOK,OAAO,CAACG,MAAM;QAC7BC,IAAMT,EAAAA,MAAAA,CAAOU,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4BX,OAAOW,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWZ,OAAOY,SAAS;AAC3BC,QAAAA,OAAAA,EAASb,OAAOa,OAAO;AACvBC,QAAAA,IAAAA,EAAMd,OAAOc,IAAI;AACjBC,QAAAA,eAAAA,EAAiBf,OAAOe,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAMC,EAAAA,YAAAA,GAAiBlB,OAAOgB,gBAAgB,CAACC,MAAMC,YAAcjB,EAAAA,KAAAA,CAAAA;AACtFkB,QAAAA,aAAAA,EAAenB,OAAOmB,aAAa;QACnCC,QAAUpB,EAAAA,MAAAA,CAAOU,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,cAACmB,CAAAA,mBAAAA,EAAAA;YAASpB,KAAOA,EAAAA,KAAAA;AACf,YAAA,QAAA,gBAAAC,cAACoB,CAAAA,8BAAAA,EAAAA;gBAAoBC,MAAQ9B,EAAAA,WAAAA;AAC3B,gBAAA,QAAA,gBAAAS,cAACsB,CAAAA,iBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,cAACuB,CAAAA,0BAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,cAACwB,CAAAA,iCAAAA,EAAAA;4BAAiBC,QAAU3B,EAAAA,MAAAA,CAAO4B,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,cAAC4B,CAAAA,WAAAA,EAAAA;gCAAMC,MAAQ/B,EAAAA,MAAAA,CAAO4B,cAAc,CAACG,MAAM;AACzC,gCAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,mCAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,cAAC+B,CAAAA,yBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,cAACgC,CAAAA,qCAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAAhC,cAACiC,CAAAA,mCAAAA,EAAAA;gDACCC,eAAiBpC,EAAAA,MAAAA,CAAO4B,cAAc,CAACS,QAAQ;gDAC/CC,eAAiBtC,EAAAA,MAAAA,CAAO4B,cAAc,CAACW,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAO4B,CAAAA,cAAc,CAACa,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
@@ -8,7 +8,7 @@ import { ConfigurationProvider } from '../features/Configuration.mjs';
8
8
  import { NotificationsProvider } from '../features/Notifications.mjs';
9
9
  import { StrapiAppProvider } from '../features/StrapiApp.mjs';
10
10
  import { TrackingProvider } from '../features/Tracking.mjs';
11
- import { GuidedTourContext } from './GuidedTour/Context.mjs';
11
+ import { GuidedTourProvider } from './GuidedTour/GuidedTourProvider.mjs';
12
12
  import { LanguageProvider } from './LanguageProvider.mjs';
13
13
  import { Theme } from './Theme.mjs';
14
14
 
@@ -20,7 +20,6 @@ const queryClient = new QueryClient({
20
20
  }
21
21
  });
22
22
  const Providers = ({ children, strapi, store })=>{
23
- const isGuidedTourEnabled = process.env.NODE_ENV !== 'test';
24
23
  return /*#__PURE__*/ jsx(StrapiAppProvider, {
25
24
  components: strapi.library.components,
26
25
  customFields: strapi.customFields,
@@ -47,8 +46,7 @@ const Providers = ({ children, strapi, store })=>{
47
46
  themes: strapi.configurations.themes,
48
47
  children: /*#__PURE__*/ jsx(NotificationsProvider, {
49
48
  children: /*#__PURE__*/ jsx(TrackingProvider, {
50
- children: /*#__PURE__*/ jsx(GuidedTourContext, {
51
- enabled: isGuidedTourEnabled,
49
+ children: /*#__PURE__*/ jsx(GuidedTourProvider, {
52
50
  children: /*#__PURE__*/ jsx(ConfigurationProvider, {
53
51
  defaultAuthLogo: strapi.configurations.authLogo,
54
52
  defaultMenuLogo: strapi.configurations.menuLogo,
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.mjs","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourContext } from './GuidedTour/Context';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n const isGuidedTourEnabled = process.env.NODE_ENV !== 'test';\n\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourContext enabled={isGuidedTourEnabled}>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourContext>\n </TrackingProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","isGuidedTourEnabled","process","env","NODE_ENV","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","NotificationsProvider","TrackingProvider","GuidedTourContext","enabled","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,WAAY,CAAA;IAClCC,cAAgB,EAAA;QACdC,OAAS,EAAA;YACPC,oBAAsB,EAAA;AACxB;AACF;AACF,CAAA,CAAA;AAQMC,MAAAA,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,MAAMC,mBAAsBC,GAAAA,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,MAAA;AAErD,IAAA,qBACEC,GAACC,CAAAA,iBAAAA,EAAAA;QACCC,UAAYR,EAAAA,MAAAA,CAAOS,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcV,OAAOU,YAAY;AACjCC,QAAAA,OAAAA,EAASX,OAAOW,OAAO;QACvBC,MAAQZ,EAAAA,MAAAA,CAAOS,OAAO,CAACG,MAAM;QAC7BC,IAAMb,EAAAA,MAAAA,CAAOc,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4Bf,OAAOe,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWhB,OAAOgB,SAAS;AAC3BC,QAAAA,OAAAA,EAASjB,OAAOiB,OAAO;AACvBC,QAAAA,IAAAA,EAAMlB,OAAOkB,IAAI;AACjBC,QAAAA,eAAAA,EAAiBnB,OAAOmB,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAMC,EAAAA,YAAAA,GAAiBtB,OAAOoB,gBAAgB,CAACC,MAAMC,YAAcrB,EAAAA,KAAAA,CAAAA;AACtFsB,QAAAA,aAAAA,EAAevB,OAAOuB,aAAa;QACnCC,QAAUxB,EAAAA,MAAAA,CAAOc,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,GAACmB,CAAAA,QAAAA,EAAAA;YAASxB,KAAOA,EAAAA,KAAAA;AACf,YAAA,QAAA,gBAAAK,GAACoB,CAAAA,mBAAAA,EAAAA;gBAAoBC,MAAQlC,EAAAA,WAAAA;AAC3B,gBAAA,QAAA,gBAAAa,GAACsB,CAAAA,YAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,GAACuB,CAAAA,eAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,GAACwB,CAAAA,gBAAAA,EAAAA;4BAAiBC,QAAU/B,EAAAA,MAAAA,CAAOgC,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,GAAC4B,CAAAA,KAAAA,EAAAA;gCAAMC,MAAQnC,EAAAA,MAAAA,CAAOgC,cAAc,CAACG,MAAM;AACzC,gCAAA,QAAA,gBAAA7B,GAAC8B,CAAAA,qBAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,GAAC+B,CAAAA,gBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,GAACgC,CAAAA,iBAAAA,EAAAA;4CAAkBC,OAASrC,EAAAA,mBAAAA;AAC1B,4CAAA,QAAA,gBAAAI,GAACkC,CAAAA,qBAAAA,EAAAA;gDACCC,eAAiBzC,EAAAA,MAAAA,CAAOgC,cAAc,CAACU,QAAQ;gDAC/CC,eAAiB3C,EAAAA,MAAAA,CAAOgC,cAAc,CAACY,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyB7C,MAAOgC,CAAAA,cAAc,CAACc,aAAa,CAACC,QAAQ;AAEpEhD,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
1
+ {"version":3,"file":"Providers.mjs","sources":["../../../../../admin/src/components/Providers.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AuthProvider } from '../features/Auth';\nimport { HistoryProvider } from '../features/BackButton';\nimport { ConfigurationProvider } from '../features/Configuration';\nimport { NotificationsProvider } from '../features/Notifications';\nimport { StrapiAppProvider } from '../features/StrapiApp';\nimport { TrackingProvider } from '../features/Tracking';\n\nimport { GuidedTourProvider } from './GuidedTour/GuidedTourProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { Theme } from './Theme';\n\nimport type { Store } from '../core/store/configure';\nimport type { StrapiApp } from '../StrapiApp';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n strapi: StrapiApp;\n store: Store;\n}\n\nconst Providers = ({ children, strapi, store }: ProvidersProps) => {\n return (\n <StrapiAppProvider\n components={strapi.library.components}\n customFields={strapi.customFields}\n widgets={strapi.widgets}\n fields={strapi.library.fields}\n menu={strapi.router.menu}\n getAdminInjectedComponents={strapi.getAdminInjectedComponents}\n getPlugin={strapi.getPlugin}\n plugins={strapi.plugins}\n rbac={strapi.rbac}\n runHookParallel={strapi.runHookParallel}\n runHookWaterfall={(name, initialValue) => strapi.runHookWaterfall(name, initialValue, store)}\n runHookSeries={strapi.runHookSeries}\n settings={strapi.router.settings}\n >\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <AuthProvider>\n <HistoryProvider>\n <LanguageProvider messages={strapi.configurations.translations}>\n <Theme themes={strapi.configurations.themes}>\n <NotificationsProvider>\n <TrackingProvider>\n <GuidedTourProvider>\n <ConfigurationProvider\n defaultAuthLogo={strapi.configurations.authLogo}\n defaultMenuLogo={strapi.configurations.menuLogo}\n showReleaseNotification={strapi.configurations.notifications.releases}\n >\n {children}\n </ConfigurationProvider>\n </GuidedTourProvider>\n </TrackingProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </HistoryProvider>\n </AuthProvider>\n </QueryClientProvider>\n </Provider>\n </StrapiAppProvider>\n );\n};\n\nexport { Providers };\n"],"names":["queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","Providers","children","strapi","store","_jsx","StrapiAppProvider","components","library","customFields","widgets","fields","menu","router","getAdminInjectedComponents","getPlugin","plugins","rbac","runHookParallel","runHookWaterfall","name","initialValue","runHookSeries","settings","Provider","QueryClientProvider","client","AuthProvider","HistoryProvider","LanguageProvider","messages","configurations","translations","Theme","themes","NotificationsProvider","TrackingProvider","GuidedTourProvider","ConfigurationProvider","defaultAuthLogo","authLogo","defaultMenuLogo","menuLogo","showReleaseNotification","notifications","releases"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAMA,WAAAA,GAAc,IAAIC,WAAY,CAAA;IAClCC,cAAgB,EAAA;QACdC,OAAS,EAAA;YACPC,oBAAsB,EAAA;AACxB;AACF;AACF,CAAA,CAAA;AAQMC,MAAAA,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAkB,GAAA;AAC5D,IAAA,qBACEC,GAACC,CAAAA,iBAAAA,EAAAA;QACCC,UAAYJ,EAAAA,MAAAA,CAAOK,OAAO,CAACD,UAAU;AACrCE,QAAAA,YAAAA,EAAcN,OAAOM,YAAY;AACjCC,QAAAA,OAAAA,EAASP,OAAOO,OAAO;QACvBC,MAAQR,EAAAA,MAAAA,CAAOK,OAAO,CAACG,MAAM;QAC7BC,IAAMT,EAAAA,MAAAA,CAAOU,MAAM,CAACD,IAAI;AACxBE,QAAAA,0BAAAA,EAA4BX,OAAOW,0BAA0B;AAC7DC,QAAAA,SAAAA,EAAWZ,OAAOY,SAAS;AAC3BC,QAAAA,OAAAA,EAASb,OAAOa,OAAO;AACvBC,QAAAA,IAAAA,EAAMd,OAAOc,IAAI;AACjBC,QAAAA,eAAAA,EAAiBf,OAAOe,eAAe;AACvCC,QAAAA,gBAAAA,EAAkB,CAACC,IAAMC,EAAAA,YAAAA,GAAiBlB,OAAOgB,gBAAgB,CAACC,MAAMC,YAAcjB,EAAAA,KAAAA,CAAAA;AACtFkB,QAAAA,aAAAA,EAAenB,OAAOmB,aAAa;QACnCC,QAAUpB,EAAAA,MAAAA,CAAOU,MAAM,CAACU,QAAQ;AAEhC,QAAA,QAAA,gBAAAlB,GAACmB,CAAAA,QAAAA,EAAAA;YAASpB,KAAOA,EAAAA,KAAAA;AACf,YAAA,QAAA,gBAAAC,GAACoB,CAAAA,mBAAAA,EAAAA;gBAAoBC,MAAQ9B,EAAAA,WAAAA;AAC3B,gBAAA,QAAA,gBAAAS,GAACsB,CAAAA,YAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAtB,GAACuB,CAAAA,eAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAvB,GAACwB,CAAAA,gBAAAA,EAAAA;4BAAiBC,QAAU3B,EAAAA,MAAAA,CAAO4B,cAAc,CAACC,YAAY;AAC5D,4BAAA,QAAA,gBAAA3B,GAAC4B,CAAAA,KAAAA,EAAAA;gCAAMC,MAAQ/B,EAAAA,MAAAA,CAAO4B,cAAc,CAACG,MAAM;AACzC,gCAAA,QAAA,gBAAA7B,GAAC8B,CAAAA,qBAAAA,EAAAA;AACC,oCAAA,QAAA,gBAAA9B,GAAC+B,CAAAA,gBAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA/B,GAACgC,CAAAA,kBAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAAhC,GAACiC,CAAAA,qBAAAA,EAAAA;gDACCC,eAAiBpC,EAAAA,MAAAA,CAAO4B,cAAc,CAACS,QAAQ;gDAC/CC,eAAiBtC,EAAAA,MAAAA,CAAO4B,cAAc,CAACW,QAAQ;AAC/CC,gDAAAA,uBAAAA,EAAyBxC,MAAO4B,CAAAA,cAAc,CAACa,aAAa,CAACC,QAAQ;AAEpE3C,gDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;;;;"}
@@ -0,0 +1,353 @@
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 styled = require('styled-components');
7
+ var resizeHandlers = require('../utils/resizeHandlers.js');
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 INDICATOR_SIZE = 20;
30
+ const IndicatorContainer = styled.styled(designSystem.Box)`
31
+ position: absolute;
32
+ z-index: 1;
33
+ pointer-events: none;
34
+ opacity: ${({ $isVisible })=>$isVisible ? 1 : 0};
35
+ transition: opacity 0.2s ease-in-out;
36
+ background: transparent;
37
+ height: ${INDICATOR_SIZE}px;
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ `;
42
+ const DotContainer = styled.styled(designSystem.Box)`
43
+ position: absolute;
44
+ top: 50%;
45
+ left: ${({ $position })=>$position}%;
46
+ transform: translate(-50%, -50%);
47
+ `;
48
+ const Dot = styled.styled(designSystem.Box)`
49
+ width: 6px;
50
+ height: 6px;
51
+ border-radius: 50%;
52
+ background-color: ${({ $isActive, $isCurrent, theme })=>{
53
+ if ($isCurrent) return theme.colors.primary600;
54
+ if ($isActive) return theme.colors.primary500;
55
+ return theme.colors.neutral300;
56
+ }};
57
+ transition: all 0.2s ease-in-out;
58
+ box-shadow: ${({ $isCurrent, theme })=>$isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};
59
+ transform: ${({ $isCurrent })=>$isCurrent ? 'scale(1.2)' : 'scale(1)'};
60
+ `;
61
+ const calculateGapAdjustment = (rowWidth, leftColumns)=>{
62
+ const dotWidth = 6;
63
+ const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary
64
+ const gapAdjustmentPercent = gapAdjustmentPixels / rowWidth * 100;
65
+ // Different adjustments for different positions
66
+ switch(leftColumns){
67
+ case 4:
68
+ return -gapAdjustmentPercent; // Left dot
69
+ case 8:
70
+ return gapAdjustmentPercent; // Right dot
71
+ default:
72
+ return 0;
73
+ }
74
+ };
75
+ const ResizeIndicator = ({ isVisible, position, currentLeftWidth, currentRightWidth, totalColumns = 12, rowPosition })=>{
76
+ // Calculate available resize positions accounting for grid gaps
77
+ const availablePositions = React__namespace.useMemo(()=>{
78
+ const rowWidth = rowPosition?.width || 800;
79
+ return [
80
+ 4,
81
+ 6,
82
+ 8
83
+ ].map((left)=>{
84
+ const right = totalColumns - left;
85
+ const basePosition = left / totalColumns * 100;
86
+ const gapAdjustment = calculateGapAdjustment(rowWidth, left);
87
+ const positionPercent = basePosition + gapAdjustment;
88
+ return {
89
+ left,
90
+ right,
91
+ positionPercent
92
+ };
93
+ });
94
+ }, [
95
+ totalColumns,
96
+ rowPosition?.width
97
+ ]);
98
+ // Find the current position index
99
+ const currentPositionIndex = React__namespace.useMemo(()=>{
100
+ return availablePositions.findIndex((pos)=>pos.left === currentLeftWidth && pos.right === currentRightWidth);
101
+ }, [
102
+ availablePositions,
103
+ currentLeftWidth,
104
+ currentRightWidth
105
+ ]);
106
+ if (!isVisible) {
107
+ return null;
108
+ }
109
+ // Calculate positioning - indicator always spans the full row width
110
+ const indicatorTop = rowPosition ? rowPosition.top - INDICATOR_SIZE : Math.max(10, position.top + position.height / 2 - 40);
111
+ const isCurrent = (index)=>index === currentPositionIndex;
112
+ const isActive = (index)=>Math.abs(index - currentPositionIndex) <= 1;
113
+ return /*#__PURE__*/ jsxRuntime.jsx(IndicatorContainer, {
114
+ $isVisible: isVisible,
115
+ style: {
116
+ left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,
117
+ top: `${indicatorTop}px`,
118
+ width: rowPosition ? `${rowPosition.width}px` : 'auto'
119
+ },
120
+ children: availablePositions.map((pos, index)=>{
121
+ return /*#__PURE__*/ jsxRuntime.jsx(DotContainer, {
122
+ $position: pos.positionPercent,
123
+ children: /*#__PURE__*/ jsxRuntime.jsx(Dot, {
124
+ $isActive: isActive(index),
125
+ $isCurrent: isCurrent(index)
126
+ })
127
+ }, `${pos.left}-${pos.right}`);
128
+ })
129
+ });
130
+ };
131
+ const ResizeHandleContainer = styled.styled(designSystem.Box)`
132
+ position: absolute;
133
+ top: 0;
134
+ bottom: 0;
135
+ width: ${INDICATOR_SIZE}px;
136
+ z-index: 1;
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ opacity: 0.8;
141
+ transition: opacity 0.2s ease-in-out;
142
+ cursor: col-resize;
143
+ background-color: ${({ $isDragging })=>$isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent'};
144
+ `;
145
+ const ResizeHandleBar = styled.styled(designSystem.Box)`
146
+ width: 2px;
147
+ height: 100%;
148
+ background-color: ${({ theme })=>theme.colors.primary500};
149
+ border-radius: 1px;
150
+ opacity: 0;
151
+ transition: opacity 0.2s ease-in-out;
152
+
153
+ ${ResizeHandleContainer}:hover & {
154
+ opacity: 0.8;
155
+ }
156
+
157
+ ${({ $isDragging })=>$isDragging && `opacity: 0.8;`}
158
+ `;
159
+ const WidgetResizeHandle = ({ leftWidgetId, rightWidgetId, leftWidgetWidth, rightWidgetWidth, onResize, saveLayout })=>{
160
+ const [state, setState] = React__namespace.useState({
161
+ isDragging: false,
162
+ startX: 0,
163
+ startLeftWidth: 0,
164
+ startRightWidth: 0,
165
+ position: {
166
+ left: 0,
167
+ top: 0,
168
+ height: 0
169
+ },
170
+ lastResizeValues: {
171
+ leftWidth: 0,
172
+ rightWidth: 0
173
+ },
174
+ currentResizeValues: {
175
+ leftWidth: leftWidgetWidth,
176
+ rightWidth: rightWidgetWidth
177
+ },
178
+ rowPosition: null
179
+ });
180
+ const throttleRef = React__namespace.useRef(null);
181
+ const handleResize = React__namespace.useCallback((deltaColumns)=>{
182
+ // Only resize if there's significant movement (dead zone)
183
+ if (Math.abs(deltaColumns) < 0.25) {
184
+ return;
185
+ }
186
+ // Calculate target widths
187
+ const { targetLeftWidth, targetRightWidth } = resizeHandlers.calculateTargetWidths(deltaColumns, state.startLeftWidth, state.startRightWidth);
188
+ // Validate the resize
189
+ if (!resizeHandlers.isValidResize(targetLeftWidth, targetRightWidth)) {
190
+ return;
191
+ }
192
+ // Update current resize values for the indicator
193
+ setState((prev)=>({
194
+ ...prev,
195
+ currentResizeValues: {
196
+ leftWidth: targetLeftWidth,
197
+ rightWidth: targetRightWidth
198
+ }
199
+ }));
200
+ // Only trigger resize if values have changed
201
+ if (resizeHandlers.shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {
202
+ setState((prev)=>({
203
+ ...prev,
204
+ lastResizeValues: {
205
+ leftWidth: targetLeftWidth,
206
+ rightWidth: targetRightWidth
207
+ }
208
+ }));
209
+ onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);
210
+ }
211
+ }, [
212
+ leftWidgetId,
213
+ rightWidgetId,
214
+ onResize,
215
+ state.startLeftWidth,
216
+ state.startRightWidth,
217
+ state.lastResizeValues
218
+ ]);
219
+ const handlePointerMove = React__namespace.useCallback((e)=>{
220
+ if (!state.isDragging) return;
221
+ // Clear any existing throttle timeout
222
+ if (throttleRef.current) {
223
+ clearTimeout(throttleRef.current);
224
+ }
225
+ // Throttle the resize calls to prevent excessive updates
226
+ throttleRef.current = setTimeout(()=>{
227
+ const deltaX = e.clientX - state.startX;
228
+ const threshold = 120; // Pixels per column unit
229
+ const deltaColumns = Math.round(deltaX / threshold);
230
+ handleResize(deltaColumns);
231
+ }, 0);
232
+ }, [
233
+ state.isDragging,
234
+ state.startX,
235
+ handleResize
236
+ ]);
237
+ // Handle pointer up to end drag
238
+ const handlePointerUp = React__namespace.useCallback(()=>{
239
+ // Clear any pending throttle timeout
240
+ if (throttleRef.current) {
241
+ clearTimeout(throttleRef.current);
242
+ throttleRef.current = null;
243
+ }
244
+ // Save the layout
245
+ saveLayout();
246
+ // Reset last resize values and stop dragging
247
+ setState((prev)=>({
248
+ ...prev,
249
+ lastResizeValues: {
250
+ leftWidth: 0,
251
+ rightWidth: 0
252
+ },
253
+ currentResizeValues: {
254
+ leftWidth: leftWidgetWidth,
255
+ rightWidth: rightWidgetWidth
256
+ },
257
+ isDragging: false
258
+ }));
259
+ }, [
260
+ leftWidgetWidth,
261
+ rightWidgetWidth,
262
+ saveLayout
263
+ ]);
264
+ // Handle pointer down to start drag
265
+ const handlePointerDown = React__namespace.useCallback((e)=>{
266
+ e.preventDefault();
267
+ e.stopPropagation();
268
+ setState((prev)=>({
269
+ ...prev,
270
+ isDragging: true,
271
+ startX: e.clientX,
272
+ startLeftWidth: leftWidgetWidth,
273
+ startRightWidth: rightWidgetWidth
274
+ }));
275
+ }, [
276
+ leftWidgetWidth,
277
+ rightWidgetWidth
278
+ ]);
279
+ // Set up drag event listeners
280
+ React__namespace.useEffect(()=>{
281
+ if (state.isDragging) {
282
+ document.addEventListener('pointermove', handlePointerMove);
283
+ document.addEventListener('pointerup', handlePointerUp);
284
+ return ()=>{
285
+ document.removeEventListener('pointermove', handlePointerMove);
286
+ document.removeEventListener('pointerup', handlePointerUp);
287
+ };
288
+ }
289
+ }, [
290
+ state.isDragging,
291
+ handlePointerMove,
292
+ handlePointerUp
293
+ ]);
294
+ // Set up resize observer for position updates - watching widgets and grid container
295
+ React__namespace.useLayoutEffect(()=>{
296
+ const leftElement = widgetLayout.getWidgetElement(leftWidgetId);
297
+ const rightElement = widgetLayout.getWidgetElement(rightWidgetId);
298
+ const containerElement = widgetLayout.getWidgetGridContainer();
299
+ const updatePosition = ()=>{
300
+ const position = resizeHandlers.calculateResizeHandlePosition(leftElement, rightElement, containerElement);
301
+ const rowPosition = resizeHandlers.calculateRowBounds(leftElement, rightElement, containerElement);
302
+ setState((prev)=>({
303
+ ...prev,
304
+ position,
305
+ rowPosition
306
+ }));
307
+ };
308
+ // Create ResizeObserver to watch widgets and grid container
309
+ const resizeObserver = new ResizeObserver(updatePosition);
310
+ // Observe all relevant elements
311
+ if (leftElement) resizeObserver.observe(leftElement);
312
+ if (rightElement) resizeObserver.observe(rightElement);
313
+ if (containerElement) resizeObserver.observe(containerElement);
314
+ return ()=>{
315
+ resizeObserver.disconnect();
316
+ };
317
+ }, [
318
+ leftWidgetId,
319
+ rightWidgetId
320
+ ]);
321
+ // Cleanup throttle timeout on unmount
322
+ React__namespace.useEffect(()=>{
323
+ return ()=>{
324
+ if (throttleRef.current) {
325
+ clearTimeout(throttleRef.current);
326
+ }
327
+ };
328
+ }, []);
329
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
330
+ children: [
331
+ /*#__PURE__*/ jsxRuntime.jsx(ResizeHandleContainer, {
332
+ onPointerDown: handlePointerDown,
333
+ style: {
334
+ transform: `translate(${state.position.left}px, ${state.position.top}px)`,
335
+ height: `${state.position.height}px`
336
+ },
337
+ children: /*#__PURE__*/ jsxRuntime.jsx(ResizeHandleBar, {
338
+ $isDragging: state.isDragging
339
+ })
340
+ }),
341
+ /*#__PURE__*/ jsxRuntime.jsx(ResizeIndicator, {
342
+ isVisible: state.isDragging,
343
+ position: state.position,
344
+ currentLeftWidth: state.currentResizeValues.leftWidth,
345
+ currentRightWidth: state.currentResizeValues.rightWidth,
346
+ rowPosition: state.rowPosition
347
+ })
348
+ ]
349
+ });
350
+ };
351
+
352
+ exports.WidgetResizeHandle = WidgetResizeHandle;
353
+ //# sourceMappingURL=ResizeIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeIndicator.js","sources":["../../../../../admin/src/components/ResizeIndicator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport {\n isValidResize,\n calculateTargetWidths,\n shouldTriggerResize,\n calculateResizeHandlePosition,\n calculateRowBounds,\n} from '../utils/resizeHandlers';\nimport { getWidgetElement, getWidgetGridContainer } from '../utils/widgetLayout';\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\nconst INDICATOR_SIZE = 20;\n\ninterface ResizeIndicatorProps {\n isVisible: boolean;\n position: { left: number; top: number; height: number };\n currentLeftWidth: number;\n currentRightWidth: number;\n totalColumns?: number;\n rowPosition?: { left: number; top: number; width: number; height: number } | null;\n}\n\nconst IndicatorContainer = styled(Box)<{ $isVisible: boolean }>`\n position: absolute;\n z-index: 1;\n pointer-events: none;\n opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};\n transition: opacity 0.2s ease-in-out;\n background: transparent;\n height: ${INDICATOR_SIZE}px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DotContainer = styled(Box)<{ $position: number }>`\n position: absolute;\n top: 50%;\n left: ${({ $position }) => $position}%;\n transform: translate(-50%, -50%);\n`;\n\nconst Dot = styled(Box)<{ $isActive: boolean; $isCurrent: boolean }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ $isActive, $isCurrent, theme }) => {\n if ($isCurrent) return theme.colors.primary600;\n if ($isActive) return theme.colors.primary500;\n return theme.colors.neutral300;\n }};\n transition: all 0.2s ease-in-out;\n box-shadow: ${({ $isCurrent, theme }) =>\n $isCurrent ? `0 0 0 3px ${theme.colors.primary100}` : 'none'};\n transform: ${({ $isCurrent }) => ($isCurrent ? 'scale(1.2)' : 'scale(1)')};\n`;\n\nconst calculateGapAdjustment = (rowWidth: number, leftColumns: number): number => {\n const dotWidth = 6;\n const gapAdjustmentPixels = dotWidth / 2; // Half dot width to center on boundary\n const gapAdjustmentPercent = (gapAdjustmentPixels / rowWidth) * 100;\n\n // Different adjustments for different positions\n switch (leftColumns) {\n case 4:\n return -gapAdjustmentPercent; // Left dot\n case 8:\n return gapAdjustmentPercent; // Right dot\n default: // Center dot\n return 0;\n }\n};\n\nconst ResizeIndicator = ({\n isVisible,\n position,\n currentLeftWidth,\n currentRightWidth,\n totalColumns = 12,\n rowPosition,\n}: ResizeIndicatorProps) => {\n // Calculate available resize positions accounting for grid gaps\n const availablePositions = React.useMemo(() => {\n const rowWidth = rowPosition?.width || 800;\n\n return [4, 6, 8].map((left) => {\n const right = totalColumns - left;\n const basePosition = (left / totalColumns) * 100;\n const gapAdjustment = calculateGapAdjustment(rowWidth, left);\n const positionPercent = basePosition + gapAdjustment;\n\n return { left, right, positionPercent };\n });\n }, [totalColumns, rowPosition?.width]);\n\n // Find the current position index\n const currentPositionIndex = React.useMemo(() => {\n return availablePositions.findIndex(\n (pos) => pos.left === currentLeftWidth && pos.right === currentRightWidth\n );\n }, [availablePositions, currentLeftWidth, currentRightWidth]);\n\n if (!isVisible) {\n return null;\n }\n\n // Calculate positioning - indicator always spans the full row width\n const indicatorTop = rowPosition\n ? rowPosition.top - INDICATOR_SIZE\n : Math.max(10, position.top + position.height / 2 - 40);\n const isCurrent = (index: number) => index === currentPositionIndex;\n const isActive = (index: number) => Math.abs(index - currentPositionIndex) <= 1;\n\n return (\n <IndicatorContainer\n $isVisible={isVisible}\n style={{\n left: rowPosition ? `${rowPosition.left}px` : `${position.left + 10}px`,\n top: `${indicatorTop}px`,\n width: rowPosition ? `${rowPosition.width}px` : 'auto',\n }}\n >\n {availablePositions.map((pos, index) => {\n return (\n <DotContainer key={`${pos.left}-${pos.right}`} $position={pos.positionPercent}>\n <Dot $isActive={isActive(index)} $isCurrent={isCurrent(index)} />\n </DotContainer>\n );\n })}\n </IndicatorContainer>\n );\n};\nconst ResizeHandleContainer = styled(Box)<{ $isDragging?: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: ${INDICATOR_SIZE}px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s ease-in-out;\n cursor: col-resize;\n background-color: ${({ $isDragging }) => ($isDragging ? 'rgba(0, 0, 0, 0.1)' : 'transparent')};\n`;\n\nconst ResizeHandleBar = styled(Box)<{ $isDragging?: boolean }>`\n width: 2px;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.primary500};\n border-radius: 1px;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n ${ResizeHandleContainer}:hover & {\n opacity: 0.8;\n }\n\n ${({ $isDragging }) => $isDragging && `opacity: 0.8;`}\n`;\n\ninterface WidgetResizeHandleProps {\n leftWidgetId: string;\n rightWidgetId: string;\n leftWidgetWidth: number;\n rightWidgetWidth: number;\n onResize: (\n leftWidgetId: string,\n rightWidgetId: string,\n newLeftWidth: number,\n newRightWidth: number\n ) => void;\n saveLayout: () => void;\n filteredWidgets?: WidgetWithUID[];\n}\n\nexport const WidgetResizeHandle = ({\n leftWidgetId,\n rightWidgetId,\n leftWidgetWidth,\n rightWidgetWidth,\n onResize,\n saveLayout,\n}: WidgetResizeHandleProps) => {\n const [state, setState] = React.useState({\n isDragging: false,\n startX: 0,\n startLeftWidth: 0,\n startRightWidth: 0,\n position: { left: 0, top: 0, height: 0 },\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n rowPosition: null as { left: number; top: number; width: number; height: number } | null,\n });\n\n const throttleRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleResize = React.useCallback(\n (deltaColumns: number) => {\n // Only resize if there's significant movement (dead zone)\n if (Math.abs(deltaColumns) < 0.25) {\n return;\n }\n\n // Calculate target widths\n const { targetLeftWidth, targetRightWidth } = calculateTargetWidths(\n deltaColumns,\n state.startLeftWidth,\n state.startRightWidth\n );\n\n // Validate the resize\n if (!isValidResize(targetLeftWidth, targetRightWidth)) {\n return;\n }\n\n // Update current resize values for the indicator\n setState((prev) => ({\n ...prev,\n currentResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n\n // Only trigger resize if values have changed\n if (shouldTriggerResize(targetLeftWidth, targetRightWidth, state.lastResizeValues)) {\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: targetLeftWidth, rightWidth: targetRightWidth },\n }));\n onResize(leftWidgetId, rightWidgetId, targetLeftWidth, targetRightWidth);\n }\n },\n [\n leftWidgetId,\n rightWidgetId,\n onResize,\n state.startLeftWidth,\n state.startRightWidth,\n state.lastResizeValues,\n ]\n );\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!state.isDragging) return;\n\n // Clear any existing throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n\n // Throttle the resize calls to prevent excessive updates\n throttleRef.current = setTimeout(() => {\n const deltaX = e.clientX - state.startX;\n const threshold = 120; // Pixels per column unit\n const deltaColumns = Math.round(deltaX / threshold);\n\n handleResize(deltaColumns);\n }, 0);\n },\n [state.isDragging, state.startX, handleResize]\n );\n\n // Handle pointer up to end drag\n const handlePointerUp = React.useCallback(() => {\n // Clear any pending throttle timeout\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n throttleRef.current = null;\n }\n\n // Save the layout\n saveLayout();\n\n // Reset last resize values and stop dragging\n setState((prev) => ({\n ...prev,\n lastResizeValues: { leftWidth: 0, rightWidth: 0 },\n currentResizeValues: { leftWidth: leftWidgetWidth, rightWidth: rightWidgetWidth },\n isDragging: false,\n }));\n }, [leftWidgetWidth, rightWidgetWidth, saveLayout]);\n\n // Handle pointer down to start drag\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setState((prev) => ({\n ...prev,\n isDragging: true,\n startX: e.clientX,\n startLeftWidth: leftWidgetWidth,\n startRightWidth: rightWidgetWidth,\n }));\n },\n [leftWidgetWidth, rightWidgetWidth]\n );\n\n // Set up drag event listeners\n React.useEffect(() => {\n if (state.isDragging) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }\n }, [state.isDragging, handlePointerMove, handlePointerUp]);\n\n // Set up resize observer for position updates - watching widgets and grid container\n React.useLayoutEffect(() => {\n const leftElement = getWidgetElement(leftWidgetId);\n const rightElement = getWidgetElement(rightWidgetId);\n const containerElement = getWidgetGridContainer();\n\n const updatePosition = () => {\n const position = calculateResizeHandlePosition(leftElement, rightElement, containerElement);\n const rowPosition = calculateRowBounds(leftElement, rightElement, containerElement);\n\n setState((prev) => ({\n ...prev,\n position,\n rowPosition,\n }));\n };\n\n // Create ResizeObserver to watch widgets and grid container\n const resizeObserver = new ResizeObserver(updatePosition);\n\n // Observe all relevant elements\n if (leftElement) resizeObserver.observe(leftElement);\n if (rightElement) resizeObserver.observe(rightElement);\n if (containerElement) resizeObserver.observe(containerElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [leftWidgetId, rightWidgetId]);\n\n // Cleanup throttle timeout on unmount\n React.useEffect(() => {\n return () => {\n if (throttleRef.current) {\n clearTimeout(throttleRef.current);\n }\n };\n }, []);\n\n return (\n <>\n <ResizeHandleContainer\n onPointerDown={handlePointerDown}\n style={{\n transform: `translate(${state.position.left}px, ${state.position.top}px)`,\n height: `${state.position.height}px`,\n }}\n >\n <ResizeHandleBar $isDragging={state.isDragging} />\n </ResizeHandleContainer>\n\n <ResizeIndicator\n isVisible={state.isDragging}\n position={state.position}\n currentLeftWidth={state.currentResizeValues.leftWidth}\n currentRightWidth={state.currentResizeValues.rightWidth}\n rowPosition={state.rowPosition}\n />\n </>\n );\n};\n"],"names":["INDICATOR_SIZE","IndicatorContainer","styled","Box","$isVisible","DotContainer","$position","Dot","$isActive","$isCurrent","theme","colors","primary600","primary500","neutral300","primary100","calculateGapAdjustment","rowWidth","leftColumns","dotWidth","gapAdjustmentPixels","gapAdjustmentPercent","ResizeIndicator","isVisible","position","currentLeftWidth","currentRightWidth","totalColumns","rowPosition","availablePositions","React","useMemo","width","map","left","right","basePosition","gapAdjustment","positionPercent","currentPositionIndex","findIndex","pos","indicatorTop","top","Math","max","height","isCurrent","index","isActive","abs","_jsx","style","ResizeHandleContainer","$isDragging","ResizeHandleBar","WidgetResizeHandle","leftWidgetId","rightWidgetId","leftWidgetWidth","rightWidgetWidth","onResize","saveLayout","state","setState","useState","isDragging","startX","startLeftWidth","startRightWidth","lastResizeValues","leftWidth","rightWidth","currentResizeValues","throttleRef","useRef","handleResize","useCallback","deltaColumns","targetLeftWidth","targetRightWidth","calculateTargetWidths","isValidResize","prev","shouldTriggerResize","handlePointerMove","e","current","clearTimeout","setTimeout","deltaX","clientX","threshold","round","handlePointerUp","handlePointerDown","preventDefault","stopPropagation","useEffect","document","addEventListener","removeEventListener","useLayoutEffect","leftElement","getWidgetElement","rightElement","containerElement","getWidgetGridContainer","updatePosition","calculateResizeHandlePosition","calculateRowBounds","resizeObserver","ResizeObserver","observe","disconnect","_jsxs","_Fragment","onPointerDown","transform"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAMA,cAAiB,GAAA,EAAA;AAWvB,MAAMC,kBAAAA,GAAqBC,aAAOC,CAAAA,gBAAAA,CAA6B;;;;AAIpD,WAAA,EAAE,CAAC,EAAEC,UAAU,EAAE,GAAMA,UAAAA,GAAa,IAAI,CAAG,CAAA;;;AAG5C,UAAA,EAAEJ,cAAe,CAAA;;;;AAI3B,CAAC;AAED,MAAMK,YAAAA,GAAeH,aAAOC,CAAAA,gBAAAA,CAA2B;;;AAG/C,QAAA,EAAE,CAAC,EAAEG,SAAS,EAAE,GAAKA,SAAU,CAAA;;AAEvC,CAAC;AAED,MAAMC,GAAAA,GAAML,aAAOC,CAAAA,gBAAAA,CAAiD;;;;AAIhD,oBAAA,EAAE,CAAC,EAAEK,SAAS,EAAEC,UAAU,EAAEC,KAAK,EAAE,GAAA;AACnD,IAAA,IAAID,UAAY,EAAA,OAAOC,KAAMC,CAAAA,MAAM,CAACC,UAAU;AAC9C,IAAA,IAAIJ,SAAW,EAAA,OAAOE,KAAMC,CAAAA,MAAM,CAACE,UAAU;IAC7C,OAAOH,KAAAA,CAAMC,MAAM,CAACG,UAAU;AAChC,CAAE,CAAA;;AAEU,cAAA,EAAE,CAAC,EAAEL,UAAU,EAAEC,KAAK,EAAE,GAClCD,UAAa,GAAA,CAAC,UAAU,EAAEC,MAAMC,MAAM,CAACI,UAAU,CAAC,CAAC,GAAG,MAAO,CAAA;AACpD,aAAA,EAAE,CAAC,EAAEN,UAAU,EAAE,GAAMA,UAAAA,GAAa,eAAe,UAAY,CAAA;AAC5E,CAAC;AAED,MAAMO,sBAAAA,GAAyB,CAACC,QAAkBC,EAAAA,WAAAA,GAAAA;AAChD,IAAA,MAAMC,QAAW,GAAA,CAAA;IACjB,MAAMC,mBAAAA,GAAsBD,QAAW,GAAA,CAAA,CAAA;IACvC,MAAME,oBAAAA,GAAuB,mBAACD,GAAsBH,QAAY,GAAA,GAAA;;IAGhE,OAAQC,WAAAA;QACN,KAAK,CAAA;YACH,OAAO,CAACG;QACV,KAAK,CAAA;AACH,YAAA,OAAOA;AACT,QAAA;YACE,OAAO,CAAA;AACX;AACF,CAAA;AAEA,MAAMC,eAAkB,GAAA,CAAC,EACvBC,SAAS,EACTC,QAAQ,EACRC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAAA,GAAe,EAAE,EACjBC,WAAW,EACU,GAAA;;IAErB,MAAMC,kBAAAA,GAAqBC,gBAAMC,CAAAA,OAAO,CAAC,IAAA;QACvC,MAAMd,QAAAA,GAAWW,aAAaI,KAAS,IAAA,GAAA;QAEvC,OAAO;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA;SAAE,CAACC,GAAG,CAAC,CAACC,IAAAA,GAAAA;AACpB,YAAA,MAAMC,QAAQR,YAAeO,GAAAA,IAAAA;YAC7B,MAAME,YAAAA,GAAe,IAACF,GAAOP,YAAgB,GAAA,GAAA;YAC7C,MAAMU,aAAAA,GAAgBrB,uBAAuBC,QAAUiB,EAAAA,IAAAA,CAAAA;AACvD,YAAA,MAAMI,kBAAkBF,YAAeC,GAAAA,aAAAA;YAEvC,OAAO;AAAEH,gBAAAA,IAAAA;AAAMC,gBAAAA,KAAAA;AAAOG,gBAAAA;AAAgB,aAAA;AACxC,SAAA,CAAA;KACC,EAAA;AAACX,QAAAA,YAAAA;QAAcC,WAAaI,EAAAA;AAAM,KAAA,CAAA;;IAGrC,MAAMO,oBAAAA,GAAuBT,gBAAMC,CAAAA,OAAO,CAAC,IAAA;QACzC,OAAOF,kBAAAA,CAAmBW,SAAS,CACjC,CAACC,GAAAA,GAAQA,GAAIP,CAAAA,IAAI,KAAKT,gBAAAA,IAAoBgB,GAAIN,CAAAA,KAAK,KAAKT,iBAAAA,CAAAA;KAEzD,EAAA;AAACG,QAAAA,kBAAAA;AAAoBJ,QAAAA,gBAAAA;AAAkBC,QAAAA;AAAkB,KAAA,CAAA;AAE5D,IAAA,IAAI,CAACH,SAAW,EAAA;QACd,OAAO,IAAA;AACT;;AAGA,IAAA,MAAMmB,eAAed,WACjBA,GAAAA,WAAAA,CAAYe,GAAG,GAAG3C,iBAClB4C,IAAKC,CAAAA,GAAG,CAAC,EAAA,EAAIrB,SAASmB,GAAG,GAAGnB,QAASsB,CAAAA,MAAM,GAAG,CAAI,GAAA,EAAA,CAAA;IACtD,MAAMC,SAAAA,GAAY,CAACC,KAAAA,GAAkBA,KAAUT,KAAAA,oBAAAA;AAC/C,IAAA,MAAMU,WAAW,CAACD,KAAAA,GAAkBJ,KAAKM,GAAG,CAACF,QAAQT,oBAAyB,CAAA,IAAA,CAAA;AAE9E,IAAA,qBACEY,cAAClD,CAAAA,kBAAAA,EAAAA;QACCG,UAAYmB,EAAAA,SAAAA;QACZ6B,KAAO,EAAA;AACLlB,YAAAA,IAAAA,EAAMN,cAAc,CAAC,EAAEA,WAAYM,CAAAA,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEV,QAASU,CAAAA,IAAI,GAAG,EAAA,CAAG,EAAE,CAAC;AACvES,YAAAA,GAAAA,EAAK,CAAC,EAAED,YAAa,CAAA,EAAE,CAAC;YACxBV,KAAOJ,EAAAA,WAAAA,GAAc,CAAC,EAAEA,WAAAA,CAAYI,KAAK,CAAC,EAAE,CAAC,GAAG;AAClD,SAAA;kBAECH,kBAAmBI,CAAAA,GAAG,CAAC,CAACQ,GAAKO,EAAAA,KAAAA,GAAAA;AAC5B,YAAA,qBACEG,cAAC9C,CAAAA,YAAAA,EAAAA;AAA8CC,gBAAAA,SAAAA,EAAWmC,IAAIH,eAAe;AAC3E,gBAAA,QAAA,gBAAAa,cAAC5C,CAAAA,GAAAA,EAAAA;AAAIC,oBAAAA,SAAAA,EAAWyC,QAASD,CAAAA,KAAAA,CAAAA;AAAQvC,oBAAAA,UAAAA,EAAYsC,SAAUC,CAAAA,KAAAA;;eADtC,CAAC,EAAEP,IAAIP,IAAI,CAAC,CAAC,EAAEO,GAAAA,CAAIN,KAAK,CAAC,CAAC,CAAA;AAIjD,SAAA;;AAGN,CAAA;AACA,MAAMkB,qBAAAA,GAAwBnD,aAAOC,CAAAA,gBAAAA,CAA+B;;;;AAI3D,SAAA,EAAEH,cAAe,CAAA;;;;;;;;AAQN,oBAAA,EAAE,CAAC,EAAEsD,WAAW,EAAE,GAAMA,WAAAA,GAAc,uBAAuB,aAAe,CAAA;AAChG,CAAC;AAED,MAAMC,eAAAA,GAAkBrD,aAAOC,CAAAA,gBAAAA,CAA+B;;;oBAG1C,EAAE,CAAC,EAAEO,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;;;;;AAK3D,EAAA,EAAEwC,qBAAsB,CAAA;;;;EAIxB,EAAE,CAAC,EAAEC,WAAW,EAAE,GAAKA,WAAe,IAAA,CAAC,aAAa,CAAC;AACvD,CAAC;AAiBYE,MAAAA,kBAAAA,GAAqB,CAAC,EACjCC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,EACc,GAAA;AACxB,IAAA,MAAM,CAACC,KAAOC,EAAAA,QAAAA,CAAS,GAAGlC,gBAAAA,CAAMmC,QAAQ,CAAC;QACvCC,UAAY,EAAA,KAAA;QACZC,MAAQ,EAAA,CAAA;QACRC,cAAgB,EAAA,CAAA;QAChBC,eAAiB,EAAA,CAAA;QACjB7C,QAAU,EAAA;YAAEU,IAAM,EAAA,CAAA;YAAGS,GAAK,EAAA,CAAA;YAAGG,MAAQ,EAAA;AAAE,SAAA;QACvCwB,gBAAkB,EAAA;YAAEC,SAAW,EAAA,CAAA;YAAGC,UAAY,EAAA;AAAE,SAAA;QAChDC,mBAAqB,EAAA;YAAEF,SAAWZ,EAAAA,eAAAA;YAAiBa,UAAYZ,EAAAA;AAAiB,SAAA;QAChFhC,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAM8C,WAAAA,GAAc5C,gBAAM6C,CAAAA,MAAM,CAAwB,IAAA,CAAA;AAExD,IAAA,MAAMC,YAAe9C,GAAAA,gBAAAA,CAAM+C,WAAW,CACpC,CAACC,YAAAA,GAAAA;;AAEC,QAAA,IAAIlC,IAAKM,CAAAA,GAAG,CAAC4B,YAAAA,CAAAA,GAAgB,IAAM,EAAA;AACjC,YAAA;AACF;;AAGA,QAAA,MAAM,EAAEC,eAAe,EAAEC,gBAAgB,EAAE,GAAGC,oCAC5CH,CAAAA,YAAAA,EACAf,KAAMK,CAAAA,cAAc,EACpBL,KAAAA,CAAMM,eAAe,CAAA;;QAIvB,IAAI,CAACa,4BAAcH,CAAAA,eAAAA,EAAiBC,gBAAmB,CAAA,EAAA;AACrD,YAAA;AACF;;QAGAhB,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPV,mBAAqB,EAAA;oBAAEF,SAAWQ,EAAAA,eAAAA;oBAAiBP,UAAYQ,EAAAA;AAAiB;aAClF,CAAA,CAAA;;AAGA,QAAA,IAAII,kCAAoBL,CAAAA,eAAAA,EAAiBC,gBAAkBjB,EAAAA,KAAAA,CAAMO,gBAAgB,CAAG,EAAA;YAClFN,QAAS,CAAA,CAACmB,QAAU;AAClB,oBAAA,GAAGA,IAAI;oBACPb,gBAAkB,EAAA;wBAAEC,SAAWQ,EAAAA,eAAAA;wBAAiBP,UAAYQ,EAAAA;AAAiB;iBAC/E,CAAA,CAAA;YACAnB,QAASJ,CAAAA,YAAAA,EAAcC,eAAeqB,eAAiBC,EAAAA,gBAAAA,CAAAA;AACzD;KAEF,EAAA;AACEvB,QAAAA,YAAAA;AACAC,QAAAA,aAAAA;AACAG,QAAAA,QAAAA;AACAE,QAAAA,KAAAA,CAAMK,cAAc;AACpBL,QAAAA,KAAAA,CAAMM,eAAe;AACrBN,QAAAA,KAAAA,CAAMO;AACP,KAAA,CAAA;AAGH,IAAA,MAAMe,iBAAoBvD,GAAAA,gBAAAA,CAAM+C,WAAW,CACzC,CAACS,CAAAA,GAAAA;QACC,IAAI,CAACvB,KAAMG,CAAAA,UAAU,EAAE;;QAGvB,IAAIQ,WAAAA,CAAYa,OAAO,EAAE;AACvBC,YAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAClC;;QAGAb,WAAYa,CAAAA,OAAO,GAAGE,UAAW,CAAA,IAAA;AAC/B,YAAA,MAAMC,MAASJ,GAAAA,CAAAA,CAAEK,OAAO,GAAG5B,MAAMI,MAAM;YACvC,MAAMyB,SAAAA,GAAY;AAClB,YAAA,MAAMd,YAAelC,GAAAA,IAAAA,CAAKiD,KAAK,CAACH,MAASE,GAAAA,SAAAA,CAAAA;YAEzChB,YAAaE,CAAAA,YAAAA,CAAAA;SACZ,EAAA,CAAA,CAAA;KAEL,EAAA;AAACf,QAAAA,KAAAA,CAAMG,UAAU;AAAEH,QAAAA,KAAAA,CAAMI,MAAM;AAAES,QAAAA;AAAa,KAAA,CAAA;;IAIhD,MAAMkB,eAAAA,GAAkBhE,gBAAM+C,CAAAA,WAAW,CAAC,IAAA;;QAExC,IAAIH,WAAAA,CAAYa,OAAO,EAAE;AACvBC,YAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAChCb,YAAAA,WAAAA,CAAYa,OAAO,GAAG,IAAA;AACxB;;AAGAzB,QAAAA,UAAAA,EAAAA;;QAGAE,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPb,gBAAkB,EAAA;oBAAEC,SAAW,EAAA,CAAA;oBAAGC,UAAY,EAAA;AAAE,iBAAA;gBAChDC,mBAAqB,EAAA;oBAAEF,SAAWZ,EAAAA,eAAAA;oBAAiBa,UAAYZ,EAAAA;AAAiB,iBAAA;gBAChFM,UAAY,EAAA;aACd,CAAA,CAAA;KACC,EAAA;AAACP,QAAAA,eAAAA;AAAiBC,QAAAA,gBAAAA;AAAkBE,QAAAA;AAAW,KAAA,CAAA;;AAGlD,IAAA,MAAMiC,iBAAoBjE,GAAAA,gBAAAA,CAAM+C,WAAW,CACzC,CAACS,CAAAA,GAAAA;AACCA,QAAAA,CAAAA,CAAEU,cAAc,EAAA;AAChBV,QAAAA,CAAAA,CAAEW,eAAe,EAAA;QAEjBjC,QAAS,CAAA,CAACmB,QAAU;AAClB,gBAAA,GAAGA,IAAI;gBACPjB,UAAY,EAAA,IAAA;AACZC,gBAAAA,MAAAA,EAAQmB,EAAEK,OAAO;gBACjBvB,cAAgBT,EAAAA,eAAAA;gBAChBU,eAAiBT,EAAAA;aACnB,CAAA,CAAA;KAEF,EAAA;AAACD,QAAAA,eAAAA;AAAiBC,QAAAA;AAAiB,KAAA,CAAA;;AAIrC9B,IAAAA,gBAAAA,CAAMoE,SAAS,CAAC,IAAA;QACd,IAAInC,KAAAA,CAAMG,UAAU,EAAE;YACpBiC,QAASC,CAAAA,gBAAgB,CAAC,aAAef,EAAAA,iBAAAA,CAAAA;YACzCc,QAASC,CAAAA,gBAAgB,CAAC,WAAaN,EAAAA,eAAAA,CAAAA;YAEvC,OAAO,IAAA;gBACLK,QAASE,CAAAA,mBAAmB,CAAC,aAAehB,EAAAA,iBAAAA,CAAAA;gBAC5Cc,QAASE,CAAAA,mBAAmB,CAAC,WAAaP,EAAAA,eAAAA,CAAAA;AAC5C,aAAA;AACF;KACC,EAAA;AAAC/B,QAAAA,KAAAA,CAAMG,UAAU;AAAEmB,QAAAA,iBAAAA;AAAmBS,QAAAA;AAAgB,KAAA,CAAA;;AAGzDhE,IAAAA,gBAAAA,CAAMwE,eAAe,CAAC,IAAA;AACpB,QAAA,MAAMC,cAAcC,6BAAiB/C,CAAAA,YAAAA,CAAAA;AACrC,QAAA,MAAMgD,eAAeD,6BAAiB9C,CAAAA,aAAAA,CAAAA;AACtC,QAAA,MAAMgD,gBAAmBC,GAAAA,mCAAAA,EAAAA;AAEzB,QAAA,MAAMC,cAAiB,GAAA,IAAA;YACrB,MAAMpF,QAAAA,GAAWqF,4CAA8BN,CAAAA,WAAAA,EAAaE,YAAcC,EAAAA,gBAAAA,CAAAA;YAC1E,MAAM9E,WAAAA,GAAckF,iCAAmBP,CAAAA,WAAAA,EAAaE,YAAcC,EAAAA,gBAAAA,CAAAA;YAElE1C,QAAS,CAAA,CAACmB,QAAU;AAClB,oBAAA,GAAGA,IAAI;AACP3D,oBAAAA,QAAAA;AACAI,oBAAAA;iBACF,CAAA,CAAA;AACF,SAAA;;QAGA,MAAMmF,cAAAA,GAAiB,IAAIC,cAAeJ,CAAAA,cAAAA,CAAAA;;QAG1C,IAAIL,WAAAA,EAAaQ,cAAeE,CAAAA,OAAO,CAACV,WAAAA,CAAAA;QACxC,IAAIE,YAAAA,EAAcM,cAAeE,CAAAA,OAAO,CAACR,YAAAA,CAAAA;QACzC,IAAIC,gBAAAA,EAAkBK,cAAeE,CAAAA,OAAO,CAACP,gBAAAA,CAAAA;QAE7C,OAAO,IAAA;AACLK,YAAAA,cAAAA,CAAeG,UAAU,EAAA;AAC3B,SAAA;KACC,EAAA;AAACzD,QAAAA,YAAAA;AAAcC,QAAAA;AAAc,KAAA,CAAA;;AAGhC5B,IAAAA,gBAAAA,CAAMoE,SAAS,CAAC,IAAA;QACd,OAAO,IAAA;YACL,IAAIxB,WAAAA,CAAYa,OAAO,EAAE;AACvBC,gBAAAA,YAAAA,CAAad,YAAYa,OAAO,CAAA;AAClC;AACF,SAAA;AACF,KAAA,EAAG,EAAE,CAAA;IAEL,qBACE4B,eAAA,CAAAC,mBAAA,EAAA;;0BACEjE,cAACE,CAAAA,qBAAAA,EAAAA;gBACCgE,aAAetB,EAAAA,iBAAAA;gBACf3C,KAAO,EAAA;AACLkE,oBAAAA,SAAAA,EAAW,CAAC,UAAU,EAAEvD,KAAMvC,CAAAA,QAAQ,CAACU,IAAI,CAAC,IAAI,EAAE6B,MAAMvC,QAAQ,CAACmB,GAAG,CAAC,GAAG,CAAC;oBACzEG,MAAQ,EAAA,CAAC,EAAEiB,KAAMvC,CAAAA,QAAQ,CAACsB,MAAM,CAAC,EAAE;AACrC,iBAAA;AAEA,gBAAA,QAAA,gBAAAK,cAACI,CAAAA,eAAAA,EAAAA;AAAgBD,oBAAAA,WAAAA,EAAaS,MAAMG;;;0BAGtCf,cAAC7B,CAAAA,eAAAA,EAAAA;AACCC,gBAAAA,SAAAA,EAAWwC,MAAMG,UAAU;AAC3B1C,gBAAAA,QAAAA,EAAUuC,MAAMvC,QAAQ;gBACxBC,gBAAkBsC,EAAAA,KAAAA,CAAMU,mBAAmB,CAACF,SAAS;gBACrD7C,iBAAmBqC,EAAAA,KAAAA,CAAMU,mBAAmB,CAACD,UAAU;AACvD5C,gBAAAA,WAAAA,EAAamC,MAAMnC;;;;AAI3B;;;;"}