@strapi/content-manager 0.0.0-experimental.e60ec1829240dae21c1e1d29076681c322288813 → 0.0.0-experimental.e8d8fc824d0f6a695b2a9ebaa4680ed21c3645ca

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 (257) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{CardDragPreview-DSVYodBX.js → CardDragPreview-C0QyJgRA.js} +10 -14
  3. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -0
  4. package/dist/_chunks/{CardDragPreview-ikSG4M46.mjs → CardDragPreview-DOxamsuj.mjs} +7 -9
  5. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -0
  6. package/dist/_chunks/{ComponentConfigurationPage-DjWJdz6Y.js → ComponentConfigurationPage-BlzvDpbX.js} +5 -6
  7. package/dist/_chunks/{ComponentConfigurationPage-DjWJdz6Y.js.map → ComponentConfigurationPage-BlzvDpbX.js.map} +1 -1
  8. package/dist/_chunks/{ComponentConfigurationPage-BPvzFjM7.mjs → ComponentConfigurationPage-DaPOlQaD.mjs} +4 -4
  9. package/dist/_chunks/{ComponentConfigurationPage-BPvzFjM7.mjs.map → ComponentConfigurationPage-DaPOlQaD.mjs.map} +1 -1
  10. package/dist/_chunks/{ComponentIcon-BBQsYCVn.js → ComponentIcon-CRbtQEUV.js} +9 -4
  11. package/dist/_chunks/ComponentIcon-CRbtQEUV.js.map +1 -0
  12. package/dist/_chunks/{ComponentIcon-BOFnK76n.mjs → ComponentIcon-u4bIXTFY.mjs} +9 -3
  13. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -0
  14. package/dist/_chunks/{EditConfigurationPage-DacbqQ_f.mjs → EditConfigurationPage-BZPXItXo.mjs} +4 -4
  15. package/dist/_chunks/{EditConfigurationPage-DacbqQ_f.mjs.map → EditConfigurationPage-BZPXItXo.mjs.map} +1 -1
  16. package/dist/_chunks/{EditConfigurationPage-Dmv83RlS.js → EditConfigurationPage-uy-v43AR.js} +5 -6
  17. package/dist/_chunks/{EditConfigurationPage-Dmv83RlS.js.map → EditConfigurationPage-uy-v43AR.js.map} +1 -1
  18. package/dist/_chunks/{EditViewPage-DvNpQkam.js → EditViewPage-DT6A4ayX.js} +102 -54
  19. package/dist/_chunks/EditViewPage-DT6A4ayX.js.map +1 -0
  20. package/dist/_chunks/EditViewPage-oOLeTySr.mjs +254 -0
  21. package/dist/_chunks/EditViewPage-oOLeTySr.mjs.map +1 -0
  22. package/dist/_chunks/{Field-6gvGdPBV.mjs → Field-D7dv2aUX.mjs} +1192 -896
  23. package/dist/_chunks/Field-D7dv2aUX.mjs.map +1 -0
  24. package/dist/_chunks/{Field-DmVKIAOo.js → Field-kYFVIGiP.js} +1238 -943
  25. package/dist/_chunks/Field-kYFVIGiP.js.map +1 -0
  26. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
  27. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
  28. package/dist/_chunks/{Form-DW6K1IH-.mjs → Form-BxR6sc29.mjs} +67 -46
  29. package/dist/_chunks/Form-BxR6sc29.mjs.map +1 -0
  30. package/dist/_chunks/{Form-CPZC9vWa.js → Form-CCijSg3V.js} +68 -49
  31. package/dist/_chunks/Form-CCijSg3V.js.map +1 -0
  32. package/dist/_chunks/{History-DeAPlvtv.js → History-BMndx49M.js} +182 -147
  33. package/dist/_chunks/History-BMndx49M.js.map +1 -0
  34. package/dist/_chunks/{History-Dmr9fmUA.mjs → History-D8F7aYQU.mjs} +181 -144
  35. package/dist/_chunks/History-D8F7aYQU.mjs.map +1 -0
  36. package/dist/_chunks/{ListConfigurationPage-DPCwW5Vr.js → ListConfigurationPage-DouY1EWM.js} +72 -63
  37. package/dist/_chunks/ListConfigurationPage-DouY1EWM.js.map +1 -0
  38. package/dist/_chunks/{ListConfigurationPage-DhwvYcNv.mjs → ListConfigurationPage-DqAdSPwC.mjs} +68 -57
  39. package/dist/_chunks/ListConfigurationPage-DqAdSPwC.mjs.map +1 -0
  40. package/dist/_chunks/{ListViewPage-5ySZ-VUs.js → ListViewPage-BPVmh9pq.js} +179 -164
  41. package/dist/_chunks/ListViewPage-BPVmh9pq.js.map +1 -0
  42. package/dist/_chunks/{ListViewPage-BtAwuYLE.mjs → ListViewPage-C73F0jPh.mjs} +175 -159
  43. package/dist/_chunks/ListViewPage-C73F0jPh.mjs.map +1 -0
  44. package/dist/_chunks/{NoContentTypePage-DSPxnxxp.mjs → NoContentTypePage-B5w7iJOF.mjs} +3 -3
  45. package/dist/_chunks/NoContentTypePage-B5w7iJOF.mjs.map +1 -0
  46. package/dist/_chunks/{NoContentTypePage-DOC_yWOf.js → NoContentTypePage-BwcL--4H.js} +3 -3
  47. package/dist/_chunks/NoContentTypePage-BwcL--4H.js.map +1 -0
  48. package/dist/_chunks/{NoPermissionsPage-Dwu8rRJu.js → NoPermissionsPage-BMFKVcwJ.js} +2 -2
  49. package/dist/_chunks/{NoPermissionsPage-Dwu8rRJu.js.map → NoPermissionsPage-BMFKVcwJ.js.map} +1 -1
  50. package/dist/_chunks/{NoPermissionsPage-UWDC-1Tw.mjs → NoPermissionsPage-UnEgMGK4.mjs} +2 -2
  51. package/dist/_chunks/{NoPermissionsPage-UWDC-1Tw.mjs.map → NoPermissionsPage-UnEgMGK4.mjs.map} +1 -1
  52. package/dist/_chunks/Preview-B7PR3Ok_.js +312 -0
  53. package/dist/_chunks/Preview-B7PR3Ok_.js.map +1 -0
  54. package/dist/_chunks/Preview-DECOhK0D.mjs +294 -0
  55. package/dist/_chunks/Preview-DECOhK0D.mjs.map +1 -0
  56. package/dist/_chunks/{Relations-J8cscLlR.mjs → Relations-DinMQJ4B.mjs} +138 -94
  57. package/dist/_chunks/Relations-DinMQJ4B.mjs.map +1 -0
  58. package/dist/_chunks/{Relations-CgWtgnPe.js → Relations-lndx3aQk.js} +142 -100
  59. package/dist/_chunks/Relations-lndx3aQk.js.map +1 -0
  60. package/dist/_chunks/{en-C-V1_90f.js → en-BK8Xyl5I.js} +38 -18
  61. package/dist/_chunks/{en-C-V1_90f.js.map → en-BK8Xyl5I.js.map} +1 -1
  62. package/dist/_chunks/{en-MBPul9Su.mjs → en-Dtk_ot79.mjs} +38 -18
  63. package/dist/_chunks/{en-MBPul9Su.mjs.map → en-Dtk_ot79.mjs.map} +1 -1
  64. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  65. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  66. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  67. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  68. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  69. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  70. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  71. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  72. package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
  73. package/dist/_chunks/{index-CwRRo1V9.mjs → index-C2SagWVW.mjs} +2070 -988
  74. package/dist/_chunks/index-C2SagWVW.mjs.map +1 -0
  75. package/dist/_chunks/{index-C6AH2hEl.js → index-Cnw4gqee.js} +2047 -966
  76. package/dist/_chunks/index-Cnw4gqee.js.map +1 -0
  77. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  78. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  79. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  80. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  81. package/dist/_chunks/{layout-jIDzX0Fp.mjs → layout-DY_D9MGA.mjs} +46 -28
  82. package/dist/_chunks/layout-DY_D9MGA.mjs.map +1 -0
  83. package/dist/_chunks/{layout-B_SXLhqf.js → layout-ivwIVPnV.js} +47 -32
  84. package/dist/_chunks/layout-ivwIVPnV.js.map +1 -0
  85. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  86. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  87. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  88. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  89. package/dist/_chunks/{relations-iBMa_OFG.js → relations-B7C7O_Pv.js} +6 -7
  90. package/dist/_chunks/relations-B7C7O_Pv.js.map +1 -0
  91. package/dist/_chunks/{relations-CuvIgCqI.mjs → relations-Boc5Y9kX.mjs} +6 -7
  92. package/dist/_chunks/relations-Boc5Y9kX.mjs.map +1 -0
  93. package/dist/_chunks/useDebounce-CtcjDB3L.js +28 -0
  94. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  95. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  96. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  97. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
  98. package/dist/_chunks/useDragAndDrop-BMtgCYzL.js.map +1 -0
  99. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
  100. package/dist/_chunks/useDragAndDrop-DJ6jqvZN.mjs.map +1 -0
  101. package/dist/admin/index.js +3 -1
  102. package/dist/admin/index.js.map +1 -1
  103. package/dist/admin/index.mjs +9 -7
  104. package/dist/admin/src/components/ComponentIcon.d.ts +6 -3
  105. package/dist/admin/src/content-manager.d.ts +6 -5
  106. package/dist/admin/src/exports.d.ts +2 -1
  107. package/dist/admin/src/history/components/VersionInputRenderer.d.ts +1 -1
  108. package/dist/admin/src/history/index.d.ts +3 -0
  109. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  110. package/dist/admin/src/hooks/useDocument.d.ts +37 -9
  111. package/dist/admin/src/hooks/useDocumentActions.d.ts +24 -3
  112. package/dist/admin/src/hooks/useDocumentLayout.d.ts +2 -2
  113. package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
  114. package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  115. package/dist/admin/src/index.d.ts +1 -0
  116. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  117. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -5
  118. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
  119. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
  120. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
  121. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.d.ts +3 -3
  122. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +5 -0
  123. package/dist/admin/src/pages/EditView/components/FormInputs/Component/Input.d.ts +2 -2
  124. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +3 -5
  125. package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
  126. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +30 -18
  127. package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +2 -2
  128. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +3 -49
  129. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/Field.d.ts +2 -2
  130. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  131. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +16 -53
  132. package/dist/admin/src/pages/EditView/components/Header.d.ts +11 -11
  133. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +2 -10
  134. package/dist/admin/src/pages/ListView/components/BulkActions/Actions.d.ts +3 -30
  135. package/dist/admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +2 -2
  136. package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +9 -26
  137. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  138. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  139. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  140. package/dist/admin/src/preview/index.d.ts +4 -0
  141. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  142. package/dist/admin/src/preview/routes.d.ts +3 -0
  143. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  144. package/dist/admin/src/router.d.ts +1 -1
  145. package/dist/admin/src/services/api.d.ts +2 -3
  146. package/dist/admin/src/services/components.d.ts +2 -2
  147. package/dist/admin/src/services/contentTypes.d.ts +5 -5
  148. package/dist/admin/src/services/documents.d.ts +31 -20
  149. package/dist/admin/src/services/init.d.ts +2 -2
  150. package/dist/admin/src/services/relations.d.ts +3 -3
  151. package/dist/admin/src/services/uid.d.ts +3 -3
  152. package/dist/admin/src/utils/api.d.ts +4 -18
  153. package/dist/admin/src/utils/validation.d.ts +5 -7
  154. package/dist/server/index.js +886 -480
  155. package/dist/server/index.js.map +1 -1
  156. package/dist/server/index.mjs +892 -485
  157. package/dist/server/index.mjs.map +1 -1
  158. package/dist/server/src/bootstrap.d.ts.map +1 -1
  159. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  160. package/dist/server/src/controllers/index.d.ts.map +1 -1
  161. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  162. package/dist/server/src/controllers/single-types.d.ts.map +1 -1
  163. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  164. package/dist/server/src/controllers/utils/metadata.d.ts +23 -0
  165. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -0
  166. package/dist/server/src/controllers/validation/dimensions.d.ts +11 -0
  167. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -0
  168. package/dist/server/src/controllers/validation/index.d.ts +1 -1
  169. package/dist/server/src/history/services/history.d.ts.map +1 -1
  170. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  171. package/dist/server/src/history/services/utils.d.ts +4 -4
  172. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  173. package/dist/server/src/index.d.ts +22 -42
  174. package/dist/server/src/index.d.ts.map +1 -1
  175. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  176. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  177. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  178. package/dist/server/src/preview/controllers/preview.d.ts +13 -0
  179. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  180. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  181. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  182. package/dist/server/src/preview/index.d.ts +4 -0
  183. package/dist/server/src/preview/index.d.ts.map +1 -0
  184. package/dist/server/src/preview/routes/index.d.ts +8 -0
  185. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  186. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  187. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  188. package/dist/server/src/preview/services/index.d.ts +16 -0
  189. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  190. package/dist/server/src/preview/services/preview-config.d.ts +32 -0
  191. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
  192. package/dist/server/src/preview/services/preview.d.ts +12 -0
  193. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  194. package/dist/server/src/preview/utils.d.ts +19 -0
  195. package/dist/server/src/preview/utils.d.ts.map +1 -0
  196. package/dist/server/src/register.d.ts.map +1 -1
  197. package/dist/server/src/routes/index.d.ts.map +1 -1
  198. package/dist/server/src/services/document-manager.d.ts +13 -12
  199. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  200. package/dist/server/src/services/document-metadata.d.ts +16 -35
  201. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  202. package/dist/server/src/services/index.d.ts +22 -42
  203. package/dist/server/src/services/index.d.ts.map +1 -1
  204. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  205. package/dist/server/src/services/utils/populate.d.ts +8 -1
  206. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  207. package/dist/server/src/utils/index.d.ts +2 -0
  208. package/dist/server/src/utils/index.d.ts.map +1 -1
  209. package/dist/shared/contracts/collection-types.d.ts +17 -7
  210. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  211. package/dist/shared/contracts/index.d.ts +1 -0
  212. package/dist/shared/contracts/index.d.ts.map +1 -1
  213. package/dist/shared/contracts/preview.d.ts +27 -0
  214. package/dist/shared/contracts/preview.d.ts.map +1 -0
  215. package/dist/shared/contracts/relations.d.ts +2 -2
  216. package/dist/shared/contracts/relations.d.ts.map +1 -1
  217. package/dist/shared/index.js +4 -0
  218. package/dist/shared/index.js.map +1 -1
  219. package/dist/shared/index.mjs +4 -0
  220. package/dist/shared/index.mjs.map +1 -1
  221. package/package.json +22 -21
  222. package/dist/_chunks/CardDragPreview-DSVYodBX.js.map +0 -1
  223. package/dist/_chunks/CardDragPreview-ikSG4M46.mjs.map +0 -1
  224. package/dist/_chunks/ComponentIcon-BBQsYCVn.js.map +0 -1
  225. package/dist/_chunks/ComponentIcon-BOFnK76n.mjs.map +0 -1
  226. package/dist/_chunks/EditViewPage-DDS6H9HO.mjs +0 -203
  227. package/dist/_chunks/EditViewPage-DDS6H9HO.mjs.map +0 -1
  228. package/dist/_chunks/EditViewPage-DvNpQkam.js.map +0 -1
  229. package/dist/_chunks/Field-6gvGdPBV.mjs.map +0 -1
  230. package/dist/_chunks/Field-DmVKIAOo.js.map +0 -1
  231. package/dist/_chunks/Form-CPZC9vWa.js.map +0 -1
  232. package/dist/_chunks/Form-DW6K1IH-.mjs.map +0 -1
  233. package/dist/_chunks/History-DeAPlvtv.js.map +0 -1
  234. package/dist/_chunks/History-Dmr9fmUA.mjs.map +0 -1
  235. package/dist/_chunks/ListConfigurationPage-DPCwW5Vr.js.map +0 -1
  236. package/dist/_chunks/ListConfigurationPage-DhwvYcNv.mjs.map +0 -1
  237. package/dist/_chunks/ListViewPage-5ySZ-VUs.js.map +0 -1
  238. package/dist/_chunks/ListViewPage-BtAwuYLE.mjs.map +0 -1
  239. package/dist/_chunks/NoContentTypePage-DOC_yWOf.js.map +0 -1
  240. package/dist/_chunks/NoContentTypePage-DSPxnxxp.mjs.map +0 -1
  241. package/dist/_chunks/Relations-CgWtgnPe.js.map +0 -1
  242. package/dist/_chunks/Relations-J8cscLlR.mjs.map +0 -1
  243. package/dist/_chunks/index-C6AH2hEl.js.map +0 -1
  244. package/dist/_chunks/index-CwRRo1V9.mjs.map +0 -1
  245. package/dist/_chunks/layout-B_SXLhqf.js.map +0 -1
  246. package/dist/_chunks/layout-jIDzX0Fp.mjs.map +0 -1
  247. package/dist/_chunks/relations-CuvIgCqI.mjs.map +0 -1
  248. package/dist/_chunks/relations-iBMa_OFG.js.map +0 -1
  249. package/dist/_chunks/urls-CbOsUOoW.mjs +0 -7
  250. package/dist/_chunks/urls-CbOsUOoW.mjs.map +0 -1
  251. package/dist/_chunks/urls-DzZya_gm.js +0 -6
  252. package/dist/_chunks/urls-DzZya_gm.js.map +0 -1
  253. package/dist/_chunks/useDragAndDrop-DdHgKsqq.mjs.map +0 -1
  254. package/dist/_chunks/useDragAndDrop-J0TUUbR6.js.map +0 -1
  255. package/dist/server/src/controllers/utils/dimensions.d.ts +0 -5
  256. package/dist/server/src/controllers/utils/dimensions.d.ts.map +0 -1
  257. package/strapi-server.js +0 -3
@@ -6,19 +6,18 @@ const designSystem = require("@strapi/design-system");
6
6
  const fractionalIndexing = require("fractional-indexing");
7
7
  const pipe = require("lodash/fp/pipe");
8
8
  const reactIntl = require("react-intl");
9
- const index = require("./index-C6AH2hEl.js");
9
+ const index = require("./index-Cnw4gqee.js");
10
10
  const Icons = require("@strapi/icons");
11
11
  const reactDndHtml5Backend = require("react-dnd-html5-backend");
12
12
  const reactRouterDom = require("react-router-dom");
13
- const styled = require("styled-components");
14
- const useDragAndDrop = require("./useDragAndDrop-J0TUUbR6.js");
15
- const ComponentIcon = require("./ComponentIcon-BBQsYCVn.js");
13
+ const styledComponents = require("styled-components");
14
+ const useDragAndDrop = require("./useDragAndDrop-BMtgCYzL.js");
15
+ const ComponentIcon = require("./ComponentIcon-CRbtQEUV.js");
16
16
  const yup = require("yup");
17
17
  const FieldTypeIcon = require("./FieldTypeIcon-Dnwq_IRF.js");
18
18
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
19
19
  function _interopNamespace(e) {
20
- if (e && e.__esModule)
21
- return e;
20
+ if (e && e.__esModule) return e;
22
21
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
23
22
  if (e) {
24
23
  for (const k in e) {
@@ -36,17 +35,15 @@ function _interopNamespace(e) {
36
35
  }
37
36
  const React__namespace = /* @__PURE__ */ _interopNamespace(React);
38
37
  const pipe__default = /* @__PURE__ */ _interopDefault(pipe);
39
- const styled__default = /* @__PURE__ */ _interopDefault(styled);
40
38
  const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
41
39
  const FIELD_SCHEMA = yup__namespace.object().shape({
42
- label: yup__namespace.string().required(),
40
+ label: yup__namespace.string().required().nullable(),
43
41
  description: yup__namespace.string(),
44
42
  editable: yup__namespace.boolean(),
45
43
  size: yup__namespace.number().required()
46
44
  });
47
45
  const EditFieldForm = ({ attribute, name, onClose }) => {
48
46
  const { formatMessage } = reactIntl.useIntl();
49
- const id = React__namespace.useId();
50
47
  const { toggleNotification } = strapiAdmin.useNotification();
51
48
  const { value, onChange } = strapiAdmin.useField(name);
52
49
  const { data: mainFieldOptions } = index.useGetInitialDataQuery(void 0, {
@@ -89,7 +86,7 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
89
86
  });
90
87
  return null;
91
88
  }
92
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalLayout, { onClose, labelledBy: id, children: /* @__PURE__ */ jsxRuntime.jsxs(
89
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
93
90
  strapiAdmin.Form,
94
91
  {
95
92
  method: "PUT",
@@ -100,9 +97,9 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
100
97
  onClose();
101
98
  },
102
99
  children: [
103
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, children: [
100
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 3, children: [
104
101
  /* @__PURE__ */ jsxRuntime.jsx(FieldTypeIcon.FieldTypeIcon, { type: attribute.type }),
105
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", textColor: "neutral800", as: "h2", id, children: formatMessage(
102
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage(
106
103
  {
107
104
  id: "content-manager.containers.edit-settings.modal-form.label",
108
105
  defaultMessage: "Edit {fieldName}"
@@ -110,7 +107,7 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
110
107
  { fieldName: index.capitalise(value.name) }
111
108
  ) })
112
109
  ] }) }),
113
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalBody, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: [
110
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: [
114
111
  {
115
112
  name: "label",
116
113
  label: formatMessage({
@@ -178,14 +175,11 @@ const EditFieldForm = ({ attribute, name, onClose }) => {
178
175
  ],
179
176
  type: "enumeration"
180
177
  }
181
- ].filter(filterFieldsBasedOnAttributeType(attribute.type)).map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.InputRenderer, { ...field }) }, field.name)) }) }),
182
- /* @__PURE__ */ jsxRuntime.jsx(
183
- designSystem.ModalFooter,
184
- {
185
- startActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onClose, variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }),
186
- endActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", children: formatMessage({ id: "global.finish", defaultMessage: "Finish" }) })
187
- }
188
- )
178
+ ].filter(filterFieldsBasedOnAttributeType(attribute.type)).map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.InputRenderer, { ...field }) }, field.name)) }) }),
179
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
180
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }) }),
181
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", children: formatMessage({ id: "global.finish", defaultMessage: "Finish" }) })
182
+ ] })
189
183
  ]
190
184
  }
191
185
  ) });
@@ -292,7 +286,10 @@ const Fields = ({ attributes, fieldSizes, components, metadatas = {} }) => {
292
286
  if (layout[rowIndex].children.length === 1) {
293
287
  removeFieldRow(`layout`, rowIndex);
294
288
  } else {
295
- onChange(`layout.${rowIndex}.children.${fieldIndex}`, void 0);
289
+ onChange(`layout.${rowIndex}.children`, [
290
+ ...layout[rowIndex].children.slice(0, fieldIndex),
291
+ ...layout[rowIndex].children.slice(fieldIndex + 1)
292
+ ]);
296
293
  }
297
294
  };
298
295
  const handleAddField = (field) => () => {
@@ -310,7 +307,7 @@ const Fields = ({ attributes, fieldSizes, components, metadatas = {} }) => {
310
307
  }) })
311
308
  ] }),
312
309
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 4, hasRadius: true, borderStyle: "dashed", borderWidth: "1px", borderColor: "neutral300", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 2, children: [
313
- layout.map((row, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 2, children: row.children.map(({ size, ...field }, fieldIndex) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, children: /* @__PURE__ */ jsxRuntime.jsx(
310
+ layout.map((row, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 2, children: row.children.map(({ size, ...field }, fieldIndex) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
314
311
  Field,
315
312
  {
316
313
  attribute: attributes[field.name],
@@ -381,17 +378,23 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
381
378
  }, [dragPreviewRef]);
382
379
  const composedRefs = designSystem.useComposedRefs(dragRef, objectRef);
383
380
  const handleRemoveField = (e) => {
381
+ e.preventDefault();
384
382
  e.stopPropagation();
385
383
  onRemoveField(e);
386
384
  };
385
+ const onEditFieldMeta = (e) => {
386
+ e.preventDefault();
387
+ e.stopPropagation();
388
+ setIsModalOpen(true);
389
+ };
387
390
  const tempRefs = designSystem.useComposedRefs(dropRef, objectRef);
388
391
  if (!value) {
389
392
  return null;
390
393
  }
391
394
  if (value.name === TEMP_FIELD_NAME) {
392
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { as: "span", height: "100%", style: { opacity: 0 }, ref: tempRefs });
395
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { tag: "span", height: "100%", style: { opacity: 0 }, ref: tempRefs });
393
396
  }
394
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
397
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Root, { open: isModalOpen, onOpenChange: setIsModalOpen, children: [
395
398
  /* @__PURE__ */ jsxRuntime.jsxs(
396
399
  designSystem.Flex,
397
400
  {
@@ -409,8 +412,9 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
409
412
  /* @__PURE__ */ jsxRuntime.jsx(
410
413
  DragButton,
411
414
  {
412
- as: "span",
413
- "aria-label": formatMessage(
415
+ tag: "span",
416
+ withTooltip: false,
417
+ label: formatMessage(
414
418
  {
415
419
  id: index.getTranslation("components.DraggableCard.move.field"),
416
420
  defaultMessage: "Move {item}"
@@ -429,13 +433,12 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
429
433
  /* @__PURE__ */ jsxRuntime.jsx(
430
434
  designSystem.IconButton,
431
435
  {
432
- borderWidth: 0,
436
+ type: "button",
437
+ variant: "ghost",
433
438
  background: "transparent",
434
- onClick: (e) => {
435
- e.stopPropagation();
436
- setIsModalOpen(true);
437
- },
438
- "aria-label": formatMessage(
439
+ onClick: onEditFieldMeta,
440
+ withTooltip: false,
441
+ label: formatMessage(
439
442
  {
440
443
  id: index.getTranslation("components.DraggableCard.edit.field"),
441
444
  defaultMessage: "Edit {item}"
@@ -448,10 +451,12 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
448
451
  /* @__PURE__ */ jsxRuntime.jsx(
449
452
  designSystem.IconButton,
450
453
  {
451
- borderWidth: 0,
454
+ type: "button",
455
+ variant: "ghost",
452
456
  onClick: handleRemoveField,
453
457
  background: "transparent",
454
- "aria-label": formatMessage(
458
+ withTooltip: false,
459
+ label: formatMessage(
455
460
  {
456
461
  id: index.getTranslation("components.DraggableCard.delete.field"),
457
462
  defaultMessage: "Delete {item}"
@@ -475,8 +480,8 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
475
480
  gap: 2,
476
481
  width: "100%",
477
482
  children: [
478
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, width: "100%", children: components[attribute.component].layout.map(
479
- (row) => row.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: size, children: /* @__PURE__ */ jsxRuntime.jsx(
483
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, width: "100%", children: components[attribute.component].layout.map(
484
+ (row) => row.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
480
485
  designSystem.Flex,
481
486
  {
482
487
  alignItems: "center",
@@ -496,7 +501,7 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
496
501
  {
497
502
  onClick: (e) => e.stopPropagation(),
498
503
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Cog, {}),
499
- as: reactRouterDom.NavLink,
504
+ tag: reactRouterDom.NavLink,
500
505
  to: `../components/${attribute.component}/configurations/edit`,
501
506
  children: formatMessage({
502
507
  id: index.getTranslation("components.FieldItem.linkToComponentLayout"),
@@ -535,15 +540,18 @@ const Field = ({ attribute, components, name, index: index$1, onMoveField, onRem
535
540
  ]
536
541
  }
537
542
  ),
538
- isModalOpen && value.name !== TEMP_FIELD_NAME && /* @__PURE__ */ jsxRuntime.jsx(EditFieldForm, { attribute, name, onClose: () => setIsModalOpen(false) })
543
+ value.name !== TEMP_FIELD_NAME && /* @__PURE__ */ jsxRuntime.jsx(EditFieldForm, { attribute, name, onClose: () => setIsModalOpen(false) })
539
544
  ] });
540
545
  };
541
- const DragButton = styled__default.default(designSystem.IconButton)`
546
+ const DragButton = styledComponents.styled(designSystem.IconButton)`
542
547
  height: unset;
543
548
  align-self: stretch;
544
549
  display: flex;
545
550
  align-items: center;
546
- padding: 0 ${({ theme }) => theme.spaces[3]};
551
+ padding: 0;
552
+ border: none;
553
+ background-color: transparent;
554
+ border-radius: 0px;
547
555
  border-right: 1px solid ${({ theme }) => theme.colors.neutral150};
548
556
  cursor: all-scroll;
549
557
 
@@ -552,7 +560,7 @@ const DragButton = styled__default.default(designSystem.IconButton)`
552
560
  height: 1.2rem;
553
561
  }
554
562
  `;
555
- const ComponentLink = styled__default.default(reactRouterDom.NavLink)`
563
+ const ComponentLink = styledComponents.styled(reactRouterDom.NavLink)`
556
564
  display: flex;
557
565
  flex-direction: column;
558
566
  align-items: center;
@@ -625,12 +633,12 @@ const ConfigurationForm = ({
625
633
  paddingLeft: 7,
626
634
  paddingRight: 7,
627
635
  children: [
628
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h2", children: formatMessage({
636
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
629
637
  id: index.getTranslation("containers.SettingPage.settings"),
630
638
  defaultMessage: "Settings"
631
639
  }) }),
632
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { children: [
633
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
640
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { children: [
641
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
634
642
  strapiAdmin.InputRenderer,
635
643
  {
636
644
  type: "enumeration",
@@ -659,12 +667,23 @@ const ConfigurationForm = ({
659
667
  }, [])
660
668
  }
661
669
  ) }),
662
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { paddingTop: 6, paddingBottom: 6, col: 12, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}) }),
663
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 12, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h3", children: formatMessage({
670
+ /* @__PURE__ */ jsxRuntime.jsx(
671
+ designSystem.Grid.Item,
672
+ {
673
+ paddingTop: 6,
674
+ paddingBottom: 6,
675
+ col: 12,
676
+ s: 12,
677
+ direction: "column",
678
+ alignItems: "stretch",
679
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {})
680
+ }
681
+ ),
682
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h3", children: formatMessage({
664
683
  id: index.getTranslation("containers.SettingPage.view"),
665
684
  defaultMessage: "View"
666
685
  }) }) }),
667
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 12, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
686
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, s: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
668
687
  Fields,
669
688
  {
670
689
  attributes,
@@ -756,4 +775,4 @@ const Header = ({ name }) => {
756
775
  };
757
776
  exports.ConfigurationForm = ConfigurationForm;
758
777
  exports.TEMP_FIELD_NAME = TEMP_FIELD_NAME;
759
- //# sourceMappingURL=Form-CPZC9vWa.js.map
778
+ //# sourceMappingURL=Form-CCijSg3V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form-CCijSg3V.js","sources":["../../admin/src/components/ConfigurationForm/EditFieldForm.tsx","../../admin/src/components/ConfigurationForm/Fields.tsx","../../admin/src/components/ConfigurationForm/Form.tsx"],"sourcesContent":["import {\n useNotification,\n InputRenderer,\n Form,\n InputProps,\n useField,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Grid, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { useGetInitialDataQuery } from '../../services/init';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\nimport { FieldTypeIcon } from '../FieldTypeIcon';\n\nimport { TEMP_FIELD_NAME } from './Fields';\n\nimport type { ConfigurationFormData } from './Form';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst FIELD_SCHEMA = yup.object().shape({\n label: yup.string().required().nullable(),\n description: yup.string(),\n editable: yup.boolean(),\n size: yup.number().required(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditFieldForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditFieldFormProps {\n attribute?: Schema.Attribute.AnyAttribute;\n name: string;\n onClose: () => void;\n}\n\nconst EditFieldForm = ({ attribute, name, onClose }: EditFieldFormProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const { value, onChange } =\n useField<ConfigurationFormData['layout'][number]['children'][number]>(name);\n\n const { data: mainFieldOptions } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n if (attribute?.type !== 'relation' || !res.data) {\n return { data: [] };\n }\n\n if ('targetModel' in attribute && typeof attribute.targetModel === 'string') {\n const targetSchema = res.data.contentTypes.find(\n (schema) => schema.uid === attribute.targetModel\n );\n\n if (targetSchema) {\n return {\n data: Object.entries(targetSchema.attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, []),\n };\n }\n }\n\n return { data: [] };\n },\n skip: attribute?.type !== 'relation',\n });\n\n if (!value || value.name === TEMP_FIELD_NAME || !attribute) {\n // This is very unlikely to happen, but it ensures the form is not opened without a value.\n console.error(\n \"You've opened a field to edit without it being part of the form, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.containers.edit-settings.modal-form.error',\n defaultMessage: 'An error occurred while trying to open the form.',\n }),\n type: 'danger',\n });\n\n return null;\n }\n\n return (\n <Modal.Content>\n <Form\n method=\"PUT\"\n initialValues={value}\n validationSchema={FIELD_SCHEMA}\n onSubmit={(data) => {\n onChange(name, data);\n onClose();\n }}\n >\n <Modal.Header>\n <Flex gap={3}>\n <FieldTypeIcon type={attribute.type} />\n <Modal.Title>\n {formatMessage(\n {\n id: 'content-manager.containers.edit-settings.modal-form.label',\n defaultMessage: 'Edit {fieldName}',\n },\n { fieldName: capitalise(value.name) }\n )}\n </Modal.Title>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <Grid.Root gap={4}>\n {[\n {\n name: 'label',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.label'),\n defaultMessage: 'Label',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'description',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.description'),\n defaultMessage: 'Description',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'placeholder',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.placeholder'),\n defaultMessage: 'Placeholder',\n }),\n size: 6,\n type: 'string' as const,\n },\n {\n name: 'editable',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.editable'),\n defaultMessage: 'Editable',\n }),\n size: 6,\n type: 'boolean' as const,\n },\n {\n name: 'mainField',\n label: formatMessage({\n id: getTranslation('containers.edit-settings.modal-form.mainField'),\n defaultMessage: 'Entry title',\n }),\n hint: formatMessage({\n id: getTranslation(\n 'containers.SettingPage.edit-settings.modal-form.mainField.hint'\n ),\n defaultMessage: 'Set the displayed field',\n }),\n size: 6,\n options: mainFieldOptions,\n type: 'enumeration' as const,\n },\n {\n name: 'size',\n label: formatMessage({\n id: getTranslation('containers.ListSettingsView.modal-form.size'),\n defaultMessage: 'Size',\n }),\n size: 6,\n options: [\n { value: '4', label: '33%' },\n { value: '6', label: '50%' },\n { value: '8', label: '66%' },\n { value: '12', label: '100%' },\n ],\n type: 'enumeration' as const,\n },\n ]\n .filter(filterFieldsBasedOnAttributeType(attribute.type))\n .map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\">\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Form>\n </Modal.Content>\n );\n};\n\n/**\n * @internal\n * @description not all edit fields have the same editable properties, it depends on the type\n * e.g. a dynamic zone can only change it's label.\n */\nconst filterFieldsBasedOnAttributeType = (type: Schema.Attribute.Kind) => (field: InputProps) => {\n switch (type) {\n case 'blocks':\n case 'richtext':\n return field.name !== 'size' && field.name !== 'mainField';\n case 'boolean':\n case 'media':\n return field.name !== 'placeholder' && field.name !== 'mainField';\n case 'component':\n case 'dynamiczone':\n return field.name === 'label' || field.name === 'editable';\n case 'json':\n return field.name !== 'placeholder' && field.name !== 'mainField' && field.name !== 'size';\n case 'relation':\n return true;\n default:\n return field.name !== 'mainField';\n }\n};\n\nexport { EditFieldForm };\nexport type { EditFieldFormProps };\n","import * as React from 'react';\n\nimport { useField, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Modal,\n Box,\n Flex,\n Grid,\n IconButton,\n IconButtonComponent,\n Typography,\n useComposedRefs,\n Link,\n Menu,\n} from '@strapi/design-system';\nimport { Cog, Cross, Drag, Pencil, Plus } from '@strapi/icons';\nimport { generateNKeysBetween as generateNKeysBetweenImpl } from 'fractional-indexing';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { ItemTypes } from '../../constants/dragAndDrop';\nimport { type UseDragAndDropOptions, useDragAndDrop } from '../../hooks/useDragAndDrop';\nimport { getTranslation } from '../../utils/translations';\nimport { ComponentIcon } from '../ComponentIcon';\n\nimport { EditFieldForm, EditFieldFormProps } from './EditFieldForm';\n\nimport type { ConfigurationFormData, EditFieldSpacerLayout } from './Form';\nimport type { EditLayout } from '../../hooks/useDocumentLayout';\n\ntype FormField = ConfigurationFormData['layout'][number]['children'][number];\ntype Field = Omit<ConfigurationFormData['layout'][number]['children'][number], '__temp_key__'>;\n\n/* -------------------------------------------------------------------------------------------------\n * Fields\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldsProps extends Pick<EditLayout, 'metadatas'>, Pick<FieldProps, 'components'> {\n attributes: {\n [key: string]: FieldProps['attribute'];\n };\n fieldSizes: Record<string, number>;\n components: EditLayout['components'];\n}\n\nconst Fields = ({ attributes, fieldSizes, components, metadatas = {} }: FieldsProps) => {\n const { formatMessage } = useIntl();\n\n const layout = useForm<ConfigurationFormData['layout']>(\n 'Fields',\n (state) => state.values.layout ?? []\n );\n const onChange = useForm('Fields', (state) => state.onChange);\n const addFieldRow = useForm('Fields', (state) => state.addFieldRow);\n const removeFieldRow = useForm('Fields', (state) => state.removeFieldRow);\n\n const existingFields = layout.map((row) => row.children.map((field) => field.name)).flat();\n\n /**\n * Get the fields that are not already in the layout\n * But also check that they are visible before we give users\n * the option to display them. e.g. `id` is not visible.\n */\n const remainingFields = Object.entries(metadatas).reduce<Field[]>((acc, current) => {\n const [name, { visible, ...field }] = current;\n\n if (!existingFields.includes(name) && visible === true) {\n const type = attributes[name]?.type;\n const size = type ? fieldSizes[type] : 12;\n\n acc.push({\n ...field,\n label: field.label ?? name,\n name,\n size,\n });\n }\n\n return acc;\n }, []);\n\n const handleMoveField: FieldProps['onMoveField'] = (\n [newRowIndex, newFieldIndex],\n [currentRowIndex, currentFieldIndex]\n ) => {\n /**\n * Because this view has the constraint that the sum of field sizes cannot be greater\n * than 12, we don't use the form's method to move field rows, instead, we calculate\n * the new layout and set the entire form.\n */\n const newLayout = structuredClone(layout);\n\n /**\n * Remove field from the current layout space using splice so we have the item\n */\n const [field] = newLayout[currentRowIndex].children.splice(currentFieldIndex, 1);\n\n if (!field || field.name === TEMP_FIELD_NAME) {\n return;\n }\n\n const newRow = newLayout[newRowIndex].children;\n const [newFieldKey] = generateNKeysBetween(newRow, 1, currentFieldIndex, newFieldIndex);\n\n /**\n * Next we inject the field into it's new row at it's specified index, we then remove the spaces\n * if they exist and recalculate into potentially two arrays ONLY if the sizing is now over 12,\n * the row and the rest of the row that couldn't fit.\n *\n * for example, if i have a row of `[{size: 4}, {size: 6}]` and i add `{size: 8}` a index 0,\n * the new array will look like `[{size: 8}, {size: 4}, {size: 6}]` which breaks the limit of 12,\n * so instead we make two arrays for the new rows `[[{size: 8}, {size: 4}], [{size: 6}]]` which we\n * then inject at the original row point with spacers included.\n */\n newRow.splice(newFieldIndex, 0, { ...field, __temp_key__: newFieldKey });\n\n if (newLayout[newRowIndex].children.reduce((acc, curr) => acc + curr.size, 0) > 12) {\n const recalculatedRows = chunkArray(\n newLayout[newRowIndex].children.filter((field) => field.name !== TEMP_FIELD_NAME)\n );\n\n const rowKeys = generateNKeysBetween(\n newLayout,\n recalculatedRows.length,\n currentRowIndex,\n newRowIndex\n );\n\n newLayout.splice(\n newRowIndex,\n 1,\n ...recalculatedRows.map((row, index) => ({\n __temp_key__: rowKeys[index],\n children: row,\n }))\n );\n }\n\n /**\n * Now we remove our spacers from the rows so we can understand what dead rows exist:\n * - if there's only spacers left\n * - there's nothing in the row, e.g. a size 12 field left it.\n * These rows are then filtered out.\n * After that, we recalculate the spacers for the rows that need them.\n */\n const newLayoutWithSpacers = newLayout\n .map((row) => ({\n ...row,\n children: row.children.filter((field) => field.name !== TEMP_FIELD_NAME),\n }))\n .filter((row) => row.children.length > 0)\n .map((row) => {\n const totalSpaceTaken = row.children.reduce((acc, curr) => acc + curr.size, 0);\n\n if (totalSpaceTaken < 12) {\n const [spacerKey] = generateNKeysBetweenImpl(\n row.children.at(-1)?.__temp_key__,\n undefined,\n 1\n );\n\n return {\n ...row,\n children: [\n ...row.children,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: spacerKey,\n } satisfies EditFieldSpacerLayout,\n ],\n };\n }\n\n return row;\n });\n\n onChange('layout', newLayoutWithSpacers);\n };\n\n const handleRemoveField =\n (rowIndex: number, fieldIndex: number): FieldProps['onRemoveField'] =>\n () => {\n if (layout[rowIndex].children.length === 1) {\n removeFieldRow(`layout`, rowIndex);\n } else {\n onChange(`layout.${rowIndex}.children`, [\n ...layout[rowIndex].children.slice(0, fieldIndex),\n ...layout[rowIndex].children.slice(fieldIndex + 1),\n ]);\n }\n };\n\n const handleAddField = (field: Field) => () => {\n addFieldRow('layout', { children: [field] });\n };\n\n return (\n <Flex paddingTop={6} direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex alignItems=\"flex-start\" direction=\"column\" justifyContent=\"space-between\">\n <Typography fontWeight=\"bold\">\n {formatMessage({\n id: getTranslation('containers.list.displayedFields'),\n defaultMessage: 'Displayed fields',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: 'containers.SettingPage.editSettings.description',\n defaultMessage: 'Drag & drop the fields to build the layout',\n })}\n </Typography>\n </Flex>\n <Box padding={4} hasRadius borderStyle=\"dashed\" borderWidth=\"1px\" borderColor=\"neutral300\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n {layout.map((row, rowIndex) => (\n <Grid.Root gap={2} key={row.__temp_key__}>\n {row.children.map(({ size, ...field }, fieldIndex) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <Field\n attribute={attributes[field.name]}\n components={components}\n index={[rowIndex, fieldIndex]}\n name={`layout.${rowIndex}.children.${fieldIndex}`}\n onMoveField={handleMoveField}\n onRemoveField={handleRemoveField(rowIndex, fieldIndex)}\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n <Menu.Root>\n <Menu.Trigger\n startIcon={<Plus />}\n endIcon={null}\n disabled={remainingFields.length === 0}\n fullWidth\n variant=\"secondary\"\n >\n {formatMessage({\n id: getTranslation('containers.SettingPage.add.field'),\n defaultMessage: 'Insert another field',\n })}\n </Menu.Trigger>\n <Menu.Content>\n {remainingFields.map((field) => (\n <Menu.Item key={field.name} onSelect={handleAddField(field)}>\n {field.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </Box>\n </Flex>\n );\n};\n\n/**\n * @internal\n * @description Small abstraction to solve within an array of fields where you can\n * add a field to the beginning or start, move back and forth what it's index range\n * should be when calculating it's new temp key\n */\nconst generateNKeysBetween = <Field extends { __temp_key__: string }>(\n field: Field[],\n count: number,\n currInd: number,\n newInd: number\n) => {\n const startKey = currInd > newInd ? field[newInd - 1]?.__temp_key__ : field[newInd]?.__temp_key__;\n const endKey = currInd > newInd ? field[newInd]?.__temp_key__ : field[newInd + 1]?.__temp_key__;\n\n return generateNKeysBetweenImpl(startKey, endKey, count);\n};\n\n/**\n * @internal\n * @description chunks a row of layouts by the max size we allow, 12. It does not add the\n * spacers again, that should be added separately.\n */\nconst chunkArray = (array: FormField[]) => {\n const result: Array<FormField[]> = [];\n let temp: FormField[] = [];\n\n array.reduce((acc, field) => {\n if (acc + field.size > 12) {\n result.push(temp);\n temp = [field];\n return field.size;\n } else {\n temp.push(field);\n return acc + field.size;\n }\n }, 0);\n\n if (temp.length > 0) {\n result.push(temp);\n }\n\n return result;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Field\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FieldProps extends Pick<EditFieldFormProps, 'name' | 'attribute'> {\n components: EditLayout['components'];\n index: [row: number, index: number];\n onMoveField: UseDragAndDropOptions<number[]>['onMoveItem'];\n onRemoveField: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst TEMP_FIELD_NAME = '_TEMP_';\n\n/**\n * Displays a field in the layout with drag options, also\n * opens a modal to edit the details of said field.\n */\nconst Field = ({ attribute, components, name, index, onMoveField, onRemoveField }: FieldProps) => {\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const { value } = useField<FormField>(name);\n\n const [{ isDragging }, objectRef, dropRef, dragRef, dragPreviewRef] = useDragAndDrop<\n Array<number>\n >(true, {\n dropSensitivity: 'immediate',\n type: ItemTypes.EDIT_FIELD,\n item: { index, label: value?.label, name },\n index,\n onMoveItem: onMoveField,\n });\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef]);\n\n const composedRefs = useComposedRefs<HTMLSpanElement>(dragRef, objectRef);\n\n const handleRemoveField: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemoveField(e);\n };\n\n const onEditFieldMeta: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsModalOpen(true);\n };\n\n const tempRefs = useComposedRefs<HTMLSpanElement>(dropRef, objectRef);\n\n if (!value) {\n return null;\n }\n\n if (value.name === TEMP_FIELD_NAME) {\n return <Flex tag=\"span\" height=\"100%\" style={{ opacity: 0 }} ref={tempRefs} />;\n }\n\n return (\n <Modal.Root open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Flex\n borderColor=\"neutral150\"\n background=\"neutral100\"\n hasRadius\n style={{ opacity: isDragging ? 0.5 : 1 }}\n ref={dropRef}\n gap={3}\n cursor=\"pointer\"\n onClick={() => {\n setIsModalOpen(true);\n }}\n >\n <DragButton\n tag=\"span\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.move.field'),\n defaultMessage: 'Move {item}',\n },\n { item: value.label }\n )}\n onClick={(e) => e.stopPropagation()}\n ref={composedRefs}\n >\n <Drag />\n </DragButton>\n <Flex direction=\"column\" alignItems=\"flex-start\" grow={1} overflow=\"hidden\">\n <Flex gap={3} justifyContent=\"space-between\" width=\"100%\">\n <Typography ellipsis fontWeight=\"bold\">\n {value.label}\n </Typography>\n <Flex>\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n background=\"transparent\"\n onClick={onEditFieldMeta}\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.edit.field'),\n defaultMessage: 'Edit {item}',\n },\n { item: value.label }\n )}\n >\n <Pencil />\n </IconButton>\n <IconButton\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveField}\n background=\"transparent\"\n withTooltip={false}\n label={formatMessage(\n {\n id: getTranslation('components.DraggableCard.delete.field'),\n defaultMessage: 'Delete {item}',\n },\n { item: value.label }\n )}\n >\n <Cross />\n </IconButton>\n </Flex>\n </Flex>\n {attribute?.type === 'component' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n direction=\"column\"\n gap={2}\n width=\"100%\"\n >\n <Grid.Root gap={4} width=\"100%\">\n {components[attribute.component].layout.map((row) =>\n row.map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <Flex\n alignItems=\"center\"\n background=\"neutral0\"\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n hasRadius\n borderColor=\"neutral200\"\n >\n <Typography textColor=\"neutral800\">{field.name}</Typography>\n </Flex>\n </Grid.Item>\n ))\n )}\n </Grid.Root>\n <Link\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n startIcon={<Cog />}\n tag={NavLink}\n to={`../components/${attribute.component}/configurations/edit`}\n >\n {formatMessage({\n id: getTranslation('components.FieldItem.linkToComponentLayout'),\n defaultMessage: \"Set the component's layout\",\n })}\n </Link>\n </Flex>\n ) : null}\n {attribute?.type === 'dynamiczone' ? (\n <Flex\n paddingTop={3}\n paddingRight={3}\n paddingBottom={3}\n paddingLeft={0}\n alignItems=\"flex-start\"\n gap={2}\n width=\"100%\"\n >\n {attribute?.components.map((uid) => (\n <ComponentLink\n // used to stop the edit form from appearing when we click here.\n onClick={(e) => e.stopPropagation()}\n key={uid}\n to={`../components/${uid}/configurations/edit`}\n >\n <ComponentIcon icon={components[uid].settings.icon} />\n <Typography fontSize={1} textColor=\"neutral600\" fontWeight=\"bold\">\n {components[uid].settings.displayName}\n </Typography>\n </ComponentLink>\n ))}\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n {value.name !== TEMP_FIELD_NAME && (\n <EditFieldForm attribute={attribute} name={name} onClose={() => setIsModalOpen(false)} />\n )}\n </Modal.Root>\n );\n};\n\nconst DragButton = styled<IconButtonComponent<'span'>>(IconButton)`\n height: unset;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n border-radius: 0px;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n cursor: all-scroll;\n\n svg {\n width: 1.2rem;\n height: 1.2rem;\n }\n`;\n\nconst ComponentLink = styled(NavLink)`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[1]};\n padding: ${(props) => props.theme.spaces[2]};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral0};\n width: 14rem;\n border-radius: ${({ theme }) => theme.borderRadius};\n text-decoration: none;\n\n &:focus,\n &:hover {\n ${({ theme }) => `\n background-color: ${theme.colors.primary100};\n border-color: ${theme.colors.primary200};\n\n ${Typography} {\n color: ${theme.colors.primary600};\n }\n `}\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport { Fields, TEMP_FIELD_NAME };\nexport type { FieldsProps };\n","import * as React from 'react';\n\nimport {\n Form,\n FormProps,\n useForm,\n InputRenderer,\n BackButton,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Grid, Main, Typography } from '@strapi/design-system';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD } from '../../constants/attributes';\nimport { capitalise } from '../../utils/strings';\nimport { getTranslation } from '../../utils/translations';\n\nimport { Fields, FieldsProps, TEMP_FIELD_NAME } from './Fields';\n\nimport type { EditFieldLayout, EditLayout } from '../../hooks/useDocumentLayout';\n\n/* -------------------------------------------------------------------------------------------------\n * ConfigurationForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfigurationFormProps extends Pick<FieldsProps, 'attributes' | 'fieldSizes'> {\n layout: EditLayout;\n onSubmit: FormProps<ConfigurationFormData>['onSubmit'];\n}\n\n/**\n * Every key in EditFieldLayout is turned to optional never and then we overwrite the ones we are using.\n */\n\ntype EditFieldSpacerLayout = {\n [key in keyof Omit<EditFieldLayout, 'name' | 'size'>]?: never;\n} & {\n description?: never;\n editable?: never;\n name: '_TEMP_';\n size: number;\n __temp_key__: string;\n};\n\ninterface ConfigurationFormData extends Pick<EditLayout, 'settings'> {\n layout: Array<{\n __temp_key__: string;\n children: Array<\n | (Pick<EditFieldLayout, 'label' | 'size' | 'name' | 'placeholder' | 'mainField'> & {\n description: EditFieldLayout['hint'];\n editable: EditFieldLayout['disabled'];\n __temp_key__: string;\n })\n | EditFieldSpacerLayout\n >;\n }>;\n}\n\nconst ConfigurationForm = ({\n attributes,\n fieldSizes,\n layout: editLayout,\n onSubmit,\n}: ConfigurationFormProps) => {\n const { components, settings, layout, metadatas } = editLayout;\n\n const { formatMessage } = useIntl();\n\n const initialValues: ConfigurationFormData = React.useMemo(() => {\n const transformations = pipe(\n flattenPanels,\n replaceMainFieldWithNameOnly,\n extractMetadata,\n addTmpSpaceToLayout,\n addTmpKeysToLayout\n );\n\n return {\n layout: transformations(layout),\n settings,\n };\n }, [layout, settings]);\n\n return (\n <Layouts.Root>\n <Main>\n <Form initialValues={initialValues} onSubmit={onSubmit} method=\"PUT\">\n <Header name={settings.displayName ?? ''} />\n <Layouts.Content>\n <Flex\n alignItems=\"stretch\"\n background=\"neutral0\"\n direction=\"column\"\n gap={6}\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.settings'),\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n type=\"enumeration\"\n label={formatMessage({\n id: getTranslation('containers.SettingPage.editSettings.entry.title'),\n defaultMessage: 'Entry title',\n })}\n hint={formatMessage({\n id: getTranslation(\n 'containers.SettingPage.editSettings.entry.title.description'\n ),\n defaultMessage: 'Set the display field of your entry',\n })}\n name=\"settings.mainField\"\n options={Object.entries(attributes).reduce<\n Array<{ label: string; value: string }>\n >((acc, [key, attribute]) => {\n if (!attribute) {\n return acc;\n }\n\n /**\n * Create the list of attributes from the schema as to which can\n * be our `mainField` and dictate the display name of the schema\n * we're editing.\n */\n if (!ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD.includes(attribute.type)) {\n acc.push({\n label: key,\n value: key,\n });\n }\n\n return acc;\n }, [])}\n />\n </Grid.Item>\n <Grid.Item\n paddingTop={6}\n paddingBottom={6}\n col={12}\n s={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Divider />\n </Grid.Item>\n <Grid.Item col={12} s={12} direction=\"column\" alignItems=\"stretch\">\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage({\n id: getTranslation('containers.SettingPage.view'),\n defaultMessage: 'View',\n })}\n </Typography>\n </Grid.Item>\n <Grid.Item col={12} s={12} direction=\"column\" alignItems=\"stretch\">\n <Fields\n attributes={attributes}\n components={components}\n fieldSizes={fieldSizes}\n metadatas={metadatas}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Layouts.Content>\n </Form>\n </Main>\n </Layouts.Root>\n );\n};\n\n/**\n * @internal\n * @description Panels don't exist in the layout, so we flatten by one.\n */\nconst flattenPanels = (layout: EditLayout['layout']): EditLayout['layout'][number] =>\n layout.flat(1);\n\n/**\n * @internal\n * @description We don't need the mainField object in the layout, we only need the name.\n */\nconst replaceMainFieldWithNameOnly = (layout: EditLayout['layout'][number]) =>\n layout.map((row) =>\n row.map((field) => ({\n ...field,\n mainField: field.mainField?.name,\n }))\n );\n\n/**\n * @internal\n * @description We extract the metadata values from the field layout, because these are editable by the user.\n */\nconst extractMetadata = (\n layout: EditLayout['layout'][number]\n): Array<Exclude<ConfigurationFormData['layout'], { name: '_TEMP_' }>[number]['children']> => {\n return layout.map((row) =>\n row.map(({ label, disabled, hint, placeholder, size, name, mainField }) => ({\n label,\n editable: !disabled,\n description: hint,\n mainField,\n placeholder,\n size,\n name,\n __temp_key__: '',\n }))\n );\n};\n\n/**\n * @internal\n * @description Each row of the layout has a max size of 12 (based on bootstrap grid system)\n * So in order to offer a better drop zone we add the _TEMP_ div to complete the remaining substract (12 - existing)\n */\nconst addTmpSpaceToLayout = (\n layout: ReturnType<typeof extractMetadata>\n): Array<ConfigurationFormData['layout'][number]['children']> => [\n ...layout.map((row) => {\n const totalSpaceTaken = row.reduce((acc, field) => acc + field.size, 0);\n\n if (totalSpaceTaken < 12) {\n return [\n ...row,\n {\n name: TEMP_FIELD_NAME,\n size: 12 - totalSpaceTaken,\n __temp_key__: '',\n } satisfies EditFieldSpacerLayout,\n ];\n }\n\n return row;\n }),\n];\n\n/**\n * @internal\n * @description At this point of the transformations we have Field[][], but each row for the form should have a __temp_key__\n * applied. This means we need to change it so `Field` is nested under the children property.\n */\nconst addTmpKeysToLayout = (\n layout: ReturnType<typeof addTmpSpaceToLayout>\n): ConfigurationFormData['layout'] => {\n const keys = generateNKeysBetween(undefined, undefined, layout.length);\n\n return layout.map((row, rowIndex) => {\n const fieldKeys = generateNKeysBetween(undefined, undefined, row.length);\n\n return {\n __temp_key__: keys[rowIndex],\n children: row.map((field, fieldIndex) => {\n return {\n ...field,\n __temp_key__: fieldKeys[fieldIndex],\n };\n }),\n };\n });\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n name: string;\n}\n\nconst Header = ({ name }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Header', (state) => state.modified);\n const isSubmitting = useForm('Header', (state) => state.isSubmitting);\n\n return (\n <Layouts.Header\n title={formatMessage(\n {\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.title'),\n defaultMessage: `Configure the view - {name}`,\n },\n { name: capitalise(name) }\n )}\n subtitle={formatMessage({\n id: getTranslation('components.SettingsViewWrapper.pluginHeader.description.edit-settings'),\n defaultMessage: 'Customize how the edit view will look like.',\n })}\n navigationAction={<BackButton />}\n primaryAction={\n <Button disabled={!modified} loading={isSubmitting} type=\"submit\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfigurationForm };\nexport type { ConfigurationFormProps, ConfigurationFormData, EditFieldSpacerLayout };\n"],"names":["yup","useIntl","useNotification","useField","useGetInitialDataQuery","attribute","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","jsx","Modal","jsxs","Form","Flex","FieldTypeIcon","capitalise","Grid","getTranslation","InputRenderer","Button","useForm","field","index","generateNKeysBetweenImpl","Typography","Box","Menu","Plus","React","useDragAndDrop","ItemTypes","getEmptyImage","useComposedRefs","Drag","IconButton","Pencil","Cross","Link","Cog","NavLink","ComponentIcon","styled","pipe","Layouts","Main","Divider","generateNKeysBetween","BackButton"],"mappings":"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"}