@strapi/admin 4.16.2 → 4.18.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 (804) hide show
  1. package/index.d.ts +1 -1
  2. package/index.js +1 -1
  3. package/package.json +55 -41
  4. package/strapi-server.js +3 -3
  5. package/dist/_chunks/AuthenticatedApp-342bf22f.js +0 -1476
  6. package/dist/_chunks/AuthenticatedApp-342bf22f.js.map +0 -1
  7. package/dist/_chunks/AuthenticatedApp-bb31f306.mjs +0 -1450
  8. package/dist/_chunks/AuthenticatedApp-bb31f306.mjs.map +0 -1
  9. package/dist/_chunks/DragLayer-bff96835.mjs +0 -44
  10. package/dist/_chunks/DragLayer-bff96835.mjs.map +0 -1
  11. package/dist/_chunks/DragLayer-f07eee6c.js +0 -43
  12. package/dist/_chunks/DragLayer-f07eee6c.js.map +0 -1
  13. package/dist/_chunks/HomePage-0c7717c0.mjs +0 -49
  14. package/dist/_chunks/HomePage-0c7717c0.mjs.map +0 -1
  15. package/dist/_chunks/HomePage-175f79c7.js +0 -49
  16. package/dist/_chunks/HomePage-175f79c7.js.map +0 -1
  17. package/dist/_chunks/HomePage-246cc590.mjs +0 -542
  18. package/dist/_chunks/HomePage-246cc590.mjs.map +0 -1
  19. package/dist/_chunks/HomePage-6ff9e578.js +0 -563
  20. package/dist/_chunks/HomePage-6ff9e578.js.map +0 -1
  21. package/dist/_chunks/InstalledPluginsPage-170aff77.mjs +0 -134
  22. package/dist/_chunks/InstalledPluginsPage-170aff77.mjs.map +0 -1
  23. package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js +0 -153
  24. package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js.map +0 -1
  25. package/dist/_chunks/InternalErrorPage-040dc993.mjs +0 -41
  26. package/dist/_chunks/InternalErrorPage-040dc993.mjs.map +0 -1
  27. package/dist/_chunks/InternalErrorPage-d0e51ac2.js +0 -41
  28. package/dist/_chunks/InternalErrorPage-d0e51ac2.js.map +0 -1
  29. package/dist/_chunks/Layout-4b3e434a.js +0 -92
  30. package/dist/_chunks/Layout-4b3e434a.js.map +0 -1
  31. package/dist/_chunks/Layout-72fa2ace.mjs +0 -90
  32. package/dist/_chunks/Layout-72fa2ace.mjs.map +0 -1
  33. package/dist/_chunks/LimitsModal-203482b8.js +0 -84
  34. package/dist/_chunks/LimitsModal-203482b8.js.map +0 -1
  35. package/dist/_chunks/LimitsModal-da04700e.mjs +0 -82
  36. package/dist/_chunks/LimitsModal-da04700e.mjs.map +0 -1
  37. package/dist/_chunks/Login-576bbc11.js +0 -64
  38. package/dist/_chunks/Login-576bbc11.js.map +0 -1
  39. package/dist/_chunks/Login-d627bb0a.mjs +0 -62
  40. package/dist/_chunks/Login-d627bb0a.mjs.map +0 -1
  41. package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs +0 -1011
  42. package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs.map +0 -1
  43. package/dist/_chunks/MarketplacePage-e7cd973b.js +0 -1035
  44. package/dist/_chunks/MarketplacePage-e7cd973b.js.map +0 -1
  45. package/dist/_chunks/ProfilePage-52844daa.js +0 -665
  46. package/dist/_chunks/ProfilePage-52844daa.js.map +0 -1
  47. package/dist/_chunks/ProfilePage-ef400907.mjs +0 -642
  48. package/dist/_chunks/ProfilePage-ef400907.mjs.map +0 -1
  49. package/dist/_chunks/SSOProviders-62bfad92.mjs +0 -58
  50. package/dist/_chunks/SSOProviders-62bfad92.mjs.map +0 -1
  51. package/dist/_chunks/SSOProviders-b395a4e6.js +0 -59
  52. package/dist/_chunks/SSOProviders-b395a4e6.js.map +0 -1
  53. package/dist/_chunks/SalesPage-4a0a68fb.js +0 -51
  54. package/dist/_chunks/SalesPage-4a0a68fb.js.map +0 -1
  55. package/dist/_chunks/SalesPage-56bf9463.mjs +0 -48
  56. package/dist/_chunks/SalesPage-56bf9463.mjs.map +0 -1
  57. package/dist/_chunks/SalesPage-66f9ea32.js +0 -51
  58. package/dist/_chunks/SalesPage-66f9ea32.js.map +0 -1
  59. package/dist/_chunks/SalesPage-d0cdc1a7.js +0 -48
  60. package/dist/_chunks/SalesPage-d0cdc1a7.js.map +0 -1
  61. package/dist/_chunks/SalesPage-f9597ae7.mjs +0 -51
  62. package/dist/_chunks/SalesPage-f9597ae7.mjs.map +0 -1
  63. package/dist/_chunks/SalesPage-fceedf48.mjs +0 -51
  64. package/dist/_chunks/SalesPage-fceedf48.mjs.map +0 -1
  65. package/dist/_chunks/ar-21279f4c.js +0 -936
  66. package/dist/_chunks/ar-21279f4c.js.map +0 -1
  67. package/dist/_chunks/ar-62e5e2b3.mjs +0 -936
  68. package/dist/_chunks/ar-62e5e2b3.mjs.map +0 -1
  69. package/dist/_chunks/build-1026ce7c.mjs +0 -68
  70. package/dist/_chunks/build-1026ce7c.mjs.map +0 -1
  71. package/dist/_chunks/build-d99bcc06.js +0 -68
  72. package/dist/_chunks/build-d99bcc06.js.map +0 -1
  73. package/dist/_chunks/ca-d05fb350.js +0 -724
  74. package/dist/_chunks/ca-d05fb350.js.map +0 -1
  75. package/dist/_chunks/ca-e99de225.mjs +0 -724
  76. package/dist/_chunks/ca-e99de225.mjs.map +0 -1
  77. package/dist/_chunks/colors-c24a54f0.js +0 -33
  78. package/dist/_chunks/colors-c24a54f0.js.map +0 -1
  79. package/dist/_chunks/colors-e7489dd4.mjs +0 -34
  80. package/dist/_chunks/colors-e7489dd4.mjs.map +0 -1
  81. package/dist/_chunks/constants-2a8f4e41.mjs +0 -11
  82. package/dist/_chunks/constants-2a8f4e41.mjs.map +0 -1
  83. package/dist/_chunks/constants-40ffa931.js +0 -11
  84. package/dist/_chunks/constants-40ffa931.js.map +0 -1
  85. package/dist/_chunks/constants-4aca55b6.js +0 -85
  86. package/dist/_chunks/constants-4aca55b6.js.map +0 -1
  87. package/dist/_chunks/constants-64899732.js +0 -30
  88. package/dist/_chunks/constants-64899732.js.map +0 -1
  89. package/dist/_chunks/constants-6c68e9a0.js +0 -229
  90. package/dist/_chunks/constants-6c68e9a0.js.map +0 -1
  91. package/dist/_chunks/constants-6ecddc43.mjs +0 -111
  92. package/dist/_chunks/constants-6ecddc43.mjs.map +0 -1
  93. package/dist/_chunks/constants-74b8a935.mjs +0 -52
  94. package/dist/_chunks/constants-74b8a935.mjs.map +0 -1
  95. package/dist/_chunks/constants-7596f6f3.js +0 -132
  96. package/dist/_chunks/constants-7596f6f3.js.map +0 -1
  97. package/dist/_chunks/constants-8092eeb5.mjs +0 -59
  98. package/dist/_chunks/constants-8092eeb5.mjs.map +0 -1
  99. package/dist/_chunks/constants-85da8cc4.js +0 -58
  100. package/dist/_chunks/constants-85da8cc4.js.map +0 -1
  101. package/dist/_chunks/constants-a6fd64fc.mjs +0 -80
  102. package/dist/_chunks/constants-a6fd64fc.mjs.map +0 -1
  103. package/dist/_chunks/constants-a92ce583.mjs +0 -7
  104. package/dist/_chunks/constants-a92ce583.mjs.map +0 -1
  105. package/dist/_chunks/constants-ae0b83df.mjs +0 -227
  106. package/dist/_chunks/constants-ae0b83df.mjs.map +0 -1
  107. package/dist/_chunks/constants-c1f1f698.mjs +0 -85
  108. package/dist/_chunks/constants-c1f1f698.mjs.map +0 -1
  109. package/dist/_chunks/constants-d3dd8ed6.mjs +0 -7
  110. package/dist/_chunks/constants-d3dd8ed6.mjs.map +0 -1
  111. package/dist/_chunks/constants-d5d67ca8.js +0 -6
  112. package/dist/_chunks/constants-d5d67ca8.js.map +0 -1
  113. package/dist/_chunks/constants-da2542a3.js +0 -6
  114. package/dist/_chunks/constants-da2542a3.js.map +0 -1
  115. package/dist/_chunks/constants-ddd2d586.js +0 -82
  116. package/dist/_chunks/constants-ddd2d586.js.map +0 -1
  117. package/dist/_chunks/constants-def33545.mjs +0 -30
  118. package/dist/_chunks/constants-def33545.mjs.map +0 -1
  119. package/dist/_chunks/constants-e05f06d4.js +0 -52
  120. package/dist/_chunks/constants-e05f06d4.js.map +0 -1
  121. package/dist/_chunks/cs-2fa881a2.mjs +0 -291
  122. package/dist/_chunks/cs-2fa881a2.mjs.map +0 -1
  123. package/dist/_chunks/cs-eee75b10.js +0 -291
  124. package/dist/_chunks/cs-eee75b10.js.map +0 -1
  125. package/dist/_chunks/de-28f8bc28.mjs +0 -716
  126. package/dist/_chunks/de-28f8bc28.mjs.map +0 -1
  127. package/dist/_chunks/de-976cc986.js +0 -716
  128. package/dist/_chunks/de-976cc986.js.map +0 -1
  129. package/dist/_chunks/develop-72394876.mjs +0 -61
  130. package/dist/_chunks/develop-72394876.mjs.map +0 -1
  131. package/dist/_chunks/develop-da585b1e.js +0 -61
  132. package/dist/_chunks/develop-da585b1e.js.map +0 -1
  133. package/dist/_chunks/dk-0b759a56.mjs +0 -634
  134. package/dist/_chunks/dk-0b759a56.mjs.map +0 -1
  135. package/dist/_chunks/dk-6189917e.js +0 -634
  136. package/dist/_chunks/dk-6189917e.js.map +0 -1
  137. package/dist/_chunks/edit-29bdf5d6.js +0 -50
  138. package/dist/_chunks/edit-29bdf5d6.js.map +0 -1
  139. package/dist/_chunks/edit-923cefa0.mjs +0 -32
  140. package/dist/_chunks/edit-923cefa0.mjs.map +0 -1
  141. package/dist/_chunks/en-0e9e9327.js +0 -1022
  142. package/dist/_chunks/en-0e9e9327.js.map +0 -1
  143. package/dist/_chunks/en-e728accb.mjs +0 -1022
  144. package/dist/_chunks/en-e728accb.mjs.map +0 -1
  145. package/dist/_chunks/es-18b29db2.mjs +0 -796
  146. package/dist/_chunks/es-18b29db2.mjs.map +0 -1
  147. package/dist/_chunks/es-3ee0992a.js +0 -796
  148. package/dist/_chunks/es-3ee0992a.js.map +0 -1
  149. package/dist/_chunks/eu-8fd773c2.mjs +0 -832
  150. package/dist/_chunks/eu-8fd773c2.mjs.map +0 -1
  151. package/dist/_chunks/eu-be749f31.js +0 -832
  152. package/dist/_chunks/eu-be749f31.js.map +0 -1
  153. package/dist/_chunks/formatAPIErrors-b599cf27.js +0 -20
  154. package/dist/_chunks/formatAPIErrors-b599cf27.js.map +0 -1
  155. package/dist/_chunks/formatAPIErrors-db6ed675.mjs +0 -21
  156. package/dist/_chunks/formatAPIErrors-db6ed675.mjs.map +0 -1
  157. package/dist/_chunks/fr-29c84e1f.js +0 -762
  158. package/dist/_chunks/fr-29c84e1f.js.map +0 -1
  159. package/dist/_chunks/fr-f37df086.mjs +0 -762
  160. package/dist/_chunks/fr-f37df086.mjs.map +0 -1
  161. package/dist/_chunks/gu-377a4b46.js +0 -623
  162. package/dist/_chunks/gu-377a4b46.js.map +0 -1
  163. package/dist/_chunks/gu-69f0e13a.mjs +0 -623
  164. package/dist/_chunks/gu-69f0e13a.mjs.map +0 -1
  165. package/dist/_chunks/he-aec27352.js +0 -326
  166. package/dist/_chunks/he-aec27352.js.map +0 -1
  167. package/dist/_chunks/he-bd769d7e.mjs +0 -326
  168. package/dist/_chunks/he-bd769d7e.mjs.map +0 -1
  169. package/dist/_chunks/hi-1bdc7a46.js +0 -722
  170. package/dist/_chunks/hi-1bdc7a46.js.map +0 -1
  171. package/dist/_chunks/hi-d397a24b.mjs +0 -722
  172. package/dist/_chunks/hi-d397a24b.mjs.map +0 -1
  173. package/dist/_chunks/hu-e2c05f40.js +0 -832
  174. package/dist/_chunks/hu-e2c05f40.js.map +0 -1
  175. package/dist/_chunks/hu-eb88bd0c.mjs +0 -832
  176. package/dist/_chunks/hu-eb88bd0c.mjs.map +0 -1
  177. package/dist/_chunks/id-586df3a2.js +0 -448
  178. package/dist/_chunks/id-586df3a2.js.map +0 -1
  179. package/dist/_chunks/id-f47699e6.mjs +0 -448
  180. package/dist/_chunks/id-f47699e6.mjs.map +0 -1
  181. package/dist/_chunks/index-10a05917.mjs +0 -51
  182. package/dist/_chunks/index-10a05917.mjs.map +0 -1
  183. package/dist/_chunks/index-115d317b.mjs +0 -244
  184. package/dist/_chunks/index-115d317b.mjs.map +0 -1
  185. package/dist/_chunks/index-171715e4.js +0 -697
  186. package/dist/_chunks/index-171715e4.js.map +0 -1
  187. package/dist/_chunks/index-176cc121.mjs +0 -469
  188. package/dist/_chunks/index-176cc121.mjs.map +0 -1
  189. package/dist/_chunks/index-1bac5263.js +0 -338
  190. package/dist/_chunks/index-1bac5263.js.map +0 -1
  191. package/dist/_chunks/index-200c5a6a.js +0 -51
  192. package/dist/_chunks/index-200c5a6a.js.map +0 -1
  193. package/dist/_chunks/index-215b5421.mjs +0 -51
  194. package/dist/_chunks/index-215b5421.mjs.map +0 -1
  195. package/dist/_chunks/index-23401c29.js +0 -418
  196. package/dist/_chunks/index-23401c29.js.map +0 -1
  197. package/dist/_chunks/index-242c859c.js +0 -335
  198. package/dist/_chunks/index-242c859c.js.map +0 -1
  199. package/dist/_chunks/index-26fcb3ca.mjs +0 -1432
  200. package/dist/_chunks/index-26fcb3ca.mjs.map +0 -1
  201. package/dist/_chunks/index-28dd9303.mjs +0 -51
  202. package/dist/_chunks/index-28dd9303.mjs.map +0 -1
  203. package/dist/_chunks/index-296c14bf.mjs +0 -362
  204. package/dist/_chunks/index-296c14bf.mjs.map +0 -1
  205. package/dist/_chunks/index-2de06c32.js +0 -51
  206. package/dist/_chunks/index-2de06c32.js.map +0 -1
  207. package/dist/_chunks/index-2eb69b5d.mjs +0 -399
  208. package/dist/_chunks/index-2eb69b5d.mjs.map +0 -1
  209. package/dist/_chunks/index-2f61e3ae.js +0 -585
  210. package/dist/_chunks/index-2f61e3ae.js.map +0 -1
  211. package/dist/_chunks/index-308b73ba.mjs +0 -60
  212. package/dist/_chunks/index-308b73ba.mjs.map +0 -1
  213. package/dist/_chunks/index-34e41e15.js +0 -134
  214. package/dist/_chunks/index-34e41e15.js.map +0 -1
  215. package/dist/_chunks/index-38115cde.js +0 -66
  216. package/dist/_chunks/index-38115cde.js.map +0 -1
  217. package/dist/_chunks/index-383efae4.mjs +0 -55
  218. package/dist/_chunks/index-383efae4.mjs.map +0 -1
  219. package/dist/_chunks/index-3b426575.js +0 -47
  220. package/dist/_chunks/index-3b426575.js.map +0 -1
  221. package/dist/_chunks/index-47af1603.js +0 -253
  222. package/dist/_chunks/index-47af1603.js.map +0 -1
  223. package/dist/_chunks/index-49b7e6ff.mjs +0 -1266
  224. package/dist/_chunks/index-49b7e6ff.mjs.map +0 -1
  225. package/dist/_chunks/index-4d9b2cb9.js +0 -47
  226. package/dist/_chunks/index-4d9b2cb9.js.map +0 -1
  227. package/dist/_chunks/index-4de70b5d.js +0 -3404
  228. package/dist/_chunks/index-4de70b5d.js.map +0 -1
  229. package/dist/_chunks/index-59b1f604.js +0 -380
  230. package/dist/_chunks/index-59b1f604.js.map +0 -1
  231. package/dist/_chunks/index-5a5217e0.mjs +0 -308
  232. package/dist/_chunks/index-5a5217e0.mjs.map +0 -1
  233. package/dist/_chunks/index-5da07c41.js +0 -418
  234. package/dist/_chunks/index-5da07c41.js.map +0 -1
  235. package/dist/_chunks/index-600cb5dd.js +0 -51
  236. package/dist/_chunks/index-600cb5dd.js.map +0 -1
  237. package/dist/_chunks/index-608d8d10.mjs +0 -393
  238. package/dist/_chunks/index-608d8d10.mjs.map +0 -1
  239. package/dist/_chunks/index-74812118.mjs +0 -53
  240. package/dist/_chunks/index-74812118.mjs.map +0 -1
  241. package/dist/_chunks/index-7d578921.js +0 -847
  242. package/dist/_chunks/index-7d578921.js.map +0 -1
  243. package/dist/_chunks/index-8109fa91.mjs +0 -676
  244. package/dist/_chunks/index-8109fa91.mjs.map +0 -1
  245. package/dist/_chunks/index-82c7a120.js +0 -15401
  246. package/dist/_chunks/index-82c7a120.js.map +0 -1
  247. package/dist/_chunks/index-83d53962.js +0 -62
  248. package/dist/_chunks/index-83d53962.js.map +0 -1
  249. package/dist/_chunks/index-88298941.js +0 -54
  250. package/dist/_chunks/index-88298941.js.map +0 -1
  251. package/dist/_chunks/index-8933483b.mjs +0 -3374
  252. package/dist/_chunks/index-8933483b.mjs.map +0 -1
  253. package/dist/_chunks/index-91df57b1.mjs +0 -826
  254. package/dist/_chunks/index-91df57b1.mjs.map +0 -1
  255. package/dist/_chunks/index-973c363e.mjs +0 -63
  256. package/dist/_chunks/index-973c363e.mjs.map +0 -1
  257. package/dist/_chunks/index-989bbeec.mjs +0 -232
  258. package/dist/_chunks/index-989bbeec.mjs.map +0 -1
  259. package/dist/_chunks/index-9910dda4.js +0 -55
  260. package/dist/_chunks/index-9910dda4.js.map +0 -1
  261. package/dist/_chunks/index-9afb163a.js +0 -418
  262. package/dist/_chunks/index-9afb163a.js.map +0 -1
  263. package/dist/_chunks/index-9f61bef8.js +0 -51
  264. package/dist/_chunks/index-9f61bef8.js.map +0 -1
  265. package/dist/_chunks/index-ab31623a.mjs +0 -273
  266. package/dist/_chunks/index-ab31623a.mjs.map +0 -1
  267. package/dist/_chunks/index-ac85118a.mjs +0 -47
  268. package/dist/_chunks/index-ac85118a.mjs.map +0 -1
  269. package/dist/_chunks/index-ad8e55c0.mjs +0 -866
  270. package/dist/_chunks/index-ad8e55c0.mjs.map +0 -1
  271. package/dist/_chunks/index-aedeaf5a.js +0 -311
  272. package/dist/_chunks/index-aedeaf5a.js.map +0 -1
  273. package/dist/_chunks/index-bbac142a.js +0 -125
  274. package/dist/_chunks/index-bbac142a.js.map +0 -1
  275. package/dist/_chunks/index-bd18f803.mjs +0 -15320
  276. package/dist/_chunks/index-bd18f803.mjs.map +0 -1
  277. package/dist/_chunks/index-c8b8a2ee.mjs +0 -359
  278. package/dist/_chunks/index-c8b8a2ee.mjs.map +0 -1
  279. package/dist/_chunks/index-c97f5820.js +0 -1456
  280. package/dist/_chunks/index-c97f5820.js.map +0 -1
  281. package/dist/_chunks/index-cb6a72d2.mjs +0 -127
  282. package/dist/_chunks/index-cb6a72d2.mjs.map +0 -1
  283. package/dist/_chunks/index-cbc7c054.js +0 -266
  284. package/dist/_chunks/index-cbc7c054.js.map +0 -1
  285. package/dist/_chunks/index-ce5995cd.mjs +0 -132
  286. package/dist/_chunks/index-ce5995cd.mjs.map +0 -1
  287. package/dist/_chunks/index-d1152896.js +0 -294
  288. package/dist/_chunks/index-d1152896.js.map +0 -1
  289. package/dist/_chunks/index-d1dd825b.js +0 -365
  290. package/dist/_chunks/index-d1dd825b.js.map +0 -1
  291. package/dist/_chunks/index-d2d9df41.mjs +0 -270
  292. package/dist/_chunks/index-d2d9df41.mjs.map +0 -1
  293. package/dist/_chunks/index-d3e1fd86.js +0 -490
  294. package/dist/_chunks/index-d3e1fd86.js.map +0 -1
  295. package/dist/_chunks/index-d4517ac4.mjs +0 -582
  296. package/dist/_chunks/index-d4517ac4.mjs.map +0 -1
  297. package/dist/_chunks/index-d49fa655.js +0 -873
  298. package/dist/_chunks/index-d49fa655.js.map +0 -1
  299. package/dist/_chunks/index-d6694cab.mjs +0 -125
  300. package/dist/_chunks/index-d6694cab.mjs.map +0 -1
  301. package/dist/_chunks/index-e117c643.mjs +0 -55
  302. package/dist/_chunks/index-e117c643.mjs.map +0 -1
  303. package/dist/_chunks/index-e1b90981.mjs +0 -314
  304. package/dist/_chunks/index-e1b90981.mjs.map +0 -1
  305. package/dist/_chunks/index-e24df0bf.js +0 -403
  306. package/dist/_chunks/index-e24df0bf.js.map +0 -1
  307. package/dist/_chunks/index-e2d2f58e.mjs +0 -47
  308. package/dist/_chunks/index-e2d2f58e.mjs.map +0 -1
  309. package/dist/_chunks/index-e369d741.mjs +0 -383
  310. package/dist/_chunks/index-e369d741.mjs.map +0 -1
  311. package/dist/_chunks/index-e79b2b9e.mjs +0 -338
  312. package/dist/_chunks/index-e79b2b9e.mjs.map +0 -1
  313. package/dist/_chunks/index-ea18ff22.mjs +0 -51
  314. package/dist/_chunks/index-ea18ff22.mjs.map +0 -1
  315. package/dist/_chunks/index-eb67694f.mjs +0 -261
  316. package/dist/_chunks/index-eb67694f.mjs.map +0 -1
  317. package/dist/_chunks/index-ed3696ec.js +0 -272
  318. package/dist/_chunks/index-ed3696ec.js.map +0 -1
  319. package/dist/_chunks/index-ee1ea38b.js +0 -129
  320. package/dist/_chunks/index-ee1ea38b.js.map +0 -1
  321. package/dist/_chunks/index-efc967f5.js +0 -55
  322. package/dist/_chunks/index-efc967f5.js.map +0 -1
  323. package/dist/_chunks/index-fc700e52.js +0 -263
  324. package/dist/_chunks/index-fc700e52.js.map +0 -1
  325. package/dist/_chunks/index-fd4e5616.mjs +0 -412
  326. package/dist/_chunks/index-fd4e5616.mjs.map +0 -1
  327. package/dist/_chunks/index-ffd2f664.js +0 -1337
  328. package/dist/_chunks/index-ffd2f664.js.map +0 -1
  329. package/dist/_chunks/it-4006227c.mjs +0 -459
  330. package/dist/_chunks/it-4006227c.mjs.map +0 -1
  331. package/dist/_chunks/it-9c4295f1.js +0 -459
  332. package/dist/_chunks/it-9c4295f1.js.map +0 -1
  333. package/dist/_chunks/ja-db43ca3d.mjs +0 -633
  334. package/dist/_chunks/ja-db43ca3d.mjs.map +0 -1
  335. package/dist/_chunks/ja-eb74520f.js +0 -633
  336. package/dist/_chunks/ja-eb74520f.js.map +0 -1
  337. package/dist/_chunks/ko-18e71df4.js +0 -631
  338. package/dist/_chunks/ko-18e71df4.js.map +0 -1
  339. package/dist/_chunks/ko-a7826e25.mjs +0 -631
  340. package/dist/_chunks/ko-a7826e25.mjs.map +0 -1
  341. package/dist/_chunks/ml-90131768.mjs +0 -722
  342. package/dist/_chunks/ml-90131768.mjs.map +0 -1
  343. package/dist/_chunks/ml-c5199364.js +0 -722
  344. package/dist/_chunks/ml-c5199364.js.map +0 -1
  345. package/dist/_chunks/ms-bc514df6.js +0 -342
  346. package/dist/_chunks/ms-bc514df6.js.map +0 -1
  347. package/dist/_chunks/ms-f4f16a83.mjs +0 -342
  348. package/dist/_chunks/ms-f4f16a83.mjs.map +0 -1
  349. package/dist/_chunks/nl-887ce2c3.mjs +0 -828
  350. package/dist/_chunks/nl-887ce2c3.mjs.map +0 -1
  351. package/dist/_chunks/nl-f1aedbe2.js +0 -828
  352. package/dist/_chunks/nl-f1aedbe2.js.map +0 -1
  353. package/dist/_chunks/no-ec6c2927.js +0 -310
  354. package/dist/_chunks/no-ec6c2927.js.map +0 -1
  355. package/dist/_chunks/no-f0b02541.mjs +0 -310
  356. package/dist/_chunks/no-f0b02541.mjs.map +0 -1
  357. package/dist/_chunks/pl-9be86414.js +0 -721
  358. package/dist/_chunks/pl-9be86414.js.map +0 -1
  359. package/dist/_chunks/pl-9ccd35d9.mjs +0 -721
  360. package/dist/_chunks/pl-9ccd35d9.mjs.map +0 -1
  361. package/dist/_chunks/pt-4fcc08f1.js +0 -296
  362. package/dist/_chunks/pt-4fcc08f1.js.map +0 -1
  363. package/dist/_chunks/pt-8acb6ac1.mjs +0 -296
  364. package/dist/_chunks/pt-8acb6ac1.mjs.map +0 -1
  365. package/dist/_chunks/pt-BR-d43239e3.js +0 -794
  366. package/dist/_chunks/pt-BR-d43239e3.js.map +0 -1
  367. package/dist/_chunks/pt-BR-fd73cb13.mjs +0 -794
  368. package/dist/_chunks/pt-BR-fd73cb13.mjs.map +0 -1
  369. package/dist/_chunks/ru-9aad40c5.mjs +0 -993
  370. package/dist/_chunks/ru-9aad40c5.mjs.map +0 -1
  371. package/dist/_chunks/ru-c0293425.js +0 -993
  372. package/dist/_chunks/ru-c0293425.js.map +0 -1
  373. package/dist/_chunks/sa-6bf4c20e.mjs +0 -722
  374. package/dist/_chunks/sa-6bf4c20e.mjs.map +0 -1
  375. package/dist/_chunks/sa-8ffb7ca7.js +0 -722
  376. package/dist/_chunks/sa-8ffb7ca7.js.map +0 -1
  377. package/dist/_chunks/schema-260fec28.js +0 -514
  378. package/dist/_chunks/schema-260fec28.js.map +0 -1
  379. package/dist/_chunks/schema-6bd8bd85.mjs +0 -490
  380. package/dist/_chunks/schema-6bd8bd85.mjs.map +0 -1
  381. package/dist/_chunks/sk-58d31b17.mjs +0 -690
  382. package/dist/_chunks/sk-58d31b17.mjs.map +0 -1
  383. package/dist/_chunks/sk-a9308737.js +0 -690
  384. package/dist/_chunks/sk-a9308737.js.map +0 -1
  385. package/dist/_chunks/sv-0f5ffd1e.js +0 -827
  386. package/dist/_chunks/sv-0f5ffd1e.js.map +0 -1
  387. package/dist/_chunks/sv-d80ad633.mjs +0 -827
  388. package/dist/_chunks/sv-d80ad633.mjs.map +0 -1
  389. package/dist/_chunks/th-a53bbf7a.js +0 -430
  390. package/dist/_chunks/th-a53bbf7a.js.map +0 -1
  391. package/dist/_chunks/th-e72c6a22.mjs +0 -430
  392. package/dist/_chunks/th-e72c6a22.mjs.map +0 -1
  393. package/dist/_chunks/tr-b84a68b0.js +0 -785
  394. package/dist/_chunks/tr-b84a68b0.js.map +0 -1
  395. package/dist/_chunks/tr-e35ecfe8.mjs +0 -785
  396. package/dist/_chunks/tr-e35ecfe8.mjs.map +0 -1
  397. package/dist/_chunks/uk-de367ec1.mjs +0 -343
  398. package/dist/_chunks/uk-de367ec1.mjs.map +0 -1
  399. package/dist/_chunks/uk-e5226227.js +0 -343
  400. package/dist/_chunks/uk-e5226227.js.map +0 -1
  401. package/dist/_chunks/useAdminRolePermissions-603a2709.mjs +0 -2322
  402. package/dist/_chunks/useAdminRolePermissions-603a2709.mjs.map +0 -1
  403. package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js +0 -2337
  404. package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js.map +0 -1
  405. package/dist/_chunks/useAdminRoles-68d5d608.js +0 -62
  406. package/dist/_chunks/useAdminRoles-68d5d608.js.map +0 -1
  407. package/dist/_chunks/useAdminRoles-7ab5d521.mjs +0 -44
  408. package/dist/_chunks/useAdminRoles-7ab5d521.mjs.map +0 -1
  409. package/dist/_chunks/useAdminUsers-05d6b26a.js +0 -61
  410. package/dist/_chunks/useAdminUsers-05d6b26a.js.map +0 -1
  411. package/dist/_chunks/useAdminUsers-09f86a58.mjs +0 -43
  412. package/dist/_chunks/useAdminUsers-09f86a58.mjs.map +0 -1
  413. package/dist/_chunks/useContentTypes-53b449bb.mjs +0 -67
  414. package/dist/_chunks/useContentTypes-53b449bb.mjs.map +0 -1
  415. package/dist/_chunks/useContentTypes-7da293cc.js +0 -85
  416. package/dist/_chunks/useContentTypes-7da293cc.js.map +0 -1
  417. package/dist/_chunks/useDebounce-4712871e.js +0 -35
  418. package/dist/_chunks/useDebounce-4712871e.js.map +0 -1
  419. package/dist/_chunks/useDebounce-9364f340.mjs +0 -17
  420. package/dist/_chunks/useDebounce-9364f340.mjs.map +0 -1
  421. package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs +0 -80
  422. package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs.map +0 -1
  423. package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js +0 -100
  424. package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js.map +0 -1
  425. package/dist/_chunks/useLicenseLimits-13a102d3.mjs +0 -31
  426. package/dist/_chunks/useLicenseLimits-13a102d3.mjs.map +0 -1
  427. package/dist/_chunks/useLicenseLimits-81ef3cce.js +0 -49
  428. package/dist/_chunks/useLicenseLimits-81ef3cce.js.map +0 -1
  429. package/dist/_chunks/useReviewWorkflows-799e0305.js +0 -59
  430. package/dist/_chunks/useReviewWorkflows-799e0305.js.map +0 -1
  431. package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs +0 -41
  432. package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs.map +0 -1
  433. package/dist/_chunks/validateWorkflow-5693ea2d.js +0 -1124
  434. package/dist/_chunks/validateWorkflow-5693ea2d.js.map +0 -1
  435. package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs +0 -1101
  436. package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs.map +0 -1
  437. package/dist/_chunks/vi-096bccbb.mjs +0 -298
  438. package/dist/_chunks/vi-096bccbb.mjs.map +0 -1
  439. package/dist/_chunks/vi-c5fabb75.js +0 -298
  440. package/dist/_chunks/vi-c5fabb75.js.map +0 -1
  441. package/dist/_chunks/zh-24f618cb.js +0 -836
  442. package/dist/_chunks/zh-24f618cb.js.map +0 -1
  443. package/dist/_chunks/zh-Hans-35d2c374.js +0 -957
  444. package/dist/_chunks/zh-Hans-35d2c374.js.map +0 -1
  445. package/dist/_chunks/zh-Hans-ccf4be4b.mjs +0 -957
  446. package/dist/_chunks/zh-Hans-ccf4be4b.mjs.map +0 -1
  447. package/dist/_chunks/zh-ba29b2e1.mjs +0 -836
  448. package/dist/_chunks/zh-ba29b2e1.mjs.map +0 -1
  449. package/dist/admin/index.js +0 -34
  450. package/dist/admin/index.js.map +0 -1
  451. package/dist/admin/index.mjs +0 -34
  452. package/dist/admin/index.mjs.map +0 -1
  453. package/dist/admin/src/App.d.ts +0 -6
  454. package/dist/admin/src/StrapiApp.d.ts +0 -140
  455. package/dist/admin/src/components/AuthenticatedApp.d.ts +0 -2
  456. package/dist/admin/src/components/ConfigurationProvider.d.ts +0 -11
  457. package/dist/admin/src/components/DefaultDocument.d.ts +0 -5
  458. package/dist/admin/src/components/DragLayer.d.ts +0 -10
  459. package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
  460. package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
  461. package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
  462. package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -6
  463. package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
  464. package/dist/admin/src/components/LanguageProvider.d.ts +0 -19
  465. package/dist/admin/src/components/LeftMenu.d.ts +0 -5
  466. package/dist/admin/src/components/NoJavascript.d.ts +0 -7
  467. package/dist/admin/src/components/NpsSurvey.d.ts +0 -17
  468. package/dist/admin/src/components/Onboarding.d.ts +0 -2
  469. package/dist/admin/src/components/PluginsInitializer.d.ts +0 -5
  470. package/dist/admin/src/components/PrivateRoute.d.ts +0 -8
  471. package/dist/admin/src/components/Providers.d.ts +0 -13
  472. package/dist/admin/src/components/RBACProvider.d.ts +0 -27
  473. package/dist/admin/src/components/Theme.d.ts +0 -6
  474. package/dist/admin/src/components/ThemeToggleProvider.d.ts +0 -12
  475. package/dist/admin/src/components/UnauthenticatedLogo.d.ts +0 -2
  476. package/dist/admin/src/constants.d.ts +0 -195
  477. package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +0 -5
  478. package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +0 -34
  479. package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +0 -18
  480. package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +0 -2
  481. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +0 -32
  482. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +0 -20
  483. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +0 -8
  484. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withStrapiSchema.d.ts +0 -8
  485. package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +0 -2
  486. package/dist/admin/src/content-manager/components/BlocksInput/utils/links.d.ts +0 -10
  487. package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +0 -6
  488. package/dist/admin/src/contexts/admin.d.ts +0 -14
  489. package/dist/admin/src/contexts/apiTokenPermissions.d.ts +0 -36
  490. package/dist/admin/src/contexts/configuration.d.ts +0 -27
  491. package/dist/admin/src/contexts/themeToggle.d.ts +0 -22
  492. package/dist/admin/src/core/apis/Components.d.ts +0 -10
  493. package/dist/admin/src/core/apis/CustomFields.d.ts +0 -8
  494. package/dist/admin/src/core/apis/Fields.d.ts +0 -10
  495. package/dist/admin/src/core/apis/Middlewares.d.ts +0 -9
  496. package/dist/admin/src/core/apis/Plugin.d.ts +0 -19
  497. package/dist/admin/src/core/apis/Reducers.d.ts +0 -10
  498. package/dist/admin/src/core/store/configure.d.ts +0 -29
  499. package/dist/admin/src/core/store/hooks.d.ts +0 -37
  500. package/dist/admin/src/core/utils/basename.d.ts +0 -1
  501. package/dist/admin/src/core/utils/createHook.d.ts +0 -10
  502. package/dist/admin/src/hooks/__mocks__/useAdminUsers.d.ts +0 -2
  503. package/dist/admin/src/hooks/__mocks__/useContentTypes.d.ts +0 -2
  504. package/dist/admin/src/hooks/__mocks__/useSettingsMenu.d.ts +0 -2
  505. package/dist/admin/src/hooks/useAdminRoles.d.ts +0 -13
  506. package/dist/admin/src/hooks/useAdminUsers.d.ts +0 -19
  507. package/dist/admin/src/hooks/useContentTypes.d.ts +0 -7
  508. package/dist/admin/src/hooks/useDebounce.d.ts +0 -1
  509. package/dist/admin/src/hooks/useEnterprise.d.ts +0 -8
  510. package/dist/admin/src/hooks/useInjectReducer.d.ts +0 -10
  511. package/dist/admin/src/hooks/useLicenseLimitNotification.d.ts +0 -1
  512. package/dist/admin/src/hooks/useMenu.d.ts +0 -9
  513. package/dist/admin/src/hooks/useSettingsMenu.d.ts +0 -24
  514. package/dist/admin/src/index.d.ts +0 -3
  515. package/dist/admin/src/layouts/AppLayout.d.ts +0 -7
  516. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +0 -11
  517. package/dist/admin/src/pages/Admin.d.ts +0 -7
  518. package/dist/admin/src/pages/Auth/AuthPage.d.ts +0 -6
  519. package/dist/admin/src/pages/Auth/components/FieldActionWrapper.d.ts +0 -3
  520. package/dist/admin/src/pages/Auth/components/ForgotPassword.d.ts +0 -3
  521. package/dist/admin/src/pages/Auth/components/ForgotPasswordSuccess.d.ts +0 -2
  522. package/dist/admin/src/pages/Auth/components/Login.d.ts +0 -8
  523. package/dist/admin/src/pages/Auth/components/Oops.d.ts +0 -2
  524. package/dist/admin/src/pages/Auth/components/Register.d.ts +0 -7
  525. package/dist/admin/src/pages/Auth/components/ResetPassword.d.ts +0 -3
  526. package/dist/admin/src/pages/Auth/constants.d.ts +0 -14
  527. package/dist/admin/src/pages/HomePage.d.ts +0 -3
  528. package/dist/admin/src/pages/InstalledPluginsPage.d.ts +0 -3
  529. package/dist/admin/src/pages/InternalErrorPage.d.ts +0 -7
  530. package/dist/admin/src/pages/Marketplace/MarketplacePage.d.ts +0 -19
  531. package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +0 -13
  532. package/dist/admin/src/pages/Marketplace/components/NpmPackagesFilters.d.ts +0 -13
  533. package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +0 -13
  534. package/dist/admin/src/pages/Marketplace/components/OfflineLayout.d.ts +0 -2
  535. package/dist/admin/src/pages/Marketplace/components/PageHeader.d.ts +0 -8
  536. package/dist/admin/src/pages/Marketplace/components/SortSelect.d.ts +0 -51
  537. package/dist/admin/src/pages/Marketplace/hooks/__mocks__/useNavigatorOnline.d.ts +0 -1
  538. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +0 -92
  539. package/dist/admin/src/pages/Marketplace/hooks/useNavigatorOnline.d.ts +0 -5
  540. package/dist/admin/src/pages/NotFoundPage.d.ts +0 -1
  541. package/dist/admin/src/pages/ProfilePage.d.ts +0 -2
  542. package/dist/admin/src/pages/SettingsPage/hooks/useRegenerate.d.ts +0 -4
  543. package/dist/admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.d.ts +0 -24
  544. package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/__mocks__/useAdminRolePermissions.d.ts +0 -2
  545. package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.d.ts +0 -11
  546. package/dist/admin/src/pages/SettingsPage/utils/makeUniqueRoutes.d.ts +0 -6
  547. package/dist/admin/src/pages/UseCasePage.d.ts +0 -8
  548. package/dist/admin/src/reducer.d.ts +0 -21
  549. package/dist/admin/src/render.d.ts +0 -10
  550. package/dist/admin/src/selectors.d.ts +0 -21
  551. package/dist/admin/src/shared/components/InjectionZone.d.ts +0 -53
  552. package/dist/admin/src/shared/hooks/__mocks__/useInjectionZone.d.ts +0 -1
  553. package/dist/admin/src/shared/hooks/useInjectionZone.d.ts +0 -2
  554. package/dist/admin/src/translations/languageNativeNames.d.ts +0 -36
  555. package/dist/admin/src/types/permissions.d.ts +0 -17
  556. package/dist/admin/src/utils/createRoute.d.ts +0 -6
  557. package/dist/admin/src/utils/formatAPIErrors.d.ts +0 -6
  558. package/dist/admin/src/utils/getFullName.d.ts +0 -1
  559. package/dist/admin/src/utils/hashAdminUserEmail.d.ts +0 -6
  560. package/dist/cli.js +0 -48
  561. package/dist/cli.js.map +0 -1
  562. package/dist/cli.mjs +0 -48
  563. package/dist/cli.mjs.map +0 -1
  564. package/dist/ee/admin/src/constants.d.ts +0 -55
  565. package/dist/ee/admin/src/hooks/useLicenseLimitNotification.d.ts +0 -1
  566. package/dist/ee/admin/src/pages/AuthPage/components/Login.d.ts +0 -3
  567. package/dist/ee/admin/src/pages/AuthPage/components/Providers.d.ts +0 -2
  568. package/dist/ee/admin/src/pages/AuthPage/components/SSOProviders.d.ts +0 -8
  569. package/dist/ee/admin/src/pages/AuthPage/constants.d.ts +0 -3
  570. package/dist/ee/admin/src/pages/AuthResponse.d.ts +0 -2
  571. package/dist/ee/admin/src/pages/HomePage.d.ts +0 -1
  572. package/dist/shared/contracts/admin.d.ts +0 -23
  573. package/dist/shared/contracts/authentication.d.ts +0 -126
  574. package/dist/shared/contracts/providers.d.ts +0 -34
  575. package/dist/shared/contracts/roles.d.ts +0 -52
  576. package/dist/shared/contracts/shared.d.ts +0 -39
  577. package/dist/shared/contracts/user.d.ts +0 -40
  578. package/dist/shared/contracts/users.d.ts +0 -52
  579. package/dist/shared/schema.d.ts +0 -7
  580. package/ee/server/bootstrap.js +0 -41
  581. package/ee/server/config/admin-actions.js +0 -72
  582. package/ee/server/constants/default-stages.json +0 -18
  583. package/ee/server/constants/default-workflow.json +0 -3
  584. package/ee/server/constants/webhookEvents.js +0 -5
  585. package/ee/server/constants/workflows.js +0 -33
  586. package/ee/server/content-types/index.js +0 -9
  587. package/ee/server/content-types/workflow/index.js +0 -41
  588. package/ee/server/content-types/workflow-stage/index.js +0 -51
  589. package/ee/server/controllers/__tests__/stages.test.js +0 -174
  590. package/ee/server/controllers/admin.js +0 -50
  591. package/ee/server/controllers/audit-logs.js +0 -24
  592. package/ee/server/controllers/authentication/constants.js +0 -11
  593. package/ee/server/controllers/authentication/index.js +0 -11
  594. package/ee/server/controllers/authentication/middlewares.js +0 -117
  595. package/ee/server/controllers/authentication/utils.js +0 -23
  596. package/ee/server/controllers/authentication.js +0 -64
  597. package/ee/server/controllers/index.js +0 -12
  598. package/ee/server/controllers/role.js +0 -64
  599. package/ee/server/controllers/user.js +0 -110
  600. package/ee/server/controllers/workflows/assignees/index.js +0 -44
  601. package/ee/server/controllers/workflows/index.js +0 -188
  602. package/ee/server/controllers/workflows/stages/index.js +0 -189
  603. package/ee/server/destroy.js +0 -12
  604. package/ee/server/index.js +0 -11
  605. package/ee/server/middlewares/__tests__/review-workflows.test.js +0 -40
  606. package/ee/server/middlewares/review-workflows.js +0 -40
  607. package/ee/server/migrations/audit-logs-table.js +0 -45
  608. package/ee/server/migrations/review-workflows-content-types.js +0 -29
  609. package/ee/server/migrations/review-workflows-deleted-ct-in-workflows.js +0 -39
  610. package/ee/server/migrations/review-workflows-stage-attribute.js +0 -49
  611. package/ee/server/migrations/review-workflows-stages-color.js +0 -20
  612. package/ee/server/migrations/review-workflows-stages-roles.js +0 -68
  613. package/ee/server/migrations/review-workflows-workflow-name.js +0 -28
  614. package/ee/server/register.js +0 -40
  615. package/ee/server/routes/audit-logs.js +0 -43
  616. package/ee/server/routes/index.js +0 -8
  617. package/ee/server/routes/license-limit.js +0 -29
  618. package/ee/server/routes/review-workflows.js +0 -164
  619. package/ee/server/routes/sso.js +0 -69
  620. package/ee/server/routes/utils.js +0 -15
  621. package/ee/server/services/__tests__/assignees.test.js +0 -76
  622. package/ee/server/services/__tests__/audit-logs.test.js +0 -300
  623. package/ee/server/services/__tests__/passport.test.js +0 -95
  624. package/ee/server/services/__tests__/review-workflows-validation.test.js +0 -100
  625. package/ee/server/services/__tests__/review-workflows.test.js +0 -163
  626. package/ee/server/services/__tests__/sso.test.js +0 -117
  627. package/ee/server/services/__tests__/stages.test.js +0 -275
  628. package/ee/server/services/__tests__/workflows.test.js +0 -203
  629. package/ee/server/services/audit-logs.js +0 -236
  630. package/ee/server/services/auth.js +0 -75
  631. package/ee/server/services/index.js +0 -18
  632. package/ee/server/services/passport/provider-registry.js +0 -27
  633. package/ee/server/services/passport/sso.js +0 -37
  634. package/ee/server/services/passport.js +0 -46
  635. package/ee/server/services/review-workflows/__tests__/entity-service-decorator.test.js +0 -211
  636. package/ee/server/services/review-workflows/assignees.js +0 -54
  637. package/ee/server/services/review-workflows/entity-service-decorator.js +0 -101
  638. package/ee/server/services/review-workflows/metrics/__tests__/weekly-metrics.test.js +0 -65
  639. package/ee/server/services/review-workflows/metrics/index.js +0 -56
  640. package/ee/server/services/review-workflows/metrics/weekly-metrics.js +0 -76
  641. package/ee/server/services/review-workflows/review-workflows.js +0 -133
  642. package/ee/server/services/review-workflows/stage-permissions.js +0 -60
  643. package/ee/server/services/review-workflows/stages.js +0 -384
  644. package/ee/server/services/review-workflows/validation.js +0 -68
  645. package/ee/server/services/review-workflows/workflows/__tests__/content-types.test.js +0 -146
  646. package/ee/server/services/review-workflows/workflows/content-types.js +0 -89
  647. package/ee/server/services/review-workflows/workflows/index.js +0 -237
  648. package/ee/server/services/role.js +0 -24
  649. package/ee/server/services/seat-enforcement.js +0 -114
  650. package/ee/server/services/user.js +0 -234
  651. package/ee/server/utils/__tests__/persisted-tables.test.js +0 -38
  652. package/ee/server/utils/__tests__/sso-lock.test.js +0 -84
  653. package/ee/server/utils/index.js +0 -8
  654. package/ee/server/utils/persisted-tables.js +0 -139
  655. package/ee/server/utils/review-workflows.js +0 -39
  656. package/ee/server/utils/sso-lock.js +0 -42
  657. package/ee/server/validation/audit-logs.js +0 -18
  658. package/ee/server/validation/authentication.js +0 -36
  659. package/ee/server/validation/review-workflows.js +0 -92
  660. package/ee/server/validation/role.js +0 -68
  661. package/ee/server/validation/user.js +0 -27
  662. package/ee/strapi-server.js +0 -3
  663. package/server/bootstrap.js +0 -101
  664. package/server/config/admin-actions.js +0 -216
  665. package/server/config/admin-conditions.js +0 -26
  666. package/server/config/email-templates/forgot-password.js +0 -25
  667. package/server/config/index.js +0 -9
  668. package/server/config/settings.js +0 -9
  669. package/server/content-types/Permission.js +0 -64
  670. package/server/content-types/Role.js +0 -59
  671. package/server/content-types/User.js +0 -112
  672. package/server/content-types/api-token-permission.js +0 -36
  673. package/server/content-types/api-token.js +0 -76
  674. package/server/content-types/index.js +0 -11
  675. package/server/content-types/transfer-token-permission.js +0 -36
  676. package/server/content-types/transfer-token.js +0 -66
  677. package/server/controllers/__tests__/admin.test.js +0 -106
  678. package/server/controllers/__tests__/api-token.test.js +0 -496
  679. package/server/controllers/__tests__/content-api.test.js +0 -173
  680. package/server/controllers/__tests__/permission.test.js +0 -200
  681. package/server/controllers/__tests__/role.test.js +0 -201
  682. package/server/controllers/__tests__/transfer/token.test.js +0 -520
  683. package/server/controllers/__tests__/user.test.js +0 -326
  684. package/server/controllers/admin.js +0 -151
  685. package/server/controllers/api-token.js +0 -135
  686. package/server/controllers/authenticated-user.js +0 -52
  687. package/server/controllers/authentication.js +0 -172
  688. package/server/controllers/content-api.js +0 -15
  689. package/server/controllers/formatters/conditions.js +0 -12
  690. package/server/controllers/formatters/format-actions-by-sections.js +0 -40
  691. package/server/controllers/formatters/index.js +0 -9
  692. package/server/controllers/index.js +0 -14
  693. package/server/controllers/permission.js +0 -45
  694. package/server/controllers/role.js +0 -198
  695. package/server/controllers/transfer/index.js +0 -13
  696. package/server/controllers/transfer/runner.js +0 -28
  697. package/server/controllers/transfer/token.js +0 -131
  698. package/server/controllers/user.js +0 -141
  699. package/server/controllers/webhooks.js +0 -132
  700. package/server/destroy.js +0 -10
  701. package/server/domain/action/__tests__/action-domain.test.js +0 -230
  702. package/server/domain/action/__tests__/action-provider.test.js +0 -376
  703. package/server/domain/action/index.js +0 -142
  704. package/server/domain/action/provider.js +0 -83
  705. package/server/domain/condition/__tests__/condition-domain.test.js +0 -122
  706. package/server/domain/condition/__tests__/condition-provider.test.js +0 -156
  707. package/server/domain/condition/index.js +0 -92
  708. package/server/domain/condition/provider.js +0 -42
  709. package/server/domain/permission/__tests__/permission-domain.test.js +0 -285
  710. package/server/domain/permission/index.js +0 -156
  711. package/server/domain/user.js +0 -28
  712. package/server/index.js +0 -26
  713. package/server/middlewares/data-transfer.js +0 -29
  714. package/server/middlewares/index.js +0 -8
  715. package/server/middlewares/rateLimit.js +0 -47
  716. package/server/policies/hasPermissions.js +0 -38
  717. package/server/policies/index.js +0 -7
  718. package/server/policies/isAuthenticatedAdmin.js +0 -5
  719. package/server/policies/isTelemetryEnabled.js +0 -16
  720. package/server/register.js +0 -19
  721. package/server/routes/admin.js +0 -71
  722. package/server/routes/api-tokens.js +0 -70
  723. package/server/routes/authentication.js +0 -57
  724. package/server/routes/content-api.js +0 -20
  725. package/server/routes/index.js +0 -28
  726. package/server/routes/permissions.js +0 -20
  727. package/server/routes/roles.js +0 -107
  728. package/server/routes/serve-admin-panel.js +0 -71
  729. package/server/routes/transfer.js +0 -102
  730. package/server/routes/users.js +0 -88
  731. package/server/routes/webhooks.js +0 -81
  732. package/server/services/__tests__/action.test.js +0 -98
  733. package/server/services/__tests__/api-token.test.js +0 -980
  734. package/server/services/__tests__/auth.test.js +0 -319
  735. package/server/services/__tests__/content-type.test.js +0 -405
  736. package/server/services/__tests__/metrics.test.js +0 -65
  737. package/server/services/__tests__/passport.test.js +0 -90
  738. package/server/services/__tests__/permission.test.js +0 -177
  739. package/server/services/__tests__/permissions-manager-sanitize.test.js +0 -117
  740. package/server/services/__tests__/permissions-manager-validate.test.js +0 -119
  741. package/server/services/__tests__/permissions-manager.test.js +0 -318
  742. package/server/services/__tests__/permissions.section-builder.section.test.js +0 -136
  743. package/server/services/__tests__/project-settings.test.js +0 -397
  744. package/server/services/__tests__/role.test.js +0 -970
  745. package/server/services/__tests__/token.test.js +0 -217
  746. package/server/services/__tests__/transfer/token.test.js +0 -878
  747. package/server/services/__tests__/user.test.js +0 -786
  748. package/server/services/action.js +0 -35
  749. package/server/services/api-token.js +0 -453
  750. package/server/services/auth.js +0 -117
  751. package/server/services/condition.js +0 -14
  752. package/server/services/constants.js +0 -37
  753. package/server/services/content-type.js +0 -208
  754. package/server/services/index.js +0 -18
  755. package/server/services/metrics.js +0 -44
  756. package/server/services/passport/local-strategy.js +0 -28
  757. package/server/services/passport.js +0 -45
  758. package/server/services/permission/engine.js +0 -85
  759. package/server/services/permission/permissions-manager/index.js +0 -53
  760. package/server/services/permission/permissions-manager/query-builders.js +0 -72
  761. package/server/services/permission/permissions-manager/sanitize.js +0 -286
  762. package/server/services/permission/permissions-manager/validate.js +0 -218
  763. package/server/services/permission/queries.js +0 -190
  764. package/server/services/permission/sections-builder/builder.js +0 -84
  765. package/server/services/permission/sections-builder/handlers.js +0 -156
  766. package/server/services/permission/sections-builder/index.js +0 -50
  767. package/server/services/permission/sections-builder/section.js +0 -71
  768. package/server/services/permission/sections-builder/utils.js +0 -26
  769. package/server/services/permission.js +0 -33
  770. package/server/services/project-settings.js +0 -174
  771. package/server/services/role.js +0 -471
  772. package/server/services/token.js +0 -70
  773. package/server/services/transfer/index.js +0 -7
  774. package/server/services/transfer/permission.js +0 -22
  775. package/server/services/transfer/token.js +0 -449
  776. package/server/services/transfer/utils.js +0 -38
  777. package/server/services/user.js +0 -363
  778. package/server/strategies/__tests__/admin.test.js +0 -118
  779. package/server/strategies/__tests__/api-token.test.js +0 -364
  780. package/server/strategies/admin.js +0 -52
  781. package/server/strategies/api-token.js +0 -140
  782. package/server/strategies/data-transfer.js +0 -113
  783. package/server/strategies/index.js +0 -26
  784. package/server/utils/index.d.ts +0 -25
  785. package/server/utils/index.js +0 -9
  786. package/server/validation/__tests__/common-functions.test.js +0 -54
  787. package/server/validation/action-provider.js +0 -67
  788. package/server/validation/api-tokens.js +0 -32
  789. package/server/validation/authentication/forgot-password.js +0 -14
  790. package/server/validation/authentication/index.js +0 -19
  791. package/server/validation/authentication/register.js +0 -45
  792. package/server/validation/authentication/renew-token.js +0 -7
  793. package/server/validation/authentication/reset-password.js +0 -15
  794. package/server/validation/common-functions/check-fields-are-correctly-nested.js +0 -28
  795. package/server/validation/common-functions/check-fields-dont-have-duplicates.js +0 -17
  796. package/server/validation/common-functions/index.js +0 -9
  797. package/server/validation/common-validators.js +0 -209
  798. package/server/validation/permission.js +0 -53
  799. package/server/validation/policies/hasPermissions.js +0 -27
  800. package/server/validation/project-settings.js +0 -48
  801. package/server/validation/role.js +0 -59
  802. package/server/validation/transfer/index.js +0 -5
  803. package/server/validation/transfer/token.js +0 -42
  804. package/server/validation/user.js +0 -65
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-8933483b.mjs","sources":["../../admin/src/components/NoJavascript.tsx","../../admin/src/components/DefaultDocument.tsx","../../admin/src/components/PrivateRoute.tsx","../../admin/src/constants.ts","../../admin/src/contexts/configuration.ts","../../admin/src/hooks/useEnterprise.ts","../../admin/src/components/LanguageProvider.tsx","../../admin/src/components/UnauthenticatedLogo.tsx","../../admin/src/layouts/UnauthenticatedLayout.tsx","../../admin/src/pages/Auth/components/FieldActionWrapper.tsx","../../admin/src/pages/Auth/components/Login.tsx","../../admin/src/pages/Auth/components/ForgotPassword.tsx","../../admin/src/pages/Auth/components/ForgotPasswordSuccess.tsx","../../admin/src/pages/Auth/components/Oops.tsx","../../admin/src/components/NpsSurvey.tsx","../../admin/src/pages/Auth/components/Register.tsx","../../admin/src/pages/Auth/components/ResetPassword.tsx","../../admin/src/pages/Auth/constants.ts","../../admin/src/pages/Auth/AuthPage.tsx","../../admin/src/pages/NotFoundPage.tsx","../../admin/src/pages/UseCasePage.tsx","../../admin/src/utils/createRoute.tsx","../../admin/src/App.tsx","../../admin/src/assets/images/logo-strapi-2022.svg","../../admin/src/contexts/admin.ts","../../admin/src/components/ConfigurationProvider.tsx","../../admin/src/components/GuidedTour/Provider.tsx","../../admin/src/contexts/themeToggle.ts","../../admin/src/components/Theme.tsx","../../admin/src/components/ThemeToggleProvider.tsx","../../admin/src/components/Providers.tsx","../../admin/src/core/apis/Components.ts","../../admin/src/core/apis/CustomFields.ts","../../admin/src/core/apis/Fields.ts","../../admin/src/core/apis/Middlewares.ts","../../admin/src/core/apis/Plugin.ts","../../admin/src/core/apis/Reducers.ts","../../admin/src/core/store/hooks.ts","../../admin/src/components/RBACProvider.tsx","../../admin/src/content-manager/hooks/useSyncRbac/constants.js","../../admin/src/content-manager/hooks/useSyncRbac/reducer.js","../../admin/src/content-manager/pages/App/constants.js","../../admin/src/content-manager/pages/App/reducer.js","../../admin/src/content-manager/pages/EditViewLayoutManager/constants.js","../../admin/src/content-manager/pages/EditViewLayoutManager/reducer.js","../../admin/src/content-manager/pages/ListView/constants.js","../../admin/src/content-manager/pages/ListView/reducer.js","../../admin/src/content-manager/sharedReducers/crudReducer/constants.js","../../admin/src/content-manager/sharedReducers/crudReducer/reducer.js","../../admin/src/reducer.ts","../../admin/src/core/store/configure.ts","../../admin/src/core/utils/basename.ts","../../admin/src/core/utils/createHook.ts","../../admin/src/shared/hooks/useInjectionZone.ts","../../admin/src/shared/components/InjectionZone.tsx","../../admin/src/translations/languageNativeNames.ts","../../admin/src/StrapiApp.tsx","../../admin/src/render.ts"],"sourcesContent":["const styles = `\n.strapi--root {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: #fff;\n}\n\n.strapi--no-js {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n font-family: helvetica, arial, sans-serif;\n}\n`;\n\n/**\n * @internal\n *\n * @description this belongs to our default document that we render.\n */\nconst NoJavascript = () => {\n return (\n <noscript>\n <div className=\"strapi--root\">\n <div className=\"strapi--no-js\">\n <style type=\"text/css\">{styles}</style>\n <h1>JavaScript disabled</h1>\n <p>\n Please <a href=\"https://www.enable-javascript.com/\">enable JavaScript</a> in your\n browser and reload the page to proceed.\n </p>\n </div>\n </div>\n </noscript>\n );\n};\n\nexport { NoJavascript };\n","import { NoJavascript } from './NoJavascript';\n\n/**\n * TODO: add favicons.........\n */\n\nconst globalStyles = `\n html,\n body,\n #strapi {\n height: 100%;\n }\n body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n }\n`;\n\n/**\n * @internal\n */\nconst DefaultDocument = () => {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"referrer\" content=\"same-origin\" />\n\n <title>Strapi Admin</title>\n <style>{globalStyles}</style>\n </head>\n <body>\n <div id=\"strapi\" />\n <NoJavascript />\n </body>\n </html>\n );\n};\n\nexport { DefaultDocument };\n","import * as React from 'react';\n\nimport { auth } from '@strapi/helper-plugin';\nimport { Redirect, Route, useLocation } from 'react-router-dom';\n\ntype PropsOf<T> = T extends React.ComponentType<infer P> ? P : object;\n\ntype PrivateRouteProps<TComponent extends React.ElementType> = {\n component: TComponent;\n path: string;\n} & PropsOf<TComponent>;\n\nconst PrivateRoute = <TComponent extends React.ElementType>({\n component: Component,\n path,\n ...rest\n}: PrivateRouteProps<TComponent>) => {\n const { pathname, search } = useLocation();\n\n return (\n <Route\n path={path}\n render={(props) =>\n auth.getToken() !== null ? (\n <Component {...rest} {...props} />\n ) : (\n <Redirect\n to={{\n pathname: '/auth/login',\n search:\n pathname !== '/'\n ? `?redirectTo=${encodeURIComponent(`${pathname}${search}`)}`\n : undefined,\n }}\n />\n )\n }\n />\n );\n};\n\nexport { PrivateRoute };\n","import { StrapiAppSettingLink } from '@strapi/helper-plugin';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n },\n};\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport const ACTION_SET_APP_RUNTIME_STATUS = 'StrapiAdmin/APP/SET_APP_RUNTIME_STATUS';\nexport const ACTION_SET_ADMIN_PERMISSIONS = 'StrapiAdmin/App/SET_ADMIN_PERMISSIONS';\n\nexport interface SettingsMenuLink extends Omit<StrapiAppSettingLink, 'Component' | 'permissions'> {\n Component?: never;\n lockIcon?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n // If the Enterprise feature is not enabled and if the config doesn't disable it, we promote the Enterprise feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso',\n lockIcon: true,\n },\n ]\n : []),\n\n ...(!window.strapi.features.isEnabled(window.strapi.features.REVIEW_WORKFLOWS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: {\n id: 'Settings.review-workflows.page.title',\n defaultMessage: 'Review Workflows',\n },\n to: '/settings/purchase-review-workflows',\n id: 'review-workflows',\n lockIcon: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs',\n lockIcon: true,\n },\n ]\n : []),\n ],\n});\n","import { createContext } from '@radix-ui/react-context';\n\nexport interface ConfigurationContextValue {\n logos: {\n auth: { custom?: string | null; default: string };\n menu: { custom?: string | null; default: string };\n };\n showTutorials: boolean;\n showReleaseNotification: boolean;\n updateProjectSettings: (settings: { authLogo?: string; menuLogo?: string }) => void;\n}\n\nconst [ConfigurationContextProvider, useConfigurationContext] =\n createContext<ConfigurationContextValue>('ConfigurationContext');\n\nconst useConfiguration = () => useConfigurationContext('useConfiguration');\n\nexport { ConfigurationContextProvider, useConfiguration };\n","import * as React from 'react';\n\nimport { useCallbackRef } from '@strapi/helper-plugin';\n\nfunction isEnterprise() {\n return window.strapi.isEE;\n}\n\nexport interface UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> {\n defaultValue?: TDefaultValue;\n combine?: (ceData: TCEData, eeData: TEEData) => TCombinedValue;\n enabled?: boolean;\n}\n\ntype UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> =\n TDefaultValue extends null\n ? TCEData | TEEData | TCombinedValue | null\n : TCEData | TEEData | TCombinedValue | TDefaultValue;\n\nexport const useEnterprise = <\n TCEData,\n TEEData = TCEData,\n TCombinedValue = TEEData,\n TDefaultValue = TCEData | null\n>(\n ceData: TCEData,\n eeCallback: () => Promise<TEEData>,\n opts: UseEnterpriseOptions<TCEData, TEEData, TDefaultValue, TCombinedValue> = {}\n): UseEnterpriseReturn<TCEData, TEEData, TDefaultValue, TCombinedValue> => {\n const { defaultValue = null, combine = (_ceData, eeData) => eeData, enabled = true } = opts;\n const eeCallbackRef = useCallbackRef(eeCallback);\n const combineCallbackRef = useCallbackRef(combine);\n\n // We have to use a nested object here, because functions (e.g. Components)\n // can not be stored as value directly\n const [{ data }, setData] = React.useState<{\n data: TCEData | TEEData | TDefaultValue | TCombinedValue | null;\n }>({\n data: isEnterprise() && enabled ? defaultValue : ceData,\n });\n\n React.useEffect(() => {\n async function importEE() {\n const eeData = await eeCallbackRef();\n const combinedValue = combineCallbackRef(ceData, eeData);\n\n setData({ data: combinedValue ? combinedValue : eeData });\n }\n\n if (isEnterprise() && enabled) {\n importEE();\n }\n }, [ceData, eeCallbackRef, combineCallbackRef, enabled]);\n\n // @ts-expect-error – the hook type assertion works in practice. But seems to have issues here...\n return data;\n};\n","/*\n *\n * LanguageProvider\n *\n * this component connects the redux state language locale to the\n * IntlProvider component and i18n messages (loaded from `app/translations`)\n */\n\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport defaultsDeep from 'lodash/defaultsDeep';\nimport { IntlProvider } from 'react-intl';\n\n/* -------------------------------------------------------------------------------------------------\n * LocalesContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LocalesContextValue {\n changeLocale: (locale: keyof State['localeNames']) => void;\n localeNames: Record<string, string>;\n}\n\nconst [LocalesContextProvider, useLocalesContext] =\n createContext<LocalesContextValue>('LocalesContext');\n\nconst useLocales = () => useLocalesContext('useLocales');\n\n/* -------------------------------------------------------------------------------------------------\n * LanguageProvider\n * -----------------------------------------------------------------------------------------------*/\n\nconst LANGUAGE_LOCAL_STORAGE_KEY = 'strapi-admin-language';\n\ninterface LanguageProviderProps {\n children: React.ReactNode;\n localeNames: Record<string, string>;\n messages: Record<string, Record<string, string>>;\n}\n\nconst LanguageProvider = ({ children, localeNames, messages }: LanguageProviderProps) => {\n const [{ locale }, dispatch] = React.useReducer<React.Reducer<State, Action>, State>(\n reducer,\n initialState,\n () => {\n const languageFromLocaleStorage = window.localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY);\n if (languageFromLocaleStorage && localeNames[languageFromLocaleStorage]) {\n return {\n locale: languageFromLocaleStorage,\n localeNames,\n };\n } else {\n return {\n locale: 'en',\n localeNames,\n };\n }\n }\n );\n\n React.useEffect(() => {\n // Set user language in local storage.\n window.localStorage.setItem(LANGUAGE_LOCAL_STORAGE_KEY, locale);\n document.documentElement.setAttribute('lang', locale);\n }, [locale]);\n\n const changeLocale = React.useCallback((locale: keyof State['localeNames']) => {\n dispatch({\n type: 'CHANGE_LOCALE',\n locale,\n });\n }, []);\n\n const appMessages = defaultsDeep(messages[locale], messages.en);\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={appMessages} textComponent=\"span\">\n <LocalesContextProvider changeLocale={changeLocale} localeNames={localeNames}>\n {children}\n </LocalesContextProvider>\n </IntlProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n localeNames: Record<string, string>;\n locale: keyof State['localeNames'];\n}\n\nconst initialState: State = {\n localeNames: { en: 'English' },\n locale: 'en',\n};\n\ninterface ChangeLocaleAction {\n type: 'CHANGE_LOCALE';\n locale: keyof State['localeNames'];\n}\n\ntype Action = ChangeLocaleAction;\n\nconst reducer = (state = initialState, action: Action) => {\n switch (action.type) {\n case 'CHANGE_LOCALE': {\n const { locale } = action;\n\n if (!state.localeNames[locale]) {\n return state;\n }\n\n return { ...state, locale };\n }\n default: {\n return state;\n }\n }\n};\n\nexport { LanguageProvider, useLocales, LANGUAGE_LOCAL_STORAGE_KEY };\nexport type { LanguageProviderProps, LocalesContextValue };\n","import styled from 'styled-components';\n\nimport { useConfiguration } from '../contexts/configuration';\n\nconst Img = styled.img`\n height: ${72 / 16}rem;\n`;\n\nconst Logo = () => {\n const {\n logos: { auth },\n } = useConfiguration();\n\n return <Img src={auth?.custom ?? auth.default} aria-hidden alt=\"\" />;\n};\n\nexport { Logo };\n","import * as React from 'react';\n\nimport { Box, Flex, SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useLocales } from '../components/LanguageProvider';\n\nconst Wrapper = styled(Box)`\n margin: 0 auto;\n width: 552px;\n`;\n\nexport const Column = styled(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const { changeLocale, localeNames } = useLocales();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n changeLocale(language as string);\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={9}\n paddingBottom={9}\n paddingLeft={10}\n paddingRight={10}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex as=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={8}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box paddingTop={2} paddingBottom={11}>\n {children}\n </Box>\n </div>\n );\n};\n","import { FieldAction } from '@strapi/design-system';\nimport styled from 'styled-components';\n\nconst FieldActionWrapper = styled(FieldAction)`\n svg {\n height: 1rem;\n width: 1rem;\n path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\nexport { FieldActionWrapper };\n","import * as React from 'react';\n\nimport { Box, Button, Checkbox, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, auth, translatedErrors, useFetchClient, useQuery } from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport camelCase from 'lodash/camelCase';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { Login } from '../../../../../shared/contracts/authentication';\nimport { useLocales } from '../../../components/LanguageProvider';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n UnauthenticatedLayout,\n Column,\n LayoutContent,\n} from '../../../layouts/UnauthenticatedLayout';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nimport type { AxiosError } from 'axios';\n\ninterface LoginProps {\n children?: React.ReactNode;\n}\n\nconst LOGIN_SCHEMA = yup.object().shape({\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n password: yup.string().required(translatedErrors.required),\n rememberMe: yup.bool().nullable(),\n});\n\nconst Login = ({ children }: LoginProps) => {\n const [apiError, setApiError] = React.useState<string>();\n const [passwordShown, setPasswordShown] = React.useState(false);\n const { formatMessage } = useIntl();\n const { post } = useFetchClient();\n const { changeLocale } = useLocales();\n const query = useQuery();\n const { push } = useHistory();\n\n const mutation = useMutation(\n async (body: Login.Request['body'] & { rememberMe: boolean }) => {\n const {\n data: { data },\n } = await post<Login.Response>('/admin/login', body);\n\n return { ...data, rememberMe: body.rememberMe };\n },\n {\n onSuccess(data) {\n if (data) {\n const { token, user } = data;\n\n if (user.preferedLanguage) {\n changeLocale(user.preferedLanguage);\n }\n\n auth.setToken(token, data.rememberMe);\n auth.setUserInfo(user, data.rememberMe);\n\n const redirectTo = query.get('redirectTo');\n const redirectUrl = redirectTo ? decodeURIComponent(redirectTo) : '/';\n\n push(redirectUrl);\n }\n },\n onError(err: AxiosError<{ error: Login.Response['errors'] }>) {\n const message = err.response?.data?.error?.message ?? 'Something went wrong';\n\n if (camelCase(message).toLowerCase() === 'usernotactive') {\n push('/auth/oops');\n return;\n }\n\n setApiError(message);\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={1}>\n <Typography variant=\"alpha\" as=\"h1\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome!',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={7}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Auth.form.welcome.subtitle',\n defaultMessage: 'Log in to your Strapi account',\n })}\n </Typography>\n </Box>\n {mutation.isError && apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n email: '',\n password: '',\n rememberMe: false,\n }}\n onSubmit={(values) => {\n mutation.mutate(values);\n }}\n validationSchema={LOGIN_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TextInput\n error={\n errors.email\n ? formatMessage({\n id: errors.email,\n defaultMessage: 'This value is required.',\n })\n : ''\n }\n value={values.email}\n onChange={handleChange}\n label={formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' })}\n placeholder={formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n })}\n name=\"email\"\n required\n />\n <PasswordInput\n error={\n errors.password\n ? formatMessage({\n id: errors.password,\n defaultMessage: 'This value is required.',\n })\n : ''\n }\n onChange={handleChange}\n value={values.password}\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n name=\"password\"\n type={passwordShown ? 'text' : 'password'}\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.stopPropagation();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n />\n <Checkbox\n onValueChange={(checked) => {\n handleChange({ target: { value: checked, name: 'rememberMe' } });\n }}\n value={values.rememberMe}\n aria-label=\"rememberMe\"\n name=\"rememberMe\"\n >\n {formatMessage({\n id: 'Auth.form.rememberMe.label',\n defaultMessage: 'Remember me',\n })}\n </Checkbox>\n <Button fullWidth type=\"submit\">\n {formatMessage({ id: 'Auth.form.button.login', defaultMessage: 'Login' })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n {children}\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/forgot-password\">\n {formatMessage({\n id: 'Auth.link.forgot-password',\n defaultMessage: 'Forgot your password?',\n })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { Login };\nexport type { LoginProps };\n","import { Box, Button, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, translatedErrors, useFetchClient } from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ForgotPassword } from '../../../../../shared/contracts/authentication';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPassword = () => {\n const { push } = useHistory();\n const { post } = useFetchClient();\n const { formatMessage } = useIntl();\n\n const { mutate, isError } = useMutation(\n async (body: ForgotPassword.Request['body']) => {\n await post('/admin/forgot-password', body);\n },\n {\n onSuccess() {\n push('/auth/forgot-password-success');\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'Auth.form.button.password-recovery',\n defaultMessage: 'Password Recovery',\n })}\n </Typography>\n </Box>\n {isError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n email: '',\n }}\n onSubmit={(values) => {\n mutate(values);\n }}\n validationSchema={yup.object().shape({\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n })}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TextInput\n error={\n errors.email\n ? formatMessage({\n id: errors.email,\n defaultMessage: 'This email is invalid.',\n })\n : ''\n }\n value={values.email}\n onChange={handleChange}\n label={formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' })}\n placeholder={formatMessage({\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'kai@doe.com',\n })}\n name=\"email\"\n required\n />\n <Button type=\"submit\" fullWidth>\n {formatMessage({\n id: 'Auth.form.button.forgot-password',\n defaultMessage: 'Send Email',\n })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPassword };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst ForgotPasswordSuccess = () => {\n const { formatMessage } = useIntl();\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.title',\n defaultMessage: 'Email sent',\n })}\n </Typography>\n </Box>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.email',\n defaultMessage: 'It can take a few minutes to receive your password recovery link.',\n })}\n </Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'app.containers.AuthPage.ForgotPasswordSuccess.text.contact-admin',\n defaultMessage:\n 'If you do not receive this link, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ForgotPasswordSuccess };\n","import { Box, Flex, Main, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { useQuery } from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nconst Oops = () => {\n const { formatMessage } = useIntl();\n const query = useQuery();\n\n const message =\n query.get('info') ||\n formatMessage({\n id: 'Auth.components.Oops.text',\n defaultMessage: 'Your account has been suspended.',\n });\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({ id: 'Auth.components.Oops.title', defaultMessage: 'Oops...' })}\n </Typography>\n </Box>\n <Typography>{message}</Typography>\n <Box paddingTop={4}>\n <Typography>\n {formatMessage({\n id: 'Auth.components.Oops.text.admin',\n defaultMessage: 'If this is a mistake, please contact your administrator.',\n })}\n </Typography>\n </Box>\n </Column>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.signin', defaultMessage: 'Sign in' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { Oops };\n","import * as React from 'react';\n\nimport {\n Box,\n Flex,\n IconButton,\n Button,\n Typography,\n Textarea,\n Portal,\n Field,\n FieldLabel,\n FieldInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { auth, useNotification, useAppInfo, usePersistentState } from '@strapi/helper-plugin';\nimport { Cross } from '@strapi/icons';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport styled, { useTheme } from 'styled-components';\nimport * as yup from 'yup';\n\nconst FieldWrapper = styled(Field)`\n height: ${32 / 16}rem;\n width: ${32 / 16}rem;\n\n > label,\n ~ input {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n > label {\n color: inherit;\n cursor: pointer;\n padding: ${({ theme }) => theme.spaces[2]};\n text-align: center;\n vertical-align: middle;\n }\n\n &:hover,\n &:focus-within {\n background-color: ${({ theme }) => theme.colors.neutral0};\n }\n\n &:active,\n &.selected {\n color: ${({ theme }) => theme.colors.primary700};\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.primary700};\n }\n`;\n\nconst delays = {\n postResponse: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n postFirstDismissal: 7 * 24 * 60 * 60 * 1000, // 7 days in ms\n postSubsequentDismissal: 90 * 24 * 60 * 60 * 1000, // 90 days in ms\n display: 5 * 60 * 1000, // 5 minutes in ms\n};\n\nconst ratingArray = [...Array(11).keys()];\n\nconst checkIfShouldShowSurvey = (settings: NpsSurveySettings) => {\n const { enabled, lastResponseDate, firstDismissalDate, lastDismissalDate } = settings;\n\n // This function goes through all the cases where we'd want to not show the survey:\n // 1. If the survey is disabled by strapi, abort mission, don't bother checking the other settings.\n // 2. If the survey is disabled by user, abort mission, don't bother checking the other settings.\n // 3. If the user has already responded to the survey, check if enough time has passed since the last response.\n // 4. If the user has dismissed the survey twice or more before, check if enough time has passed since the last dismissal.\n // 5. If the user has only dismissed the survey once before, check if enough time has passed since the first dismissal.\n // If none of these cases check out, then we show the survey.\n // Note that submitting a response resets the dismissal counts.\n // Checks 4 and 5 should not be reversed, since the first dismissal will also exist if the user has dismissed the survey twice or more before.\n\n // For users who had created an account before the NPS feature was introduced,\n // we assume that they would have enabled the NPS feature if they had the chance.\n\n // Global strapi disable for NSP.\n if (window.strapi.flags.nps === false) {\n return false;\n }\n\n // User chose not to enable the NPS feature when signing up\n if (enabled === false) {\n return false;\n }\n\n // The user has already responded to the survey\n if (lastResponseDate) {\n const timeSinceLastResponse = Date.now() - new Date(lastResponseDate).getTime();\n\n if (timeSinceLastResponse >= delays.postResponse) {\n return true;\n }\n\n return false;\n }\n\n // The user has dismissed the survey twice or more before\n if (lastDismissalDate) {\n const timeSinceLastDismissal = Date.now() - new Date(lastDismissalDate).getTime();\n\n if (timeSinceLastDismissal >= delays.postSubsequentDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has only dismissed the survey once before\n if (firstDismissalDate) {\n const timeSinceFirstDismissal = Date.now() - new Date(firstDismissalDate).getTime();\n\n if (timeSinceFirstDismissal >= delays.postFirstDismissal) {\n return true;\n }\n\n return false;\n }\n\n // The user has not interacted with the survey before\n return true;\n};\n\nconst NpsSurvey = () => {\n const theme = useTheme();\n const { formatMessage } = useIntl();\n const { npsSurveySettings, setNpsSurveySettings } = useNpsSurveySettings();\n const [isFeedbackResponse, setIsFeedbackResponse] = React.useState(false);\n const toggleNotification = useNotification();\n const { currentEnvironment, strapiVersion } = useAppInfo();\n\n interface NpsSurveyMutationBody {\n email: string;\n rating: number | null;\n comment: string;\n environment?: string;\n version?: string;\n license: 'Enterprise' | 'Community';\n }\n\n const { mutate, isLoading } = useMutation<unknown, unknown, NpsSurveyMutationBody>(\n async (form) => {\n const res = await fetch('https://analytics.strapi.io/submit-nps', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(form),\n });\n\n if (!res.ok) {\n throw new Error('Failed to submit NPS survey');\n }\n\n return res;\n },\n {\n onSuccess() {\n setNpsSurveySettings((settings) => ({\n ...settings,\n lastResponseDate: new Date().toString(),\n firstDismissalDate: null,\n lastDismissalDate: null,\n }));\n setIsFeedbackResponse(true);\n // Thank you message displayed in the banner should disappear after few seconds.\n setTimeout(() => {\n setSurveyIsShown(false);\n }, 3000);\n },\n onError() {\n toggleNotification({\n type: 'warning',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n },\n }\n );\n\n // Only check on first render if the survey should be shown\n const [surveyIsShown, setSurveyIsShown] = React.useState(\n checkIfShouldShowSurvey(npsSurveySettings)\n );\n\n // Set a cooldown to show the survey when session begins\n const [displaySurvey, setDisplaySurvey] = React.useState(false);\n\n React.useEffect(() => {\n const displayTime = setTimeout(() => {\n setDisplaySurvey(true);\n }, delays.display);\n\n return () => {\n clearTimeout(displayTime);\n };\n }, []);\n\n if (!displaySurvey) {\n return null;\n }\n\n if (!surveyIsShown) {\n return null;\n }\n\n const handleSubmitResponse = ({\n npsSurveyRating,\n npsSurveyFeedback,\n }: {\n npsSurveyRating: NpsSurveyMutationBody['rating'];\n npsSurveyFeedback: NpsSurveyMutationBody['comment'];\n }) => {\n const userInfo = auth.getUserInfo();\n mutate({\n email: typeof userInfo === 'object' && userInfo !== null ? userInfo.email : '',\n rating: npsSurveyRating,\n comment: npsSurveyFeedback,\n environment: currentEnvironment,\n version: strapiVersion ?? undefined,\n license: window.strapi.projectType,\n });\n };\n\n const handleDismiss = () => {\n setNpsSurveySettings((settings) => {\n const nextSettings = {\n ...settings,\n lastResponseDate: null,\n };\n\n if (settings.firstDismissalDate) {\n // If the user dismisses the survey for the second time\n nextSettings.lastDismissalDate = new Date().toString();\n } else {\n // If the user dismisses the survey for the first time\n nextSettings.firstDismissalDate = new Date().toString();\n }\n\n return nextSettings;\n });\n\n setSurveyIsShown(false);\n };\n\n return (\n <Portal>\n <Formik\n initialValues={{ npsSurveyFeedback: '', npsSurveyRating: null }}\n onSubmit={handleSubmitResponse}\n validationSchema={yup.object({\n npsSurveyFeedback: yup.string(),\n npsSurveyRating: yup.number().required(),\n })}\n >\n {({ values, handleChange, setFieldValue }) => (\n <Form name=\"npsSurveyForm\">\n <Flex\n hasRadius\n direction=\"column\"\n padding={4}\n borderColor=\"primary200\"\n background=\"neutral0\"\n shadow=\"popupShadow\"\n position=\"fixed\"\n bottom={0}\n left=\"50%\"\n transform=\"translateX(-50%)\"\n zIndex={theme.zIndices[2]}\n width=\"50%\"\n >\n {isFeedbackResponse ? (\n <Typography fontWeight=\"semiBold\">\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-response',\n defaultMessage: 'Thank you very much for your feedback!',\n })}\n </Typography>\n ) : (\n <Box as=\"fieldset\" width=\"100%\">\n <Flex justifyContent=\"space-between\" width=\"100%\">\n <Box marginLeft=\"auto\" marginRight=\"auto\">\n <Typography fontWeight=\"semiBold\" as=\"legend\">\n {formatMessage({\n id: 'app.components.NpsSurvey.banner-title',\n defaultMessage:\n 'How likely are you to recommend Strapi to a friend or colleague?',\n })}\n </Typography>\n </Box>\n <IconButton\n onClick={handleDismiss}\n aria-label={formatMessage({\n id: 'app.components.NpsSurvey.dismiss-survey-label',\n defaultMessage: 'Dismiss survey',\n })}\n icon={<Cross />}\n />\n </Flex>\n <Flex gap={2} marginTop={2} marginBottom={2} justifyContent=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.no-recommendation',\n defaultMessage: 'Not at all likely',\n })}\n </Typography>\n {ratingArray.map((number) => {\n return (\n <FieldWrapper\n key={number}\n className={values.npsSurveyRating === number ? 'selected' : undefined} // \"selected\" class added when child radio button is checked\n hasRadius\n background=\"primary100\"\n borderColor=\"primary200\"\n color=\"primary600\"\n position=\"relative\"\n cursor=\"pointer\"\n >\n <FieldLabel htmlFor={`nps-survey-rating-${number}-input`}>\n <VisuallyHidden>\n <FieldInput\n type=\"radio\"\n id={`nps-survey-rating-${number}-input`}\n name=\"npsSurveyRating\"\n checked={values.npsSurveyRating === number}\n onChange={(e) =>\n setFieldValue('npsSurveyRating', parseInt(e.target.value, 10))\n }\n value={number}\n />\n </VisuallyHidden>\n {number}\n </FieldLabel>\n </FieldWrapper>\n );\n })}\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.NpsSurvey.happy-to-recommend',\n defaultMessage: 'Extremely likely',\n })}\n </Typography>\n </Flex>\n {values.npsSurveyRating !== null && (\n <Flex direction=\"column\">\n <Box marginTop={2}>\n <FieldLabel htmlFor=\"npsSurveyFeedback\" fontWeight=\"semiBold\" fontSize={2}>\n {formatMessage({\n id: 'app.components.NpsSurvey.feedback-question',\n defaultMessage: 'Do you have any suggestion for improvements?',\n })}\n </FieldLabel>\n </Box>\n <Box width=\"62%\" marginTop={3} marginBottom={4}>\n <Textarea\n id=\"npsSurveyFeedback\" // formik element attribute \"id\" should be same as the values key to work\n width=\"100%\"\n onChange={handleChange}\n >\n {values.npsSurveyFeedback}\n </Textarea>\n </Box>\n <Button marginBottom={2} type=\"submit\" loading={isLoading}>\n {formatMessage({\n id: 'app.components.NpsSurvey.submit-feedback',\n defaultMessage: 'Submit Feedback',\n })}\n </Button>\n </Flex>\n )}\n </Box>\n )}\n </Flex>\n </Form>\n )}\n </Formik>\n </Portal>\n );\n};\n\ninterface NpsSurveySettings {\n enabled: boolean;\n lastResponseDate: string | null;\n firstDismissalDate: string | null;\n lastDismissalDate: string | null;\n}\n\n/**\n * We exported to make it available during admin user registration.\n * Because we only enable the NPS for users who subscribe to the newsletter when signing up\n */\nfunction useNpsSurveySettings() {\n const [npsSurveySettings, setNpsSurveySettings] = usePersistentState<NpsSurveySettings>(\n 'STRAPI_NPS_SURVEY_SETTINGS',\n {\n enabled: true,\n lastResponseDate: null,\n firstDismissalDate: null,\n lastDismissalDate: null,\n }\n );\n\n /**\n * TODO: should this just be an array so we can alias the `usePersistentState` hook?\n */\n return { npsSurveySettings, setNpsSurveySettings };\n}\n\nexport { NpsSurvey, useNpsSurveySettings };\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n Grid,\n GridItem,\n Main,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport {\n Form,\n auth,\n getYupInnerErrors,\n translatedErrors,\n useAPIErrorHandler,\n useFetchClient,\n useGuidedTour,\n useNotification,\n useQuery,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport omit from 'lodash/omit';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { useQuery as useReactQuery, useMutation } from 'react-query';\nimport { NavLink, Redirect, useHistory, useRouteMatch } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register,\n RegisterAdmin,\n RegistrationInfo,\n} from '../../../../../shared/contracts/authentication';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { AuthType } from '../constants';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nimport type { AxiosError } from 'axios';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n registrationToken: yup.string().required(translatedErrors.required),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n email: yup\n .string()\n .email(translatedErrors.email)\n .strict()\n .lowercase(translatedErrors.lowercase)\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const toggleNotification = useNotification();\n const { push } = useHistory();\n const [passwordShown, setPasswordShown] = React.useState(false);\n const [confirmPasswordShown, setConfirmPasswordShown] = React.useState(false);\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { setSkipped } = useGuidedTour();\n const query = useQuery();\n const match = useRouteMatch<{ authType: Extract<AuthType, `register${string}`> }>(\n '/auth/:authType'\n );\n const { formatAPIError } = useAPIErrorHandler();\n const { get, post } = useFetchClient();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo } = useReactQuery({\n queryKey: ['admin', 'registration-info', registrationToken],\n async queryFn() {\n const {\n data: { data },\n } = await get<RegistrationInfo.Response>(`/admin/registration-info`, {\n params: {\n registrationToken,\n },\n });\n\n return data;\n },\n enabled: !!registrationToken,\n initialData: {},\n onError(err: AxiosError<{ error: Exclude<RegistrationInfo.Response['errors'], undefined> }>) {\n const message = formatAPIError(err);\n\n toggleNotification({\n type: 'warning',\n message,\n });\n\n push(`/auth/oops?info=${encodeURIComponent(message)}`);\n },\n });\n\n const registerAdminMutation = useMutation(\n async (body: RegisterAdmin.Request['body'] & { news: boolean }) => {\n const { news, ...restBody } = body;\n const { data } = await post<RegisterAdmin.Response>('/admin/register-admin', restBody);\n\n return { ...data.data, news };\n },\n {\n onSuccess(data) {\n const { token, user, news } = data;\n\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n const { roles } = user;\n\n if (roles) {\n const isUserSuperAdmin = roles.find(({ code }) => code === 'strapi-super-admin');\n\n if (isUserSuperAdmin) {\n auth.set(false, 'GUIDED_TOUR_SKIPPED', true);\n setSkipped(false);\n trackUsage('didLaunchGuidedtour');\n }\n }\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n push({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n push('/');\n }\n },\n onError(err: AxiosError<{ error: Exclude<RegisterAdmin.Response['errors'], undefined> }>) {\n trackUsage('didNotCreateFirstAdmin');\n\n const error = formatAPIError(err);\n setApiError(error);\n },\n }\n );\n\n const registerUserMutation = useMutation(\n async (body: Register.Request['body'] & { news: boolean }) => {\n const { news, ...restBody } = body;\n const { data } = await post<Register.Response>('/admin/register', restBody);\n\n return { ...data.data, news };\n },\n {\n onSuccess(data) {\n const { token, user, news } = data;\n\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n push({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n push('/');\n }\n },\n onError(err: AxiosError<{ error: Exclude<RegisterAdmin.Response['errors'], undefined> }>) {\n trackUsage('didNotCreateFirstAdmin');\n\n const error = formatAPIError(err);\n setApiError(error);\n },\n }\n );\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Redirect to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography as=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Formik\n enableReinitialize\n initialValues={{\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n }}\n onSubmit={async (data, formik) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n registerUserMutation.mutate({\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n });\n } else {\n registerAdminMutation.mutate(\n omit(normalizedData, ['registrationToken', 'confirmPassword'])\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n const errors = getYupInnerErrors(err);\n\n formik.setErrors(errors);\n }\n setSubmitCount(submitCount + 1);\n }\n }}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => {\n return (\n <Form>\n <Main>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid gap={4}>\n <GridItem col={6}>\n <TextInput\n name=\"firstname\"\n required\n value={values.firstname}\n error={\n errors.firstname\n ? formatMessage(errors.firstname as MessageDescriptor)\n : undefined\n }\n onChange={handleChange}\n label={formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n })}\n />\n </GridItem>\n <GridItem col={6}>\n <TextInput\n name=\"lastname\"\n value={values.lastname}\n onChange={handleChange}\n label={formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n })}\n />\n </GridItem>\n </Grid>\n <TextInput\n name=\"email\"\n disabled={!isAdminRegistration}\n value={values.email}\n onChange={handleChange}\n error={\n errors.email ? formatMessage(errors.email as MessageDescriptor) : undefined\n }\n required\n label={formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n })}\n type=\"email\"\n />\n <PasswordInput\n name=\"password\"\n onChange={handleChange}\n value={values.password}\n error={\n errors.password\n ? formatMessage(errors.password as MessageDescriptor)\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n hint={formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n })}\n required\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n type={passwordShown ? 'text' : 'password'}\n />\n <PasswordInput\n name=\"confirmPassword\"\n onChange={handleChange}\n value={values.confirmPassword}\n error={\n errors.confirmPassword\n ? formatMessage(errors.confirmPassword as MessageDescriptor)\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setConfirmPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n confirmPasswordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {confirmPasswordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n label={formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n })}\n type={confirmPasswordShown ? 'text' : 'password'}\n />\n <Checkbox\n onValueChange={(checked) => {\n handleChange({ target: { value: checked, name: 'news' } });\n }}\n value={values.news}\n name=\"news\"\n aria-label=\"news\"\n >\n {formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n )}\n </Checkbox>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Main>\n </Form>\n );\n }}\n </Formik>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { Register };\nexport type { RegisterProps };\n","import * as React from 'react';\n\nimport { Box, Button, Flex, Main, TextInput, Typography } from '@strapi/design-system';\nimport { Link } from '@strapi/design-system/v2';\nimport { Form, auth, translatedErrors, useFetchClient, useQuery } from '@strapi/helper-plugin';\nimport { Eye, EyeStriked } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\n\nimport { FieldActionWrapper } from './FieldActionWrapper';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, translatedErrors.minLength)\n .matches(/[a-z]/, 'components.Input.error.contain.lowercase')\n .matches(/[A-Z]/, 'components.Input.error.contain.uppercase')\n .matches(/\\d/, 'components.Input.error.contain.number')\n .required(translatedErrors.required),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref('password'), null], 'components.Input.error.password.noMatch')\n .required(translatedErrors.required),\n});\n\nconst ResetPassword = () => {\n const [passwordShown, setPasswordShown] = React.useState(false);\n const [confirmPasswordShown, setConfirmPasswordShown] = React.useState(false);\n const { formatMessage } = useIntl();\n const { post } = useFetchClient();\n const { push } = useHistory();\n const query = useQuery();\n\n const { mutate, isError } = useMutation(\n async (body: Pick<ResetPassword.Request['body'], 'password'>) => {\n const {\n data: { data },\n } = await post<ResetPassword.Response>('/admin/reset-password', {\n ...body,\n resetPasswordToken: query.get('code'),\n });\n\n return data;\n },\n {\n onSuccess(data) {\n if (data) {\n const { token, user } = data;\n auth.setToken(token, false);\n auth.setUserInfo(user, false);\n\n // Redirect to the homePage\n push('/');\n }\n },\n }\n );\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography as=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {isError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Formik\n enableReinitialize\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n mutate({ password: values.password });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <PasswordInput\n name=\"password\"\n onChange={handleChange}\n value={values.password}\n error={\n errors.password\n ? formatMessage(\n {\n id: errors.password,\n defaultMessage: 'This field is required.',\n },\n {\n min: 8,\n }\n )\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {passwordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n hint={formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n })}\n required\n label={formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n })}\n type={passwordShown ? 'text' : 'password'}\n />\n <PasswordInput\n name=\"confirmPassword\"\n onChange={handleChange}\n value={values.confirmPassword}\n error={\n errors.confirmPassword\n ? formatMessage({\n id: errors.confirmPassword,\n defaultMessage: 'This value is required.',\n })\n : undefined\n }\n endAction={\n <FieldActionWrapper\n onClick={(e) => {\n e.preventDefault();\n setConfirmPasswordShown((prev) => !prev);\n }}\n label={formatMessage(\n passwordShown\n ? {\n id: 'Auth.form.password.show-password',\n defaultMessage: 'Show password',\n }\n : {\n id: 'Auth.form.password.hide-password',\n defaultMessage: 'Hide password',\n }\n )}\n >\n {confirmPasswordShown ? <Eye /> : <EyeStriked />}\n </FieldActionWrapper>\n }\n required\n label={formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n })}\n type={confirmPasswordShown ? 'text' : 'password'}\n />\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n )}\n </Formik>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n {/* @ts-expect-error – error with inferring the props from the as component */}\n <Link as={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nconst PasswordInput = styled(TextInput)`\n ::-ms-reveal {\n display: none;\n }\n`;\n\nexport { ResetPassword };\n","import type { ComponentType } from 'react';\n\nimport { ForgotPassword } from './components/ForgotPassword';\nimport { ForgotPasswordSuccess } from './components/ForgotPasswordSuccess';\nimport { Oops } from './components/Oops';\nimport { Register, RegisterProps } from './components/Register';\nimport { ResetPassword } from './components/ResetPassword';\n\nexport type AuthType =\n | 'login'\n | 'register'\n | 'register-admin'\n | 'forgot-password'\n | 'reset-password'\n | 'forgot-password-success'\n | 'oops'\n | 'providers';\n\nexport type FormDictionary = Record<AuthType, ComponentType | ComponentType<RegisterProps>>;\n\nexport const FORMS = {\n 'forgot-password': ForgotPassword,\n 'forgot-password-success': ForgotPasswordSuccess,\n // the `Component` attribute is set after all forms and CE/EE components are loaded, but since we\n // are here outside of a React component we can not use the hook directly\n login: () => null,\n oops: Oops,\n register: Register,\n 'register-admin': Register,\n 'reset-password': ResetPassword,\n providers: () => null,\n} satisfies FormDictionary;\n","import { auth } from '@strapi/helper-plugin';\nimport { Redirect, useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useEnterprise } from '../../hooks/useEnterprise';\n\nimport { Login as LoginCE } from './components/Login';\nimport { AuthType, FORMS, FormDictionary } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * AuthPage\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AuthPageProps {\n hasAdmin: boolean;\n}\n\nconst AuthPage = ({ hasAdmin }: AuthPageProps) => {\n const {\n location: { search },\n } = useHistory();\n const match = useRouteMatch<{ authType: AuthType }>('/auth/:authType');\n const authType = match?.params.authType;\n const Login = useEnterprise(\n LoginCE,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/components/Login')).LoginEE\n );\n const forms = useEnterprise<FormDictionary, Partial<FormDictionary>>(\n FORMS,\n async () => (await import('../../../../ee/admin/src/pages/AuthPage/constants')).FORMS,\n {\n combine(ceForms, eeForms) {\n return {\n ...ceForms,\n ...eeForms,\n };\n },\n defaultValue: FORMS,\n }\n );\n\n if (!authType || !forms) {\n return <Redirect to=\"/\" />;\n }\n\n const Component = forms[authType];\n\n // Redirect the user to the login page if\n // the endpoint does not exist or\n // there is already an admin user oo\n // the user is already logged in\n if (!Component || (hasAdmin && authType === 'register-admin') || auth.getToken()) {\n return <Redirect to=\"/\" />;\n }\n\n // Redirect the user to the register-admin if it is the first user\n if (!hasAdmin && authType !== 'register-admin') {\n return (\n <Redirect\n to={{\n pathname: '/auth/register-admin',\n // Forward the `?redirectTo` from /auth/login\n // /abc => /auth/login?redirectTo=%2Fabc => /auth/register-admin?redirectTo=%2Fabc\n search,\n }}\n />\n );\n }\n\n if (Login && authType === 'login') {\n // Assign the component to render for the login form\n return <Login />;\n } else if (authType === 'login' && !Login) {\n // block rendering until the Login EE component is fully loaded\n return null;\n }\n\n return <Component hasAdmin={hasAdmin} />;\n};\n\nexport { AuthPage };\nexport type { AuthPageProps };\n","/**\n * NotFoundPage\n *\n * This is the page we show when the user visits a url that doesn't have a route\n *\n */\nimport {\n ContentLayout,\n EmptyStateLayout,\n HeaderLayout,\n LinkButton,\n Main,\n} from '@strapi/design-system';\nimport { useFocusWhenNavigate } from '@strapi/helper-plugin';\nimport { ArrowRight, EmptyPictures } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nexport const NotFoundPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n\n return (\n <Main labelledBy=\"title\">\n <HeaderLayout\n id=\"title\"\n title={formatMessage({\n id: 'content-manager.pageNotFound',\n defaultMessage: 'Page not found',\n })}\n />\n <ContentLayout>\n <EmptyStateLayout\n action={\n <LinkButton variant=\"secondary\" endIcon={<ArrowRight />} to=\"/\">\n {formatMessage({\n id: 'app.components.NotFoundPage.back',\n defaultMessage: 'Back to homepage',\n })}\n </LinkButton>\n }\n content={formatMessage({\n id: 'app.page.not.found',\n defaultMessage: \"Oops! We can't seem to find the page you're looging for...\",\n })}\n hasRadius\n icon={<EmptyPictures width=\"10rem\" />}\n shadow=\"tableShadow\"\n />\n </ContentLayout>\n </Main>\n );\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n Main,\n Option,\n Select,\n TextButton,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { auth, pxToRem, useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport { parse } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { Logo } from '../components/UnauthenticatedLogo';\nimport { LayoutContent, UnauthenticatedLayout } from '../layouts/UnauthenticatedLayout';\n\nexport const options = [\n {\n intlLabel: {\n id: 'Usecase.front-end',\n defaultMessage: 'Front-end developer',\n },\n value: 'front_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.back-end',\n defaultMessage: 'Back-end developer',\n },\n value: 'back_end_developer',\n },\n {\n intlLabel: {\n id: 'Usecase.full-stack',\n defaultMessage: 'Full-stack developer',\n },\n value: 'full_stack_developer',\n },\n {\n intlLabel: {\n id: 'global.content-manager',\n defaultMessage: 'Content Manager',\n },\n value: 'content_manager',\n },\n {\n intlLabel: {\n id: 'Usecase.content-creator',\n defaultMessage: 'Content Creator',\n },\n value: 'content_creator',\n },\n {\n intlLabel: {\n id: 'Usecase.other',\n defaultMessage: 'Other',\n },\n value: 'other',\n },\n];\n\nconst TypographyCenter = styled(Typography)`\n text-align: center;\n`;\n\nexport const UseCasePage = () => {\n const toggleNotification = useNotification();\n const { push, location } = useHistory();\n const { formatMessage } = useIntl();\n const [role, setRole] = React.useState<string | number | null>(null);\n const [otherRole, setOtherRole] = React.useState('');\n const { post } = useFetchClient();\n\n const { firstname, email } = auth.get('userInfo') ?? {};\n const { hasAdmin } = parse(location?.search, { ignoreQueryPrefix: true });\n const isOther = role === 'other';\n\n const handleSubmit = async (event: React.FormEvent, skipPersona: boolean) => {\n event.preventDefault();\n try {\n await post('https://analytics.strapi.io/register', {\n email,\n username: firstname,\n firstAdmin: Boolean(!hasAdmin),\n persona: {\n role: skipPersona ? undefined : role,\n otherRole: skipPersona ? undefined : otherRole,\n },\n });\n\n toggleNotification({\n type: 'success',\n message: {\n id: 'Usecase.notification.success.project-created',\n defaultMessage: 'Project has been successfully created',\n },\n });\n push('/');\n } catch (err) {\n // Silent\n }\n };\n\n return (\n <UnauthenticatedLayout>\n <Main labelledBy=\"usecase-title\">\n <LayoutContent>\n <form onSubmit={(e) => handleSubmit(e, false)}>\n <Flex direction=\"column\" paddingBottom={7}>\n <Logo />\n <Box paddingTop={6} paddingBottom={1} width={pxToRem(250)}>\n <TypographyCenter variant=\"alpha\" as=\"h1\" id=\"usecase-title\">\n {formatMessage({\n id: 'Usecase.title',\n defaultMessage: 'Tell us a bit more about yourself',\n })}\n </TypographyCenter>\n </Box>\n </Flex>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Select\n id=\"usecase\"\n data-testid=\"usecase\"\n label={formatMessage({\n id: 'Usecase.input.work-type',\n defaultMessage: 'What type of work do you do?',\n })}\n // onClear={() => setRole(null)}\n // clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n onChange={(value) => setRole(value)}\n value={role}\n >\n {options.map(({ intlLabel, value }) => (\n <Option key={value} value={value}>\n {formatMessage(intlLabel)}\n </Option>\n ))}\n </Select>\n {isOther && (\n <TextInput\n name=\"other\"\n label={formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}\n value={otherRole}\n onChange={(e) => setOtherRole(e.target.value)}\n data-testid=\"other\"\n />\n )}\n <Button type=\"submit\" size=\"L\" fullWidth disabled={!role}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <TextButton onClick={(event) => handleSubmit(event, true)}>\n {formatMessage({\n id: 'Usecase.button.skip',\n defaultMessage: 'Skip this question',\n })}\n </TextButton>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport * as React from 'react';\n\nimport { LoadingIndicatorPage, MenuItem } from '@strapi/helper-plugin';\nimport { Route } from 'react-router-dom';\n\ninterface LazyCompoProps {\n loadComponent: Required<MenuItem>['Component'];\n}\n\nconst LazyCompo = ({ loadComponent }: LazyCompoProps) => {\n const [Compo, setCompo] = React.useState<React.ComponentType | null>(null);\n\n React.useEffect(() => {\n const loadCompo = async () => {\n try {\n const loadedCompo = await loadComponent();\n\n // TODO the loaded component provided can currently come from a default or named export\n // We will move the entire codebase to use named exports only\n // Until then we support both cases with priority given to the existing default exports\n if (typeof loadedCompo === 'function') {\n setCompo(() => loadedCompo);\n } else if (loadedCompo.default) {\n setCompo(() => loadedCompo.default!);\n }\n } catch (err) {}\n };\n\n loadCompo();\n }, [loadComponent]);\n\n if (Compo) {\n return <Compo />;\n }\n\n return <LoadingIndicatorPage />;\n};\n\nexport const createRoute = (\n loadComponent: LazyCompoProps['loadComponent'],\n to: MenuItem['to'],\n exact: MenuItem['exact'] = false\n) => {\n return (\n <Route\n render={() => <LazyCompo loadComponent={loadComponent} />}\n key={to}\n path={to}\n exact={exact || false}\n />\n );\n};\n","/**\n *\n * App.js\n *\n */\n\nimport * as React from 'react';\n\nimport { SkipToContent } from '@strapi/design-system';\nimport {\n auth,\n LoadingIndicatorPage,\n MenuItem,\n prefixFileUrlWithBackendUrl,\n TrackingProvider,\n useAppInfo,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport merge from 'lodash/merge';\nimport { useIntl } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { Route, Switch } from 'react-router-dom';\n\nimport { PrivateRoute } from './components/PrivateRoute';\nimport { ADMIN_PERMISSIONS_CE, ACTION_SET_ADMIN_PERMISSIONS } from './constants';\nimport { useConfiguration } from './contexts/configuration';\nimport { useEnterprise } from './hooks/useEnterprise';\nimport { AuthPage } from './pages/Auth/AuthPage';\nimport { NotFoundPage } from './pages/NotFoundPage';\nimport { UseCasePage } from './pages/UseCasePage';\nimport { createRoute } from './utils/createRoute';\n\ntype StrapiRoute = Pick<MenuItem, 'exact' | 'to'> & Required<Pick<MenuItem, 'Component'>>;\n\nconst ROUTES_CE: StrapiRoute[] | null = null;\n\nconst AuthenticatedApp = React.lazy(() =>\n import('./components/AuthenticatedApp').then((mod) => ({ default: mod.AuthenticatedApp }))\n);\n\nexport const App = () => {\n const adminPermissions = useEnterprise(\n ADMIN_PERMISSIONS_CE,\n async () => (await import('../../ee/admin/src/constants')).ADMIN_PERMISSIONS_EE,\n {\n combine(cePermissions, eePermissions) {\n // the `settings` NS e.g. are deep nested objects, that need a deep merge\n return merge({}, cePermissions, eePermissions);\n },\n\n defaultValue: ADMIN_PERMISSIONS_CE,\n }\n );\n const routes = useEnterprise(\n ROUTES_CE,\n async () => (await import('../../ee/admin/src/constants')).ROUTES_EE,\n {\n defaultValue: [],\n }\n );\n const toggleNotification = useNotification();\n const { updateProjectSettings } = useConfiguration();\n const { formatMessage } = useIntl();\n const [{ isLoading, hasAdmin, uuid, deviceId }, setState] = React.useState({\n isLoading: true,\n deviceId: undefined,\n hasAdmin: false,\n uuid: false,\n });\n const dispatch = useDispatch();\n const appInfo = useAppInfo();\n const { get, post } = useFetchClient();\n\n const authRoutes = React.useMemo(() => {\n if (!routes) {\n return null;\n }\n\n return routes.map(({ to, Component, exact }) => createRoute(Component, to, exact));\n }, [routes]);\n\n const [telemetryProperties, setTelemetryProperties] = React.useState(undefined);\n\n React.useEffect(() => {\n dispatch({ type: ACTION_SET_ADMIN_PERMISSIONS, payload: adminPermissions });\n }, [adminPermissions, dispatch]);\n\n React.useEffect(() => {\n const currentToken = auth.getToken();\n\n const renewToken = async () => {\n try {\n const {\n data: {\n data: { token },\n },\n } = await post('/admin/renew-token', { token: currentToken });\n auth.updateToken(token);\n } catch (err) {\n // Refresh app\n auth.clearAppStorage();\n window.location.reload();\n }\n };\n\n if (currentToken) {\n renewToken();\n }\n }, [post]);\n\n React.useEffect(() => {\n const getData = async () => {\n try {\n const {\n data: {\n data: { hasAdmin, uuid, menuLogo, authLogo },\n },\n } = await get(`/admin/init`);\n\n updateProjectSettings({\n menuLogo: prefixFileUrlWithBackendUrl(menuLogo),\n authLogo: prefixFileUrlWithBackendUrl(authLogo),\n });\n\n if (uuid) {\n const {\n data: { data: properties },\n } = await get(`/admin/telemetry-properties`, {\n // NOTE: needed because the interceptors of the fetchClient redirect to /login when receive a 401 and it would end up in an infinite loop when the user doesn't have a session.\n validateStatus: (status) => status < 500,\n });\n\n setTelemetryProperties(properties);\n\n try {\n const event = 'didInitializeAdministration';\n await post(\n 'https://analytics.strapi.io/api/v2/track',\n {\n // This event is anonymous\n event,\n userId: '',\n deviceId,\n eventPropeties: {},\n userProperties: { environment: appInfo.currentEnvironment },\n groupProperties: { ...properties, projectId: uuid },\n },\n {\n headers: {\n 'X-Strapi-Event': event,\n },\n }\n );\n } catch (e) {\n // Silent.\n }\n }\n\n setState({ isLoading: false, hasAdmin, uuid, deviceId });\n } catch (err) {\n toggleNotification({\n type: 'warning',\n message: { id: 'app.containers.App.notification.error.init' },\n });\n }\n };\n\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toggleNotification, updateProjectSettings]);\n\n const trackingInfo = React.useMemo(\n () => ({\n uuid,\n telemetryProperties,\n deviceId,\n }),\n [uuid, telemetryProperties, deviceId]\n );\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <React.Suspense fallback={<LoadingIndicatorPage />}>\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <TrackingProvider value={trackingInfo}>\n <Switch>\n {authRoutes}\n <Route\n path=\"/auth/:authType\"\n render={(routerProps) => <AuthPage {...routerProps} hasAdmin={hasAdmin} />}\n exact\n />\n <PrivateRoute path=\"/usecase\" component={UseCasePage} />\n <PrivateRoute path=\"/\" component={AuthenticatedApp} />\n <Route path=\"\" component={NotFoundPage} />\n </Switch>\n </TrackingProvider>\n </React.Suspense>\n );\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBkPSJNMzkgMjgyYzAtMTE4IDAtMTc2LjkgMzYuNi0yMTMuNUMxMTIuMiAzMiAxNzEuMSAzMiAyODguOSAzMmgyMjEuMmMxMTcuOCAwIDE3Ni43IDAgMjEzLjMgMzYuNkM3NjAgMTA1LjIgNzYwIDE2NC4xIDc2MCAyODEuOXYyMjEuMmMwIDExNy44IDAgMTc2LjctMzYuNiAyMTMuM0M2ODYuOCA3NTMgNjI3LjkgNzUzIDUxMC4xIDc1M0gyODguOWMtMTE3LjggMC0xNzYuNyAwLTIxMy4zLTM2LjZDMzkgNjc5LjggMzkgNjIwLjkgMzkgNTAzLjFWMjgxLjlaIiBmaWxsPSIjNDk0NUZGIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUzNi40IDI1MC43SDI5My43djEyMy44aDEyMy44djEyMy43aDEyMy44VjI1NS41YzAtMi42LTIuMi00LjgtNC45LTQuOFoiIGZpbGw9IiNmZmYiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik00MTIuNyAzNzQuNWg0Ljh2NC44aC00Ljh6Ii8+CiAgICA8cGF0aCBkPSJNMjkzLjggMzc0LjVoMTE5YzIuNiAwIDQuOCAyLjEgNC44IDQuOHYxMTloLTExOWE0LjggNC44IDAgMCAxLTQuOC00Ljl2LTExOVoiIGZpbGw9IiM5NTkzRkYiLz4KICAgIDxwYXRoIGQ9Ik00MTcuNSA0OTguMmgxMjMuOEw0MjEuNiA2MThhMi40IDIuNCAwIDAgMS00LTEuN3YtMTE4Wk0yOTMuOCAzNzQuNWgtMTE4YTIuNCAyLjQgMCAwIDEtMS43LTQuMWwxMTkuNy0xMTkuN3YxMjMuOFoiIGZpbGw9IiM5NTkzRkYiLz4KPC9zdmc+Cg==\"","import { createContext } from '@radix-ui/react-context';\n\nimport type { StrapiApp } from '../StrapiApp';\ninterface AdminContextValue {\n getAdminInjectedComponents: StrapiApp['getAdminInjectedComponents'];\n}\n\nconst [AdminContextProvider, useAdminContext] = createContext<AdminContextValue>('AdminContext');\n\nconst useAdmin = () => useAdminContext('useAdmin');\n\nexport { AdminContextProvider, useAdmin };\nexport type { AdminContextValue };\n","import * as React from 'react';\n\nimport { ConfigurationContextProvider, ConfigurationContextValue } from '../contexts/configuration';\n\ninterface ConfigurationProviderProps {\n children: React.ReactNode;\n authLogo: string;\n menuLogo: string;\n showReleaseNotification?: boolean;\n showTutorials?: boolean;\n}\n\ntype LogoKeys = keyof ConfigurationContextValue['logos'];\n\nconst ConfigurationProvider = ({\n children,\n authLogo: defaultAuthLogo,\n menuLogo: defaultMenuLogo,\n showReleaseNotification = false,\n showTutorials = false,\n}: ConfigurationProviderProps) => {\n const [{ menuLogo, authLogo }, setLogos] = React.useState<{\n [_Key in `${LogoKeys}Logo`]?: ConfigurationContextValue['logos'][LogoKeys]['custom'];\n }>({\n menuLogo: null,\n authLogo: null,\n });\n\n const updateProjectSettings: ConfigurationContextValue['updateProjectSettings'] =\n React.useCallback(\n ({ menuLogo, authLogo }) => {\n setLogos({\n menuLogo: menuLogo || defaultMenuLogo,\n authLogo: authLogo || defaultAuthLogo,\n });\n },\n [defaultAuthLogo, defaultMenuLogo]\n );\n\n return (\n <ConfigurationContextProvider\n updateProjectSettings={updateProjectSettings}\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n logos={{\n menu: { custom: menuLogo, default: defaultMenuLogo },\n auth: { custom: authLogo, default: defaultAuthLogo },\n }}\n >\n {children}\n </ConfigurationContextProvider>\n );\n};\n\nexport { ConfigurationProvider };\nexport type { ConfigurationProviderProps };\n","import * as React from 'react';\n\nimport {\n GuidedTourContextValue,\n GuidedTourProvider as GuidedTourProviderComponent,\n GuidedTourSectionKey,\n GuidedTourStep,\n GuidedTourStepKey,\n auth,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [GuidedTourSectionKey, GuidedTourStepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n auth.set(null, 'GUIDED_TOUR_CURRENT_STEP', true);\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: GuidedTourStep, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: GuidedTourSectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [GuidedTourStepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n auth.set(value, 'GUIDED_TOUR_SKIPPED', true);\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderComponent\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n isGuidedTourVisible={isGuidedTourVisible}\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderComponent>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: GuidedTourStep | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: GuidedTourStep;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [\n GuidedTourSectionKey,\n GuidedTourStepKey\n ];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = auth.get('GUIDED_TOUR_COMPLETED_STEPS');\n const currentStepLocaleStorage = auth.get('GUIDED_TOUR_CURRENT_STEP');\n const skippedLocaleStorage = auth.get('GUIDED_TOUR_SKIPPED');\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [\n GuidedTourSectionKey,\n GuidedTourStepKey\n ];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as GuidedTourStep);\n\n auth.set(null, 'GUIDED_TOUR_CURRENT_STEP', true);\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: GuidedTourStep) => {\n const currentSteps = auth.get('GUIDED_TOUR_COMPLETED_STEPS') ?? [];\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n auth.set([...currentSteps, completedStep], 'GUIDED_TOUR_COMPLETED_STEPS', true);\n};\n\nexport { GuidedTourProvider };\n","import { createContext } from '@radix-ui/react-context';\nimport { DefaultTheme } from 'styled-components';\n\ntype ThemeName = 'light' | 'dark' | 'system';\ntype NonSystemThemeName = Exclude<ThemeName, 'system'>;\n\ninterface ThemeToggleContextContextValue {\n currentTheme?: ThemeName;\n onChangeTheme?: (nextTheme: ThemeName) => void;\n themes?: {\n dark: DefaultTheme;\n light: DefaultTheme;\n };\n systemTheme?: NonSystemThemeName;\n}\n\nconst [ThemeToggleContextProvider, useThemeToggleContext] =\n createContext<ThemeToggleContextContextValue>('ThemeToggleContext');\n\nconst useThemeToggle = () => useThemeToggleContext('useThemeToggle');\n\nexport { ThemeToggleContextProvider, useThemeToggle };\nexport type { ThemeName, NonSystemThemeName, ThemeToggleContextContextValue };\n","import * as React from 'react';\n\nimport { DesignSystemProvider } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { createGlobalStyle } from 'styled-components';\n\nimport { useThemeToggle } from '../contexts/themeToggle';\n\ninterface ThemeProps {\n children: React.ReactNode;\n}\n\nconst Theme = ({ children }: ThemeProps) => {\n const { currentTheme, themes, systemTheme } = useThemeToggle();\n const { locale } = useIntl();\n\n const computedThemeName = currentTheme === 'system' ? systemTheme : currentTheme;\n\n return (\n <DesignSystemProvider\n locale={locale}\n /**\n * TODO: could we make this neater i.e. by setting up the context to throw\n * if it can't find it, that way the type is always fully defined and we're\n * not checking it all the time...\n */\n theme={themes?.[computedThemeName || 'light']}\n >\n {children}\n <GlobalStyle />\n </DesignSystemProvider>\n );\n};\n\nconst GlobalStyle = createGlobalStyle`\n body {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nexport { Theme };\n","import * as React from 'react';\n\nimport { DefaultTheme } from 'styled-components';\n\nimport { ThemeToggleContextProvider, ThemeName, NonSystemThemeName } from '../contexts/themeToggle';\n\nconst THEME_KEY = 'STRAPI_THEME';\n\nconst getDefaultTheme = () => {\n const persistedTheme = localStorage.getItem(THEME_KEY) as ThemeName | null;\n\n return persistedTheme || 'system';\n};\n\ninterface ThemeToggleProviderProps {\n children: React.ReactNode;\n themes: {\n light: DefaultTheme;\n dark: DefaultTheme;\n };\n}\n\nconst ThemeToggleProvider = ({ children, themes }: ThemeToggleProviderProps) => {\n const [currentTheme, setCurrentTheme] = React.useState<ThemeName>(getDefaultTheme());\n const [systemTheme, setSystemTheme] = React.useState<NonSystemThemeName>();\n\n const handleChangeTheme = React.useCallback(\n (nextTheme: ThemeName) => {\n setCurrentTheme(nextTheme);\n localStorage.setItem(THEME_KEY, nextTheme);\n },\n [setCurrentTheme]\n );\n\n // Listen to changes in the system theme\n React.useEffect(() => {\n const themeWatcher = window.matchMedia('(prefers-color-scheme: dark)');\n setSystemTheme(themeWatcher.matches ? 'dark' : 'light');\n\n const listener = (event: MediaQueryListEvent) => {\n setSystemTheme(event.matches ? 'dark' : 'light');\n };\n themeWatcher.addEventListener('change', listener);\n\n // Remove listener on cleanup\n return () => {\n themeWatcher.removeEventListener('change', listener);\n };\n }, []);\n\n return (\n <ThemeToggleContextProvider\n currentTheme={currentTheme}\n onChangeTheme={handleChangeTheme}\n themes={themes}\n systemTheme={systemTheme}\n >\n {children}\n </ThemeToggleContextProvider>\n );\n};\n\nexport { ThemeToggleProvider };\nexport type { ThemeToggleProviderProps };\n","import * as React from 'react';\n\nimport {\n AutoReloadOverlayBlockerProvider,\n CustomFieldsProvider,\n CustomFieldsProviderProps,\n LibraryProvider,\n LibraryProviderProps,\n NotificationsProvider,\n OverlayBlockerProvider,\n StrapiAppProvider,\n StrapiAppProviderProps,\n} from '@strapi/helper-plugin';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { Provider } from 'react-redux';\n\nimport { AdminContextProvider, AdminContextValue } from '../contexts/admin';\n\nimport { ConfigurationProvider, ConfigurationProviderProps } from './ConfigurationProvider';\nimport { GuidedTourProvider } from './GuidedTour/Provider';\nimport { LanguageProvider, LanguageProviderProps } from './LanguageProvider';\nimport { Theme } from './Theme';\nimport { ThemeToggleProvider, ThemeToggleProviderProps } from './ThemeToggleProvider';\n\nimport type { Store } from '../core/store/configure';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n },\n },\n});\n\ninterface ProvidersProps\n extends Pick<ThemeToggleProviderProps, 'themes'>,\n Pick<LanguageProviderProps, 'messages' | 'localeNames'>,\n Pick<\n ConfigurationProviderProps,\n 'authLogo' | 'menuLogo' | 'showReleaseNotification' | 'showTutorials'\n >,\n Pick<AdminContextValue, 'getAdminInjectedComponents'>,\n Pick<CustomFieldsProviderProps, 'customFields'>,\n Pick<LibraryProviderProps, 'components' | 'fields'>,\n Pick<\n StrapiAppProviderProps,\n | 'getPlugin'\n | 'menu'\n | 'plugins'\n | 'runHookParallel'\n | 'runHookSeries'\n | 'runHookWaterfall'\n | 'settings'\n > {\n children: React.ReactNode;\n store: Store;\n}\n\nconst Providers = ({\n authLogo,\n children,\n components,\n customFields,\n fields,\n getAdminInjectedComponents,\n getPlugin,\n localeNames,\n menu,\n menuLogo,\n messages,\n plugins,\n runHookParallel,\n runHookSeries,\n runHookWaterfall,\n settings,\n showReleaseNotification,\n showTutorials,\n store,\n themes,\n}: ProvidersProps) => {\n return (\n <LanguageProvider messages={messages} localeNames={localeNames}>\n <ThemeToggleProvider themes={themes}>\n <Theme>\n <QueryClientProvider client={queryClient}>\n <Provider store={store}>\n <AdminContextProvider getAdminInjectedComponents={getAdminInjectedComponents}>\n <ConfigurationProvider\n authLogo={authLogo}\n menuLogo={menuLogo}\n showReleaseNotification={showReleaseNotification}\n showTutorials={showTutorials}\n >\n <StrapiAppProvider\n getPlugin={getPlugin}\n menu={menu}\n plugins={plugins}\n runHookParallel={runHookParallel}\n runHookWaterfall={runHookWaterfall}\n runHookSeries={runHookSeries}\n settings={settings}\n >\n <LibraryProvider components={components} fields={fields}>\n <CustomFieldsProvider customFields={customFields}>\n <AutoReloadOverlayBlockerProvider>\n <OverlayBlockerProvider>\n <GuidedTourProvider>\n <NotificationsProvider>{children}</NotificationsProvider>\n </GuidedTourProvider>\n </OverlayBlockerProvider>\n </AutoReloadOverlayBlockerProvider>\n </CustomFieldsProvider>\n </LibraryProvider>\n </StrapiAppProvider>\n </ConfigurationProvider>\n </AdminContextProvider>\n </Provider>\n </QueryClientProvider>\n </Theme>\n </ThemeToggleProvider>\n </LanguageProvider>\n );\n};\n\nexport { Providers };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\n\nexport interface Component {\n name: string;\n Component: React.ComponentType;\n}\n\nexport class Components {\n components: Record<Component['name'], Component['Component']>;\n\n constructor() {\n this.components = {};\n }\n\n add(component: Component) {\n const { name, Component } = component;\n\n invariant(Component, 'A Component must be provided');\n invariant(name, 'A name must be provided');\n invariant(this.components[name] === undefined, 'A similar field already exists');\n\n this.components[name] = Component;\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\nimport invariant from 'invariant';\n\nimport type {\n CustomField,\n CustomFieldOption,\n CustomFieldOptionSection,\n CustomFieldUID,\n} from '@strapi/helper-plugin';\n\nconst ALLOWED_TYPES = [\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'decimal',\n 'email',\n 'enumeration',\n 'float',\n 'integer',\n 'json',\n 'password',\n 'richtext',\n 'string',\n 'text',\n 'time',\n 'uid',\n] as const;\n\nconst ALLOWED_ROOT_LEVEL_OPTIONS = [\n 'min',\n 'minLength',\n 'max',\n 'maxLength',\n 'required',\n 'regex',\n 'enum',\n 'unique',\n 'private',\n 'default',\n] as const;\n\nexport class CustomFields {\n customFields: Record<CustomFieldUID, CustomField>;\n\n constructor() {\n this.customFields = {};\n }\n\n register(customFields: CustomField | CustomField[]) {\n if (Array.isArray(customFields)) {\n // If several custom fields are passed, register them one by one\n customFields.forEach((customField) => {\n this.register(customField);\n });\n } else {\n // Handle individual custom field\n const { name, pluginId, type, intlLabel, intlDescription, components, options } =\n customFields;\n\n // Ensure required attributes are provided\n invariant(name, 'A name must be provided');\n invariant(type, 'A type must be provided');\n invariant(intlLabel, 'An intlLabel must be provided');\n invariant(intlDescription, 'An intlDescription must be provided');\n invariant(components, 'A components object must be provided');\n invariant(components.Input, 'An Input component must be provided');\n\n // Ensure the type is valid\n invariant(\n ALLOWED_TYPES.includes(type),\n `Custom field type: '${type}' is not a valid Strapi type or it can't be used with a Custom Field`\n );\n\n // Ensure name has no special characters\n const isValidObjectKey = /^(?![0-9])[a-zA-Z0-9$_-]+$/g;\n invariant(\n isValidObjectKey.test(name),\n `Custom field name: '${name}' is not a valid object key`\n );\n\n // Ensure options have valid name paths\n const allFormOptions = [...(options?.base || []), ...(options?.advanced || [])];\n\n if (allFormOptions.length) {\n const optionPathValidations = allFormOptions.reduce(optionsValidationReducer, []);\n\n optionPathValidations.forEach(({ isValidOptionPath, errorMessage }) => {\n invariant(isValidOptionPath, errorMessage);\n });\n }\n\n // When no plugin is specified, default to the global namespace\n const uid: CustomFieldUID = pluginId ? `plugin::${pluginId}.${name}` : `global::${name}`;\n\n // Ensure the uid is unique\n const uidAlreadyUsed = Object.prototype.hasOwnProperty.call(this.customFields, uid);\n invariant(!uidAlreadyUsed, `Custom field: '${uid}' has already been registered`);\n\n this.customFields[uid] = customFields;\n }\n }\n\n getAll() {\n return this.customFields;\n }\n\n get(uid: CustomFieldUID): CustomField | undefined {\n return this.customFields[uid];\n }\n}\n\ninterface OptionValidation {\n isValidOptionPath: boolean;\n errorMessage: string;\n}\n\nconst optionsValidationReducer = (\n acc: OptionValidation[],\n option: CustomFieldOptionSection | CustomFieldOption\n): OptionValidation[] => {\n if ('items' in option) {\n return option.items.reduce(optionsValidationReducer, acc);\n }\n\n if (!option.name) {\n acc.push({\n isValidOptionPath: false,\n errorMessage: \"The 'name' property is required on an options object\",\n });\n } else {\n acc.push({\n isValidOptionPath:\n option.name.startsWith('options') || ALLOWED_ROOT_LEVEL_OPTIONS.includes(option.name),\n errorMessage: `'${option.name}' must be prefixed with 'options.'`,\n });\n }\n\n return acc;\n};\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport invariant from 'invariant';\n\nexport interface Field {\n type: string;\n Component: React.ComponentType;\n}\n\nexport class Fields {\n fields: Record<Field['type'], Field['Component']>;\n\n constructor() {\n this.fields = {};\n }\n\n add(field: Field) {\n const { type, Component } = field;\n\n invariant(Component, 'A Component must be provided');\n invariant(type, 'A type must be provided');\n\n this.fields[type] = Component;\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\nimport { Middleware } from '@reduxjs/toolkit';\n\nimport { RootState } from '../store/configure';\n\ntype TypedMiddleware = () => Middleware<object, RootState>;\n\nclass Middlewares {\n middlewares: Array<TypedMiddleware>;\n\n constructor() {\n this.middlewares = [];\n }\n\n add(middleware: TypedMiddleware) {\n this.middlewares.push(middleware);\n }\n}\n\nexport { Middlewares, TypedMiddleware as Middleware };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { Plugin as IPlugin } from '@strapi/helper-plugin';\n\nexport interface PluginConfig\n extends Pick<IPlugin, 'apis' | 'initializer' | 'injectionZones' | 'isReady' | 'name'> {\n id: string;\n}\n\nexport class Plugin implements IPlugin {\n apis: PluginConfig['apis'];\n initializer: PluginConfig['initializer'];\n injectionZones: PluginConfig['injectionZones'];\n isReady: PluginConfig['isReady'];\n name: PluginConfig['name'];\n pluginId: PluginConfig['id'];\n\n constructor(pluginConf: PluginConfig) {\n this.apis = pluginConf.apis || {};\n this.initializer = pluginConf.initializer || null;\n this.injectionZones = pluginConf.injectionZones || {};\n this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;\n this.name = pluginConf.name;\n this.pluginId = pluginConf.id;\n }\n\n getInjectedComponents(containerName: string, blockName: string) {\n try {\n return this.injectionZones[containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n }\n\n injectComponent(\n containerName: string,\n blockName: string,\n component: ReturnType<IPlugin['getInjectedComponents']>[number]\n ) {\n try {\n this.injectionZones[containerName][blockName].push(component);\n } catch (err) {\n console.error('Cannot inject component', err);\n }\n }\n}\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport { Reducer, ReducersMapObject } from '@reduxjs/toolkit';\n\ninterface ReducerConstructorArgs {\n appReducers?: ReducersMapObject;\n}\n\nexport class Reducers {\n reducers: ReducersMapObject;\n\n constructor({ appReducers = {} }: ReducerConstructorArgs = {}) {\n this.reducers = { ...appReducers };\n }\n\n add(reducerName: string, reducer: Reducer) {\n this.reducers[reducerName] = reducer;\n }\n}\n","import { createSelector, Selector } from '@reduxjs/toolkit';\nimport { useDispatch, useStore, TypedUseSelectorHook, useSelector } from 'react-redux';\n\nimport type { RootState, Store } from './configure';\n\ntype AppDispatch = Store['dispatch'];\n\nconst useTypedDispatch: () => AppDispatch = useDispatch;\nconst useTypedStore = useStore as () => Store;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nconst createTypedSelector = <TResult>(selector: Selector<RootState, TResult>) =>\n createSelector((state: RootState) => state, selector);\n\nexport { useTypedDispatch, useTypedStore, useTypedSelector, createTypedSelector };\n","import * as React from 'react';\n\nimport {\n LoadingIndicatorPage,\n Permission,\n RBACContext,\n RBACContextValue,\n} from '@strapi/helper-plugin';\nimport produce from 'immer';\n\nimport { useTypedSelector, useTypedDispatch } from '../core/store/hooks';\n\n/* -------------------------------------------------------------------------------------------------\n * RBACProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RBACProviderProps {\n children: React.ReactNode;\n permissions: Permission[];\n refetchPermissions: RBACContextValue['refetchPermissions'];\n}\n\nconst RBACProvider = ({ children, permissions, refetchPermissions }: RBACProviderProps) => {\n const allPermissions = useTypedSelector((state) => state.rbacProvider.allPermissions);\n\n const dispatch = useTypedDispatch();\n\n React.useEffect(() => {\n dispatch(setPermissionsAction(permissions));\n\n return () => {\n dispatch(resetStoreAction());\n };\n }, [permissions, dispatch]);\n\n if (!allPermissions) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <RBACContext.Provider value={{ allPermissions, refetchPermissions }}>\n {children}\n </RBACContext.Provider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RBACReducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RBACState {\n allPermissions: null | Permission[];\n collectionTypesRelatedPermissions: Record<string, Record<string, Permission[]>>;\n}\n\nconst initialState = {\n allPermissions: null,\n collectionTypesRelatedPermissions: {},\n};\n\nconst RESET_STORE = 'StrapiAdmin/RBACProvider/RESET_STORE';\nconst SET_PERMISSIONS = 'StrapiAdmin/RBACProvider/SET_PERMISSIONS';\n\ninterface ResetStoreAction {\n type: typeof RESET_STORE;\n}\n\nconst resetStoreAction = (): ResetStoreAction => ({ type: RESET_STORE });\n\ninterface SetPermissionsAction {\n type: typeof SET_PERMISSIONS;\n permissions: Permission[];\n}\n\nconst setPermissionsAction = (\n permissions: SetPermissionsAction['permissions']\n): SetPermissionsAction => ({\n type: SET_PERMISSIONS,\n permissions,\n});\n\ntype Actions = ResetStoreAction | SetPermissionsAction;\n\nconst RBACReducer = (state: RBACState = initialState, action: Actions) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case SET_PERMISSIONS: {\n draftState.allPermissions = action.permissions;\n draftState.collectionTypesRelatedPermissions = action.permissions\n .filter((perm) => perm.subject)\n .reduce<Record<string, Record<string, Permission[]>>>((acc, current) => {\n const { subject, action } = current;\n\n if (!subject) return acc;\n\n if (!acc[subject]) {\n acc[subject] = {};\n }\n\n acc[subject] = acc[subject][action]\n ? { ...acc[subject], [action]: [...acc[subject][action], current] }\n : { ...acc[subject], [action]: [current] };\n\n return acc;\n }, {});\n break;\n }\n case RESET_STORE: {\n return initialState;\n }\n default:\n return state;\n }\n });\n\nexport { RBACProvider, RBACReducer, resetStoreAction, setPermissionsAction };\nexport type {\n RBACState,\n Actions,\n RBACProviderProps,\n ResetStoreAction,\n SetPermissionsAction,\n Permission,\n};\n","export const SET_PERMISSIONS = 'ContentManager/RBACManager/SET_PERMISSIONS';\nexport const RESET_PERMISSIONS = 'ContentManager/RBACManager/RESET_PERMISSIONS';\n","/**\n *\n * RBACManager reducer\n */\n\nimport produce from 'immer';\n\nimport { RESET_PERMISSIONS, SET_PERMISSIONS } from './constants';\n\nexport const initialState = {\n permissions: null,\n};\n\nconst rbacManagerReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case SET_PERMISSIONS: {\n draftState.permissions = Object.entries(action.permissions).reduce((acc, current) => {\n return [...acc, ...current[1]];\n }, []);\n break;\n }\n case RESET_PERMISSIONS: {\n draftState.permissions = null;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default rbacManagerReducer;\n","export const GET_INIT_DATA = 'ContentManager/App/GET_INIT_DATA';\nexport const RESET_INIT_DATA = 'ContentManager/App/RESET_INIT_DATA';\nexport const SET_INIT_DATA = 'ContentManager/App/SET_INIT_DATA';\n","/**\n *\n * main reducer\n */\n/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nimport { GET_INIT_DATA, RESET_INIT_DATA, SET_INIT_DATA } from './constants';\n\nconst initialState = {\n components: [],\n status: 'loading',\n models: [],\n collectionTypeLinks: [],\n singleTypeLinks: [],\n};\n\n/**\n * Known as content-manager_app in the redux store\n */\nconst mainReducer = (state = initialState, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_INIT_DATA: {\n draftState.status = 'loading';\n break;\n }\n case RESET_INIT_DATA: {\n return initialState;\n }\n case SET_INIT_DATA: {\n draftState.collectionTypeLinks = action.data.authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.singleTypeLinks = action.data.authorizedSingleTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n draftState.components = action.data.components;\n draftState.models = action.data.contentTypeSchemas;\n draftState.fieldSizes = action.data.fieldSizes;\n draftState.status = 'resolved';\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default mainReducer;\nexport { initialState };\n","export const SET_LAYOUT = 'ContentManager/EditViewLayoutManager/SET_LAYOUT';\nexport const RESET_PROPS = 'ContentManager/EditViewLayoutManager/RESET_PROPS';\n","/**\n *\n * EditViewLayoutManager reducer\n */\n\nimport produce from 'immer';\n\nimport { RESET_PROPS, SET_LAYOUT } from './constants';\n\nexport const initialState = {\n currentLayout: null,\n};\n\nconst editViewManagerReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case RESET_PROPS: {\n draftState.currentLayout = null;\n break;\n }\n case SET_LAYOUT: {\n draftState.currentLayout = action.layout;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default editViewManagerReducer;\n","export const GET_DATA = 'ContentManager/ListView/GET_DATA';\nexport const GET_DATA_SUCCEEDED = 'ContentManager/ListView/GET_DATA_SUCCEEDED';\nexport const RESET_PROPS = 'ContentManager/ListView/RESET_PROPS';\nexport const ON_CHANGE_LIST_HEADERS = 'ContentManager/ListView/ON_CHANGE_LIST_HEADERS ';\nexport const ON_RESET_LIST_HEADERS = 'ContentManager/ListView/ON_RESET_LIST_HEADERS ';\nexport const SET_LIST_LAYOUT = 'ContentManager/ListView/SET_LIST_LAYOUT ';\n","/**\n *\n * listView reducer\n */\n\nimport produce from 'immer';\nimport get from 'lodash/get';\n\nimport {\n GET_DATA,\n GET_DATA_SUCCEEDED,\n ON_CHANGE_LIST_HEADERS,\n ON_RESET_LIST_HEADERS,\n RESET_PROPS,\n SET_LIST_LAYOUT,\n} from './constants';\n\nexport const initialState = {\n data: [],\n isLoading: true,\n contentType: {},\n components: [],\n initialDisplayedHeaders: [],\n displayedHeaders: [],\n pagination: {\n total: 0,\n },\n};\n\nconst listViewReducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_DATA: {\n return {\n ...initialState,\n contentType: state.contentType,\n components: state.components,\n initialDisplayedHeaders: state.initialDisplayedHeaders,\n displayedHeaders: state.displayedHeaders,\n };\n }\n\n case GET_DATA_SUCCEEDED: {\n draftState.pagination = action.pagination;\n draftState.data = action.data;\n draftState.isLoading = false;\n break;\n }\n\n case ON_CHANGE_LIST_HEADERS: {\n const {\n target: { name, value },\n } = action;\n\n if (!value) {\n const { metadatas, attributes, uid } = state.contentType;\n const metas = metadatas[name].list;\n const header = {\n name,\n fieldSchema: attributes[name],\n metadatas: metas,\n key: `__${name}_key__`,\n };\n\n switch (attributes[name].type) {\n case 'component': {\n const componentName = attributes[name].component;\n const mainFieldName = get(\n state,\n ['components', componentName, 'settings', 'mainField'],\n null\n );\n const mainFieldAttribute = get(state, [\n 'components',\n componentName,\n 'attributes',\n mainFieldName,\n ]);\n\n draftState.displayedHeaders.push({\n ...header,\n metadatas: {\n ...metas,\n mainField: {\n ...mainFieldAttribute,\n name: mainFieldName,\n },\n },\n });\n break;\n }\n\n case 'relation':\n draftState.displayedHeaders.push({\n ...header,\n queryInfos: {\n defaultParams: {},\n endPoint: `collection-types/${uid}`,\n },\n });\n break;\n\n default:\n draftState.displayedHeaders.push(header);\n }\n } else {\n draftState.displayedHeaders = state.displayedHeaders.filter(\n (header) => header.name !== name\n );\n }\n\n break;\n }\n case ON_RESET_LIST_HEADERS: {\n draftState.displayedHeaders = state.initialDisplayedHeaders;\n break;\n }\n case RESET_PROPS: {\n return initialState;\n }\n case SET_LIST_LAYOUT: {\n const { contentType, components, displayedHeaders } = action;\n\n draftState.contentType = contentType;\n draftState.components = components;\n draftState.displayedHeaders = displayedHeaders;\n draftState.initialDisplayedHeaders = displayedHeaders;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default listViewReducer;\n","export const GET_DATA = 'ContentManager/CrudReducer/GET_DATA';\nexport const GET_DATA_SUCCEEDED = 'ContentManager/CrudReducer/GET_DATA_SUCCEEDED';\nexport const INIT_FORM = 'ContentManager/CrudReducer/INIT_FORM';\nexport const RESET_PROPS = 'ContentManager/CrudReducer/RESET_PROPS';\nexport const SET_DATA_STRUCTURES = 'ContentManager/CrudReducer/SET_DATA_STRUCTURES';\nexport const SET_STATUS = 'ContentManager/CrudReducer/SET_STATUS';\nexport const SUBMIT_SUCCEEDED = 'ContentManager/CrudReducer/SUBMIT_SUCCEEDED';\nexport const CLEAR_SET_MODIFIED_DATA_ONLY =\n 'ContentManager/CrudReducer/CLEAR_SET_MODIFIED_DATA_ONLY';\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\n// NOTE: instead of creating a shared reducer here, we could also create a hook\n// that returns the dispatch and the state, however it will mess with the linter\n// and force us to either disable the linter for the hooks dependencies array rule or\n// require us to add the dispatch to the array which is not wanted. This refacto does not require us to\n// to do any of this.\nimport {\n CLEAR_SET_MODIFIED_DATA_ONLY,\n GET_DATA,\n GET_DATA_SUCCEEDED,\n INIT_FORM,\n RESET_PROPS,\n SET_DATA_STRUCTURES,\n SET_STATUS,\n SUBMIT_SUCCEEDED,\n} from './constants';\n\nconst crudInitialState = {\n componentsDataStructure: {},\n contentTypeDataStructure: {},\n isLoading: true,\n data: null,\n status: 'resolved',\n setModifiedDataOnly: false,\n};\n\nconst crudReducer = (state = crudInitialState, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case GET_DATA: {\n draftState.isLoading = true;\n draftState.data = null;\n break;\n }\n case GET_DATA_SUCCEEDED: {\n draftState.isLoading = false;\n draftState.data = action.data;\n draftState.setModifiedDataOnly = action.setModifiedDataOnly ?? false;\n break;\n }\n case INIT_FORM: {\n if (action.data) {\n draftState.isLoading = false;\n draftState.data = action.data;\n\n break;\n }\n\n draftState.isLoading = false;\n draftState.data = state.contentTypeDataStructure;\n break;\n }\n case RESET_PROPS: {\n return crudInitialState;\n }\n case SET_DATA_STRUCTURES: {\n draftState.componentsDataStructure = action.componentsDataStructure;\n draftState.contentTypeDataStructure = action.contentTypeDataStructure;\n break;\n }\n case SET_STATUS: {\n draftState.status = action.status;\n break;\n }\n case SUBMIT_SUCCEEDED: {\n draftState.data = action.data;\n break;\n }\n case CLEAR_SET_MODIFIED_DATA_ONLY: {\n draftState.setModifiedDataOnly = false;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default crudReducer;\nexport { crudInitialState };\n","import produce from 'immer';\n\nimport { ACTION_SET_APP_RUNTIME_STATUS, ACTION_SET_ADMIN_PERMISSIONS } from './constants';\nimport { PermissionMap } from './types/permissions';\n\ninterface State {\n status: 'init' | 'runtime';\n permissions: Partial<PermissionMap>;\n}\n\nconst initialState = {\n permissions: {},\n status: 'init',\n} satisfies State;\n\ninterface SetAppRuntimeStatusAction {\n type: typeof ACTION_SET_APP_RUNTIME_STATUS;\n}\n\ninterface SetAdminPermissionsAction {\n type: typeof ACTION_SET_ADMIN_PERMISSIONS;\n payload: Record<string, unknown>;\n}\n\ntype Action = SetAppRuntimeStatusAction | SetAdminPermissionsAction;\n\nconst reducer = (state: State = initialState, action: Action) =>\n /* eslint-disable-next-line consistent-return */\n produce(state, (draftState) => {\n switch (action.type) {\n case ACTION_SET_APP_RUNTIME_STATUS: {\n draftState.status = 'runtime';\n break;\n }\n\n case ACTION_SET_ADMIN_PERMISSIONS: {\n draftState.permissions = action.payload;\n break;\n }\n\n default:\n return draftState;\n }\n });\n\nexport { reducer, initialState };\nexport type { State, Action, SetAppRuntimeStatusAction, SetAdminPermissionsAction };\n","import {\n configureStore,\n StoreEnhancer,\n Middleware,\n Reducer,\n combineReducers,\n} from '@reduxjs/toolkit';\n\nimport { RBACReducer } from '../../components/RBACProvider';\n// @ts-expect-error no types, yet.\nimport rbacManagerReducer from '../../content-manager/hooks/useSyncRbac/reducer';\n// @ts-expect-error no types, yet.\nimport cmAppReducer from '../../content-manager/pages/App/reducer';\n// @ts-expect-error no types, yet.\nimport editViewLayoutManagerReducer from '../../content-manager/pages/EditViewLayoutManager/reducer';\n// @ts-expect-error no types, yet.\nimport listViewReducer from '../../content-manager/pages/ListView/reducer';\n// @ts-expect-error no types, yet.\nimport editViewCrudReducer from '../../content-manager/sharedReducers/crudReducer/reducer';\nimport { reducer as appReducer } from '../../reducer';\n\n/**\n * @description Static reducers are ones we know, they live in the admin package.\n */\nconst staticReducers = {\n admin_app: appReducer,\n rbacProvider: RBACReducer,\n 'content-manager_app': cmAppReducer,\n 'content-manager_listView': listViewReducer,\n 'content-manager_rbacManager': rbacManagerReducer,\n 'content-manager_editViewLayoutManager': editViewLayoutManagerReducer,\n 'content-manager_editViewCrudReducer': editViewCrudReducer,\n} as const;\n\nconst injectReducerStoreEnhancer: (appReducers: Record<string, Reducer>) => StoreEnhancer =\n (appReducers) =>\n (next) =>\n (...args) => {\n const store = next(...args);\n\n const asyncReducers: Record<string, Reducer> = {};\n\n return {\n ...store,\n asyncReducers,\n injectReducer: (key: string, asyncReducer: Reducer) => {\n asyncReducers[key] = asyncReducer;\n store.replaceReducer(\n // @ts-expect-error we dynamically add reducers which makes the types uncomfortable.\n combineReducers({\n ...appReducers,\n ...asyncReducers,\n })\n );\n },\n };\n };\n\n/**\n * @description This is the main store configuration function, injected Reducers use our legacy app.addReducer API,\n * which we're trying to phase out. App Middlewares could potentially be improved...?\n */\nconst configureStoreImpl = (\n appMiddlewares: Array<() => Middleware> = [],\n injectedReducers: Record<string, Reducer> = {}\n) => {\n const coreReducers = { ...staticReducers, ...injectedReducers } as const;\n\n const store = configureStore({\n reducer: coreReducers,\n devTools: process.env.NODE_ENV !== 'production',\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware(),\n ...appMiddlewares.map((m) => m()),\n ],\n enhancers: [injectReducerStoreEnhancer(coreReducers)],\n });\n\n return store;\n};\n\ntype Store = ReturnType<typeof configureStoreImpl> & {\n asyncReducers: Record<string, Reducer>;\n injectReducer: (key: string, asyncReducer: Reducer) => void;\n};\n\ntype RootState = ReturnType<Store['getState']>;\n\nexport { configureStoreImpl as configureStore };\nexport type { RootState, Store };\n","export const getBasename = () => (process.env.ADMIN_PATH ?? '').replace(window.location.origin, '');\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n\nexport type Handler = (...args: any[]) => any;\n\nexport const createHook = () => {\n const _handlers: Handler[] = [];\n\n return {\n register(fn: Handler) {\n _handlers.push(fn);\n },\n delete(handler: Handler) {\n _handlers.splice(_handlers.indexOf(handler), 1);\n },\n runWaterfall<T>(args: T, store?: any) {\n return _handlers.reduce((acc, fn) => fn(acc, store), args);\n },\n async runWaterfallAsync<T>(args: T, store?: any) {\n let result = args;\n\n for (const fn of _handlers) {\n result = await fn(result, store);\n }\n\n return result;\n },\n runSeries<T extends any[]>(...args: T) {\n return _handlers.map((fn) => fn(...args));\n },\n async runSeriesAsync<T extends any[]>(...args: T) {\n const result = [];\n\n for (const fn of _handlers) {\n result.push(await fn(...args));\n }\n\n return result;\n },\n runParallel<T extends any[]>(...args: T) {\n return Promise.all(\n _handlers.map((fn) => {\n return fn(...args);\n })\n );\n },\n };\n};\n","import { useAdmin } from '../../contexts/admin';\nimport {\n InjectionZoneArea,\n InjectionZoneBlock,\n InjectionZoneContainer,\n InjectionZoneModule,\n} from '../components/InjectionZone';\n\nexport const useInjectionZone = (area: InjectionZoneArea) => {\n const { getAdminInjectedComponents } = useAdmin();\n\n const [moduleName, page, position] = area.split('.') as [\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock\n ];\n\n return getAdminInjectedComponents(moduleName, page, position);\n};\n","import * as React from 'react';\n\nimport { useInjectionZone } from '../hooks/useInjectionZone';\n\nconst INJECTION_ZONES = {\n admin: {\n // Temporary injection zone, support for the react-tour plugin in foodadvisor\n tutorials: {\n links: [],\n },\n },\n contentManager: {\n editView: { informations: [], 'right-links': [] },\n listView: {\n actions: [],\n deleteModalAdditionalInfos: [],\n publishModalAdditionalInfos: [],\n unpublishModalAdditionalInfos: [],\n },\n },\n} satisfies InjectionZones;\n\ninterface InjectionZoneComponent {\n Component: React.ComponentType;\n name: string;\n // TODO: in theory this could receive and forward any React component prop\n // but in practice there only seems to be once instance, where `slug` is\n // forwarded. The type needs to become either more generic or we disallow\n // prop spreading and offer a different way to access context data.\n slug: string;\n}\n\ninterface InjectionZones {\n admin: {\n tutorials: {\n links: InjectionZoneComponent[];\n };\n };\n contentManager: {\n editView: {\n informations: InjectionZoneComponent[];\n 'right-links': InjectionZoneComponent[];\n };\n listView: {\n actions: InjectionZoneComponent[];\n deleteModalAdditionalInfos: InjectionZoneComponent[];\n publishModalAdditionalInfos: InjectionZoneComponent[];\n unpublishModalAdditionalInfos: InjectionZoneComponent[];\n };\n };\n}\n\ntype InjectionZoneArea =\n | 'admin.tutorials.links'\n | 'contentManager.editView.informations'\n | 'contentManager.editView.right-links'\n | 'contentManager.listView.actions'\n | 'contentManager.listView.unpublishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos'\n | 'contentManager.listView.publishModalAdditionalInfos'\n | 'contentManager.listView.deleteModalAdditionalInfos';\n\ntype InjectionZoneModule = InjectionZoneArea extends `${infer Word}.${string}` ? Word : never;\ntype InjectionZoneContainer = InjectionZoneArea extends `${string}.${infer Word}.${string}`\n ? Word\n : never;\ntype InjectionZoneBlock = InjectionZoneArea extends `${string}.${string}.${infer Word}`\n ? Word\n : never;\n\nconst InjectionZone = ({ area, ...props }: { area: InjectionZoneArea }) => {\n const components = useInjectionZone(area);\n\n return components.map((component) => <component.Component key={component.name} {...props} />);\n};\n\nexport { InjectionZone, INJECTION_ZONES };\n\nexport type {\n InjectionZoneArea,\n InjectionZoneComponent,\n InjectionZones,\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock,\n};\n","export const languageNativeNames = {\n ar: 'العربية',\n ca: 'Català',\n cs: 'Čeština',\n de: 'Deutsch',\n dk: 'Dansk',\n en: 'English',\n es: 'Español',\n eu: 'Euskara',\n fr: 'Français',\n gu: 'Gujarati',\n he: 'עברית',\n hu: 'Magyar',\n id: 'Indonesian',\n it: 'Italiano',\n ja: '日本語',\n ko: '한국어',\n ml: 'Malayalam',\n ms: 'Melayu',\n nl: 'Nederlands',\n no: 'Norwegian',\n pl: 'Polski',\n 'pt-BR': 'Português (Brasil)',\n pt: 'Português (Portugal)',\n ru: 'Русский',\n sk: 'Slovenčina',\n sv: 'Swedish',\n th: 'ไทย',\n tr: 'Türkçe',\n uk: 'Українська',\n vi: 'Tiếng Việt',\n 'zh-Hans': '中文 (简体)',\n zh: '中文 (繁體)',\n sa: 'संस्कृत',\n hi: 'हिन्दी',\n} as const;\n","import { ReducersMapObject } from '@reduxjs/toolkit';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport { MenuItem, StrapiAppSetting, StrapiAppSettingLink } from '@strapi/helper-plugin';\nimport invariant from 'invariant';\nimport isFunction from 'lodash/isFunction';\nimport merge from 'lodash/merge';\nimport pick from 'lodash/pick';\nimport { Helmet } from 'react-helmet';\nimport { BrowserRouter } from 'react-router-dom';\nimport { DefaultTheme } from 'styled-components';\n\nimport { App } from './App';\nimport Logo from './assets/images/logo-strapi-2022.svg';\nimport { LANGUAGE_LOCAL_STORAGE_KEY } from './components/LanguageProvider';\nimport { Providers } from './components/Providers';\nimport { HOOKS } from './constants';\nimport { Components, Component } from './core/apis/Components';\nimport { CustomFields } from './core/apis/CustomFields';\nimport { Field, Fields } from './core/apis/Fields';\nimport { Middleware, Middlewares } from './core/apis/Middlewares';\nimport { Plugin, PluginConfig } from './core/apis/Plugin';\nimport { Reducers } from './core/apis/Reducers';\nimport { Store, configureStore } from './core/store/configure';\nimport { getBasename } from './core/utils/basename';\nimport { Handler, createHook } from './core/utils/createHook';\nimport {\n INJECTION_ZONES,\n InjectionZoneBlock,\n InjectionZoneComponent,\n InjectionZoneContainer,\n InjectionZoneModule,\n InjectionZones,\n} from './shared/components/InjectionZone';\nimport { languageNativeNames } from './translations/languageNativeNames';\n\nconst {\n INJECT_COLUMN_IN_TABLE,\n MUTATE_COLLECTION_TYPES_LINKS,\n MUTATE_EDIT_VIEW_LAYOUT,\n MUTATE_SINGLE_TYPES_LINKS,\n} = HOOKS;\n\ninterface StrapiAppConstructorArgs extends Partial<Pick<StrapiApp, 'appPlugins'>> {\n adminConfig?: {\n config?: StrapiApp['customConfigurations'];\n bootstrap?: StrapiApp['customBootstrapConfiguration'];\n };\n}\n\ninterface StrapiAppPlugin {\n bootstrap: (\n args: Pick<\n StrapiApp,\n | 'addSettingsLink'\n | 'addSettingsLinks'\n | 'getPlugin'\n | 'injectContentManagerComponent'\n | 'injectAdminComponent'\n | 'registerHook'\n >\n ) => void;\n register: (app: StrapiApp) => void;\n registerTrads: (args: {\n locales: string[];\n }) => Promise<{ data: Record<string, string>; locale: string }[]>;\n}\n\nclass StrapiApp {\n admin: {\n injectionZones: InjectionZones;\n };\n appPlugins: Record<string, StrapiAppPlugin>;\n configurations: {\n authLogo: string;\n head: { favicon: string };\n locales: string[];\n menuLogo: string;\n notifications: { releases: boolean };\n themes: { light: DefaultTheme; dark: DefaultTheme };\n translations: Record<string, Record<string, string>>;\n tutorials: boolean;\n };\n customBootstrapConfiguration: unknown;\n customConfigurations: {\n auth?: { logo: string };\n head?: { favicon: string };\n locales?: string[];\n menu?: { logo: string };\n notifications?: { releases: boolean };\n theme?: { light: DefaultTheme; dark: DefaultTheme };\n translations?: Record<string, unknown>;\n tutorials?: boolean;\n };\n customFields: CustomFields;\n hooksDict: Record<string, ReturnType<typeof createHook>>;\n library: {\n components: Components;\n fields: Fields;\n };\n menu: MenuItem[];\n middlewares: Middlewares;\n plugins: Record<string, Plugin>;\n reducers: Reducers;\n settings: Record<string, StrapiAppSetting>;\n translations: StrapiApp['configurations']['translations'];\n\n constructor({ adminConfig, appPlugins }: StrapiAppConstructorArgs = {}) {\n this.customConfigurations = adminConfig?.config ?? {};\n this.customBootstrapConfiguration = adminConfig?.bootstrap;\n this.configurations = {\n authLogo: Logo,\n head: { favicon: '' },\n locales: ['en'],\n menuLogo: Logo,\n notifications: { releases: true },\n themes: { light: lightTheme, dark: darkTheme },\n translations: {},\n tutorials: true,\n };\n this.appPlugins = appPlugins || {};\n this.library = {\n components: new Components(),\n fields: new Fields(),\n };\n this.middlewares = new Middlewares();\n this.plugins = {};\n this.reducers = new Reducers();\n this.translations = {};\n this.hooksDict = {};\n this.admin = {\n injectionZones: INJECTION_ZONES,\n };\n this.customFields = new CustomFields();\n this.menu = [];\n this.settings = {\n global: {\n id: 'global',\n intlLabel: {\n id: 'Settings.global',\n defaultMessage: 'Global Settings',\n },\n links: [],\n },\n };\n }\n\n addComponents = (components: Component | Component[]) => {\n if (Array.isArray(components)) {\n components.map((compo) => this.library.components.add(compo));\n } else {\n this.library.components.add(components);\n }\n };\n\n addCorePluginMenuLink = (link: MenuItem) => {\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n typeof link.to === 'string',\n `Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n ['/plugins/content-type-builder', '/plugins/upload'].includes(link.to),\n 'This method is not available for your plugin'\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n\n this.menu.push(link);\n };\n\n addFields = (fields: Field | Field[]) => {\n if (Array.isArray(fields)) {\n fields.map((field) => this.library.fields.add(field));\n } else {\n this.library.fields.add(fields);\n }\n };\n\n addMenuLink = (link: MenuItem) => {\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n typeof link.to === 'string',\n `Expected link.to to be a string instead received ${typeof link.to}`\n );\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n invariant(\n link.Component && typeof link.Component === 'function',\n `link.Component should be a valid React Component`\n );\n invariant(\n link.icon && typeof link.icon === 'function',\n `link.Icon should be a valid React Component`\n );\n\n this.menu.push(link);\n };\n\n addMiddlewares = (middlewares: Middleware[]) => {\n middlewares.forEach((middleware) => {\n this.middlewares.add(middleware);\n });\n };\n\n addReducers = (reducers: ReducersMapObject) => {\n Object.keys(reducers).forEach((reducerName) => {\n this.reducers.add(reducerName, reducers[reducerName]);\n });\n };\n\n addSettingsLink = (sectionId: keyof StrapiApp['settings'], link: StrapiAppSettingLink) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n\n const stringifiedLink = JSON.stringify(link);\n\n invariant(link.id, `link.id should be defined for ${stringifiedLink}`);\n invariant(\n link.intlLabel?.id && link.intlLabel?.defaultMessage,\n `link.intlLabel.id & link.intlLabel.defaultMessage for ${stringifiedLink}`\n );\n invariant(link.to, `link.to should be defined for ${stringifiedLink}`);\n invariant(\n link.Component && typeof link.Component === 'function',\n `link.Component should be a valid React Component`\n );\n\n this.settings[sectionId].links.push(link);\n };\n\n addSettingsLinks = (sectionId: keyof StrapiApp['settings'], links: StrapiAppSettingLink[]) => {\n invariant(this.settings[sectionId], 'The section does not exist');\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n\n links.forEach((link) => {\n this.addSettingsLink(sectionId, link);\n });\n };\n\n async bootstrap() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n const bootstrap = this.appPlugins[plugin].bootstrap;\n\n if (bootstrap) {\n bootstrap({\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n });\n\n if (isFunction(this.customBootstrapConfiguration)) {\n this.customBootstrapConfiguration({\n addComponents: this.addComponents,\n addFields: this.addFields,\n addMenuLink: this.addMenuLink,\n addReducers: this.addReducers,\n addSettingsLink: this.addSettingsLink,\n addSettingsLinks: this.addSettingsLinks,\n getPlugin: this.getPlugin,\n injectContentManagerComponent: this.injectContentManagerComponent,\n injectAdminComponent: this.injectAdminComponent,\n registerHook: this.registerHook,\n });\n }\n }\n\n bootstrapAdmin = async () => {\n await this.createCustomConfigurations();\n\n this.createHook(INJECT_COLUMN_IN_TABLE);\n this.createHook(MUTATE_COLLECTION_TYPES_LINKS);\n this.createHook(MUTATE_SINGLE_TYPES_LINKS);\n this.createHook(MUTATE_EDIT_VIEW_LAYOUT);\n\n return Promise.resolve();\n };\n\n createCustomConfigurations = async () => {\n if (this.customConfigurations?.locales) {\n this.configurations.locales = [\n 'en',\n ...(this.customConfigurations.locales?.filter((loc) => loc !== 'en') || []),\n ];\n }\n\n if (this.customConfigurations?.auth?.logo) {\n this.configurations.authLogo = this.customConfigurations.auth.logo;\n }\n\n if (this.customConfigurations?.menu?.logo) {\n this.configurations.menuLogo = this.customConfigurations.menu.logo;\n }\n\n if (this.customConfigurations?.head?.favicon) {\n this.configurations.head.favicon = this.customConfigurations.head.favicon;\n }\n\n if (this.customConfigurations?.theme) {\n const darkTheme = this.customConfigurations.theme.dark;\n const lightTheme = this.customConfigurations.theme.light;\n\n if (!darkTheme && !lightTheme) {\n console.warn(\n `[deprecated] In future versions, Strapi will stop supporting this theme customization syntax. The theme configuration accepts a light and a dark key to customize each theme separately. See https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#theme-extension.`\n );\n merge(this.configurations.themes.light, this.customConfigurations.theme);\n }\n\n if (lightTheme) merge(this.configurations.themes.light, lightTheme);\n\n if (darkTheme) merge(this.configurations.themes.dark, darkTheme);\n }\n\n if (this.customConfigurations?.notifications?.releases !== undefined) {\n this.configurations.notifications.releases = this.customConfigurations.notifications.releases;\n }\n\n if (this.customConfigurations?.tutorials !== undefined) {\n this.configurations.tutorials = this.customConfigurations.tutorials;\n }\n };\n\n createHook = (name: string) => {\n this.hooksDict[name] = createHook();\n };\n\n createSettingSection = (section: StrapiAppSetting, links: StrapiAppSettingLink[]) => {\n invariant(section.id, 'section.id should be defined');\n invariant(\n section.intlLabel?.id && section.intlLabel?.defaultMessage,\n 'section.intlLabel should be defined'\n );\n\n invariant(Array.isArray(links), 'TypeError expected links to be an array');\n invariant(this.settings[section.id] === undefined, 'A similar section already exists');\n\n this.settings[section.id] = { ...section, links: [] };\n\n links.forEach((link) => {\n this.addSettingsLink(section.id, link);\n });\n };\n\n createStore = () => {\n const store = configureStore(this.middlewares.middlewares, this.reducers.reducers);\n\n return store as Store;\n };\n\n getAdminInjectedComponents = (\n moduleName: InjectionZoneModule,\n containerName: InjectionZoneContainer,\n blockName: InjectionZoneBlock\n ): InjectionZoneComponent[] => {\n try {\n // @ts-expect-error – we have a catch block so if you don't pass it correctly we still return an array.\n return this.admin.injectionZones[moduleName][containerName][blockName] || [];\n } catch (err) {\n console.error('Cannot get injected component', err);\n\n return [];\n }\n };\n\n getPlugin = (pluginId: PluginConfig['id']) => {\n return this.plugins[pluginId];\n };\n\n async initialize() {\n Object.keys(this.appPlugins).forEach((plugin) => {\n this.appPlugins[plugin].register(this);\n });\n }\n\n injectContentManagerComponent = <TContainerName extends keyof InjectionZones['contentManager']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['contentManager'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.contentManager[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the content manager`\n );\n invariant(component, 'A Component must be provided');\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.contentManager[containerName][blockName].push(component);\n };\n\n injectAdminComponent = <TContainerName extends keyof InjectionZones['admin']>(\n containerName: TContainerName,\n blockName: keyof InjectionZones['admin'][TContainerName],\n component: InjectionZoneComponent\n ) => {\n invariant(\n this.admin.injectionZones.admin[containerName]?.[blockName],\n `The ${containerName} ${String(blockName)} zone is not defined in the admin`\n );\n invariant(component, 'A Component must be provided');\n\n // @ts-expect-error – we've alredy checked above that the block exists.\n this.admin.injectionZones.admin[containerName][blockName].push(component);\n };\n\n /**\n * Load the admin translations\n * @returns {Object} The imported admin translations\n */\n async loadAdminTrads() {\n const arrayOfPromises = this.configurations.locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return { data, locale };\n })\n .catch(() => {\n return { data: null, locale };\n });\n });\n const adminLocales = await Promise.all(arrayOfPromises);\n\n const translations = adminLocales.reduce<{ [locale: string]: Record<string, string> }>(\n (acc, current) => {\n if (current.data) {\n acc[current.locale] = current.data;\n }\n\n return acc;\n },\n {}\n );\n\n return translations;\n }\n\n /**\n * Load the application's translations and merged the custom translations\n * with the default ones.\n *\n */\n async loadTrads() {\n const adminTranslations = await this.loadAdminTrads();\n\n const arrayOfPromises = Object.keys(this.appPlugins)\n .map((plugin) => {\n const registerTrads = this.appPlugins[plugin].registerTrads;\n\n if (registerTrads) {\n return registerTrads({ locales: this.configurations.locales });\n }\n\n return null;\n })\n .filter((a) => a);\n\n type Translation = Awaited<ReturnType<StrapiAppPlugin['registerTrads']>>[number];\n\n const pluginsTrads = (await Promise.all(arrayOfPromises)) as Array<Translation[]>;\n const mergedTrads = pluginsTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc, currentPluginTrads) => {\n const pluginTrads = currentPluginTrads.reduce<{ [locale: string]: Translation['data'] }>(\n (acc1, current) => {\n acc1[current.locale] = current.data;\n\n return acc1;\n },\n {}\n );\n\n Object.keys(pluginTrads).forEach((locale) => {\n acc[locale] = { ...acc[locale], ...pluginTrads[locale] };\n });\n\n return acc;\n },\n {}\n );\n\n const translations = this.configurations.locales.reduce<{\n [locale: string]: Translation['data'];\n }>((acc, current) => {\n acc[current] = {\n ...adminTranslations[current],\n ...(mergedTrads[current] || {}),\n ...(this.customConfigurations?.translations?.[current] ?? {}),\n };\n\n return acc;\n }, {});\n\n this.configurations.translations = translations;\n\n return Promise.resolve();\n }\n\n registerHook = (name: string, fn: Handler) => {\n invariant(\n this.hooksDict[name],\n `The hook ${name} is not defined. You are trying to register a hook that does not exist in the application.`\n );\n this.hooksDict[name].register(fn);\n };\n\n registerPlugin = (pluginConf: PluginConfig) => {\n const plugin = new Plugin(pluginConf);\n\n this.plugins[plugin.pluginId] = plugin;\n };\n\n runHookSeries = (name: string, asynchronous = false) =>\n asynchronous ? this.hooksDict[name].runSeriesAsync() : this.hooksDict[name].runSeries();\n\n runHookWaterfall = (\n name: string,\n initialValue: unknown,\n asynchronous = false,\n store?: unknown\n ) => {\n return asynchronous\n ? this.hooksDict[name].runWaterfallAsync(initialValue, store)\n : this.hooksDict[name].runWaterfall(initialValue, store);\n };\n\n runHookParallel = (name: string) => this.hooksDict[name].runParallel();\n\n render() {\n const store = this.createStore();\n const localeNames = pick(languageNativeNames, this.configurations.locales || []);\n\n const {\n components: { components },\n fields: { fields },\n } = this.library;\n\n return (\n <Providers\n authLogo={this.configurations.authLogo}\n components={components}\n fields={fields}\n customFields={this.customFields}\n localeNames={localeNames}\n getAdminInjectedComponents={this.getAdminInjectedComponents}\n getPlugin={this.getPlugin}\n messages={this.configurations.translations}\n menu={this.menu}\n menuLogo={this.configurations.menuLogo}\n plugins={this.plugins}\n runHookParallel={this.runHookParallel}\n runHookWaterfall={(name, initialValue, async = false) => {\n return this.runHookWaterfall(name, initialValue, async, store);\n }}\n runHookSeries={this.runHookSeries}\n themes={this.configurations.themes}\n settings={this.settings}\n showTutorials={this.configurations.tutorials}\n showReleaseNotification={this.configurations.notifications.releases}\n store={store}\n >\n <Helmet\n htmlAttributes={{ lang: localStorage.getItem(LANGUAGE_LOCAL_STORAGE_KEY) || 'en' }}\n />\n <BrowserRouter basename={getBasename()}>\n <App />\n </BrowserRouter>\n </Providers>\n );\n }\n}\n\nexport { StrapiApp, StrapiAppConstructorArgs };\n","/* eslint-disable no-undef */\nimport { getFetchClient } from '@strapi/helper-plugin';\nimport { createRoot } from 'react-dom/client';\n\nimport { StrapiApp, StrapiAppConstructorArgs } from './StrapiApp';\n\nimport type { FeaturesService } from '@strapi/types';\n\ninterface RenderAdminArgs {\n customisations: StrapiAppConstructorArgs['adminConfig'];\n plugins: StrapiAppConstructorArgs['appPlugins'];\n features?: FeaturesService['config'];\n}\n\nconst renderAdmin = async (\n mountNode: HTMLElement | null,\n { plugins, customisations, features }: RenderAdminArgs\n) => {\n if (!mountNode) {\n throw new Error('[@strapi/admin]: Could not find the root element to mount the admin app');\n }\n\n window.strapi = {\n /**\n * This ENV variable is passed from the strapi instance, by default no url is set\n * in the config and therefore the instance returns you an empty string so URLs are relative.\n *\n * To ensure that the backendURL is always set, we use the window.location.origin as a fallback.\n */\n backendURL: process.env.STRAPI_ADMIN_BACKEND_URL || window.location.origin,\n isEE: false,\n telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true' ? true : false,\n future: {\n isEnabled: (name: keyof FeaturesService['config']) => {\n return features?.future?.[name] === true;\n },\n },\n // @ts-expect-error – there's pollution from the global scope of Node.\n features: {\n SSO: 'sso',\n AUDIT_LOGS: 'audit-logs',\n REVIEW_WORKFLOWS: 'review-workflows',\n /**\n * If we don't get the license then we know it's not EE\n * so no feature is enabled.\n */\n isEnabled: () => false,\n },\n projectType: 'Community',\n flags: {\n nps: false,\n promoteEE: true,\n },\n };\n\n const { get } = getFetchClient();\n\n interface ProjectType extends Pick<Window['strapi'], 'flags'> {\n isEE: boolean;\n features: {\n name: string;\n }[];\n }\n\n try {\n const {\n data: {\n data: { isEE, features, flags },\n },\n } = await get<{ data: ProjectType }>('/admin/project-type');\n\n window.strapi.isEE = isEE;\n window.strapi.flags = flags;\n window.strapi.features = {\n ...window.strapi.features,\n isEnabled: (featureName) => features.some((feature) => feature.name === featureName),\n };\n window.strapi.projectType = isEE ? 'Enterprise' : 'Community';\n } catch (err) {\n /**\n * If this fails, we simply don't activate any EE features.\n * Should we warn clearer in the UI?\n */\n console.error(err);\n }\n\n const app = new StrapiApp({\n adminConfig: customisations,\n appPlugins: plugins,\n });\n\n await app.bootstrapAdmin();\n await app.initialize();\n await app.bootstrap();\n await app.loadTrads();\n\n createRoot(mountNode).render(app.render());\n\n if (\n typeof module !== 'undefined' &&\n module &&\n 'hot' in module &&\n typeof module.hot === 'object' &&\n module.hot !== null &&\n 'accept' in module.hot &&\n typeof module.hot.accept === 'function'\n ) {\n module.hot.accept();\n }\n};\n\nexport { renderAdmin };\nexport type { RenderAdminArgs };\n"],"names":["reducer","initialState","locale","auth","PasswordInput","Form","get","useReactQuery","Login","LoginCE","hasAdmin","uuid","menuLogo","authLogo","currentStep","GuidedTourProviderComponent","options","SET_PERMISSIONS","action","RESET_PROPS","GET_DATA","GET_DATA_SUCCEEDED","appReducer","cmAppReducer","editViewLayoutManagerReducer","editViewCrudReducer","Logo","darkTheme","lightTheme","configureStore","features"],"mappings":"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"}