@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.
- package/dist/admin/components/AIChat/Chat.js +2 -4
- package/dist/admin/components/AIChat/Chat.js.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +2 -4
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
- package/dist/admin/components/AttributeIcon.js +1 -1
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -1
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
- package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
- package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.js +3 -2
- package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
- package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +2 -2
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +2 -2
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +91 -71
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +91 -70
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +4 -6
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +9 -6
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +9 -6
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.js +2 -2
- package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
- package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +24 -12
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +24 -12
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/PluralName.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js +3 -3
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs +3 -3
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js +6 -0
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs +6 -0
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js +1 -1
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs +1 -1
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SingularName.js.map +1 -1
- package/dist/admin/components/SingularName.mjs.map +1 -1
- package/dist/admin/components/TabForm.js +50 -51
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +51 -52
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
- package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
- package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
- package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
- package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
- package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
- package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
- package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
- package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
- package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -11
- package/dist/admin/src/components/DataManager/reducer.d.ts +14 -10
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +42 -42
- package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
- package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
- package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
- package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
- package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
- package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +3 -1
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +59 -26
- package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
- package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
- package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
- package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
- package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
- package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -1
- package/dist/admin/src/components/GenericInputs.d.ts +12 -7
- package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
- package/dist/admin/src/components/PluralName.d.ts +6 -14
- package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
- package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
- package/dist/admin/src/components/SelectCategory.d.ts +3 -12
- package/dist/admin/src/components/SelectComponent.d.ts +8 -7
- package/dist/admin/src/components/SingularName.d.ts +5 -8
- package/dist/admin/src/components/TabForm.d.ts +38 -7
- package/dist/admin/src/types.d.ts +20 -12
- package/dist/admin/src/utils/conditions.d.ts +13 -4
- package/dist/admin/src/utils/formAPI.d.ts +38 -33
- package/dist/admin/src/utils/getRelationType.d.ts +1 -1
- package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
- package/dist/admin/translations/ko.json.js +64 -1
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +64 -1
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/utils/conditions.js +38 -28
- package/dist/admin/utils/conditions.js.map +1 -1
- package/dist/admin/utils/conditions.mjs +37 -28
- package/dist/admin/utils/conditions.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +9 -6
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs +9 -6
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js +3 -0
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs +3 -0
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.js +6 -4
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/parseNumberInputValue.js +15 -0
- package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
- package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
- package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
- package/dist/server/controllers/validation/relations.js +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +37 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +38 -3
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +4 -3
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +4 -3
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/dist/server/services/builder.js +11 -66
- package/dist/server/services/builder.js.map +1 -1
- package/dist/server/services/builder.mjs +11 -66
- package/dist/server/services/builder.mjs.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +10 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -3
- package/dist/server/src/routes/index.d.ts +1 -1
- package/dist/server/src/services/builder.d.ts +7 -0
- package/dist/server/src/services/builder.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/component-builder.d.ts +4 -4
- package/dist/server/src/services/schema-builder/content-type-builder.d.ts +4 -4
- package/dist/server/src/services/schema-builder/index.d.ts +18 -18
- package/dist/server/src/services/schema.d.ts +75 -75
- package/dist/server/src/utils/attributes.d.ts +2 -2
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- 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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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 {
|
|
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":";;AAmBA,MAAMA,QAAAA,GAAW,CAACC,KAAAA,GAChB,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,IAAA,IAAQ,CAACC,KAAAA,CAAMC,OAAO,CAACF,KAAAA,CAAAA;AAEhE,MAAMG,UAAAA,GAAa,CAACH,KAAAA,GAClBD,QAAAA,CAASC,UAAU,OAAOA,KAAAA,CAAMI,GAAG,KAAK,QAAA;AAE1C,MAAMC,yBAAAA,GAA4B,CAACL,KAAAA,GACjC,OAAOA,KAAAA,KAAU,YAAY,OAAOA,KAAAA,KAAU,QAAA,IAAY,OAAOA,KAAAA,KAAU,SAAA;AAEtE,MAAMM,6BAA6B,CACxCC,SAAAA,GAAAA;AAEA,IAAA,MAAMC,UAAUD,SAAAA,EAAWC,OAAAA;IAE3B,IAAI,CAACT,SAASS,OAAAA,CAAAA,EAAU;AACtB,QAAA,OAAO,EAAE;AACX,IAAA;IAEA,OAAOC,MAAAA,CAAOC,OAAO,CAACF,OAAAA,CAAAA,CAASG,MAAM,CAA0B,CAACD,OAAAA,EAAS,CAACE,QAAAA,EAAUC,IAAAA,CAAK,GAAA;AACvF,QAAA,IAAI,CAACZ,KAAAA,CAAMC,OAAO,CAACW,IAAAA,CAAAA,EAAO;YACxB,OAAOH,OAAAA;AACT,QAAA;QAEA,MAAM,CAACI,QAAAA,EAAUd,KAAAA,CAAM,GAAGa,IAAAA;AAE1B,QAAA,IAAI,CAACV,UAAAA,CAAWW,QAAAA,CAAAA,IAAa,CAACT,0BAA0BL,KAAAA,CAAAA,EAAQ;YAC9D,OAAOU,OAAAA;AACT,QAAA;AAEAA,QAAAA,OAAAA,CAAQK,IAAI,CAAC;AAAEH,YAAAA,QAAAA;AAAUE,YAAAA,QAAAA;AAAUd,YAAAA;AAAM,SAAA,CAAA;QAEzC,OAAOU,OAAAA;AACT,IAAA,CAAA,EAAG,EAAE,CAAA;AACP;AAEO,MAAMM,gCAAgC,CAACT,SAAAA,GAC5CD,2BAA2BC,SAAAA,CAAU,CAAC,CAAA,CAAE,IAAI;AAEvC,MAAMU,kBAAAA,GAAqB,CAChCC,YAAAA,EACAC,SAAAA,GAAAA;AAEA,IAAA,MAAMC,gBAAgC,EAAE;IAExCX,MAAAA,CAAOC,OAAO,CAACQ,YAAAA,CAAAA,CAAcG,OAAO,CAAC,CAAC,CAACC,gBAAgBC,WAAAA,CAAY,GAAA;QACjE,IAAIA,WAAAA,CAAYC,UAAU,KAAKC,SAAAA,EAAW;;AAExC,YAAA,MAAMD,UAAAA,GAAavB,KAAAA,CAAMC,OAAO,CAACqB,YAAYC,UAAU,CAAA,GACnDD,WAAAA,CAAYC,UAAU,CAACb,MAAM,CAA+B,CAACe,KAAKC,IAAAA,EAAMC,KAAAA,GAAAA;AACtEF,gBAAAA,GAAG,CAACE,KAAAA,CAAMC,QAAQ,EAAA,CAAG,GAAGF,IAAAA;gBACxB,OAAOD,GAAAA;YACT,CAAA,EAAG,EAAC,CAAA,GACJH,WAAAA,CAAYC,UAAU;YAE1Bf,MAAAA,CAAOC,OAAO,CAACc,UAAAA,CAAAA,CAAYH,OAAO,CAAC,CAAC,CAACS,UAAUH,IAAAA,CAAK,GAAA;gBAClDrB,0BAAAA,CAA2BqB,IAAAA,CAAKI,UAAU,CAAA,CAAEV,OAAO,CAAC,CAAC,EAAEP,QAAQ,EAAE,GAAA;;oBAE/D,IAAIA,QAAAA,CAASV,GAAG,KAAKe,SAAAA,EAAW;AAC9BC,wBAAAA,aAAAA,CAAcL,IAAI,CAAC;AACjBO,4BAAAA,cAAAA;4BACAC,WAAAA,EAAaA,WAAAA,CAAYS,IAAI,CAACC,WAAW;4BACzCC,SAAAA,EAAWP,IAAAA,CAAKQ,IAAI,IAAIL;AAC1B,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAA;IACA,OAAOV,aAAAA;AACT;AAyBO,MAAMgB,2BAAAA,GAA8B,CACzCZ,UAAAA,EACAa,gBAAAA,GAAAA;IAEA,OAAOb,UAAAA,CACJc,MAAM,CAAC,CAACX,IAAAA,GAAAA;;AAEP,QAAA,MAAMY,gBAAgBZ,IAAAA,CAAKa,IAAI,KAAK,SAAA,IAAab,IAAAA,CAAKa,IAAI,KAAK,aAAA;;QAE/D,MAAMC,iBAAAA,GAAoBd,IAAAA,CAAKQ,IAAI,KAAKE,gBAAAA;AACxC,QAAA,OAAOE,aAAAA,IAAiBE,iBAAAA;AAC1B,IAAA,CAAA,CAAA,CACCC,GAAG,CAAC,CAACf,IAAAA,IAAU;AACdQ,YAAAA,IAAAA,EAAMR,KAAKQ,IAAI;AACfK,YAAAA,IAAAA,EAAMb,KAAKa,IAAI;AACfG,YAAAA,IAAAA,EAAMhB,KAAKa,IAAI,KAAK,aAAA,GAAgBb,IAAAA,CAAKgB,IAAI,GAAGlB;SAClD,CAAA,CAAA;AACJ;;;;;;;"}
|
|
@@ -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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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,
|
|
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 {
|
|
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 (
|
|
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
|
|
90
|
+
const advancedForms = get__default.default(this.types, [
|
|
91
91
|
...target,
|
|
92
92
|
'form',
|
|
93
93
|
'advanced'
|
|
94
|
-
], [])
|
|
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 (
|
|
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\
|
|
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 (
|
|
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
|
|
64
|
+
const advancedForms = get(this.types, [
|
|
65
65
|
...target,
|
|
66
66
|
'form',
|
|
67
67
|
'advanced'
|
|
68
|
-
], [])
|
|
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 (
|
|
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\
|
|
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
|
|
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';
|