@strapi/content-type-builder 5.49.0 → 5.50.1

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 (298) 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/component/createComponentSchema.js +1 -1
  96. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  97. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  98. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  99. package/dist/admin/components/FormModal/forms/forms.js +4 -6
  100. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  101. package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
  102. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  103. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  104. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/reducer.js +9 -6
  106. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  107. package/dist/admin/components/FormModal/reducer.mjs +9 -6
  108. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
  110. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  111. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
  112. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
  114. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  115. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
  116. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  117. package/dist/admin/components/FormModal/utils/relations.js +2 -2
  118. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  119. package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
  120. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  121. package/dist/admin/components/FormModalHeader.js.map +1 -1
  122. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  123. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  124. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  125. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
  126. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  127. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
  128. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  129. package/dist/admin/components/GenericInputs.js +24 -12
  130. package/dist/admin/components/GenericInputs.js.map +1 -1
  131. package/dist/admin/components/GenericInputs.mjs +24 -12
  132. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  133. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  134. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  135. package/dist/admin/components/PluralName.js.map +1 -1
  136. package/dist/admin/components/PluralName.mjs.map +1 -1
  137. package/dist/admin/components/Relation/Relation.js +3 -3
  138. package/dist/admin/components/Relation/Relation.js.map +1 -1
  139. package/dist/admin/components/Relation/Relation.mjs +3 -3
  140. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  141. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  142. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  143. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  144. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  145. package/dist/admin/components/SelectCategory.js +6 -0
  146. package/dist/admin/components/SelectCategory.js.map +1 -1
  147. package/dist/admin/components/SelectCategory.mjs +6 -0
  148. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  149. package/dist/admin/components/SelectComponent.js +1 -1
  150. package/dist/admin/components/SelectComponent.js.map +1 -1
  151. package/dist/admin/components/SelectComponent.mjs +1 -1
  152. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  153. package/dist/admin/components/SingularName.js.map +1 -1
  154. package/dist/admin/components/SingularName.mjs.map +1 -1
  155. package/dist/admin/components/TabForm.js +50 -51
  156. package/dist/admin/components/TabForm.js.map +1 -1
  157. package/dist/admin/components/TabForm.mjs +51 -52
  158. package/dist/admin/components/TabForm.mjs.map +1 -1
  159. package/dist/admin/src/components/AIChat/components/AnimatedBox.d.ts +4 -5
  160. package/dist/admin/src/components/AIChat/components/Attachments/AttachmentPreview.d.ts +1 -1
  161. package/dist/admin/src/components/AIChat/components/Dropzone.d.ts +0 -1
  162. package/dist/admin/src/components/AIChat/components/FloatingPanel.d.ts +0 -1
  163. package/dist/admin/src/components/AIChat/components/Input.d.ts +2 -3
  164. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
  165. package/dist/admin/src/components/AIChat/components/ResizableTextArea.d.ts +0 -1
  166. package/dist/admin/src/components/AIChat/components/SimpleMenu.d.ts +9 -9
  167. package/dist/admin/src/components/AIChat/components/icons/FigmaIcon.d.ts +0 -1
  168. package/dist/admin/src/components/AIChat/components/icons/StopIcon.d.ts +0 -1
  169. package/dist/admin/src/components/AIChat/hooks/useAIFetch.d.ts +5 -5
  170. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
  171. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
  172. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
  173. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
  174. package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
  175. package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +2 -3
  176. package/dist/admin/src/components/AttributeRow.d.ts +7 -8
  177. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
  178. package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
  179. package/dist/admin/src/components/CTBSession/sessionContext.d.ts +0 -1
  180. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  181. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
  182. package/dist/admin/src/components/ComponentRow.d.ts +6 -7
  183. package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +0 -1
  184. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
  185. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
  186. package/dist/admin/src/components/CustomRadioGroup/Styles.d.ts +3 -4
  187. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -12
  188. package/dist/admin/src/components/DataManager/reducer.d.ts +16 -12
  189. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +64 -64
  190. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
  191. package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
  192. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
  193. package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
  194. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
  195. package/dist/admin/src/components/FormModal/attributes/form.d.ts +3 -3
  196. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +4 -2
  197. package/dist/admin/src/components/FormModal/forms/forms.d.ts +61 -28
  198. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
  199. package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
  200. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
  201. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
  202. package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
  203. package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
  204. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
  205. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -2
  206. package/dist/admin/src/components/GenericInputs.d.ts +12 -7
  207. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
  208. package/dist/admin/src/components/List.d.ts +2 -3
  209. package/dist/admin/src/components/PluralName.d.ts +6 -14
  210. package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
  211. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
  212. package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +6 -7
  213. package/dist/admin/src/components/SelectCategory.d.ts +3 -12
  214. package/dist/admin/src/components/SelectComponent.d.ts +8 -7
  215. package/dist/admin/src/components/SingularName.d.ts +5 -8
  216. package/dist/admin/src/components/TabForm.d.ts +38 -7
  217. package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +0 -1
  218. package/dist/admin/src/types.d.ts +20 -12
  219. package/dist/admin/src/utils/conditions.d.ts +13 -4
  220. package/dist/admin/src/utils/formAPI.d.ts +38 -33
  221. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  222. package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
  223. package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
  224. package/dist/admin/translations/en.json.js +1 -0
  225. package/dist/admin/translations/en.json.js.map +1 -1
  226. package/dist/admin/translations/en.json.mjs +1 -0
  227. package/dist/admin/translations/en.json.mjs.map +1 -1
  228. package/dist/admin/translations/ja.json.js +109 -50
  229. package/dist/admin/translations/ja.json.js.map +1 -1
  230. package/dist/admin/translations/ja.json.mjs +109 -50
  231. package/dist/admin/translations/ja.json.mjs.map +1 -1
  232. package/dist/admin/utils/conditions.js +38 -28
  233. package/dist/admin/utils/conditions.js.map +1 -1
  234. package/dist/admin/utils/conditions.mjs +37 -28
  235. package/dist/admin/utils/conditions.mjs.map +1 -1
  236. package/dist/admin/utils/formAPI.js +9 -6
  237. package/dist/admin/utils/formAPI.js.map +1 -1
  238. package/dist/admin/utils/formAPI.mjs +9 -6
  239. package/dist/admin/utils/formAPI.mjs.map +1 -1
  240. package/dist/admin/utils/getRelationType.js +3 -0
  241. package/dist/admin/utils/getRelationType.js.map +1 -1
  242. package/dist/admin/utils/getRelationType.mjs +3 -0
  243. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  244. package/dist/admin/utils/getYupInnerErrors.js +6 -4
  245. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  246. package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
  247. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  248. package/dist/admin/utils/parseNumberInputValue.js +15 -0
  249. package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
  250. package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
  251. package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
  252. package/dist/server/controllers/validation/common.js +1 -1
  253. package/dist/server/controllers/validation/common.js.map +1 -1
  254. package/dist/server/controllers/validation/common.mjs +1 -1
  255. package/dist/server/controllers/validation/common.mjs.map +1 -1
  256. package/dist/server/controllers/validation/relations.js +1 -1
  257. package/dist/server/controllers/validation/relations.js.map +1 -1
  258. package/dist/server/controllers/validation/relations.mjs +1 -1
  259. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  260. package/dist/server/controllers/validation/types.js +4 -3
  261. package/dist/server/controllers/validation/types.js.map +1 -1
  262. package/dist/server/controllers/validation/types.mjs +4 -3
  263. package/dist/server/controllers/validation/types.mjs.map +1 -1
  264. package/dist/server/src/bootstrap.d.ts.map +1 -1
  265. package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
  266. package/dist/server/src/controllers/validation/component-category.d.ts +1 -1
  267. package/dist/server/src/controllers/validation/component.d.ts +1 -1
  268. package/dist/server/src/controllers/validation/component.d.ts.map +1 -1
  269. package/dist/server/src/controllers/validation/content-type.d.ts +1 -1
  270. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  271. package/dist/server/src/controllers/validation/data-transform.d.ts.map +1 -1
  272. package/dist/server/src/controllers/validation/model-schema.d.ts +1 -1
  273. package/dist/server/src/controllers/validation/model-schema.d.ts.map +1 -1
  274. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
  275. package/dist/server/src/controllers/validation/schema.d.ts +1 -1
  276. package/dist/server/src/controllers/validation/types.d.ts.map +1 -1
  277. package/dist/server/src/middlewares/is-development-mode.d.ts.map +1 -1
  278. package/dist/server/src/register.d.ts.map +1 -1
  279. package/dist/server/src/services/builder.d.ts.map +1 -1
  280. package/dist/server/src/services/component-categories.d.ts.map +1 -1
  281. package/dist/server/src/services/components.d.ts.map +1 -1
  282. package/dist/server/src/services/content-types.d.ts +1 -1
  283. package/dist/server/src/services/content-types.d.ts.map +1 -1
  284. package/dist/server/src/services/schema-builder/component-builder.d.ts +12 -12
  285. package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
  286. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +14 -14
  287. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  288. package/dist/server/src/services/schema-builder/index.d.ts +27 -27
  289. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
  290. package/dist/server/src/services/schema-builder/schema-handler.d.ts +12 -12
  291. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
  292. package/dist/server/src/services/schema.d.ts +66 -66
  293. package/dist/server/src/services/schema.d.ts.map +1 -1
  294. package/dist/server/src/utils/attributes.d.ts +2 -2
  295. package/dist/server/src/utils/attributes.d.ts.map +1 -1
  296. package/dist/server/src/utils/helpers.d.ts.map +1 -1
  297. package/dist/server/src/utils/typeguards.d.ts.map +1 -1
  298. package/package.json +13 -9
@@ -1,20 +1,19 @@
1
- /// <reference types="react" />
2
1
  import { BoxComponent, FlexComponent } from '@strapi/design-system';
3
2
  declare const Wrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("@strapi/design-system").TransientBoxProps & {
4
- children?: import("react").ReactNode;
3
+ children?: React.ReactNode;
5
4
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
6
5
  ref?: any;
7
6
  }, "ref"> & {
8
7
  ref?: any;
9
8
  }, never> & Partial<Pick<Omit<import("@strapi/design-system").TransientBoxProps & {
10
- children?: import("react").ReactNode;
9
+ children?: React.ReactNode;
11
10
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
12
11
  ref?: any;
13
12
  }, "ref"> & {
14
13
  ref?: any;
15
14
  }, never>>> & string & Omit<BoxComponent, keyof import("react").Component<any, {}, any>>;
16
15
  declare const IconWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<Omit<import("@strapi/design-system").TransientBoxProps & {
17
- children?: import("react").ReactNode;
16
+ children?: React.ReactNode;
18
17
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
19
18
  ref?: any;
20
19
  }, "ref"> & {
@@ -22,7 +21,7 @@ declare const IconWrapper: import("styled-components/dist/types").IStyledCompone
22
21
  }, "$isSelected"> & {
23
22
  $isSelected: boolean;
24
23
  }, never> & Partial<Pick<import("styled-components").FastOmit<Omit<import("@strapi/design-system").TransientBoxProps & {
25
- children?: import("react").ReactNode;
24
+ children?: React.ReactNode;
26
25
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
27
26
  ref?: any;
28
27
  }, "ref"> & {
@@ -31,8 +30,8 @@ declare const IconWrapper: import("styled-components/dist/types").IStyledCompone
31
30
  $isSelected: boolean;
32
31
  }, never>>> & string & Omit<BoxComponent<"button">, keyof import("react").Component<any, {}, any>>;
33
32
  declare const InfosWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").FlexProps<"div">, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
34
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
33
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
35
34
  }, never> & Partial<Pick<Omit<Omit<import("@strapi/design-system").FlexProps<"div">, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
36
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
35
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
37
36
  }, never>>> & string & Omit<FlexComponent, keyof import("react").Component<any, {}, any>>;
38
37
  export { IconWrapper, InfosWrapper, Wrapper };
@@ -1,18 +1,9 @@
1
+ import type { FormChangeHandler, IntlLabel } from '../types';
1
2
  interface SelectCategoryProps {
2
3
  error?: string | null;
3
- intlLabel: {
4
- id: string;
5
- defaultMessage: string;
6
- values?: Record<string, any>;
7
- };
4
+ intlLabel: IntlLabel;
8
5
  name: string;
9
- onChange: (value: {
10
- target: {
11
- name: string;
12
- value: any;
13
- type: string;
14
- };
15
- }) => void;
6
+ onChange: FormChangeHandler<string, 'select-category'>;
16
7
  value?: string;
17
8
  isCreating?: boolean;
18
9
  dynamicZoneTarget?: string | null;
@@ -1,17 +1,18 @@
1
+ import type { FormChangeHandler, IntlLabel } from '../types';
1
2
  import type { Internal } from '@strapi/types';
3
+ type ComponentToCreate = {
4
+ displayName?: string;
5
+ category?: string;
6
+ };
2
7
  interface SelectComponentProps {
3
- componentToCreate?: Record<string, any> | null;
8
+ componentToCreate?: ComponentToCreate | null;
4
9
  error?: string | null;
5
- intlLabel: {
6
- id: string;
7
- defaultMessage: string;
8
- values?: Record<string, any>;
9
- };
10
+ intlLabel: IntlLabel;
10
11
  isAddingAComponentToAnotherComponent: boolean;
11
12
  isCreating: boolean;
12
13
  isCreatingComponentWhileAddingAField: boolean;
13
14
  name: string;
14
- onChange: (value: any) => void;
15
+ onChange: FormChangeHandler<string, 'select-category'>;
15
16
  targetUid: Internal.UID.Schema;
16
17
  value: string;
17
18
  forTarget: string;
@@ -1,16 +1,13 @@
1
- import type { IntlLabel } from '../types';
1
+ import type { FormChangeHandler, IntlLabel } from '../types';
2
2
  interface SingularNameProps {
3
3
  description?: IntlLabel | null;
4
4
  error?: string | null;
5
5
  intlLabel: IntlLabel;
6
- modifiedData: Record<string, any>;
6
+ modifiedData: {
7
+ displayName?: string;
8
+ };
7
9
  name: string;
8
- onChange: (value: {
9
- target: {
10
- name: string;
11
- value: string;
12
- };
13
- }) => void;
10
+ onChange: FormChangeHandler<string>;
14
11
  value?: string | null;
15
12
  }
16
13
  export declare const SingularName: ({ description, error, intlLabel, modifiedData, name, onChange, value, }: SingularNameProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,40 @@
1
- interface TabFormProps {
2
- form: Array<Record<string, any>>;
3
- formErrors: Record<string, any>;
4
- genericInputProps: Record<string, any>;
5
- modifiedData: Record<string, any>;
6
- onChange: (value: any) => void;
7
- }
1
+ import { GenericInput } from './GenericInputs';
2
+ import type { AnyAttribute, IntlLabel } from '../types';
3
+ type FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {
4
+ name: string;
5
+ type: string;
6
+ size?: number;
7
+ };
8
+ type FormSection = {
9
+ sectionTitle?: IntlLabel | null;
10
+ intlLabel?: IntlLabel;
11
+ items: FormInput[];
12
+ };
13
+ type FormError = {
14
+ id?: string;
15
+ };
16
+ type GenericInputProps = Record<string, unknown> & {
17
+ attributeName?: string;
18
+ contentTypeSchema?: {
19
+ attributes?: AnyAttribute[];
20
+ };
21
+ };
22
+ type ModifiedData = Record<string, unknown> & {
23
+ name?: string;
24
+ };
25
+ type TabFormChangeHandler = (value: {
26
+ target: {
27
+ name: string;
28
+ value?: unknown;
29
+ type?: string;
30
+ };
31
+ }) => void;
32
+ type TabFormProps = {
33
+ form: FormSection[];
34
+ formErrors: Record<string, FormError>;
35
+ genericInputProps: GenericInputProps;
36
+ modifiedData: ModifiedData;
37
+ onChange: TabFormChangeHandler;
38
+ };
8
39
  export declare const TabForm: ({ form, formErrors, genericInputProps, modifiedData, onChange, }: TabFormProps) => import("react/jsx-runtime").JSX.Element;
9
40
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { Component, ContentType } from '../../types';
3
2
  interface LinkToCMSettingsViewProps {
4
3
  disabled: boolean;
@@ -1,23 +1,32 @@
1
1
  import type { Schema, Struct, UID } from '@strapi/types';
2
+ import type { PrimitiveType } from 'react-intl';
2
3
  export type IntlLabel = {
3
4
  id: string;
4
5
  defaultMessage: string;
5
- values?: Record<string, any>;
6
+ values?: Record<string, PrimitiveType>;
6
7
  };
8
+ export type FormChange<TValue = unknown, TType extends string = string> = {
9
+ target: {
10
+ name: string;
11
+ value?: TValue;
12
+ type?: TType;
13
+ };
14
+ };
15
+ export type FormChangeHandler<TValue = unknown, TType extends string = string> = (value: FormChange<TValue, TType>) => void;
7
16
  export type DifferentAttributesKind = 'Populatable' | 'NonPopulatable' | 'Any';
8
17
  export type Status = 'UNCHANGED' | 'CHANGED' | 'REMOVED' | 'NEW';
9
- type Schema = {
10
- modelType: Struct.ModelType;
11
- attributes: any[];
12
- [key: string]: any;
18
+ export type AttributeConditionValue = string | number | boolean;
19
+ export type AttributeConditionRule = [{
20
+ var: string;
21
+ }, AttributeConditionValue];
22
+ export type AttributeConditions = {
23
+ visible?: Record<string, AttributeConditionRule>;
13
24
  };
14
25
  export type Base = {
15
26
  name: string;
16
27
  status?: Status;
17
- customField?: any;
18
- conditions?: {
19
- visible?: Record<string, any>;
20
- };
28
+ customField?: string;
29
+ conditions?: AttributeConditions;
21
30
  };
22
31
  export type Relation = Base & {
23
32
  type: 'relation';
@@ -26,7 +35,7 @@ export type Relation = Base & {
26
35
  targetAttribute?: string | null;
27
36
  configurable?: boolean;
28
37
  private?: boolean;
29
- pluginOptions?: Record<string, any>;
38
+ pluginOptions?: Record<string, unknown>;
30
39
  };
31
40
  export type Media = Base & {
32
41
  type: 'media';
@@ -35,7 +44,7 @@ export type Media = Base & {
35
44
  configurable?: boolean;
36
45
  private?: boolean;
37
46
  allowedTypes?: string[];
38
- pluginOptions?: Record<string, any>;
47
+ pluginOptions?: Record<string, unknown>;
39
48
  };
40
49
  export type AnyAttribute = Base & (Schema.Attribute.BigInteger | Schema.Attribute.Boolean | Schema.Attribute.Blocks | Schema.Attribute.Component<UID.Component, boolean> | Schema.Attribute.DateTime | Schema.Attribute.Date | Schema.Attribute.Decimal | Schema.Attribute.DynamicZone | Schema.Attribute.Email | Schema.Attribute.Enumeration<string[]> | Schema.Attribute.Float | Schema.Attribute.Integer | Schema.Attribute.JSON | Schema.Attribute.Password | Schema.Attribute.RichText | Schema.Attribute.String | Schema.Attribute.Text | Schema.Attribute.Time | Schema.Attribute.Timestamp | Schema.Attribute.UID | Media | Relation);
41
50
  export type Component = Omit<Struct.ComponentSchema, 'attributes'> & {
@@ -51,4 +60,3 @@ export type ContentType = Omit<Struct.ContentTypeSchema, 'attributes'> & {
51
60
  };
52
61
  export type Components = Record<string, Component>;
53
62
  export type ContentTypes = Record<string, ContentType>;
54
- export {};
@@ -1,17 +1,26 @@
1
- import type { AnyAttribute } from '../types';
1
+ import type { AnyAttribute, AttributeConditionValue, AttributeConditions, ContentTypes } from '../types';
2
2
  interface DependentRow {
3
3
  contentTypeUid: string;
4
4
  contentType: string;
5
5
  attribute: string;
6
6
  }
7
- export declare const checkDependentRows: (contentTypes: Record<string, any>, fieldName: string) => DependentRow[];
8
- export declare const formatCondition: (condition: any, availableFields: Array<{
7
+ type VisibleConditionEntry = {
8
+ operator: string;
9
+ fieldVar: {
10
+ var: string;
11
+ };
12
+ value: AttributeConditionValue;
13
+ };
14
+ export declare const getVisibleConditionEntries: (condition?: AttributeConditions | null) => VisibleConditionEntry[];
15
+ export declare const getFirstVisibleConditionEntry: (condition?: AttributeConditions | null) => VisibleConditionEntry;
16
+ export declare const checkDependentRows: (contentTypes: ContentTypes, fieldName: string) => DependentRow[];
17
+ export declare const formatCondition: (condition: AttributeConditions, availableFields: Array<{
9
18
  name: string;
10
19
  type: string;
11
20
  }>, attributeName: string) => string;
12
21
  export declare const getAvailableConditionFields: (attributes: AnyAttribute[], currentFieldName: string) => {
13
22
  name: string;
14
- type: "string" | "boolean" | "time" | "text" | "media" | "date" | "email" | "password" | "decimal" | "component" | "relation" | "biginteger" | "blocks" | "datetime" | "dynamiczone" | "enumeration" | "float" | "integer" | "json" | "richtext" | "timestamp" | "uid";
23
+ type: "string" | "boolean" | "time" | "text" | "media" | "date" | "email" | "password" | "decimal" | "relation" | "biginteger" | "blocks" | "component" | "datetime" | "dynamiczone" | "enumeration" | "float" | "integer" | "json" | "richtext" | "timestamp" | "uid";
15
24
  enum: string[] | undefined;
16
25
  }[];
17
26
  export {};
@@ -1,43 +1,48 @@
1
- export interface FormAPI {
1
+ import * as yup from 'yup';
2
+ type YupObjectShape = Parameters<ReturnType<typeof yup.object>['shape']>[0];
3
+ type YupObjectSchema = ReturnType<typeof yup.object>;
4
+ type FormSection = unknown;
5
+ type FormExtensionHandler = (props?: unknown) => FormSection[];
6
+ type FormValidator = (args: unknown[]) => YupObjectShape;
7
+ type ContentTypeSchemaMutation = (data: Record<string, unknown>, initialData: Record<string, unknown>) => Record<string, unknown>;
8
+ type ExtensionForm = {
9
+ advanced: FormExtensionHandler[];
10
+ base: FormExtensionHandler[];
11
+ };
12
+ type ExtensionDefinition = {
13
+ validators: FormValidator[];
14
+ form: ExtensionForm;
15
+ };
16
+ type ExtensionInput = {
17
+ validator?: FormValidator;
18
+ form: {
19
+ advanced: FormExtensionHandler;
20
+ base: FormExtensionHandler;
21
+ };
22
+ };
23
+ export type FormAPI = {
2
24
  components: {
3
- inputs: Record<string, any>;
25
+ inputs: Record<string, unknown>;
4
26
  add: ({ id, component }: {
5
27
  id: string;
6
- component: any;
28
+ component: unknown;
7
29
  }) => void;
8
30
  };
9
31
  types: {
10
32
  attribute: {
11
- [key: string]: {
12
- validators: any[];
13
- form: {
14
- advanced: any[];
15
- base: any[];
16
- };
17
- };
18
- };
19
- contentType: {
20
- validators: any[];
21
- form: {
22
- advanced: any[];
23
- base: any[];
24
- };
25
- };
26
- component: {
27
- validators: any[];
28
- form: {
29
- advanced: any[];
30
- base: any[];
31
- };
33
+ [key: string]: ExtensionDefinition;
32
34
  };
35
+ contentType: ExtensionDefinition;
36
+ component: ExtensionDefinition;
33
37
  };
34
- contentTypeSchemaMutations: any[];
35
- addContentTypeSchemaMutation: (cb: any) => void;
36
- extendContentType: (data: any) => void;
37
- extendFields: (fields: any[], data: any) => void;
38
- getAdvancedForm: (target: any, props?: any) => any[];
39
- makeCustomFieldValidator: (attributeShape: any, validator: any, ...validatorArgs: any) => any;
40
- makeValidator: (target: any, initShape: any, ...args: any) => any;
41
- mutateContentTypeSchema: (data: Record<string, unknown>, initialData: Record<string, unknown>) => any;
42
- }
38
+ contentTypeSchemaMutations: ContentTypeSchemaMutation[];
39
+ addContentTypeSchemaMutation: (cb: ContentTypeSchemaMutation) => void;
40
+ extendContentType: (data: ExtensionInput) => void;
41
+ extendFields: (fields: string[], data: ExtensionInput) => void;
42
+ getAdvancedForm: (target: string[], props?: unknown) => FormSection[];
43
+ makeCustomFieldValidator: (attributeShape: YupObjectSchema, validator: FormValidator | undefined, ...validatorArgs: unknown[]) => YupObjectSchema;
44
+ makeValidator: (target: string[], initShape: YupObjectSchema, ...args: unknown[]) => YupObjectSchema;
45
+ mutateContentTypeSchema: (data: Record<string, unknown>, initialData: Record<string, unknown>) => Record<string, unknown>;
46
+ };
43
47
  export declare const formsAPI: FormAPI;
48
+ export {};
@@ -3,4 +3,4 @@ import type { Schema } from '@strapi/types';
3
3
  *
4
4
  * Retrieves the relation type
5
5
  */
6
- export declare const getRelationType: (relation: Schema.Attribute.RelationKind.Any, targetAttribute?: string | null) => Schema.Attribute.RelationKind.Any;
6
+ export declare const getRelationType: (relation?: Schema.Attribute.RelationKind.Any, targetAttribute?: string | null) => "oneToOne" | "oneToMany" | "manyToOne" | "manyToMany" | Schema.Attribute.RelationKind.Morph | "oneWay" | "manyWay" | undefined;
@@ -1,2 +1,2 @@
1
1
  import type { ContentType } from '../types';
2
- export declare const isAllowedContentTypesForRelations: (contentType: Partial<Pick<ContentType, 'kind' | 'restrictRelationsTo'>>) => boolean;
2
+ export declare const isAllowedContentTypesForRelations: (contentType: Partial<Pick<ContentType, "kind" | "restrictRelationsTo">>) => boolean;
@@ -0,0 +1 @@
1
+ export declare const parseNumberInputValue: (value: string | number | null | undefined) => number;
@@ -68,6 +68,7 @@ var en = {
68
68
  "error.contentType.pluralName-equals-singularName": "This value cannot be the same as the Singular API ID of another content type.",
69
69
  "error.contentType.pluralName-equals-collectionName": "This value is already in use by another content type.",
70
70
  "error.contentTypeName.reserved-name": "This name cannot be used in your project as it might break other functionalities",
71
+ "error.category.format": "A category name must start with a letter and only contain letters, numbers, dashes and underscores",
71
72
  "error.validation.enum-duplicate": "Duplicate values are not allowed (only alphanumeric characters are taken into account).",
72
73
  "error.validation.enum-empty-string": "Empty strings are not allowed",
73
74
  "error.validation.enum-regex": "At least one value is invalid. Values should have at least one alphabetical character preceding the first occurence of a number.",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -64,6 +64,7 @@ var en = {
64
64
  "error.contentType.pluralName-equals-singularName": "This value cannot be the same as the Singular API ID of another content type.",
65
65
  "error.contentType.pluralName-equals-collectionName": "This value is already in use by another content type.",
66
66
  "error.contentTypeName.reserved-name": "This name cannot be used in your project as it might break other functionalities",
67
+ "error.category.format": "A category name must start with a letter and only contain letters, numbers, dashes and underscores",
67
68
  "error.validation.enum-duplicate": "Duplicate values are not allowed (only alphanumeric characters are taken into account).",
68
69
  "error.validation.enum-empty-string": "Empty strings are not allowed",
69
70
  "error.validation.enum-regex": "At least one value is invalid. Values should have at least one alphabetical character preceding the first occurence of a number.",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}