{"version":3,"file":"ParamsMappingForm.mjs","names":["React","useCallback","useMemo","useAxiosGet","Form","FormButtons","SubmitButton","ParamsMappingFields","ConfigService","ParamsMappingForm","props","queryId","paramMappings","properties","onSubmit","fieldWidth","propertyLabel","data","apiMethodInstance","loading","apiMethodInstancebLoading","error","apiMethodInstanceError","integrationV1ApiUrl","paramOptions","options","bodyStr","body","JSON","parse","filterElements","forEach","filter","searchValue","startsWith","key","replace","push","label","value","console","warn","propertyOptions","property","type","handleOnSubmit","values","parameters","Set","Object","keys","parameter","split","add","parameterValue","name","marginRight","marginLeft"],"sources":["../../../src/dataBrowser/forms/ParamsMappingForm.jsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { Form, FormButtons, SubmitButton } from '../../utilities/form';\nimport { ParamsMappingFields } from './ParamsMappingFields';\nimport { ConfigService } from '../../configService';\n\nexport const ParamsMappingForm = (props) => {\n  const {\n    queryId,\n    paramMappings,\n    properties,\n    onSubmit = () => {},\n    fieldWidth = 180,\n    propertyLabel = 'Property'\n  } = props;\n\n  const [\n    {\n      data: apiMethodInstance,\n      loading: apiMethodInstancebLoading,\n      error: apiMethodInstanceError\n    }\n  ] = useAxiosGet(\n    ConfigService.integrationV1ApiUrl,\n    `apiMethodInstance/${queryId}`,\n    {},\n    !!!queryId,\n    false\n  );\n\n  const paramOptions = useMemo(() => {\n    if (!apiMethodInstance) {\n      return [];\n    }\n    try {\n      const options = [];\n      const bodyStr = apiMethodInstance.body;\n      const body = JSON.parse(bodyStr);\n      // Checks for any filter elements that have been configured with params.\n      body?.filterElements?.forEach((filter) => {\n        if (filter.searchValue.startsWith('params.')) {\n          const key = filter?.searchValue.replace('params.', '');\n          options.push({ label: key, value: key });\n        }\n      });\n      return options;\n    } catch {\n      console.warn('Error parsing apiMethodInstance body');\n      return [];\n    }\n  }, [apiMethodInstance]);\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  }, [properties]);\n\n  //   const handleOnSubmit = useCallback(\n  //     (values) => {\n  //       // construct the mapping object from the values\n  //       // the map would be [{parameter: params.apple, property: appleValue}]\n  //       const paramMappings = [];\n\n  //       const parameters = new Set();\n  //       Object.keys(values).forEach((key) => {\n  //         const parameter = key.split('-')[1];\n  //         parameters.add(parameter);\n  //       });\n  //       parameters.forEach((parameter) => {\n  //         // const parameter = values[`parameter-${parameter}`];\n  //         const property = values[`property-${parameter}`];\n  //         if (parameter) {\n  //           //   const parameterValue = parameter.value;\n  //           paramMappings.push({\n  //             parameter: `params.${parameter}`,\n  //             property: property?.name\n  //           });\n  //         }\n  //       });\n  //       onSubmit(paramMappings);\n  //     },\n  //     [onSubmit]\n  //   );\n\n  const handleOnSubmit = useCallback(\n    (values) => {\n      // construct the mapping object from the values\n      // the map would be {params.apple: appleValue}\n      const paramMappings = {};\n\n      const parameters = new Set();\n      Object.keys(values).forEach((key) => {\n        const parameter = key.split('-')[1];\n        parameters.add(parameter);\n      });\n      parameters.forEach((parameter) => {\n        const property = values[`property-${parameter}`];\n        if (parameter && property) {\n          const parameterValue = parameter;\n          paramMappings[parameterValue] = property.name;\n        }\n      });\n      onSubmit(paramMappings);\n    },\n    [onSubmit]\n  );\n\n  return (\n    <Form onSubmit={handleOnSubmit}>\n      <ParamsMappingFields\n        paramMappings={paramMappings}\n        paramOptions={paramOptions}\n        propertyOptions={propertyOptions}\n        fieldWidth={fieldWidth}\n        propertyLabel={propertyLabel}\n      />\n      <FormButtons>\n        <SubmitButton\n          variant='contained'\n          color='primary'\n          disablePristine={false}\n          fullWidth\n          style={{ marginRight: 8, marginLeft: 8 }}\n        >\n          Save Mapping\n        </SubmitButton>\n      </FormButtons>\n    </Form>\n  );\n};\n"],"mappings":";;;;;;;;AAMA,MAAaS,qBAAqBC,UAAU;CAC1C,MAAM,EACJC,SACAC,eACAC,YACAC,iBAAiB,IACjBC,aAAa,KACbC,gBAAgB,eACdN;CAEJ,MAAM,CACJ,EACEO,MAAMC,mBACNC,SAASC,2BACTC,OAAOC,4BAEPnB,YACFK,cAAce,qBACd,qBAAqBZ,WACrB,EAAE,EACF,CAAC,CAAC,CAACA,SACH,MACD;CAED,MAAMa,eAAetB,cAAc;AACjC,MAAI,CAACgB,kBACH,QAAO,EAAE;AAEX,MAAI;GACF,MAAMO,UAAU,EAAE;GAClB,MAAMC,UAAUR,kBAAkBS;AACrBC,QAAKC,MAAMH,QAAQ,EAE1BI,gBAAgBC,SAASC,WAAW;AACxC,QAAIA,OAAOC,YAAYC,WAAW,UAAU,EAAE;KAC5C,MAAMC,MAAMH,QAAQC,YAAYG,QAAQ,WAAW,GAAG;AACtDX,aAAQY,KAAK;MAAEC,OAAOH;MAAKI,OAAOJ;MAAK,CAAC;;KAE1C;AACF,UAAOV;UACD;AACNe,WAAQC,KAAK,uCAAuC;AACpD,UAAO,EAAE;;IAEV,CAACvB,kBAAkB,CAAC;CAEvB,MAAMwB,kBAAkBxC,cAAc;AACpC,MAAI,CAACW,WACH,QAAO,EAAE;AAEX,SAAOA,WAAWmB,QACfW,aAAaA,UAAUC,SAAS,WAAWD,UAAUC,SAAS,SAChE;IACA,CAAC/B,WAAW,CAAC;CA6BhB,MAAMgC,iBAAiB5C,aACpB6C,WAAW;EAGV,MAAMlC,kBAAgB,EAAE;EAExB,MAAMmC,6BAAa,IAAIC,KAAK;AAC5BC,SAAOC,KAAKJ,OAAO,CAACf,SAASI,UAAQ;GACnC,MAAMgB,YAAYhB,MAAIiB,MAAM,IAAI,CAAC;AACjCL,cAAWM,IAAIF,UAAU;IACzB;AACFJ,aAAWhB,SAASoB,gBAAc;GAChC,MAAMR,aAAWG,OAAO,YAAYK;AACpC,OAAIA,eAAaR,YAAU;IACzB,MAAMW,iBAAiBH;AACvBvC,oBAAc0C,kBAAkBX,WAASY;;IAE3C;AACFzC,WAASF,gBAAc;IAEzB,CAACE,SACH,CAAC;AAED,QACE,sBAAA,cAAC,MAAD,EAAM,UAAU+B,gBAmBT,EAlBL,sBAAA,cAAC,qBAAD;EACiBjC;EACDY;EACGkB;EACL3B;EACGC;EAAc,CAAA,EAE/B,sBAAA,cAAC,aAAA,MACC,sBAAA,cAAC,cAAD;EACE,SAAQ;EACR,OAAM;EACN,iBAAiB;EACjB,WAAA;EACA,OAAO;GAAEwC,aAAa;GAAGC,YAAY;GAAG;EAG5B,EAH6B,eAG7B,CACH,CACR"}