{"version":3,"sources":["../../../src/lib/users-search.tsx"],"sourcesContent":["\"use client\";\n\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { Cross2Icon, MagnifyingGlassIcon } from \"@radix-ui/react-icons\";\nimport cx from \"clsx\";\nimport * as React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { IconButton, TextField, TextFieldSlot } from \"./elements.js\";\nimport { useSearchContext } from \"./search-provider.js\";\nimport { useUsersManagementContext } from \"./users-management-context.js\";\nimport { namespaceClassNames } from \"./utils.js\";\nimport { useTranslation } from \"./i18n/use-translation.js\";\n\ntype UsersSearchProps = React.ComponentPropsWithoutRef<typeof TextField>;\n\nexport const UsersSearch = React.forwardRef<HTMLInputElement, UsersSearchProps>(\n  ({ className, ...props }, ref) => {\n    const { inputRef, clearSearch, searchValue, setSearchValue } =\n      useSearchContext();\n    const { dispatch } = useUsersManagementContext();\n    const translate = useTranslation();\n\n    const filter = useDebouncedCallback((value) => {\n      dispatch({ type: \"FILTER_BY_SEARCH\", searchQuery: value });\n    }, 200);\n\n    const resetSearch = () => {\n      clearSearch();\n      filter.cancel();\n    };\n\n    return (\n      <TextField\n        ref={useComposedRefs(inputRef, ref)}\n        className={cx(namespaceClassNames(\"users-search\"), className)}\n        autoComplete=\"off\"\n        aria-label={translate({\n          defaultMessage: \"User search\",\n          id: \"lzPOKv\",\n          description: \"Label for the user search input field\",\n        })}\n        placeholder={translate({\n          defaultMessage: \"Search by name or e-mail\",\n          id: \"VH4IKy\",\n          description: \"Placeholder text for the user search input field\",\n        })}\n        value={searchValue}\n        onChange={(event) => {\n          const value = event.target.value;\n          setSearchValue(value);\n          filter(value);\n        }}\n        onKeyDown={(event) => {\n          if (event.key === \"Escape\") {\n            event.preventDefault();\n            resetSearch();\n          }\n        }}\n        {...props}\n      >\n        <TextFieldSlot side=\"left\">\n          <MagnifyingGlassIcon aria-hidden=\"true\" height=\"16\" width=\"16\" />\n        </TextFieldSlot>\n\n        <TextFieldSlot side=\"right\">\n          {!!searchValue && (\n            <IconButton\n              size=\"1\"\n              onClick={resetSearch}\n              title={translate({\n                defaultMessage: \"Clear search\",\n                id: \"IBozK6\",\n                description: \"Tooltip text for the clear search button\",\n              })}\n            >\n              <Cross2Icon aria-hidden=\"true\" />\n            </IconButton>\n          )}\n        </TextFieldSlot>\n      </TextField>\n    );\n  },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCM;AA9BN,sBAAgC;AAChC,yBAAgD;AAChD,kBAAe;AACf,YAAuB;AACvB,0BAAqC;AACrC,sBAAqD;AACrD,6BAAiC;AACjC,sCAA0C;AAC1C,mBAAoC;AACpC,6BAA+B;AAIxB,MAAM,cAAc,MAAM;AAAA,EAC/B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAChC,UAAM,EAAE,UAAU,aAAa,aAAa,eAAe,QACzD,yCAAiB;AACnB,UAAM,EAAE,SAAS,QAAI,2DAA0B;AAC/C,UAAM,gBAAY,uCAAe;AAEjC,UAAM,aAAS,0CAAqB,CAAC,UAAU;AAC7C,eAAS,EAAE,MAAM,oBAAoB,aAAa,MAAM,CAAC;AAAA,IAC3D,GAAG,GAAG;AAEN,UAAM,cAAc,MAAM;AACxB,kBAAY;AACZ,aAAO,OAAO;AAAA,IAChB;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAK,iCAAgB,UAAU,GAAG;AAAA,QAClC,eAAW,YAAAA,aAAG,kCAAoB,cAAc,GAAG,SAAS;AAAA,QAC5D,cAAa;AAAA,QACb,cAAY,UAAU;AAAA,UACpB,gBAAgB;AAAA,UAChB,IAAI;AAAA,UACJ,aAAa;AAAA,QACf,CAAC;AAAA,QACD,aAAa,UAAU;AAAA,UACrB,gBAAgB;AAAA,UAChB,IAAI;AAAA,UACJ,aAAa;AAAA,QACf,CAAC;AAAA,QACD,OAAO;AAAA,QACP,UAAU,CAAC,UAAU;AACnB,gBAAM,QAAQ,MAAM,OAAO;AAC3B,yBAAe,KAAK;AACpB,iBAAO,KAAK;AAAA,QACd;AAAA,QACA,WAAW,CAAC,UAAU;AACpB,cAAI,MAAM,QAAQ,UAAU;AAC1B,kBAAM,eAAe;AACrB,wBAAY;AAAA,UACd;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,sDAAC,iCAAc,MAAK,QAClB,sDAAC,0CAAoB,eAAY,QAAO,QAAO,MAAK,OAAM,MAAK,GACjE;AAAA,UAEA,4CAAC,iCAAc,MAAK,SACjB,WAAC,CAAC,eACD;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,OAAO,UAAU;AAAA,gBACf,gBAAgB;AAAA,gBAChB,IAAI;AAAA,gBACJ,aAAa;AAAA,cACf,CAAC;AAAA,cAED,sDAAC,iCAAW,eAAY,QAAO;AAAA;AAAA,UACjC,GAEJ;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;","names":["cx"]}