@strapi/content-type-builder 5.13.1 → 5.14.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 (510) hide show
  1. package/dist/admin/components/AttributeIcon.js +1 -0
  2. package/dist/admin/components/AttributeIcon.js.map +1 -1
  3. package/dist/admin/components/AttributeIcon.mjs +1 -0
  4. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  5. package/dist/admin/components/AttributeOptions/AttributeOption.js +1 -1
  6. package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
  7. package/dist/admin/components/AttributeOptions/AttributeOption.mjs +1 -1
  8. package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
  9. package/dist/admin/components/AttributeOptions/CustomFieldOption.js +1 -1
  10. package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
  11. package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs +1 -1
  12. package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
  13. package/dist/admin/components/AttributeRow.js +342 -0
  14. package/dist/admin/components/AttributeRow.js.map +1 -0
  15. package/dist/admin/components/AttributeRow.mjs +339 -0
  16. package/dist/admin/components/AttributeRow.mjs.map +1 -0
  17. package/dist/admin/components/AutoReloadOverlayBlocker.js +5 -2
  18. package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
  19. package/dist/admin/components/AutoReloadOverlayBlocker.mjs +5 -2
  20. package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
  21. package/dist/admin/components/ComponentCard/ComponentCard.js +13 -11
  22. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  23. package/dist/admin/components/ComponentCard/ComponentCard.mjs +13 -11
  24. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  25. package/dist/admin/components/ComponentList.js +12 -26
  26. package/dist/admin/components/ComponentList.js.map +1 -1
  27. package/dist/admin/components/ComponentList.mjs +12 -26
  28. package/dist/admin/components/ComponentList.mjs.map +1 -1
  29. package/dist/admin/components/{Tr.js → ComponentRow.js} +9 -15
  30. package/dist/admin/components/ComponentRow.js.map +1 -0
  31. package/dist/admin/components/{Tr.mjs → ComponentRow.mjs} +9 -15
  32. package/dist/admin/components/ComponentRow.mjs.map +1 -0
  33. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +253 -70
  34. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  35. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +256 -73
  36. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  37. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +53 -81
  38. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  39. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +54 -82
  40. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  41. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -0
  42. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -0
  43. package/dist/admin/components/DataManager/DataManagerProvider.js +344 -0
  44. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -0
  45. package/dist/admin/components/DataManager/DataManagerProvider.mjs +323 -0
  46. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -0
  47. package/dist/admin/components/DataManager/reducer.js +546 -0
  48. package/dist/admin/components/DataManager/reducer.js.map +1 -0
  49. package/dist/admin/components/DataManager/reducer.mjs +542 -0
  50. package/dist/admin/components/DataManager/reducer.mjs.map +1 -0
  51. package/dist/admin/components/DataManager/undoRedo.js +102 -0
  52. package/dist/admin/components/DataManager/undoRedo.js.map +1 -0
  53. package/dist/admin/components/DataManager/undoRedo.mjs +100 -0
  54. package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -0
  55. package/dist/admin/{hooks → components/DataManager}/useDataManager.js +1 -1
  56. package/dist/admin/components/DataManager/useDataManager.js.map +1 -0
  57. package/dist/admin/{hooks → components/DataManager}/useDataManager.mjs +1 -1
  58. package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -0
  59. package/dist/admin/components/DataManager/useServerRestartWatcher.js +35 -0
  60. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -0
  61. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +33 -0
  62. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -0
  63. package/dist/admin/components/DataManager/utils/cleanData.js +128 -0
  64. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -0
  65. package/dist/admin/components/DataManager/utils/cleanData.mjs +125 -0
  66. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -0
  67. package/dist/admin/components/DataManager/utils/formatSchemas.js +21 -0
  68. package/dist/admin/components/DataManager/utils/formatSchemas.js.map +1 -0
  69. package/dist/admin/components/DataManager/utils/formatSchemas.mjs +18 -0
  70. package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +1 -0
  71. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.js +1 -5
  72. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -0
  73. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.mjs +1 -5
  74. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -0
  75. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.js +3 -3
  76. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -0
  77. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.mjs +3 -3
  78. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -0
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -0
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -0
  81. package/dist/admin/components/DisplayedType.js +14 -14
  82. package/dist/admin/components/DisplayedType.js.map +1 -1
  83. package/dist/admin/components/DisplayedType.mjs +15 -15
  84. package/dist/admin/components/DisplayedType.mjs.map +1 -1
  85. package/dist/admin/components/DynamicZoneList.js +34 -38
  86. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  87. package/dist/admin/components/DynamicZoneList.mjs +36 -40
  88. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  89. package/dist/admin/components/ExitPrompt.js +50 -0
  90. package/dist/admin/components/ExitPrompt.js.map +1 -0
  91. package/dist/admin/components/ExitPrompt.mjs +48 -0
  92. package/dist/admin/components/ExitPrompt.mjs.map +1 -0
  93. package/dist/admin/components/{NestedFooter.js → Footers.js} +35 -2
  94. package/dist/admin/components/Footers.js.map +1 -0
  95. package/dist/admin/components/{NestedFooter.mjs → Footers.mjs} +36 -4
  96. package/dist/admin/components/Footers.mjs.map +1 -0
  97. package/dist/admin/components/FormModal/FormModal.js +198 -164
  98. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  99. package/dist/admin/components/FormModal/FormModal.mjs +198 -165
  100. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  101. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  102. package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
  103. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  104. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/component/createComponentSchema.js +2 -2
  106. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  107. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  108. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/forms/forms.js +10 -27
  110. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  111. package/dist/admin/components/FormModal/forms/forms.mjs +10 -27
  112. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  114. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  115. package/dist/admin/components/FormModal/reducer.js +4 -4
  116. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  117. package/dist/admin/components/FormModal/reducer.mjs +4 -4
  118. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  119. package/dist/admin/components/FormModal/utils/canEditContentType.js +9 -14
  120. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  121. package/dist/admin/components/FormModal/utils/canEditContentType.mjs +9 -14
  122. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  123. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
  124. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
  125. package/dist/admin/components/FormModalEndActions.js +1 -34
  126. package/dist/admin/components/FormModalEndActions.js.map +1 -1
  127. package/dist/admin/components/FormModalEndActions.mjs +1 -34
  128. package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
  129. package/dist/admin/components/FormModalHeader.js +10 -28
  130. package/dist/admin/components/FormModalHeader.js.map +1 -1
  131. package/dist/admin/components/FormModalHeader.mjs +10 -28
  132. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  133. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -0
  134. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -0
  135. package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.js +91 -114
  136. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -0
  137. package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.mjs +91 -96
  138. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -0
  139. package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.js +1 -1
  140. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -0
  141. package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.mjs +1 -1
  142. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -0
  143. package/dist/admin/components/FormModalSubHeader.js.map +1 -1
  144. package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
  145. package/dist/admin/components/GenericInputs.js +9 -5
  146. package/dist/admin/components/GenericInputs.js.map +1 -1
  147. package/dist/admin/components/GenericInputs.mjs +9 -5
  148. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  149. package/dist/admin/components/List.js +149 -199
  150. package/dist/admin/components/List.js.map +1 -1
  151. package/dist/admin/components/List.mjs +151 -202
  152. package/dist/admin/components/List.mjs.map +1 -1
  153. package/dist/admin/components/Relation/Relation.js +3 -2
  154. package/dist/admin/components/Relation/Relation.js.map +1 -1
  155. package/dist/admin/components/Relation/Relation.mjs +3 -2
  156. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  157. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  158. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  159. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  160. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  161. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js +6 -5
  162. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
  163. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs +6 -5
  164. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
  165. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +19 -21
  166. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
  167. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +19 -21
  168. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
  169. package/dist/admin/components/SelectCategory.js +1 -1
  170. package/dist/admin/components/SelectCategory.js.map +1 -1
  171. package/dist/admin/components/SelectCategory.mjs +1 -1
  172. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  173. package/dist/admin/components/SelectComponent.js +3 -6
  174. package/dist/admin/components/SelectComponent.js.map +1 -1
  175. package/dist/admin/components/SelectComponent.mjs +3 -6
  176. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  177. package/dist/admin/components/SelectComponents.js +9 -6
  178. package/dist/admin/components/SelectComponents.js.map +1 -1
  179. package/dist/admin/components/SelectComponents.mjs +9 -6
  180. package/dist/admin/components/SelectComponents.mjs.map +1 -1
  181. package/dist/admin/components/SelectNumber.js +0 -4
  182. package/dist/admin/components/SelectNumber.js.map +1 -1
  183. package/dist/admin/components/SelectNumber.mjs +0 -4
  184. package/dist/admin/components/SelectNumber.mjs.map +1 -1
  185. package/dist/admin/components/Status.js +73 -0
  186. package/dist/admin/components/Status.js.map +1 -0
  187. package/dist/admin/components/Status.mjs +70 -0
  188. package/dist/admin/components/Status.mjs.map +1 -0
  189. package/dist/admin/components/TabForm.js +2 -1
  190. package/dist/admin/components/TabForm.js.map +1 -1
  191. package/dist/admin/components/TabForm.mjs +2 -1
  192. package/dist/admin/components/TabForm.mjs.map +1 -1
  193. package/dist/admin/icons/Curve.js +1 -1
  194. package/dist/admin/icons/Curve.js.map +1 -1
  195. package/dist/admin/icons/Curve.mjs +1 -1
  196. package/dist/admin/icons/Curve.mjs.map +1 -1
  197. package/dist/admin/pages/App/index.js +39 -19
  198. package/dist/admin/pages/App/index.js.map +1 -1
  199. package/dist/admin/pages/App/index.mjs +41 -21
  200. package/dist/admin/pages/App/index.mjs.map +1 -1
  201. package/dist/admin/pages/ListView/EmptyState.js +38 -0
  202. package/dist/admin/pages/ListView/EmptyState.js.map +1 -0
  203. package/dist/admin/pages/ListView/EmptyState.mjs +36 -0
  204. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -0
  205. package/dist/admin/pages/ListView/LinkToCMSettingsView.js +26 -17
  206. package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
  207. package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs +26 -17
  208. package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/ListView.js +105 -158
  210. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  211. package/dist/admin/pages/ListView/ListView.mjs +110 -163
  212. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  213. package/dist/admin/reducers.js +3 -4
  214. package/dist/admin/reducers.js.map +1 -1
  215. package/dist/admin/reducers.mjs +3 -4
  216. package/dist/admin/reducers.mjs.map +1 -1
  217. package/dist/admin/src/components/AttributeRow.d.ts +28 -0
  218. package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +2 -2
  219. package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +5 -1
  220. package/dist/admin/src/components/ComponentList.d.ts +4 -6
  221. package/dist/admin/src/components/{BoxWrapper.d.ts → ComponentRow.d.ts} +5 -2
  222. package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +29 -14
  223. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +138 -0
  224. package/dist/admin/src/components/DataManager/DataManagerProvider.d.ts +6 -0
  225. package/dist/admin/src/components/DataManager/reducer.d.ts +278 -0
  226. package/dist/admin/src/components/DataManager/undoRedo.d.ts +23 -0
  227. package/dist/admin/src/components/DataManager/useDataManager.d.ts +1 -0
  228. package/dist/admin/src/components/DataManager/useServerRestartWatcher.d.ts +1 -0
  229. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +311 -0
  230. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +3 -0
  231. package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.d.ts +3 -3
  232. package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.d.ts +4 -4
  233. package/dist/admin/src/components/DisplayedType.d.ts +2 -1
  234. package/dist/admin/src/components/DynamicZoneList.d.ts +8 -5
  235. package/dist/admin/src/components/ExitPrompt.d.ts +1 -0
  236. package/dist/admin/src/components/{NestedFooter.d.ts → Footers.d.ts} +5 -1
  237. package/dist/admin/src/components/FormModal/forms/forms.d.ts +2 -38
  238. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +3 -2
  239. package/dist/admin/src/components/FormModal/reducer.d.ts +10 -4
  240. package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +4 -4
  241. package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +1 -1
  242. package/dist/admin/src/components/FormModalEndActions.d.ts +1 -5
  243. package/dist/admin/src/components/FormModalHeader.d.ts +10 -7
  244. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +19 -0
  245. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +54 -0
  246. package/dist/admin/src/components/FormModalNavigation/useFormModalNavigation.d.ts +1 -0
  247. package/dist/admin/src/components/FormModalSubHeader.d.ts +3 -3
  248. package/dist/admin/src/components/GenericInputs.d.ts +2 -1
  249. package/dist/admin/src/components/List.d.ts +16 -13
  250. package/dist/admin/src/components/Relation/Relation.d.ts +2 -1
  251. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +2 -1
  252. package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +3 -2
  253. package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +2 -1
  254. package/dist/admin/src/components/SelectComponents.d.ts +3 -1
  255. package/dist/admin/src/components/SelectNumber.d.ts +1 -7
  256. package/dist/admin/src/components/Status.d.ts +6 -0
  257. package/dist/admin/src/pages/ListView/EmptyState.d.ts +1 -0
  258. package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +3 -4
  259. package/dist/admin/src/pages/ListView/ListView.d.ts +1 -1
  260. package/dist/admin/src/reducers.d.ts +2 -8
  261. package/dist/admin/src/types.d.ts +40 -43
  262. package/dist/admin/src/utils/findAttribute.d.ts +2 -2
  263. package/dist/admin/src/utils/formAPI.d.ts +43 -1
  264. package/dist/admin/src/utils/getMaxDepth.d.ts +2 -2
  265. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  266. package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
  267. package/dist/admin/translations/de.json.js +0 -1
  268. package/dist/admin/translations/de.json.js.map +1 -1
  269. package/dist/admin/translations/de.json.mjs +0 -1
  270. package/dist/admin/translations/de.json.mjs.map +1 -1
  271. package/dist/admin/translations/dk.json.js +0 -1
  272. package/dist/admin/translations/dk.json.js.map +1 -1
  273. package/dist/admin/translations/dk.json.mjs +0 -1
  274. package/dist/admin/translations/dk.json.mjs.map +1 -1
  275. package/dist/admin/translations/en.json.js +4 -2
  276. package/dist/admin/translations/en.json.js.map +1 -1
  277. package/dist/admin/translations/en.json.mjs +4 -2
  278. package/dist/admin/translations/en.json.mjs.map +1 -1
  279. package/dist/admin/translations/es.json.js +0 -1
  280. package/dist/admin/translations/es.json.js.map +1 -1
  281. package/dist/admin/translations/es.json.mjs +0 -1
  282. package/dist/admin/translations/es.json.mjs.map +1 -1
  283. package/dist/admin/translations/ko.json.js +0 -1
  284. package/dist/admin/translations/ko.json.js.map +1 -1
  285. package/dist/admin/translations/ko.json.mjs +0 -1
  286. package/dist/admin/translations/ko.json.mjs.map +1 -1
  287. package/dist/admin/translations/pl.json.js +0 -1
  288. package/dist/admin/translations/pl.json.js.map +1 -1
  289. package/dist/admin/translations/pl.json.mjs +0 -1
  290. package/dist/admin/translations/pl.json.mjs.map +1 -1
  291. package/dist/admin/translations/pt-BR.json.js +0 -1
  292. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  293. package/dist/admin/translations/pt-BR.json.mjs +0 -1
  294. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  295. package/dist/admin/translations/sv.json.js +0 -1
  296. package/dist/admin/translations/sv.json.js.map +1 -1
  297. package/dist/admin/translations/sv.json.mjs +0 -1
  298. package/dist/admin/translations/sv.json.mjs.map +1 -1
  299. package/dist/admin/translations/tr.json.js +0 -1
  300. package/dist/admin/translations/tr.json.js.map +1 -1
  301. package/dist/admin/translations/tr.json.mjs +0 -1
  302. package/dist/admin/translations/tr.json.mjs.map +1 -1
  303. package/dist/admin/translations/zh.json.js +0 -1
  304. package/dist/admin/translations/zh.json.js.map +1 -1
  305. package/dist/admin/translations/zh.json.mjs +0 -1
  306. package/dist/admin/translations/zh.json.mjs.map +1 -1
  307. package/dist/admin/utils/findAttribute.js.map +1 -1
  308. package/dist/admin/utils/findAttribute.mjs.map +1 -1
  309. package/dist/admin/utils/formAPI.js +0 -1
  310. package/dist/admin/utils/formAPI.js.map +1 -1
  311. package/dist/admin/utils/formAPI.mjs +0 -1
  312. package/dist/admin/utils/formAPI.mjs.map +1 -1
  313. package/dist/admin/utils/getMaxDepth.js.map +1 -1
  314. package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
  315. package/dist/admin/utils/getRelationType.js.map +1 -1
  316. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  317. package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
  318. package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
  319. package/dist/server/controllers/index.js +3 -1
  320. package/dist/server/controllers/index.js.map +1 -1
  321. package/dist/server/controllers/index.mjs +3 -1
  322. package/dist/server/controllers/index.mjs.map +1 -1
  323. package/dist/server/controllers/schema.js +55 -0
  324. package/dist/server/controllers/schema.js.map +1 -0
  325. package/dist/server/controllers/schema.mjs +53 -0
  326. package/dist/server/controllers/schema.mjs.map +1 -0
  327. package/dist/server/controllers/validation/common.js +2 -0
  328. package/dist/server/controllers/validation/common.js.map +1 -1
  329. package/dist/server/controllers/validation/common.mjs +2 -1
  330. package/dist/server/controllers/validation/common.mjs.map +1 -1
  331. package/dist/server/controllers/validation/content-type.js.map +1 -1
  332. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  333. package/dist/server/controllers/validation/schema.js +612 -0
  334. package/dist/server/controllers/validation/schema.js.map +1 -0
  335. package/dist/server/controllers/validation/schema.mjs +610 -0
  336. package/dist/server/controllers/validation/schema.mjs.map +1 -0
  337. package/dist/server/routes/admin.js +51 -0
  338. package/dist/server/routes/admin.js.map +1 -1
  339. package/dist/server/routes/admin.mjs +51 -0
  340. package/dist/server/routes/admin.mjs.map +1 -1
  341. package/dist/server/services/index.js +3 -1
  342. package/dist/server/services/index.js.map +1 -1
  343. package/dist/server/services/index.mjs +3 -1
  344. package/dist/server/services/index.mjs.map +1 -1
  345. package/dist/server/services/schema-builder/component-builder.js +12 -2
  346. package/dist/server/services/schema-builder/component-builder.js.map +1 -1
  347. package/dist/server/services/schema-builder/component-builder.mjs +12 -2
  348. package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
  349. package/dist/server/services/schema-builder/content-type-builder.js +43 -28
  350. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  351. package/dist/server/services/schema-builder/content-type-builder.mjs +43 -28
  352. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  353. package/dist/server/services/schema-builder/index.js +51 -49
  354. package/dist/server/services/schema-builder/index.js.map +1 -1
  355. package/dist/server/services/schema-builder/index.mjs +51 -49
  356. package/dist/server/services/schema-builder/index.mjs.map +1 -1
  357. package/dist/server/services/schema.js +246 -0
  358. package/dist/server/services/schema.js.map +1 -0
  359. package/dist/server/services/schema.mjs +242 -0
  360. package/dist/server/services/schema.mjs.map +1 -0
  361. package/dist/server/src/controllers/index.d.ts +5 -0
  362. package/dist/server/src/controllers/index.d.ts.map +1 -1
  363. package/dist/server/src/controllers/schema.d.ts +8 -0
  364. package/dist/server/src/controllers/schema.d.ts.map +1 -0
  365. package/dist/server/src/controllers/validation/common.d.ts +1 -0
  366. package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
  367. package/dist/server/src/controllers/validation/content-type.d.ts +3 -2
  368. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  369. package/dist/server/src/controllers/validation/schema.d.ts +80968 -0
  370. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -0
  371. package/dist/server/src/index.d.ts +6 -0
  372. package/dist/server/src/index.d.ts.map +1 -1
  373. package/dist/server/src/routes/admin.d.ts.map +1 -1
  374. package/dist/server/src/services/index.d.ts +2 -0
  375. package/dist/server/src/services/index.d.ts.map +1 -1
  376. package/dist/server/src/services/schema-builder/component-builder.d.ts +1 -0
  377. package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
  378. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +2 -3
  379. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  380. package/dist/server/src/services/schema-builder/index.d.ts +3 -0
  381. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
  382. package/dist/server/src/services/schema.d.ts +2756 -0
  383. package/dist/server/src/services/schema.d.ts.map +1 -0
  384. package/dist/server/src/utils/index.d.ts +2 -0
  385. package/dist/server/src/utils/index.d.ts.map +1 -1
  386. package/dist/server/utils/index.js.map +1 -1
  387. package/dist/server/utils/index.mjs.map +1 -1
  388. package/package.json +13 -8
  389. package/dist/admin/components/BoxWrapper.js +0 -44
  390. package/dist/admin/components/BoxWrapper.js.map +0 -1
  391. package/dist/admin/components/BoxWrapper.mjs +0 -42
  392. package/dist/admin/components/BoxWrapper.mjs.map +0 -1
  393. package/dist/admin/components/DataManagerProvider/DataManagerProvider.js +0 -520
  394. package/dist/admin/components/DataManagerProvider/DataManagerProvider.js.map +0 -1
  395. package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs +0 -518
  396. package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs.map +0 -1
  397. package/dist/admin/components/DataManagerProvider/reducer.js +0 -583
  398. package/dist/admin/components/DataManagerProvider/reducer.js.map +0 -1
  399. package/dist/admin/components/DataManagerProvider/reducer.mjs +0 -579
  400. package/dist/admin/components/DataManagerProvider/reducer.mjs.map +0 -1
  401. package/dist/admin/components/DataManagerProvider/selectors.js +0 -20
  402. package/dist/admin/components/DataManagerProvider/selectors.js.map +0 -1
  403. package/dist/admin/components/DataManagerProvider/selectors.mjs +0 -17
  404. package/dist/admin/components/DataManagerProvider/selectors.mjs.map +0 -1
  405. package/dist/admin/components/DataManagerProvider/utils/cleanData.js +0 -126
  406. package/dist/admin/components/DataManagerProvider/utils/cleanData.js.map +0 -1
  407. package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs +0 -120
  408. package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs.map +0 -1
  409. package/dist/admin/components/DataManagerProvider/utils/createDataObject.js +0 -9
  410. package/dist/admin/components/DataManagerProvider/utils/createDataObject.js.map +0 -1
  411. package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs +0 -7
  412. package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs.map +0 -1
  413. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js +0 -20
  414. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js.map +0 -1
  415. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs +0 -18
  416. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs.map +0 -1
  417. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js +0 -30
  418. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js.map +0 -1
  419. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs +0 -27
  420. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs.map +0 -1
  421. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js +0 -46
  422. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js.map +0 -1
  423. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs +0 -44
  424. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs.map +0 -1
  425. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.js.map +0 -1
  426. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.mjs.map +0 -1
  427. package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.js.map +0 -1
  428. package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.mjs.map +0 -1
  429. package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.js.map +0 -1
  430. package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.mjs.map +0 -1
  431. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js +0 -37
  432. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js.map +0 -1
  433. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs +0 -35
  434. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs.map +0 -1
  435. package/dist/admin/components/DataManagerProvider/utils/validateSchema.js +0 -9
  436. package/dist/admin/components/DataManagerProvider/utils/validateSchema.js.map +0 -1
  437. package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs +0 -7
  438. package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs.map +0 -1
  439. package/dist/admin/components/FormModal/category/createCategorySchema.js +0 -43
  440. package/dist/admin/components/FormModal/category/createCategorySchema.js.map +0 -1
  441. package/dist/admin/components/FormModal/category/createCategorySchema.mjs +0 -22
  442. package/dist/admin/components/FormModal/category/createCategorySchema.mjs.map +0 -1
  443. package/dist/admin/components/FormModal/category/form.js +0 -34
  444. package/dist/admin/components/FormModal/category/form.js.map +0 -1
  445. package/dist/admin/components/FormModal/category/form.mjs +0 -32
  446. package/dist/admin/components/FormModal/category/form.mjs.map +0 -1
  447. package/dist/admin/components/FormModal/category/regex.js +0 -6
  448. package/dist/admin/components/FormModal/category/regex.js.map +0 -1
  449. package/dist/admin/components/FormModal/category/regex.mjs +0 -4
  450. package/dist/admin/components/FormModal/category/regex.mjs.map +0 -1
  451. package/dist/admin/components/FormModal/selectors.js +0 -20
  452. package/dist/admin/components/FormModal/selectors.js.map +0 -1
  453. package/dist/admin/components/FormModal/selectors.mjs +0 -17
  454. package/dist/admin/components/FormModal/selectors.mjs.map +0 -1
  455. package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.js.map +0 -1
  456. package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs.map +0 -1
  457. package/dist/admin/components/FormModalNavigationProvider/constants.js +0 -21
  458. package/dist/admin/components/FormModalNavigationProvider/constants.js.map +0 -1
  459. package/dist/admin/components/FormModalNavigationProvider/constants.mjs +0 -19
  460. package/dist/admin/components/FormModalNavigationProvider/constants.mjs.map +0 -1
  461. package/dist/admin/components/ListRow.js +0 -164
  462. package/dist/admin/components/ListRow.js.map +0 -1
  463. package/dist/admin/components/ListRow.mjs +0 -161
  464. package/dist/admin/components/ListRow.mjs.map +0 -1
  465. package/dist/admin/components/NestedFooter.js.map +0 -1
  466. package/dist/admin/components/NestedFooter.mjs.map +0 -1
  467. package/dist/admin/components/Tr.js.map +0 -1
  468. package/dist/admin/components/Tr.mjs.map +0 -1
  469. package/dist/admin/components/UpperFirst.js +0 -11
  470. package/dist/admin/components/UpperFirst.js.map +0 -1
  471. package/dist/admin/components/UpperFirst.mjs +0 -9
  472. package/dist/admin/components/UpperFirst.mjs.map +0 -1
  473. package/dist/admin/contexts/DataManagerContext.js.map +0 -1
  474. package/dist/admin/contexts/DataManagerContext.mjs.map +0 -1
  475. package/dist/admin/contexts/FormModalNavigationContext.js.map +0 -1
  476. package/dist/admin/contexts/FormModalNavigationContext.mjs.map +0 -1
  477. package/dist/admin/hooks/useDataManager.js.map +0 -1
  478. package/dist/admin/hooks/useDataManager.mjs.map +0 -1
  479. package/dist/admin/hooks/useFormModalNavigation.js.map +0 -1
  480. package/dist/admin/hooks/useFormModalNavigation.mjs.map +0 -1
  481. package/dist/admin/src/components/DataManagerProvider/DataManagerProvider.d.ts +0 -6
  482. package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +0 -103
  483. package/dist/admin/src/components/DataManagerProvider/selectors.d.ts +0 -17
  484. package/dist/admin/src/components/DataManagerProvider/utils/cleanData.d.ts +0 -23
  485. package/dist/admin/src/components/DataManagerProvider/utils/createDataObject.d.ts +0 -2
  486. package/dist/admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.d.ts +0 -6
  487. package/dist/admin/src/components/DataManagerProvider/utils/formatSchemas.d.ts +0 -6
  488. package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.d.ts +0 -4
  489. package/dist/admin/src/components/DataManagerProvider/utils/serverRestartWatcher.d.ts +0 -6
  490. package/dist/admin/src/components/DataManagerProvider/utils/validateSchema.d.ts +0 -1
  491. package/dist/admin/src/components/FormModal/category/createCategorySchema.d.ts +0 -5
  492. package/dist/admin/src/components/FormModal/category/form.d.ts +0 -20
  493. package/dist/admin/src/components/FormModal/category/regex.d.ts +0 -1
  494. package/dist/admin/src/components/FormModal/selectors.d.ts +0 -16
  495. package/dist/admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.d.ts +0 -22
  496. package/dist/admin/src/components/FormModalNavigationProvider/constants.d.ts +0 -17
  497. package/dist/admin/src/components/ListRow.d.ts +0 -27
  498. package/dist/admin/src/components/Tr.d.ts +0 -5
  499. package/dist/admin/src/components/UpperFirst.d.ts +0 -3
  500. package/dist/admin/src/contexts/DataManagerContext.d.ts +0 -41
  501. package/dist/admin/src/contexts/FormModalNavigationContext.d.ts +0 -40
  502. package/dist/admin/src/hooks/useDataManager.d.ts +0 -1
  503. package/dist/admin/src/hooks/useFormModalNavigation.d.ts +0 -1
  504. /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.js +0 -0
  505. /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.mjs +0 -0
  506. /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.js +0 -0
  507. /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.mjs +0 -0
  508. /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.js +0 -0
  509. /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.mjs +0 -0
  510. /package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.d.ts +0 -0
@@ -0,0 +1,542 @@
1
+ import merge from 'lodash/merge';
2
+ import omit from 'lodash/omit';
3
+ import { getRelationType } from '../../utils/getRelationType.mjs';
4
+ import { makeUnique } from '../../utils/makeUnique.mjs';
5
+ import { createUndoRedoSlice } from './undoRedo.mjs';
6
+ import { formatSchema } from './utils/formatSchemas.mjs';
7
+
8
+ const initialState = {
9
+ components: {},
10
+ contentTypes: {},
11
+ initialComponents: {},
12
+ initialContentTypes: {},
13
+ reservedNames: {
14
+ models: [],
15
+ attributes: []
16
+ },
17
+ isLoading: true
18
+ };
19
+ const ONE_SIDE_RELATIONS = [
20
+ 'oneWay',
21
+ 'manyWay'
22
+ ];
23
+ const getOppositeRelation = (originalRelation)=>{
24
+ if (originalRelation === 'manyToOne') {
25
+ return 'oneToMany';
26
+ }
27
+ if (originalRelation === 'oneToMany') {
28
+ return 'manyToOne';
29
+ }
30
+ return originalRelation;
31
+ };
32
+ const findAttributeIndex = (type, attributeToFind)=>{
33
+ return type.attributes.findIndex(({ name })=>name === attributeToFind);
34
+ };
35
+ const getType = (state, { forTarget, targetUid })=>{
36
+ return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];
37
+ };
38
+ // TODO: use initial state when chnaging back to the initial state without knowing
39
+ const setStatus = (type, status)=>{
40
+ switch(type.status){
41
+ case 'NEW':
42
+ case 'REMOVED':
43
+ {
44
+ break;
45
+ }
46
+ default:
47
+ {
48
+ type.status = status;
49
+ }
50
+ }
51
+ };
52
+ const getNewStatus = (oldStatus, newStatus)=>{
53
+ if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {
54
+ return oldStatus;
55
+ }
56
+ return newStatus;
57
+ };
58
+ const setAttributeStatus = (attribute, status)=>{
59
+ attribute.status = getNewStatus(attribute.status, status);
60
+ };
61
+ const createAttribute = (properties)=>{
62
+ return {
63
+ ...properties,
64
+ status: 'NEW'
65
+ };
66
+ };
67
+ const setAttributeAt = (type, index, attribute)=>{
68
+ const previousAttribute = type.attributes[index];
69
+ const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');
70
+ type.attributes[index] = {
71
+ ...attribute,
72
+ status: newStatus
73
+ };
74
+ setStatus(type, 'CHANGED');
75
+ };
76
+ const pushAttribute = (type, attribute)=>{
77
+ type.attributes.push(attribute);
78
+ setStatus(type, 'CHANGED');
79
+ };
80
+ const removeAttributeAt = (type, index)=>{
81
+ const attr = type.attributes[index];
82
+ setStatus(type, 'CHANGED');
83
+ if (attr.status === 'NEW') {
84
+ type.attributes.splice(index, 1);
85
+ } else {
86
+ setAttributeStatus(attr, 'REMOVED');
87
+ }
88
+ };
89
+ const replaceAttributeAt = (type, index, attribute)=>{
90
+ type.attributes[index] = attribute;
91
+ setStatus(type, 'CHANGED');
92
+ };
93
+ const removeAttributeByName = (type, name)=>{
94
+ const idx = type.attributes.findIndex((attr)=>attr.name === name);
95
+ const attr = type.attributes[idx];
96
+ setStatus(type, 'CHANGED');
97
+ if (attr.status === 'NEW') {
98
+ type.attributes.splice(idx, 1);
99
+ } else {
100
+ setAttributeStatus(attr, 'REMOVED');
101
+ }
102
+ };
103
+ const updateType = (type, data)=>{
104
+ merge(type, data);
105
+ setStatus(type, 'CHANGED');
106
+ };
107
+ const slice = createUndoRedoSlice({
108
+ name: 'data-manager',
109
+ initialState,
110
+ reducers: {
111
+ init: (state, action)=>{
112
+ const { components, contentTypes, reservedNames } = action.payload;
113
+ state.components = components;
114
+ state.initialComponents = components;
115
+ state.initialContentTypes = contentTypes;
116
+ state.contentTypes = contentTypes;
117
+ state.reservedNames = reservedNames;
118
+ state.isLoading = false;
119
+ },
120
+ createComponentSchema: (state, action)=>{
121
+ const { uid, data, componentCategory } = action.payload;
122
+ const newSchema = {
123
+ uid: uid,
124
+ status: 'NEW',
125
+ category: componentCategory,
126
+ modelName: data.displayName,
127
+ globalId: data.displayName,
128
+ info: {
129
+ icon: data.icon,
130
+ displayName: data.displayName
131
+ },
132
+ attributes: [],
133
+ modelType: 'component'
134
+ };
135
+ state.components[uid] = newSchema;
136
+ },
137
+ createSchema: (state, action)=>{
138
+ const { uid, data } = action.payload;
139
+ const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } = data;
140
+ const newSchema = {
141
+ uid: uid,
142
+ status: 'NEW',
143
+ visible: true,
144
+ modelType: 'contentType',
145
+ restrictRelationsTo: null,
146
+ attributes: [],
147
+ kind,
148
+ modelName: displayName,
149
+ globalId: displayName,
150
+ options: {
151
+ draftAndPublish
152
+ },
153
+ info: {
154
+ displayName,
155
+ singularName,
156
+ pluralName
157
+ },
158
+ pluginOptions
159
+ };
160
+ state.contentTypes[uid] = newSchema;
161
+ },
162
+ addAttribute: (state, action)=>{
163
+ const { attributeToSet, forTarget, targetUid } = action.payload;
164
+ const type = getType(state, {
165
+ forTarget,
166
+ targetUid
167
+ });
168
+ const attribute = createAttribute(omit(attributeToSet, 'createComponent'));
169
+ if (attribute.type === 'relation') {
170
+ const target = attribute.target;
171
+ const targetAttribute = attribute.targetAttribute || null;
172
+ const relation = attribute.relation;
173
+ const relationType = getRelationType(relation, targetAttribute);
174
+ const isBidirectionalRelation = ![
175
+ 'oneWay',
176
+ 'manyWay'
177
+ ].includes(relationType);
178
+ if (isBidirectionalRelation) {
179
+ const oppositeAttribute = createAttribute({
180
+ name: targetAttribute,
181
+ relation: getOppositeRelation(relationType),
182
+ target: type.uid,
183
+ targetAttribute: attribute.name,
184
+ type: 'relation',
185
+ private: attribute.private
186
+ });
187
+ const targetType = getType(state, {
188
+ forTarget,
189
+ targetUid: target
190
+ });
191
+ pushAttribute(targetType, oppositeAttribute);
192
+ }
193
+ }
194
+ pushAttribute(type, attribute);
195
+ setStatus(type, 'CHANGED');
196
+ },
197
+ moveAttribute: (state, action)=>{
198
+ const { forTarget, targetUid, from, to } = action.payload;
199
+ const type = getType(state, {
200
+ forTarget,
201
+ targetUid
202
+ });
203
+ const attribute = type.attributes[from];
204
+ type.attributes.splice(from, 1);
205
+ type.attributes.splice(to, 0, attribute);
206
+ setStatus(type, 'CHANGED');
207
+ },
208
+ addCustomFieldAttribute: (state, action)=>{
209
+ const { attributeToSet, forTarget, targetUid } = action.payload;
210
+ const type = getType(state, {
211
+ forTarget,
212
+ targetUid
213
+ });
214
+ pushAttribute(type, createAttribute(attributeToSet));
215
+ },
216
+ addCreatedComponentToDynamicZone: (state, action)=>{
217
+ const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;
218
+ const type = getType(state, {
219
+ forTarget,
220
+ targetUid
221
+ });
222
+ const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);
223
+ const attr = type.attributes[dzAttributeIndex];
224
+ componentsToAdd.forEach((componentUid)=>{
225
+ attr.components.push(componentUid);
226
+ });
227
+ setAttributeStatus(attr, 'CHANGED');
228
+ setStatus(type, 'CHANGED');
229
+ },
230
+ changeDynamicZoneComponents: (state, action)=>{
231
+ const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;
232
+ const type = getType(state, {
233
+ forTarget,
234
+ targetUid
235
+ });
236
+ const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);
237
+ const attr = type.attributes[dzAttributeIndex];
238
+ const currentDZComponents = attr.components;
239
+ const updatedComponents = makeUnique([
240
+ ...currentDZComponents,
241
+ ...newComponents
242
+ ]);
243
+ setStatus(type, 'CHANGED');
244
+ setAttributeStatus(attr, 'CHANGED');
245
+ attr.components = updatedComponents;
246
+ },
247
+ editAttribute: (state, action)=>{
248
+ const { name, attributeToSet, forTarget, targetUid } = action.payload;
249
+ const type = getType(state, {
250
+ forTarget,
251
+ targetUid
252
+ });
253
+ const initialAttributeIndex = findAttributeIndex(type, name);
254
+ if (initialAttributeIndex === -1) {
255
+ return;
256
+ }
257
+ const previousAttribute = type.attributes[initialAttributeIndex];
258
+ setAttributeAt(type, initialAttributeIndex, attributeToSet);
259
+ if (previousAttribute.type !== attributeToSet.type) {
260
+ return;
261
+ }
262
+ if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {
263
+ return;
264
+ }
265
+ const previousTarget = getType(state, {
266
+ forTarget: 'contentType',
267
+ targetUid: previousAttribute.target
268
+ });
269
+ const newTarget = getType(state, {
270
+ forTarget: 'contentType',
271
+ targetUid: attributeToSet.target
272
+ });
273
+ const previousTargetAttributeIndex = findAttributeIndex(previousTarget, previousAttribute.targetAttribute ?? '');
274
+ // remove old targetAttribute
275
+ if (previousAttribute.targetAttribute) {
276
+ removeAttributeByName(previousTarget, previousAttribute.targetAttribute);
277
+ }
278
+ const newRelationType = getRelationType(attributeToSet.relation, attributeToSet.targetAttribute);
279
+ const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(newRelationType);
280
+ if (isBidirectionnal) {
281
+ const newTargetAttribute = {
282
+ name: attributeToSet.targetAttribute,
283
+ type: 'relation',
284
+ relation: getOppositeRelation(attributeToSet.relation),
285
+ targetAttribute: attributeToSet.name,
286
+ target: type.uid,
287
+ private: previousAttribute.private ?? attributeToSet.private,
288
+ pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,
289
+ status: 'CHANGED'
290
+ };
291
+ // create or recreate(at old index) targetAttribute
292
+ if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {
293
+ // re-create at previousIdx if possible
294
+ replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);
295
+ } else {
296
+ pushAttribute(newTarget, {
297
+ ...newTargetAttribute,
298
+ status: 'NEW'
299
+ });
300
+ }
301
+ }
302
+ },
303
+ editCustomFieldAttribute: (state, action)=>{
304
+ const { forTarget, targetUid, name, attributeToSet } = action.payload;
305
+ const initialAttributeName = name;
306
+ const type = getType(state, {
307
+ forTarget,
308
+ targetUid
309
+ });
310
+ const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);
311
+ setAttributeAt(type, initialAttributeIndex, attributeToSet);
312
+ },
313
+ reloadPlugin: ()=>{
314
+ return initialState;
315
+ },
316
+ removeComponentFromDynamicZone: (state, action)=>{
317
+ const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;
318
+ const type = forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];
319
+ if (!type) {
320
+ return;
321
+ }
322
+ const dzAttributeIndex = findAttributeIndex(type, dzName);
323
+ const attr = type.attributes[dzAttributeIndex];
324
+ setStatus(type, 'CHANGED');
325
+ setAttributeStatus(attr, 'CHANGED');
326
+ attr.components.splice(componentToRemoveIndex, 1);
327
+ },
328
+ removeField: (state, action)=>{
329
+ const { forTarget, targetUid, attributeToRemoveName } = action.payload;
330
+ const type = getType(state, {
331
+ forTarget,
332
+ targetUid
333
+ });
334
+ const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);
335
+ const attribute = type.attributes[attributeToRemoveIndex];
336
+ if (attribute.type === 'relation') {
337
+ const { target, relation, targetAttribute: targetAttributeName } = attribute;
338
+ const relationType = getRelationType(relation, targetAttributeName);
339
+ const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType);
340
+ if (isBidirectionnal && targetAttributeName) {
341
+ const targetContentType = getType(state, {
342
+ forTarget,
343
+ targetUid: target
344
+ });
345
+ const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);
346
+ removeAttributeAt(targetContentType, targetAttributeIndex);
347
+ }
348
+ }
349
+ // Find all uid fields that have the targetField set to the field we are removing
350
+ type.attributes.forEach((attribute)=>{
351
+ if (attribute.type === 'uid') {
352
+ if (attribute.targetField === attributeToRemoveName) {
353
+ delete attribute.targetField;
354
+ }
355
+ }
356
+ });
357
+ removeAttributeAt(type, attributeToRemoveIndex);
358
+ },
359
+ // only edits a component in practice
360
+ updateComponentSchema: (state, action)=>{
361
+ const { data, uid } = action.payload;
362
+ const type = state.components[uid];
363
+ if (!type) {
364
+ return;
365
+ }
366
+ updateType(type, {
367
+ info: {
368
+ displayName: data.displayName,
369
+ icon: data.icon
370
+ }
371
+ });
372
+ },
373
+ updateComponentUid: (state, action)=>{
374
+ const { newComponentUID, uid } = action.payload;
375
+ const type = state.components[uid];
376
+ if (!type || type.status !== 'NEW') {
377
+ return;
378
+ }
379
+ if (newComponentUID !== uid) {
380
+ const newType = {
381
+ ...type,
382
+ uid: newComponentUID
383
+ };
384
+ state.components[newComponentUID] = newType;
385
+ delete state.components[uid];
386
+ // update the uid in the content types
387
+ Object.keys(state.contentTypes).forEach((contentTypeUid)=>{
388
+ const contentType = state.contentTypes[contentTypeUid];
389
+ contentType.attributes.forEach((attribute)=>{
390
+ if (attribute.type === 'dynamiczone') {
391
+ const newComponents = attribute.components.map((component)=>{
392
+ if (component === uid) {
393
+ return newComponentUID;
394
+ }
395
+ return component;
396
+ });
397
+ attribute.components = newComponents;
398
+ }
399
+ });
400
+ contentType.attributes.forEach((attribute)=>{
401
+ if (attribute.type === 'component' && attribute.component === uid) {
402
+ attribute.component = newComponentUID;
403
+ }
404
+ });
405
+ });
406
+ // update the uid in the other components
407
+ Object.keys(state.components).forEach((componentUid)=>{
408
+ const component = state.components[componentUid];
409
+ component.attributes.forEach((attribute)=>{
410
+ if (attribute.type === 'component' && attribute.component === uid) {
411
+ attribute.component = newComponentUID;
412
+ }
413
+ });
414
+ });
415
+ }
416
+ },
417
+ updateSchema: (state, action)=>{
418
+ const { data, uid } = action.payload;
419
+ const { displayName, kind, draftAndPublish, pluginOptions } = data;
420
+ const type = state.contentTypes[uid];
421
+ if (!type) {
422
+ return;
423
+ }
424
+ updateType(type, {
425
+ info: {
426
+ displayName
427
+ },
428
+ kind,
429
+ options: {
430
+ draftAndPublish
431
+ },
432
+ pluginOptions
433
+ });
434
+ },
435
+ deleteComponent: (state, action)=>{
436
+ const uid = action.payload;
437
+ // remove the compo from the components
438
+ if (state.components[uid].status === 'NEW') {
439
+ delete state.components[uid];
440
+ } else {
441
+ setStatus(state.components[uid], 'REMOVED');
442
+ }
443
+ // remove the compo from the content types
444
+ Object.keys(state.contentTypes).forEach((contentTypeUid)=>{
445
+ const contentType = state.contentTypes[contentTypeUid];
446
+ // remove from dynamic zones
447
+ contentType.attributes.forEach((attribute)=>{
448
+ if (attribute.type === 'dynamiczone') {
449
+ const newComponents = attribute.components.filter((component)=>component !== uid);
450
+ attribute.components = newComponents;
451
+ }
452
+ });
453
+ contentType.attributes.forEach((attribute)=>{
454
+ if (attribute.type === 'component' && attribute.component === uid) {
455
+ removeAttributeByName(contentType, attribute.name);
456
+ }
457
+ });
458
+ });
459
+ // remove the compo from other components
460
+ Object.keys(state.components).forEach((componentUid)=>{
461
+ const component = state.components[componentUid];
462
+ component.attributes.forEach((attribute)=>{
463
+ if (attribute.type === 'component' && attribute.component === uid) {
464
+ removeAttributeByName(component, attribute.name);
465
+ }
466
+ });
467
+ });
468
+ },
469
+ deleteContentType: (state, action)=>{
470
+ const uid = action.payload;
471
+ const type = state.contentTypes[uid];
472
+ // just drop new content types
473
+ if (type.status === 'NEW') {
474
+ delete state.contentTypes[uid];
475
+ } else {
476
+ setStatus(type, 'REMOVED');
477
+ }
478
+ // remove the content type from the components
479
+ Object.keys(state.components).forEach((componentUid)=>{
480
+ const component = state.components[componentUid];
481
+ component.attributes.forEach((attribute)=>{
482
+ if (attribute.type === 'relation' && attribute.target === uid) {
483
+ removeAttributeByName(component, attribute.name);
484
+ }
485
+ });
486
+ });
487
+ // remove the content type from the content types
488
+ Object.keys(state.contentTypes).forEach((contentTypeUid)=>{
489
+ const contentType = state.contentTypes[contentTypeUid];
490
+ contentType.attributes.forEach((attribute)=>{
491
+ if (attribute.type === 'relation' && attribute.target === uid) {
492
+ removeAttributeByName(contentType, attribute.name);
493
+ }
494
+ });
495
+ });
496
+ },
497
+ applyChange (state, reducerAction) {
498
+ const { action, schema } = reducerAction.payload;
499
+ switch(action){
500
+ case 'add':
501
+ {
502
+ // generate a uid ?
503
+ const uid = schema.uid;
504
+ if (schema.modelType === 'component') {
505
+ state.components[uid] = {
506
+ ...formatSchema(schema),
507
+ status: 'NEW'
508
+ };
509
+ } else {
510
+ state.contentTypes[uid] = {
511
+ ...formatSchema(schema),
512
+ status: 'NEW'
513
+ };
514
+ }
515
+ }
516
+ }
517
+ }
518
+ }
519
+ }, {
520
+ limit: 50,
521
+ excludeActionsFromHistory: [
522
+ 'reloadPlugin',
523
+ 'init'
524
+ ],
525
+ stateSelector: (state)=>{
526
+ if (!state) {
527
+ return {};
528
+ }
529
+ return {
530
+ components: state.components,
531
+ contentTypes: state.contentTypes
532
+ };
533
+ },
534
+ discard: (state)=>{
535
+ state.components = state.initialComponents;
536
+ state.contentTypes = state.initialContentTypes;
537
+ }
538
+ });
539
+ const { reducer, actions } = slice;
540
+
541
+ export { actions, initialState, reducer };
542
+ //# sourceMappingURL=reducer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\nimport { formatSchema } from './utils/formatSchemas';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: any;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: any, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: Record<string, any>;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: Record<string, any>;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: Record<string, any>, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, any>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, any>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation = !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add': {\n // generate a uid ?\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = {\n ...formatSchema(schema),\n status: 'NEW',\n };\n } else {\n state.contentTypes[uid] = {\n ...formatSchema(schema),\n status: 'NEW',\n };\n }\n }\n }\n },\n },\n },\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","newRelationType","isBidirectionnal","newTargetAttribute","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","formatSchema","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}