@strapi/content-type-builder 5.50.0 → 5.50.2

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 (251) hide show
  1. package/dist/admin/components/AIChat/Chat.js +2 -4
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +2 -4
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
  6. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  8. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
  10. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  11. package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
  12. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
  14. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  15. package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
  16. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
  18. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
  19. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
  20. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
  22. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  23. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
  24. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
  26. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  27. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
  28. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  29. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  30. package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
  31. package/dist/admin/components/AttributeIcon.js +1 -1
  32. package/dist/admin/components/AttributeIcon.js.map +1 -1
  33. package/dist/admin/components/AttributeIcon.mjs +1 -1
  34. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  35. package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
  36. package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
  37. package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
  38. package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
  39. package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
  40. package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
  41. package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
  42. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  43. package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
  44. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  45. package/dist/admin/components/CheckboxWithNumberField.js +3 -2
  46. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  47. package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
  48. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  49. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  50. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
  52. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  53. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
  54. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  55. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
  56. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  57. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
  58. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  59. package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
  60. package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
  61. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
  62. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  63. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
  64. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  65. package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
  66. package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
  67. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  68. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  69. package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
  70. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  71. package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
  72. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  73. package/dist/admin/components/DataManager/reducer.js +2 -2
  74. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  75. package/dist/admin/components/DataManager/reducer.mjs +2 -2
  76. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  77. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  78. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
  81. package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
  82. package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
  83. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  84. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  85. package/dist/admin/components/FormModal/FormModal.js +91 -71
  86. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  87. package/dist/admin/components/FormModal/FormModal.mjs +91 -70
  88. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  89. package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
  90. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  91. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
  92. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  93. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  94. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  95. package/dist/admin/components/FormModal/forms/forms.js +4 -6
  96. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  97. package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
  98. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  99. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  100. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  101. package/dist/admin/components/FormModal/reducer.js +9 -6
  102. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  103. package/dist/admin/components/FormModal/reducer.mjs +9 -6
  104. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
  106. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  107. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
  108. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
  110. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  111. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
  112. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/utils/relations.js +2 -2
  114. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  115. package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
  116. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  117. package/dist/admin/components/FormModalHeader.js.map +1 -1
  118. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  119. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  120. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  121. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
  122. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  123. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
  124. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  125. package/dist/admin/components/GenericInputs.js +24 -12
  126. package/dist/admin/components/GenericInputs.js.map +1 -1
  127. package/dist/admin/components/GenericInputs.mjs +24 -12
  128. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  129. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  130. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  131. package/dist/admin/components/PluralName.js.map +1 -1
  132. package/dist/admin/components/PluralName.mjs.map +1 -1
  133. package/dist/admin/components/Relation/Relation.js +3 -3
  134. package/dist/admin/components/Relation/Relation.js.map +1 -1
  135. package/dist/admin/components/Relation/Relation.mjs +3 -3
  136. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  137. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  138. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  139. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  140. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  141. package/dist/admin/components/SelectCategory.js +6 -0
  142. package/dist/admin/components/SelectCategory.js.map +1 -1
  143. package/dist/admin/components/SelectCategory.mjs +6 -0
  144. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  145. package/dist/admin/components/SelectComponent.js +1 -1
  146. package/dist/admin/components/SelectComponent.js.map +1 -1
  147. package/dist/admin/components/SelectComponent.mjs +1 -1
  148. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  149. package/dist/admin/components/SingularName.js.map +1 -1
  150. package/dist/admin/components/SingularName.mjs.map +1 -1
  151. package/dist/admin/components/TabForm.js +50 -51
  152. package/dist/admin/components/TabForm.js.map +1 -1
  153. package/dist/admin/components/TabForm.mjs +51 -52
  154. package/dist/admin/components/TabForm.mjs.map +1 -1
  155. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
  156. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
  157. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
  158. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
  159. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
  160. package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
  161. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
  162. package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
  163. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  164. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
  165. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
  166. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
  167. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -11
  168. package/dist/admin/src/components/DataManager/reducer.d.ts +14 -10
  169. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +42 -42
  170. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
  171. package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
  172. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
  173. package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
  174. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
  175. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +3 -1
  176. package/dist/admin/src/components/FormModal/forms/forms.d.ts +59 -26
  177. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
  178. package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
  179. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
  180. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
  181. package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
  182. package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
  183. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
  184. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -1
  185. package/dist/admin/src/components/GenericInputs.d.ts +12 -7
  186. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
  187. package/dist/admin/src/components/PluralName.d.ts +6 -14
  188. package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
  189. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
  190. package/dist/admin/src/components/SelectCategory.d.ts +3 -12
  191. package/dist/admin/src/components/SelectComponent.d.ts +8 -7
  192. package/dist/admin/src/components/SingularName.d.ts +5 -8
  193. package/dist/admin/src/components/TabForm.d.ts +38 -7
  194. package/dist/admin/src/types.d.ts +20 -12
  195. package/dist/admin/src/utils/conditions.d.ts +13 -4
  196. package/dist/admin/src/utils/formAPI.d.ts +38 -33
  197. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  198. package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
  199. package/dist/admin/translations/ko.json.js +64 -1
  200. package/dist/admin/translations/ko.json.js.map +1 -1
  201. package/dist/admin/translations/ko.json.mjs +64 -1
  202. package/dist/admin/translations/ko.json.mjs.map +1 -1
  203. package/dist/admin/utils/conditions.js +38 -28
  204. package/dist/admin/utils/conditions.js.map +1 -1
  205. package/dist/admin/utils/conditions.mjs +37 -28
  206. package/dist/admin/utils/conditions.mjs.map +1 -1
  207. package/dist/admin/utils/formAPI.js +9 -6
  208. package/dist/admin/utils/formAPI.js.map +1 -1
  209. package/dist/admin/utils/formAPI.mjs +9 -6
  210. package/dist/admin/utils/formAPI.mjs.map +1 -1
  211. package/dist/admin/utils/getRelationType.js +3 -0
  212. package/dist/admin/utils/getRelationType.js.map +1 -1
  213. package/dist/admin/utils/getRelationType.mjs +3 -0
  214. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  215. package/dist/admin/utils/getYupInnerErrors.js +6 -4
  216. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  217. package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
  218. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  219. package/dist/admin/utils/parseNumberInputValue.js +15 -0
  220. package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
  221. package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
  222. package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
  223. package/dist/server/controllers/validation/relations.js +1 -1
  224. package/dist/server/controllers/validation/relations.js.map +1 -1
  225. package/dist/server/controllers/validation/relations.mjs +1 -1
  226. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  227. package/dist/server/controllers/validation/schema.js +37 -1
  228. package/dist/server/controllers/validation/schema.js.map +1 -1
  229. package/dist/server/controllers/validation/schema.mjs +38 -3
  230. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  231. package/dist/server/controllers/validation/types.js +4 -3
  232. package/dist/server/controllers/validation/types.js.map +1 -1
  233. package/dist/server/controllers/validation/types.mjs +4 -3
  234. package/dist/server/controllers/validation/types.mjs.map +1 -1
  235. package/dist/server/services/builder.js +11 -66
  236. package/dist/server/services/builder.js.map +1 -1
  237. package/dist/server/services/builder.mjs +11 -66
  238. package/dist/server/services/builder.mjs.map +1 -1
  239. package/dist/server/src/controllers/validation/schema.d.ts +10 -0
  240. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  241. package/dist/server/src/index.d.ts +3 -3
  242. package/dist/server/src/routes/index.d.ts +1 -1
  243. package/dist/server/src/services/builder.d.ts +7 -0
  244. package/dist/server/src/services/builder.d.ts.map +1 -1
  245. package/dist/server/src/services/schema-builder/component-builder.d.ts +4 -4
  246. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +4 -4
  247. package/dist/server/src/services/schema-builder/index.d.ts +18 -18
  248. package/dist/server/src/services/schema.d.ts +75 -75
  249. package/dist/server/src/utils/attributes.d.ts +2 -2
  250. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  251. package/package.json +17 -13
@@ -226,7 +226,70 @@ var ko = {
226
226
  "chat.code-upload.title": "Next.js 애플리케이션 가져오기",
227
227
  "chat.code-upload.description": "AI가 애플리케이션을 분석합니다. 가져오기 전에 모든 민감한 데이터를 제거해주세요.",
228
228
  "chat.code-upload.drop-zone": ".zip 파일을 여기에 놓거나",
229
- "chat.code-upload.drop-zone-browse": "파일 찾아보기"
229
+ "chat.code-upload.drop-zone-browse": "파일 찾아보기",
230
+ "media.multiple": "다중",
231
+ "error.category.format": "카테고리 이름은 문자로 시작해야 하며, 문자, 숫자, 대시(-), 밑줄(_)만 포함할 수 있습니다.",
232
+ "form.attribute.item.maximumComponents": "최대 컴포넌트 수",
233
+ "form.attribute.item.minimumComponents": "최소 컴포넌트 수",
234
+ "form.attribute.item.uniqueField.v5.willBeDisabled'": "현재 컴포넌트에서는 고유 필드가 올바르게 작동하지 않습니다. 이 기능을 비활성화하면 문제가 해결될 때까지 필드가 비활성화됩니다.",
235
+ "form.attribute.condition.title": "조건",
236
+ "form.attribute.condition.description": "다른 불리언 또는 열거형 필드의 값에 따라 필드 설정을 전환합니다.",
237
+ "form.attribute.condition.label": "조건",
238
+ "form.attribute.condition.field": "필드",
239
+ "form.attribute.condition.operator": "연산자",
240
+ "form.attribute.condition.value": "값",
241
+ "form.attribute.condition.operator.is": "다음과 같음",
242
+ "form.attribute.condition.operator.isNot": "다음과 같지 않음",
243
+ "form.attribute.condition.value.true": "참",
244
+ "form.attribute.condition.value.false": "거짓",
245
+ "form.attribute.condition.apply": "조건 적용",
246
+ "form.attribute.condition.then": "그러면",
247
+ "form.attribute.condition.action": "동작",
248
+ "form.attribute.condition.action.show": "표시",
249
+ "form.attribute.condition.action.hide": "숨기기",
250
+ "form.attribute.condition.no-fields": "조건을 설정할 수 있는 불리언 또는 열거형 필드가 없습니다.",
251
+ "form.attribute.condition.enum-change-warning": "다음 필드에 이 필드에 의존하는 조건이 있습니다: {fieldNames}. 열거형 값 {values}을(를) 변경하거나 삭제하면 이 조건들이 깨집니다. 계속하시겠습니까?",
252
+ "form.attribute.condition.enum-change-warning-values": ". 열거형 값 ",
253
+ "form.attribute.condition.enum-change-warning-end": "을(를) 변경하거나 삭제하면 이 조건들이 깨집니다. 계속하시겠습니까?",
254
+ "form.attribute.condition.field-change-warning": "다음 필드에 이 필드에 의존하는 조건이 있습니다: {fieldNames}. 이름을 변경하면 이 조건들이 깨집니다. 계속하시겠습니까?",
255
+ "form.attribute.condition.field-change-warning-end": ". 이름을 변경하면 이 조건들이 깨집니다. 계속하시겠습니까?",
256
+ "form.button.submit": "제출",
257
+ "modalForm.header.categories": "카테고리",
258
+ "modalForm.header.back": "뒤로",
259
+ "modelPage.attribute.with": "함께",
260
+ "popUpWarning.discardAll.message": "모든 변경 사항을 취소하시겠습니까?",
261
+ "popUpWarning.bodyMessage.delete-condition": "이 조건을 삭제하시겠습니까?",
262
+ "popUpWarning.bodyMessage.delete-attribute-with-conditions": "다음 필드에 이 필드에 의존하는 조건이 있습니다: ",
263
+ "popUpWarning.bodyMessage.delete-attribute-with-conditions-end": ". 그래도 삭제하시겠습니까?",
264
+ "table.content.create-first-content-type.import-code": "컴퓨터에서 가져오기",
265
+ "chat.tooltips.upload-attachments": "첨부 파일 업로드",
266
+ "chat.messages.too-many-requests": "요청이 너무 많습니다. 잠시 후 다시 시도해주세요.",
267
+ "chat.messages.license-limit-reached": "라이선스 한도에 도달했습니다. 내일 다시 시도해주세요.",
268
+ "chat.messages.license-limit-exceeded": "AI 크레딧 한도를 초과했습니다.",
269
+ "chat.messages.too-long-error": "이 대화가 최대 길이에 도달했습니다. 새 대화를 시작해주세요",
270
+ "chat.code-upload.drop-zone-folder": "여기에 폴더를 놓거나",
271
+ "chat.attachments.menu.import-code": "코드 가져오기",
272
+ "chat.attachments.menu.attach-image": "이미지 첨부",
273
+ "chat.attachments.menu.import-figma": "Figma에서 가져오기",
274
+ "chat.feedback.title": "피드백 남기기",
275
+ "chat.feedback.subtitle": "이 메시지에 대한 추가 피드백을 제공해주세요. 해당하는 항목을 모두 선택하세요.",
276
+ "chat.feedback.comment.label": "어떻게 개선하면 좋을까요? (선택 사항)",
277
+ "chat.feedback.placeholder": "피드백을 입력하세요...",
278
+ "chat.feedback.submitted": "피드백을 보내주셔서 감사합니다!",
279
+ "chat.feedback.error": "피드백을 제출하는 중 오류가 발생했습니다",
280
+ "chat.feedback.reason.invalid_schema": "잘못된 스키마",
281
+ "chat.feedback.reason.bad_recommendation": "잘못된 추천",
282
+ "chat.feedback.reason.slow": "느림",
283
+ "chat.feedback.reason.instructions_ignored": "지시 사항 무시됨",
284
+ "chat.feedback.reason.being_lazy": "성의 없는 답변",
285
+ "chat.feedback.reason.other": "기타",
286
+ "chat.figma-upload.step1-title": "Figma URL 입력",
287
+ "chat.figma-upload.step2-title": "이미지 미리보기",
288
+ "chat.figma-upload.select-images": "가져올 프레임 선택",
289
+ "chat.figma-upload.no-images": "Figma 파일에서 프레임을 찾을 수 없습니다.",
290
+ "chat.figma-upload.import-button": "가져오기",
291
+ "form.button.finish": "완료",
292
+ "form.button.back": "뒤로"
230
293
  };
231
294
 
232
295
  export { configurations, ko as default, from };
@@ -1 +1 @@
1
- {"version":3,"file":"ko.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ko.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,46 +1,55 @@
1
1
  'use strict';
2
2
 
3
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
4
+ const isFieldVar = (value)=>isRecord(value) && typeof value.var === 'string';
5
+ const isAttributeConditionValue = (value)=>typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
6
+ const getVisibleConditionEntries = (condition)=>{
7
+ const visible = condition?.visible;
8
+ if (!isRecord(visible)) {
9
+ return [];
10
+ }
11
+ return Object.entries(visible).reduce((entries, [operator, rule])=>{
12
+ if (!Array.isArray(rule)) {
13
+ return entries;
14
+ }
15
+ const [fieldVar, value] = rule;
16
+ if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {
17
+ return entries;
18
+ }
19
+ entries.push({
20
+ operator,
21
+ fieldVar,
22
+ value
23
+ });
24
+ return entries;
25
+ }, []);
26
+ };
27
+ const getFirstVisibleConditionEntry = (condition)=>getVisibleConditionEntries(condition)[0] ?? null;
3
28
  const checkDependentRows = (contentTypes, fieldName)=>{
4
29
  const dependentRows = [];
5
30
  Object.entries(contentTypes).forEach(([contentTypeUid, contentType])=>{
6
- if (contentType.attributes) {
31
+ if (contentType.attributes !== undefined) {
7
32
  // Handle both array and object formats of attributes
8
33
  const attributes = Array.isArray(contentType.attributes) ? contentType.attributes.reduce((acc, attr, index)=>{
9
34
  acc[index.toString()] = attr;
10
35
  return acc;
11
36
  }, {}) : contentType.attributes;
12
37
  Object.entries(attributes).forEach(([attrName, attr])=>{
13
- if (attr.conditions?.visible) {
14
- Object.entries(attr.conditions.visible).forEach(([, conditions])=>{
15
- const [fieldVar] = conditions;
16
- // Check if this condition references our field
17
- if (fieldVar && fieldVar.var === fieldName) {
18
- dependentRows.push({
19
- contentTypeUid,
20
- contentType: contentType.info.displayName,
21
- attribute: attr.name || attrName
22
- });
23
- }
24
- });
25
- }
38
+ getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar })=>{
39
+ // Check if this condition references our field
40
+ if (fieldVar.var === fieldName) {
41
+ dependentRows.push({
42
+ contentTypeUid,
43
+ contentType: contentType.info.displayName,
44
+ attribute: attr.name || attrName
45
+ });
46
+ }
47
+ });
26
48
  });
27
49
  }
28
50
  });
29
51
  return dependentRows;
30
52
  };
31
- const formatCondition = (condition, availableFields, attributeName)=>{
32
- if (!condition?.visible) {
33
- return '';
34
- }
35
- const [[operator, conditions]] = Object.entries(condition.visible);
36
- const [fieldVar, value] = conditions;
37
- const dependsOnField = availableFields.find((field)=>field.name === fieldVar.var);
38
- const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;
39
- const operatorText = operator === '==' ? 'is' : 'is not';
40
- const valueText = String(value);
41
- const actionText = operator === '==' ? 'Show' : 'Hide';
42
- return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;
43
- };
44
53
  const getAvailableConditionFields = (attributes, currentFieldName)=>{
45
54
  return attributes.filter((attr)=>{
46
55
  // Only include boolean and enum fields
@@ -56,6 +65,7 @@ const getAvailableConditionFields = (attributes, currentFieldName)=>{
56
65
  };
57
66
 
58
67
  exports.checkDependentRows = checkDependentRows;
59
- exports.formatCondition = formatCondition;
60
68
  exports.getAvailableConditionFields = getAvailableConditionFields;
69
+ exports.getFirstVisibleConditionEntry = getFirstVisibleConditionEntry;
70
+ exports.getVisibleConditionEntries = getVisibleConditionEntries;
61
71
  //# sourceMappingURL=conditions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type { AnyAttribute } from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\nexport const checkDependentRows = (\n contentTypes: Record<string, any>,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]: [string, any]) => {\n if (contentType.attributes) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce((acc: Record<string, any>, attr: any, index: number) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]: [string, any]) => {\n if (attr.conditions?.visible) {\n Object.entries(attr.conditions.visible).forEach(([, conditions]) => {\n const [fieldVar] = conditions as [{ var: string }, any];\n // Check if this condition references our field\n if (fieldVar && fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n }\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: any,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n if (!condition?.visible) {\n return '';\n }\n\n const [[operator, conditions]] = Object.entries(condition.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["checkDependentRows","contentTypes","fieldName","dependentRows","Object","entries","forEach","contentTypeUid","contentType","attributes","Array","isArray","reduce","acc","attr","index","toString","attrName","conditions","visible","fieldVar","var","push","info","displayName","attribute","name","formatCondition","condition","availableFields","attributeName","operator","value","dependsOnField","find","field","dependsOnFieldName","operatorText","valueText","String","actionText","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"conditions.js","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type {\n AnyAttribute,\n AttributeConditionValue,\n AttributeConditions,\n ContentTypes,\n} from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\ntype VisibleConditionEntry = {\n operator: string;\n fieldVar: { var: string };\n value: AttributeConditionValue;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFieldVar = (value: unknown): value is { var: string } =>\n isRecord(value) && typeof value.var === 'string';\n\nconst isAttributeConditionValue = (value: unknown): value is AttributeConditionValue =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n\nexport const getVisibleConditionEntries = (\n condition?: AttributeConditions | null\n): VisibleConditionEntry[] => {\n const visible = condition?.visible;\n\n if (!isRecord(visible)) {\n return [];\n }\n\n return Object.entries(visible).reduce<VisibleConditionEntry[]>((entries, [operator, rule]) => {\n if (!Array.isArray(rule)) {\n return entries;\n }\n\n const [fieldVar, value] = rule;\n\n if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {\n return entries;\n }\n\n entries.push({ operator, fieldVar, value });\n\n return entries;\n }, []);\n};\n\nexport const getFirstVisibleConditionEntry = (condition?: AttributeConditions | null) =>\n getVisibleConditionEntries(condition)[0] ?? null;\n\nexport const checkDependentRows = (\n contentTypes: ContentTypes,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]) => {\n if (contentType.attributes !== undefined) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce<Record<string, AnyAttribute>>((acc, attr, index) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]) => {\n getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar }) => {\n // Check if this condition references our field\n if (fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: AttributeConditions,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n const conditionEntry = getFirstVisibleConditionEntry(condition);\n\n if (conditionEntry === null) {\n return '';\n }\n\n const { operator, fieldVar, value } = conditionEntry;\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["isRecord","value","Array","isArray","isFieldVar","var","isAttributeConditionValue","getVisibleConditionEntries","condition","visible","Object","entries","reduce","operator","rule","fieldVar","push","getFirstVisibleConditionEntry","checkDependentRows","contentTypes","fieldName","dependentRows","forEach","contentTypeUid","contentType","attributes","undefined","acc","attr","index","toString","attrName","conditions","info","displayName","attribute","name","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum"],"mappings":"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"}
@@ -1,44 +1,53 @@
1
+ const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
2
+ const isFieldVar = (value)=>isRecord(value) && typeof value.var === 'string';
3
+ const isAttributeConditionValue = (value)=>typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
4
+ const getVisibleConditionEntries = (condition)=>{
5
+ const visible = condition?.visible;
6
+ if (!isRecord(visible)) {
7
+ return [];
8
+ }
9
+ return Object.entries(visible).reduce((entries, [operator, rule])=>{
10
+ if (!Array.isArray(rule)) {
11
+ return entries;
12
+ }
13
+ const [fieldVar, value] = rule;
14
+ if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {
15
+ return entries;
16
+ }
17
+ entries.push({
18
+ operator,
19
+ fieldVar,
20
+ value
21
+ });
22
+ return entries;
23
+ }, []);
24
+ };
25
+ const getFirstVisibleConditionEntry = (condition)=>getVisibleConditionEntries(condition)[0] ?? null;
1
26
  const checkDependentRows = (contentTypes, fieldName)=>{
2
27
  const dependentRows = [];
3
28
  Object.entries(contentTypes).forEach(([contentTypeUid, contentType])=>{
4
- if (contentType.attributes) {
29
+ if (contentType.attributes !== undefined) {
5
30
  // Handle both array and object formats of attributes
6
31
  const attributes = Array.isArray(contentType.attributes) ? contentType.attributes.reduce((acc, attr, index)=>{
7
32
  acc[index.toString()] = attr;
8
33
  return acc;
9
34
  }, {}) : contentType.attributes;
10
35
  Object.entries(attributes).forEach(([attrName, attr])=>{
11
- if (attr.conditions?.visible) {
12
- Object.entries(attr.conditions.visible).forEach(([, conditions])=>{
13
- const [fieldVar] = conditions;
14
- // Check if this condition references our field
15
- if (fieldVar && fieldVar.var === fieldName) {
16
- dependentRows.push({
17
- contentTypeUid,
18
- contentType: contentType.info.displayName,
19
- attribute: attr.name || attrName
20
- });
21
- }
22
- });
23
- }
36
+ getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar })=>{
37
+ // Check if this condition references our field
38
+ if (fieldVar.var === fieldName) {
39
+ dependentRows.push({
40
+ contentTypeUid,
41
+ contentType: contentType.info.displayName,
42
+ attribute: attr.name || attrName
43
+ });
44
+ }
45
+ });
24
46
  });
25
47
  }
26
48
  });
27
49
  return dependentRows;
28
50
  };
29
- const formatCondition = (condition, availableFields, attributeName)=>{
30
- if (!condition?.visible) {
31
- return '';
32
- }
33
- const [[operator, conditions]] = Object.entries(condition.visible);
34
- const [fieldVar, value] = conditions;
35
- const dependsOnField = availableFields.find((field)=>field.name === fieldVar.var);
36
- const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;
37
- const operatorText = operator === '==' ? 'is' : 'is not';
38
- const valueText = String(value);
39
- const actionText = operator === '==' ? 'Show' : 'Hide';
40
- return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;
41
- };
42
51
  const getAvailableConditionFields = (attributes, currentFieldName)=>{
43
52
  return attributes.filter((attr)=>{
44
53
  // Only include boolean and enum fields
@@ -53,5 +62,5 @@ const getAvailableConditionFields = (attributes, currentFieldName)=>{
53
62
  }));
54
63
  };
55
64
 
56
- export { checkDependentRows, formatCondition, getAvailableConditionFields };
65
+ export { checkDependentRows, getAvailableConditionFields, getFirstVisibleConditionEntry, getVisibleConditionEntries };
57
66
  //# sourceMappingURL=conditions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.mjs","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type { AnyAttribute } from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\nexport const checkDependentRows = (\n contentTypes: Record<string, any>,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]: [string, any]) => {\n if (contentType.attributes) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce((acc: Record<string, any>, attr: any, index: number) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]: [string, any]) => {\n if (attr.conditions?.visible) {\n Object.entries(attr.conditions.visible).forEach(([, conditions]) => {\n const [fieldVar] = conditions as [{ var: string }, any];\n // Check if this condition references our field\n if (fieldVar && fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n }\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: any,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n if (!condition?.visible) {\n return '';\n }\n\n const [[operator, conditions]] = Object.entries(condition.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["checkDependentRows","contentTypes","fieldName","dependentRows","Object","entries","forEach","contentTypeUid","contentType","attributes","Array","isArray","reduce","acc","attr","index","toString","attrName","conditions","visible","fieldVar","var","push","info","displayName","attribute","name","formatCondition","condition","availableFields","attributeName","operator","value","dependsOnField","find","field","dependsOnFieldName","operatorText","valueText","String","actionText","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"conditions.mjs","sources":["../../../admin/src/utils/conditions.ts"],"sourcesContent":["import type {\n AnyAttribute,\n AttributeConditionValue,\n AttributeConditions,\n ContentTypes,\n} from '../types';\n\ninterface DependentRow {\n contentTypeUid: string;\n contentType: string;\n attribute: string;\n}\n\ntype VisibleConditionEntry = {\n operator: string;\n fieldVar: { var: string };\n value: AttributeConditionValue;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFieldVar = (value: unknown): value is { var: string } =>\n isRecord(value) && typeof value.var === 'string';\n\nconst isAttributeConditionValue = (value: unknown): value is AttributeConditionValue =>\n typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n\nexport const getVisibleConditionEntries = (\n condition?: AttributeConditions | null\n): VisibleConditionEntry[] => {\n const visible = condition?.visible;\n\n if (!isRecord(visible)) {\n return [];\n }\n\n return Object.entries(visible).reduce<VisibleConditionEntry[]>((entries, [operator, rule]) => {\n if (!Array.isArray(rule)) {\n return entries;\n }\n\n const [fieldVar, value] = rule;\n\n if (!isFieldVar(fieldVar) || !isAttributeConditionValue(value)) {\n return entries;\n }\n\n entries.push({ operator, fieldVar, value });\n\n return entries;\n }, []);\n};\n\nexport const getFirstVisibleConditionEntry = (condition?: AttributeConditions | null) =>\n getVisibleConditionEntries(condition)[0] ?? null;\n\nexport const checkDependentRows = (\n contentTypes: ContentTypes,\n fieldName: string\n): DependentRow[] => {\n const dependentRows: DependentRow[] = [];\n\n Object.entries(contentTypes).forEach(([contentTypeUid, contentType]) => {\n if (contentType.attributes !== undefined) {\n // Handle both array and object formats of attributes\n const attributes = Array.isArray(contentType.attributes)\n ? contentType.attributes.reduce<Record<string, AnyAttribute>>((acc, attr, index) => {\n acc[index.toString()] = attr;\n return acc;\n }, {})\n : contentType.attributes;\n\n Object.entries(attributes).forEach(([attrName, attr]) => {\n getVisibleConditionEntries(attr.conditions).forEach(({ fieldVar }) => {\n // Check if this condition references our field\n if (fieldVar.var === fieldName) {\n dependentRows.push({\n contentTypeUid,\n contentType: contentType.info.displayName,\n attribute: attr.name || attrName,\n });\n }\n });\n });\n }\n });\n return dependentRows;\n};\n\nexport const formatCondition = (\n condition: AttributeConditions,\n availableFields: Array<{ name: string; type: string }>,\n attributeName: string\n): string => {\n const conditionEntry = getFirstVisibleConditionEntry(condition);\n\n if (conditionEntry === null) {\n return '';\n }\n\n const { operator, fieldVar, value } = conditionEntry;\n\n const dependsOnField = availableFields.find((field) => field.name === fieldVar.var);\n const dependsOnFieldName = dependsOnField ? dependsOnField.name : fieldVar.var;\n\n const operatorText = operator === '==' ? 'is' : 'is not';\n const valueText = String(value);\n const actionText = operator === '==' ? 'Show' : 'Hide';\n\n return `If ${dependsOnFieldName} ${operatorText} ${valueText}, then ${actionText} ${attributeName}`;\n};\n\nexport const getAvailableConditionFields = (\n attributes: AnyAttribute[],\n currentFieldName: string\n) => {\n return attributes\n .filter((attr) => {\n // Only include boolean and enum fields\n const isCorrectType = attr.type === 'boolean' || attr.type === 'enumeration';\n // Exclude the current field to prevent self-referential conditions\n const isNotCurrentField = attr.name !== currentFieldName;\n return isCorrectType && isNotCurrentField;\n })\n .map((attr) => ({\n name: attr.name,\n type: attr.type,\n enum: attr.type === 'enumeration' ? attr.enum : undefined,\n }));\n};\n"],"names":["isRecord","value","Array","isArray","isFieldVar","var","isAttributeConditionValue","getVisibleConditionEntries","condition","visible","Object","entries","reduce","operator","rule","fieldVar","push","getFirstVisibleConditionEntry","checkDependentRows","contentTypes","fieldName","dependentRows","forEach","contentTypeUid","contentType","attributes","undefined","acc","attr","index","toString","attrName","conditions","info","displayName","attribute","name","getAvailableConditionFields","currentFieldName","filter","isCorrectType","type","isNotCurrentField","map","enum"],"mappings":"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"}
@@ -32,7 +32,7 @@ const formsAPI = {
32
32
  components: {
33
33
  inputs: {},
34
34
  add ({ id, component }) {
35
- if (!this.inputs[id]) {
35
+ if (this.inputs[id] === undefined) {
36
36
  this.inputs[id] = component;
37
37
  }
38
38
  }
@@ -61,7 +61,7 @@ const formsAPI = {
61
61
  },
62
62
  extendContentType ({ validator, form: { advanced, base } }) {
63
63
  const { contentType } = this.types;
64
- if (validator) {
64
+ if (validator !== undefined) {
65
65
  contentType.validators.push(validator);
66
66
  }
67
67
  contentType.form.advanced.push(advanced);
@@ -79,7 +79,7 @@ const formsAPI = {
79
79
  }
80
80
  };
81
81
  }
82
- if (validator) {
82
+ if (validator !== undefined) {
83
83
  formType[field].validators.push(validator);
84
84
  }
85
85
  formType[field].form.advanced.push(advanced);
@@ -87,11 +87,12 @@ const formsAPI = {
87
87
  });
88
88
  },
89
89
  getAdvancedForm (target, props = null) {
90
- const sectionsToAdd = get__default.default(this.types, [
90
+ const advancedForms = get__default.default(this.types, [
91
91
  ...target,
92
92
  'form',
93
93
  'advanced'
94
- ], []).reduce((acc, current)=>{
94
+ ], []);
95
+ const sectionsToAdd = advancedForms.reduce((acc, current)=>{
95
96
  const sections = current(props);
96
97
  return [
97
98
  ...acc,
@@ -102,7 +103,9 @@ const formsAPI = {
102
103
  },
103
104
  makeCustomFieldValidator (attributeShape, validator, ...validatorArgs) {
104
105
  // When no validator, return the attribute shape
105
- if (!validator) return attributeShape;
106
+ if (validator === undefined) {
107
+ return attributeShape;
108
+ }
106
109
  // Otherwise extend the shape with the provided validator
107
110
  return attributeShape.shape({
108
111
  options: yup__namespace.object().shape(validator(validatorArgs))
@@ -1 +1 @@
1
- {"version":3,"file":"formAPI.js","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\nexport interface FormAPI {\n components: {\n inputs: Record<string, any>;\n add: ({ id, component }: { id: string; component: any }) => void;\n };\n types: {\n attribute: {\n [key: string]: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentType: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n component: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentTypeSchemaMutations: any[];\n addContentTypeSchemaMutation: (cb: any) => void;\n extendContentType: (data: any) => void;\n extendFields: (fields: any[], data: any) => void;\n getAdvancedForm: (target: any, props?: any) => any[];\n makeCustomFieldValidator: (attributeShape: any, validator: any, ...validatorArgs: any) => any;\n makeValidator: (target: any, initShape: any, ...args: any) => any;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => any;\n}\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","sectionsToAdd","get","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
1
+ {"version":3,"file":"formAPI.js","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\ntype YupObjectShape = Parameters<ReturnType<typeof yup.object>['shape']>[0];\ntype YupObjectSchema = ReturnType<typeof yup.object>;\ntype FormSection = unknown;\ntype FormExtensionHandler = (props?: unknown) => FormSection[];\ntype FormValidator = (args: unknown[]) => YupObjectShape;\ntype ContentTypeSchemaMutation = (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype ExtensionForm = {\n advanced: FormExtensionHandler[];\n base: FormExtensionHandler[];\n};\n\ntype ExtensionDefinition = {\n validators: FormValidator[];\n form: ExtensionForm;\n};\n\ntype ExtensionInput = {\n validator?: FormValidator;\n form: {\n advanced: FormExtensionHandler;\n base: FormExtensionHandler;\n };\n};\n\nexport type FormAPI = {\n components: {\n inputs: Record<string, unknown>;\n add: ({ id, component }: { id: string; component: unknown }) => void;\n };\n types: {\n attribute: {\n [key: string]: ExtensionDefinition;\n };\n contentType: ExtensionDefinition;\n component: ExtensionDefinition;\n };\n contentTypeSchemaMutations: ContentTypeSchemaMutation[];\n addContentTypeSchemaMutation: (cb: ContentTypeSchemaMutation) => void;\n extendContentType: (data: ExtensionInput) => void;\n extendFields: (fields: string[], data: ExtensionInput) => void;\n getAdvancedForm: (target: string[], props?: unknown) => FormSection[];\n makeCustomFieldValidator: (\n attributeShape: YupObjectSchema,\n validator: FormValidator | undefined,\n ...validatorArgs: unknown[]\n ) => YupObjectSchema;\n makeValidator: (\n target: string[],\n initShape: YupObjectSchema,\n ...args: unknown[]\n ) => YupObjectSchema;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => Record<string, unknown>;\n};\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (this.inputs[id] === undefined) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator !== undefined) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator !== undefined) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const advancedForms = get(\n this.types,\n [...target, 'form', 'advanced'],\n []\n ) as FormExtensionHandler[];\n const sectionsToAdd = advancedForms.reduce<FormSection[]>((acc, current) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n }, []);\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (validator === undefined) {\n return attributeShape;\n }\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []) as FormValidator[];\n\n const pluginOptionsShape = validators.reduce<YupObjectShape>((acc, current) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","undefined","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","advancedForms","get","sectionsToAdd","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
@@ -6,7 +6,7 @@ const formsAPI = {
6
6
  components: {
7
7
  inputs: {},
8
8
  add ({ id, component }) {
9
- if (!this.inputs[id]) {
9
+ if (this.inputs[id] === undefined) {
10
10
  this.inputs[id] = component;
11
11
  }
12
12
  }
@@ -35,7 +35,7 @@ const formsAPI = {
35
35
  },
36
36
  extendContentType ({ validator, form: { advanced, base } }) {
37
37
  const { contentType } = this.types;
38
- if (validator) {
38
+ if (validator !== undefined) {
39
39
  contentType.validators.push(validator);
40
40
  }
41
41
  contentType.form.advanced.push(advanced);
@@ -53,7 +53,7 @@ const formsAPI = {
53
53
  }
54
54
  };
55
55
  }
56
- if (validator) {
56
+ if (validator !== undefined) {
57
57
  formType[field].validators.push(validator);
58
58
  }
59
59
  formType[field].form.advanced.push(advanced);
@@ -61,11 +61,12 @@ const formsAPI = {
61
61
  });
62
62
  },
63
63
  getAdvancedForm (target, props = null) {
64
- const sectionsToAdd = get(this.types, [
64
+ const advancedForms = get(this.types, [
65
65
  ...target,
66
66
  'form',
67
67
  'advanced'
68
- ], []).reduce((acc, current)=>{
68
+ ], []);
69
+ const sectionsToAdd = advancedForms.reduce((acc, current)=>{
69
70
  const sections = current(props);
70
71
  return [
71
72
  ...acc,
@@ -76,7 +77,9 @@ const formsAPI = {
76
77
  },
77
78
  makeCustomFieldValidator (attributeShape, validator, ...validatorArgs) {
78
79
  // When no validator, return the attribute shape
79
- if (!validator) return attributeShape;
80
+ if (validator === undefined) {
81
+ return attributeShape;
82
+ }
80
83
  // Otherwise extend the shape with the provided validator
81
84
  return attributeShape.shape({
82
85
  options: yup.object().shape(validator(validatorArgs))
@@ -1 +1 @@
1
- {"version":3,"file":"formAPI.mjs","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\nexport interface FormAPI {\n components: {\n inputs: Record<string, any>;\n add: ({ id, component }: { id: string; component: any }) => void;\n };\n types: {\n attribute: {\n [key: string]: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentType: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n component: {\n validators: any[];\n form: {\n advanced: any[];\n base: any[];\n };\n };\n };\n contentTypeSchemaMutations: any[];\n addContentTypeSchemaMutation: (cb: any) => void;\n extendContentType: (data: any) => void;\n extendFields: (fields: any[], data: any) => void;\n getAdvancedForm: (target: any, props?: any) => any[];\n makeCustomFieldValidator: (attributeShape: any, validator: any, ...validatorArgs: any) => any;\n makeValidator: (target: any, initShape: any, ...args: any) => any;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => any;\n}\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","sectionsToAdd","get","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
1
+ {"version":3,"file":"formAPI.mjs","sources":["../../../admin/src/utils/formAPI.ts"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n\ntype YupObjectShape = Parameters<ReturnType<typeof yup.object>['shape']>[0];\ntype YupObjectSchema = ReturnType<typeof yup.object>;\ntype FormSection = unknown;\ntype FormExtensionHandler = (props?: unknown) => FormSection[];\ntype FormValidator = (args: unknown[]) => YupObjectShape;\ntype ContentTypeSchemaMutation = (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n) => Record<string, unknown>;\n\ntype ExtensionForm = {\n advanced: FormExtensionHandler[];\n base: FormExtensionHandler[];\n};\n\ntype ExtensionDefinition = {\n validators: FormValidator[];\n form: ExtensionForm;\n};\n\ntype ExtensionInput = {\n validator?: FormValidator;\n form: {\n advanced: FormExtensionHandler;\n base: FormExtensionHandler;\n };\n};\n\nexport type FormAPI = {\n components: {\n inputs: Record<string, unknown>;\n add: ({ id, component }: { id: string; component: unknown }) => void;\n };\n types: {\n attribute: {\n [key: string]: ExtensionDefinition;\n };\n contentType: ExtensionDefinition;\n component: ExtensionDefinition;\n };\n contentTypeSchemaMutations: ContentTypeSchemaMutation[];\n addContentTypeSchemaMutation: (cb: ContentTypeSchemaMutation) => void;\n extendContentType: (data: ExtensionInput) => void;\n extendFields: (fields: string[], data: ExtensionInput) => void;\n getAdvancedForm: (target: string[], props?: unknown) => FormSection[];\n makeCustomFieldValidator: (\n attributeShape: YupObjectSchema,\n validator: FormValidator | undefined,\n ...validatorArgs: unknown[]\n ) => YupObjectSchema;\n makeValidator: (\n target: string[],\n initShape: YupObjectSchema,\n ...args: unknown[]\n ) => YupObjectSchema;\n mutateContentTypeSchema: (\n data: Record<string, unknown>,\n initialData: Record<string, unknown>\n ) => Record<string, unknown>;\n};\n\nexport const formsAPI: FormAPI = {\n components: {\n inputs: {},\n add({ id, component }) {\n if (this.inputs[id] === undefined) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }) {\n const { contentType } = this.types;\n\n if (validator !== undefined) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields, { validator, form: { advanced, base } }) {\n const formType = this.types.attribute;\n\n fields.forEach((field) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator !== undefined) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target, props = null) {\n const advancedForms = get(\n this.types,\n [...target, 'form', 'advanced'],\n []\n ) as FormExtensionHandler[];\n const sectionsToAdd = advancedForms.reduce<FormSection[]>((acc, current) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n }, []);\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape, validator, ...validatorArgs) {\n // When no validator, return the attribute shape\n if (validator === undefined) {\n return attributeShape;\n }\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target, initShape, ...args) {\n const validators = get(this.types, [...target, 'validators'], []) as FormValidator[];\n\n const pluginOptionsShape = validators.reduce<YupObjectShape>((acc, current) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData = cloneDeep(data);\n\n const refData = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n"],"names":["formsAPI","components","inputs","add","id","component","undefined","types","attribute","contentType","validators","form","advanced","base","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","push","extendContentType","validator","extendFields","fields","formType","forEach","field","getAdvancedForm","target","props","advancedForms","get","sectionsToAdd","reduce","acc","current","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","options","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","pluginOptions","mutateContentTypeSchema","data","initialData","enhancedData","cloneDeep","refData"],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  *
5
5
  * Retrieves the relation type
6
6
  */ const getRelationType = (relation, targetAttribute)=>{
7
+ if (relation === undefined) {
8
+ return undefined;
9
+ }
7
10
  const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;
8
11
  if (relation === 'oneToOne' && hasNotTargetAttribute) {
9
12
  return 'oneWay';
@@ -1 +1 @@
1
- {"version":3,"file":"getRelationType.js","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","hasNotTargetAttribute","undefined"],"mappings":";;AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;IAEA,MAAMC,qBAAAA,GAAwBD,eAAAA,KAAoBE,SAAAA,IAAaF,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcE,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIF,QAAAA,KAAa,eAAeE,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOF,QAAAA;AACT;;;;"}
1
+ {"version":3,"file":"getRelationType.js","sources":["../../../admin/src/utils/getRelationType.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation?: Schema.Attribute.RelationKind.Any,\n targetAttribute?: string | null\n) => {\n if (relation === undefined) {\n return undefined;\n }\n\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n"],"names":["getRelationType","relation","targetAttribute","undefined","hasNotTargetAttribute"],"mappings":";;AAEA;;;AAGC,IACM,MAAMA,eAAAA,GAAkB,CAC7BC,QAAAA,EACAC,eAAAA,GAAAA;AAEA,IAAA,IAAID,aAAaE,SAAAA,EAAW;QAC1B,OAAOA,SAAAA;AACT,IAAA;IAEA,MAAMC,qBAAAA,GAAwBF,eAAAA,KAAoBC,SAAAA,IAAaD,eAAAA,KAAoB,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcG,qBAAAA,EAAuB;QACpD,OAAO,QAAA;AACT,IAAA;IAEA,IAAIH,QAAAA,KAAa,eAAeG,qBAAAA,EAAuB;QACrD,OAAO,SAAA;AACT,IAAA;IAEA,OAAOH,QAAAA;AACT;;;;"}
@@ -2,6 +2,9 @@
2
2
  *
3
3
  * Retrieves the relation type
4
4
  */ const getRelationType = (relation, targetAttribute)=>{
5
+ if (relation === undefined) {
6
+ return undefined;
7
+ }
5
8
  const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;
6
9
  if (relation === 'oneToOne' && hasNotTargetAttribute) {
7
10
  return 'oneWay';