{"version":3,"file":"TenantSelect.mjs","names":["React","forwardRef","useMemo","useCallback","Autocomplete","AutocompleteChangeReason","TextField","TextFieldProps","Tenant","TenantTypeEnums","TenantSelectProps","tenants","value","onTenantChange","tenant","id","label","className","disableClearable","textFieldProps","recordIdPrefix","sanitizeRecordId","tenantName","replace","TenantSelect","HTMLDivElement","props","ref","$","_c","t0","t1","t2","t3","undefined","t4","some","_temp","_temp2","userTenantsContainsMultipleTypes","sortTenantsByNameAlphacetically","_temp4","t5","tenants_1","clientTenants","filter","_temp5","productTenants","_temp6","concat","groupTenantsByTypeAndFilter","t6","options","t7","event","newValue","reason","handleChange","t8","option_1","option","tenantType","Product","t9","params","t10","option_2","width","height","listStyleType","t11","_temp7","_temp8","displayName","tenant_0","_temp3","tenant_1","otherTenant","toLowerCase","tenants_0","sort","tenant_2","tenant_3","selected","tenantId","option_0"],"sources":["../../../src/utilities/tenant/TenantSelect.tsx"],"sourcesContent":["import React, { forwardRef, useMemo, useCallback } from 'react';\nimport { Autocomplete, AutocompleteChangeReason } from '@material-ui/lab';\nimport { TextField, TextFieldProps } from '@material-ui/core';\nimport { Tenant } from '../types';\nimport { TenantTypeEnums } from '../../enums/unitySystemEnums'\n\ninterface TenantSelectProps {\n  tenants?: Tenant[] | null;\n  value: Tenant | null;\n  onTenantChange?: (tenant: Tenant) => void;\n  id?: string;\n  label?: string;\n  className?: string;\n  disableClearable?: boolean;\n  textFieldProps?: TextFieldProps;\n  recordIdPrefix?: string;\n}\n\nconst sanitizeRecordId = (tenantName: string) =>\n  tenantName.replace(/\\s+/g, '');\n\nexport const TenantSelect = forwardRef<HTMLDivElement, TenantSelectProps>(\n  (props, ref) => {\n    const {\n      tenants,\n      value,\n      onTenantChange,\n      id = 'tenant-select',\n      label = 'Current Tenant',\n      className,\n      disableClearable = true,\n      textFieldProps,\n      recordIdPrefix = 'udpRecord-TenantSelect'\n    } = props;\n\n    const userTenantsContainsMultipleTypes =\n      tenants.some((tenant) => tenant.tenantType == TenantTypeEnums.Tenant) &&\n      tenants.some((tenant) => tenant.tenantType == TenantTypeEnums.Product);\n\n    const sortTenantsByNameAlphacetically = (tenants ?: Tenant[]) => {\n      const tenantProperty = \"tenantName\"\n      tenants.sort((tenant, otherTenant) => {\n        if (tenant[tenantProperty].toLowerCase() < otherTenant[tenantProperty].toLowerCase()) {\n          return -1;\n        } else if (tenant[tenantProperty].toLowerCase() > otherTenant[tenantProperty].toLowerCase()) {\n          return 1;\n        } else {\n          return 0;\n        }\n      });\n    };\n\n    const groupTenantsByTypeAndFilter = useCallback( (tenants ?: Tenant[]) => {\n      if (!userTenantsContainsMultipleTypes) {\n        sortTenantsByNameAlphacetically(tenants);\n        return tenants;\n      }\n      const clientTenants = tenants.filter(\n        (tenant) => tenant.tenantType == TenantTypeEnums.Tenant\n      );\n      sortTenantsByNameAlphacetically(clientTenants);\n      const productTenants = tenants.filter(\n        (tenant) => tenant.tenantType == TenantTypeEnums.Product\n      );\n      sortTenantsByNameAlphacetically(productTenants);\n      return clientTenants.concat(productTenants);\n    },[userTenantsContainsMultipleTypes]);\n\n    const options = useMemo(() => tenants ? groupTenantsByTypeAndFilter(tenants) : [], [tenants, groupTenantsByTypeAndFilter]);\n\n    const handleChange = useCallback(\n      (\n        event: React.ChangeEvent<object>,\n        newValue: Tenant | null,\n        reason: AutocompleteChangeReason\n      ) => {\n        if (reason !== 'select-option' || !newValue) {\n          return;\n        }\n        onTenantChange?.(newValue);\n      },\n      [onTenantChange]\n    );\n\n    return (\n      <Autocomplete\n        ref={ref}\n        className={className}\n        id={id}\n        value={value}\n        options={options}\n        disableClearable={disableClearable}\n        getOptionSelected={(option, selected) =>\n          option?.tenantId === selected?.tenantId\n        }\n        getOptionLabel={(option) => option?.tenantName ?? ''}\n        onChange={handleChange}\n        groupBy={(option) =>\n          userTenantsContainsMultipleTypes\n            ? option.tenantType === TenantTypeEnums.Product\n              ? 'Product'\n              : 'Client'\n            : null\n        }\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={label}\n            variant='standard'\n            {...textFieldProps}\n          />\n        )}\n        renderOption={(option) => (\n          <li\n            style={{ width: '100%', height: '100%', listStyleType: 'none' }}\n            // @ts-expect-error udpRecordId is used for automation tagging\n            udprecordid={`${recordIdPrefix}-${sanitizeRecordId(\n              option?.tenantName ?? ''\n            )}`}\n          >\n            {option?.tenantName ?? ''}\n          </li>\n        )}\n      />\n    );\n  }\n);\n\nTenantSelect.displayName = 'TenantSelect';\n"],"mappings":"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"}