{"version":3,"file":"RequiredFieldsMappingForm.mjs","names":["React","useCallback","useEffect","useMemo","useState","RequiredFieldsMappingField","ChromeBackMirroredIcon","FluentIcon","Typography","makeStyles","FluentButton","v4","uuid","useStyles","theme","root","row","display","alignItems","variableContainer","width","icon","marginTop","spacing","iconButton","iconContainer","marginRight","RequiredFieldsMappingForm","props","$","_c","requiredFields","t0","fieldMappings","properties","onSubmit","t1","optionLabelDisplayFunction","groupBy","propertyType","t2","undefined","_temp","t3","Symbol","for","fields","setFields","classes","t4","bb0","fieldsStr","trim","t5","options","fields_0","split","forEach","field","push","label","value","fieldOptions","fieldId","key","t6","merge","updatedFields","matchingField","find","f","id","Object","keys","key_0","handleRequiredFieldChange","bb1","t7","propertyOptions","fieldMappings_0","field_0","name","propertyValue","strValue","type","handleOnSubmit","t8","t9","currentFields","fo","mappingValue","currentField","po","t10","length","map","item","matchingField_0","field_1","textOverflow","overflow","t11","t12"],"sources":["../../../src/dataBrowser/forms/RequiredFieldsMappingForm.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RequiredFieldsMappingField } from './RequiredFieldsMappingField';\nimport { ChromeBackMirroredIcon } from '@fluentui/react-icons';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { Typography, makeStyles } from '@material-ui/core';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { v4 as uuid } from 'uuid';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {},\n  row: {\n    display: 'flex',\n    alignItems: 'center'\n  },\n  variableContainer: {\n    width: '100%',\n    display: 'flex',\n    alignItems: 'flex-start'\n  },\n  icon: {\n    marginTop: theme.spacing(5)\n  },\n  iconButton: {\n    marginTop: theme.spacing(3.5)\n  },\n  iconContainer: {\n    marginRight: theme.spacing(1)\n  }\n}));\n\nexport const RequiredFieldsMappingForm = (props) => {\n  const {\n    requiredFields = '',\n    fieldMappings,\n    properties,\n    onSubmit = () => {},\n    optionLabelDisplayFunction,\n    groupBy,\n    propertyType = 'entity'\n  } = props;\n  const [fields, setFields] = useState([]);\n  const classes = useStyles(props);\n\n  const fieldOptions = useMemo(() => {\n    const fieldsStr = requiredFields || '';\n    if (!fieldsStr.trim()) {\n      return [];\n    }\n\n    const options = [];\n    const fields = fieldsStr.split(',');\n\n    fields.forEach((field) => {\n      options.push({ label: field.trim(), value: field.trim() });\n    });\n\n    return options;\n  }, [requiredFields]);\n\n  const handleRequiredFieldChange = useCallback(\n    (fieldId, value, key, merge = false) => {\n      const updatedFields = [...fields];\n      let matchingField = updatedFields.find((f) => f.id === fieldId);\n      if (matchingField) {\n        if (merge) {\n          Object.keys(value).forEach((key) => {\n            matchingField[key] = value[key];\n          });\n        } else {\n          matchingField[key] = value;\n        }\n      }\n      setFields(updatedFields);\n    },\n    [fields, setFields]\n  );\n\n  const propertyOptions = useMemo(() => {\n    if (!properties) {\n      return [];\n    }\n    // return properties.filter(\n    //   (property) => property?.type !== 'array' && property?.type !== 'object'\n    // );\n    return properties;\n  }, [properties]);\n\n  const handleOnSubmit = useCallback(() => {\n    // construct the mapping object from the values\n    // the map would be {params.apple: appleValue}\n    const fieldMappings = {};\n\n    fields.forEach((field) => {\n      fieldMappings[field.name] = {\n        value: field.propertyValue\n          ? field.propertyValue?.name\n          : field.strValue.trim(),\n        type: field.propertyValue ? propertyType : 'custom'\n      };\n    });\n    onSubmit(fieldMappings);\n  }, [onSubmit, fields, propertyType]);\n\n  useEffect(() => {\n    if (!fieldOptions || !fieldMappings || !propertyOptions) {\n      return;\n    }\n    const currentFields = [];\n    fieldOptions.forEach((fo) => {\n      const mappingValue = fieldMappings[fo.value];\n      const currentField = {\n        id: uuid(),\n        strValue: mappingValue?.type === 'custom' ? mappingValue?.value : '',\n        propertyValue:\n          mappingValue?.type === propertyType\n            ? propertyOptions.find((po) => po.name === mappingValue?.value)\n            : '',\n        name: fo.value\n      };\n      currentFields.push(currentField);\n    });\n    setFields(currentFields);\n  }, [fieldMappings, fieldOptions, propertyOptions, propertyType]);\n\n  return (\n    <div className={classes.root}>\n      {fields.length > 0 &&\n        fieldOptions.map((item) => {\n          const matchingField = fields.find(\n            (field) => field.name === item.value\n          );\n\n          return (\n            <div className={classes.row}>\n              <RequiredFieldsMappingField\n                requiredField={matchingField}\n                onRequiredFieldChange={handleRequiredFieldChange}\n                options={propertyOptions || []}\n                optionLabelDisplayFunction={optionLabelDisplayFunction}\n                groupBy={groupBy}\n              />\n              <div className={classes.iconContainer}>\n                <FluentIcon\n                  component={ChromeBackMirroredIcon}\n                  size={20}\n                  customSize\n                />\n              </div>\n              <Typography\n                variant='subtitle1'\n                style={{ textOverflow: 'ellipsis', overflow: 'hidden' }}\n              >\n                {item.label}\n              </Typography>\n            </div>\n          );\n        })}\n      <FluentButton\n        variant='contained'\n        color='primary'\n        fullWidth\n        onClick={handleOnSubmit}\n      >\n        {' '}\n        Save Mapping\n      </FluentButton>\n    </div>\n  );\n};\n"],"mappings":"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"}