ماذا يحدث في هذا الكود؟ استيراد React, { useCallback, useMemo, useState } من 'react';
استيراد PropTypes من "أنواع الدعامة"؛
import { Combobox, comboboxAddSubheadings, comboboxFilterAndLimit, Tooltip } from '@salesforce/design-system-react';
استيراد {الحصول على} من 'lodash'؛
يستورد {
 توطين,
 البيانات\_ATTRIBUTE\_TOOLTIP،
 البيانات\_السمة،
 البيانات\_ATTRIBUTE\_PLACEHOLDER،
 البيانات\_ATTRIBUTE\_CREATE\_DE\_NOT\_SELECTED،
 إنشاء\_جديد\_ATTRIBUTE
} من '../../../../utilities/localizations';
استيراد DeAttributeList من '../../de-attribute-functions'؛
استيراد { NewDeAttribute } من '../../../icons/svg-icons'؛
استيراد NewDataAttributeComponent من '../new-de-attribute/new-de-attribute'؛
استيراد { useEmailContext } من '../../../../providers/email/email-provider'؛
استيراد "./select-existing-de.scss"؛

Export const CreateDaId = 'add-data-attribute';
const DATA\_ATTRIBUTE\_PATH = 'metadata.dataAttribute';

تصدير ثابت SelectExistingDeComponent = ({
 صفات،
 قيمة،
 عاجز،
 نص خطأ,
 على التغيير،
 على إنشاء,
 logEventIntoGA
}) => {
 const createHeader = (attributeType) => ({
 المعرف: نوع السمة،
 التسمية: التعريب(`${attributeType.toUpperCase()}\_ATTRIBUTES`)،
 النوع: "فاصل"
 });

 العناوين الفرعية الثابتة = () => {
 const attributeArray = [];
 رؤوس فرعية ثابتة = { مطلوب: خطأ، اختياري: خطأ }؛

 لـ (دع i = 0؛ i < attributes.length؛ i++) {
 const attributeType = attributes[i].type;
 إذا (subheaders.required && subheaders.اختياري) {
 سمة الإرجاع؛
 }
 
 إذا (!subheaders[attributeType]) {
 subheaders[attributeType] = true;
 إذا (نوع السمة === 'اختياري') {
 attributeArray.push(createHeader(attributeType));
 } else if (attributeType === 'required') {
 attributeArray.unshift(createHeader(attributeType));
 }
 }
 }
 سمة الإرجاع؛
 };

 const updateField = (e, { التحديد }) => {
 إذا (الاختيار[0]) {
 إذا (selection[0].id === CreateDaId) {
 onCreate();
 logEventIntoGA('Create', 'Data Extension: New Attribute', 'content');
 } وإلا إذا (اختيار [0].attribute) {
 onChange(DATA\_ATTRIBUTE\_PATH, التحديد[0].attribute);
 logEventIntoGA('Select', 'Data Extension: Existing Attribute', 'content');
 }
 }
 };

 const RemoveAttribute = () => {
 onChange(DATA\_ATTRIBUTE\_PATH, unknown);
 };

 التحديد الحالي الثابت = القيمة؟ [{
 المعرف: القيمة. معرف،
 التسمية: القيمة. الاسم،
 العنوان الفرعي: value.type،
 النوع: value.isNullable؟ "اختياري": "مطلوب"
 }] : [];

 تلميح أداة const = useMemo(() => (
 
 ),[]);

 خيارات ثابتة = معطلة؟ [] : [...comboboxAddSubheadings({
 العناوين الفرعية: العناوين الفرعية ()،
 خيارات التصفية: comboboxFilterAndLimit({
 قيمة الإدخال: القيمة && value.name،
 الخيارات: السمات،
 الحد: السمات.الطول،
 الاختيار: التحديد الحالي
 })
 })، {
 المعرف: "جديد" ،
 النوع: "فاصل"
 }];

 يعود (
 )،
 التسمية: إنشاء\_NEW\_ATTRIBUTE
 }]}
 />
 );
};

SelectExistingDeComponent.propTypes = {
 السمات: PropTypes.arrayOf(PropTypes.object).isRequired،
 نص الخطأ: PropTypes.string،
 معطل: PropTypes.bool،
 onChange: PropTypes.func.isRequired،
 عند الإنشاء: PropTypes.func.isRequired،
 logEventIntoGA: PropTypes.func.isRequired،
 القيمة: PropTypes.oneOfType([
 أنواع العناصر.كائن،
 PropTypes.bool
 ])
};

// يتم تقسيم هذا إلى مكونين منفصلين للمساعدة في فصل بعض المنطق
// الشيء المهم هو أن منطق التحقق موجود في الجزء العلوي، وبهذه الطريقة المكون
يتم التحقق من صحة // عند كل تغيير، بما في ذلك عند إنشاء سمة جديدة
const SelectExistingDe = ({ context, onChange, DisableRequiredDE }) => {
 قيمة ثابتة = get(context, DATA\_ATTRIBUTE\_PATH);
 const errorText = get(context, `metadata.errors.["${DATA\_ATTRIBUTE\_PATH}"]`);
 const [isOpen, setIsOpen] = useState(false);
 const open = useCallback(() => setIsOpen(true), []);
 const {state, logEventIntoGA, addAttribute, getCurrentDE, getFields } = useEmailContext();
 حقول const = getFields();
 const currentDe = getCurrentDE();

 const onCreate = (dataAttribute) => {
 addAttribute(dataAttribute);
 onChange(DATA\_ATTRIBUTE\_PATH, dataAttribute);
 setIsOpen(false);
 };

 const dataExtensionId =currentDe &&currentDe.id;

 إذا (مفتوح) {
 يعود (
  setIsOpen(خطأ)}
 onCreate={onCreate}
 dataExtensionId={dataExtensionId}
 />
 );
 }

 سمات const = DeAttributeList(fields, DisableRequiredDE, [...state.components.visibleInputs, ...state.components.hiddenInputs]);

 يعود (
 
 );
};

SelectExistingDe.propTypes = {
 السياق: PropTypes.object،
 onChange: PropTypes.func.isRequired،
 DisableRequiredDE: PropTypes.bool.isRequired
};

تصدير SelectExistingDe الافتراضي؛
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}