@rivm-loculus-tools/common-frontend 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/@types/common-frontend.d.ts +2 -0
  2. package/dist/@types/mui.d.ts +48 -0
  3. package/dist/components/fasta/FastaDataImportDialog/index.js +3 -3
  4. package/dist/components/fasta/FastaDataImportDialog/index.js.map +1 -1
  5. package/dist/components/fasta/FastaPageHeaderCenterComponent/FastaPageHeaderCenterComponent.d.ts +4 -0
  6. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js +18 -22
  7. package/dist/components/fasta/FastaPageHeaderCenterComponent/index.js.map +1 -1
  8. package/dist/components/fasta/FastaPageHeaderImportButton/FastaPageHeaderImportButton.d.ts +4 -0
  9. package/dist/components/fasta/FastaPageHeaderImportButton/index.js +17 -15
  10. package/dist/components/fasta/FastaPageHeaderImportButton/index.js.map +1 -1
  11. package/dist/components/ui/ButtonWithMenu/ButtonWithMenu.d.ts +7 -1
  12. package/dist/components/ui/ButtonWithMenu/index.js +32 -27
  13. package/dist/components/ui/ButtonWithMenu/index.js.map +1 -1
  14. package/dist/components/ui/PageCommon/index.js +1 -1
  15. package/dist/components/ui/PageCommonDrawer/index.js +1 -1
  16. package/dist/components/ui/PageCommonHeader/PageCommonHeader.d.ts +5 -1
  17. package/dist/components/ui/PageCommonHeader/index.js +42 -35
  18. package/dist/components/ui/PageCommonHeader/index.js.map +1 -1
  19. package/dist/components/ui/SearchBar/SearchBar.d.ts +15 -0
  20. package/dist/components/ui/SearchBar/SearchBarNodeCounter.d.ts +8 -0
  21. package/dist/components/ui/SearchBar/index.js +136 -0
  22. package/dist/components/ui/SearchBar/index.js.map +1 -0
  23. package/dist/constants/page.constants.d.ts +1 -1
  24. package/dist/constants/page.constants.js +1 -1
  25. package/dist/constants/page.constants.js.map +1 -1
  26. package/dist/theme/demoTheme/index.js +26 -1
  27. package/dist/theme/demoTheme/index.js.map +1 -1
  28. package/dist/utils/UrlUtil/UrlUtil.d.ts +1 -0
  29. package/dist/utils/UrlUtil/index.js +4 -0
  30. package/dist/utils/UrlUtil/index.js.map +1 -1
  31. package/package.json +9 -5
  32. package/dist/components/SearchBar/SearchBar.d.ts +0 -10
  33. package/dist/components/SearchBar/SearchBarNodeCounter.d.ts +0 -4
  34. package/dist/components/SearchBar/index.js +0 -128
  35. package/dist/components/SearchBar/index.js.map +0 -1
  36. /package/dist/components/{SearchBar → ui/SearchBar}/index.d.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  export declare class UrlUtil {
2
2
  static clearSearchParams(): void;
3
3
  static fastaLabelFromUrl(url: string): string;
4
+ static getBaseURLWithPath(): string;
4
5
  static validateFastaUrl(url: string): string;
5
6
  }
@@ -14,6 +14,10 @@ var n = class {
14
14
  return "remote-alignment.fasta";
15
15
  }
16
16
  }
17
+ static getBaseURLWithPath() {
18
+ let n = new URL(e.resolve(t).window.location.href);
19
+ return `${n.protocol}//${n.host}/${n.pathname.split("/").filter(Boolean).shift()}`;
20
+ }
17
21
  static validateFastaUrl(e) {
18
22
  let t;
19
23
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["UrlUtil","url","container","WindowService","urlObject","segment"],"sources":["../../../src/utils/UrlUtil/UrlUtil.ts"],"sourcesContent":["import { container } from 'tsyringe';\nimport { WindowService } from '@gen-epix/ui-core/classes/services/WindowService';\n\n\nexport class UrlUtil {\n public static clearSearchParams(): void {\n const url = new URL(container.resolve(WindowService).window.location.href);\n url.search = '';\n container.resolve(WindowService).window.history.replaceState(null, '', url.toString());\n }\n\n public static fastaLabelFromUrl(url: string): string {\n try {\n const urlObject = new URL(url);\n const segment = urlObject.pathname.split('/').filter(Boolean).pop();\n if (segment) {\n return decodeURIComponent(segment);\n }\n return `${urlObject.hostname}.fasta`;\n } catch {\n return 'remote-alignment.fasta';\n }\n }\n\n public static validateFastaUrl(url: string): string {\n let urlObject: URL;\n try {\n urlObject = new URL(url.trim());\n } catch {\n throw new Error('Enter a valid FASTA URL.');\n }\n if (urlObject.protocol !== 'http:' && urlObject.protocol !== 'https:') {\n throw new Error('FASTA URLs must use HTTP or HTTPS.');\n }\n return urlObject.href;\n }\n}\n"],"mappings":";;;AAIA,IAAaA,IAAb,MAAqB;CACnB,OAAc,oBAA0B;EACtC,IAAMC,IAAM,IAAI,IAAIC,EAAU,QAAQC,CAAa,CAAC,CAAC,OAAO,SAAS,IAAI;EAEzE,AADA,EAAI,SAAS,IACbD,EAAU,QAAQC,CAAa,CAAC,CAAC,OAAO,QAAQ,aAAa,MAAM,IAAIF,EAAI,SAAS,CAAC;CACvF;CAEA,OAAc,kBAAkB,GAAqB;EACnD,IAAI;GACF,IAAMG,IAAY,IAAI,IAAIH,CAAG,GACvBI,IAAUD,EAAU,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI;GAIlE,OAHIC,IACK,mBAAmBA,CAAO,IAE5B,GAAGD,EAAU,SAAS;EAC/B,QAAQ;GACN,OAAO;EACT;CACF;CAEA,OAAc,iBAAiB,GAAqB;EAClD,IAAIA;EACJ,IAAI;GACF,IAAY,IAAI,IAAIH,EAAI,KAAK,CAAC;EAChC,QAAQ;GACN,MAAU,MAAM,0BAA0B;EAC5C;EACA,IAAIG,EAAU,aAAa,WAAWA,EAAU,aAAa,UAC3D,MAAU,MAAM,oCAAoC;EAEtD,OAAOA,EAAU;CACnB;AACF"}
1
+ {"version":3,"file":"index.js","names":["UrlUtil","url","container","WindowService","urlObject","segment"],"sources":["../../../src/utils/UrlUtil/UrlUtil.ts"],"sourcesContent":["import { container } from 'tsyringe';\nimport { WindowService } from '@gen-epix/ui-core/classes/services/WindowService';\n\n\nexport class UrlUtil {\n public static clearSearchParams(): void {\n const url = new URL(container.resolve(WindowService).window.location.href);\n url.search = '';\n container.resolve(WindowService).window.history.replaceState(null, '', url.toString());\n }\n public static fastaLabelFromUrl(url: string): string {\n try {\n const urlObject = new URL(url);\n const segment = urlObject.pathname.split('/').filter(Boolean).pop();\n if (segment) {\n return decodeURIComponent(segment);\n }\n return `${urlObject.hostname}.fasta`;\n } catch {\n return 'remote-alignment.fasta';\n }\n }\n\n public static getBaseURLWithPath(): string {\n const url = new URL(container.resolve(WindowService).window.location.href);\n return `${url.protocol}//${url.host}/${url.pathname.split('/').filter(Boolean).shift()}`;\n }\n\n public static validateFastaUrl(url: string): string {\n let urlObject: URL;\n try {\n urlObject = new URL(url.trim());\n } catch {\n throw new Error('Enter a valid FASTA URL.');\n }\n if (urlObject.protocol !== 'http:' && urlObject.protocol !== 'https:') {\n throw new Error('FASTA URLs must use HTTP or HTTPS.');\n }\n return urlObject.href;\n }\n}\n"],"mappings":";;;AAIA,IAAaA,IAAb,MAAqB;CACnB,OAAc,oBAA0B;EACtC,IAAMC,IAAM,IAAI,IAAIC,EAAU,QAAQC,CAAa,CAAC,CAAC,OAAO,SAAS,IAAI;EAEzE,AADA,EAAI,SAAS,IACbD,EAAU,QAAQC,CAAa,CAAC,CAAC,OAAO,QAAQ,aAAa,MAAM,IAAIF,EAAI,SAAS,CAAC;CACvF;CACA,OAAc,kBAAkB,GAAqB;EACnD,IAAI;GACF,IAAMG,IAAY,IAAI,IAAIH,CAAG,GACvBI,IAAUD,EAAU,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI;GAIlE,OAHIC,IACK,mBAAmBA,CAAO,IAE5B,GAAGD,EAAU,SAAS;EAC/B,QAAQ;GACN,OAAO;EACT;CACF;CAEA,OAAc,qBAA6B;EACzC,IAAMH,IAAM,IAAI,IAAIC,EAAU,QAAQC,CAAa,CAAC,CAAC,OAAO,SAAS,IAAI;EACzE,OAAO,GAAGF,EAAI,SAAS,IAAIA,EAAI,KAAK,GAAGA,EAAI,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM;CACvF;CAEA,OAAc,iBAAiB,GAAqB;EAClD,IAAIG;EACJ,IAAI;GACF,IAAY,IAAI,IAAIH,EAAI,KAAK,CAAC;EAChC,QAAQ;GACN,MAAU,MAAM,0BAA0B;EAC5C;EACA,IAAIG,EAAU,aAAa,WAAWA,EAAU,aAAa,UAC3D,MAAU,MAAM,oCAAoC;EAEtD,OAAOA,EAAU;CACnB;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivm-loculus-tools/common-frontend",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "license": "EUPL-1.2",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,6 +67,10 @@
67
67
  "dist"
68
68
  ],
69
69
  "exports": {
70
+ "./types": {
71
+ "types": "./dist/@types/common-frontend.d.ts",
72
+ "import": "./dist/@types/common-frontend.d.ts"
73
+ },
70
74
  "./classes/services/EmotionCacheService": {
71
75
  "types": "./dist/classes/services/EmotionCacheService/index.d.ts",
72
76
  "import": "./dist/classes/services/EmotionCacheService/index.js"
@@ -75,10 +79,6 @@
75
79
  "types": "./dist/classes/services/FastaDataEventBusService/index.d.ts",
76
80
  "import": "./dist/classes/services/FastaDataEventBusService/index.js"
77
81
  },
78
- "./components/SearchBar": {
79
- "types": "./dist/components/SearchBar/index.d.ts",
80
- "import": "./dist/components/SearchBar/index.js"
81
- },
82
82
  "./components/app/App": {
83
83
  "types": "./dist/components/app/App/index.d.ts",
84
84
  "import": "./dist/components/app/App/index.js"
@@ -131,6 +131,10 @@
131
131
  "types": "./dist/components/ui/PageCommonHeader/index.d.ts",
132
132
  "import": "./dist/components/ui/PageCommonHeader/index.js"
133
133
  },
134
+ "./components/ui/SearchBar": {
135
+ "types": "./dist/components/ui/SearchBar/index.d.ts",
136
+ "import": "./dist/components/ui/SearchBar/index.js"
137
+ },
134
138
  "./constants/config.constants": {
135
139
  "types": "./dist/constants/config.constants.d.ts",
136
140
  "import": "./dist/constants/config.constants.js"
@@ -1,10 +0,0 @@
1
- export type SearchBarProps = {
2
- allowNavigation?: boolean;
3
- highlightedIndex?: null | number;
4
- numResults?: number;
5
- onHighlightedIndexChange?: (index: number) => void;
6
- onSearchQueryChange: (query: string) => void;
7
- searchQuery: string;
8
- truncated?: boolean;
9
- };
10
- export declare const SearchBar: ({ allowNavigation, highlightedIndex, numResults, onHighlightedIndexChange, onSearchQueryChange, searchQuery, truncated }: SearchBarProps) => import('react').JSX.Element;
@@ -1,4 +0,0 @@
1
- export type SearchBarNodeCounterProps = {
2
- numResults?: number;
3
- };
4
- export declare const SearchBarNodeCounter: ({ numResults }: SearchBarNodeCounterProps) => import('react').JSX.Element | null;
@@ -1,128 +0,0 @@
1
- import { Box as e, FilledInput as t, IconButton as n, InputAdornment as r, useTheme as i } from "@mui/material";
2
- import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
3
- import { useCallback as c, useMemo as l, useRef as u } from "react";
4
- import d from "@mui/icons-material/Search";
5
- import f from "@mui/icons-material/KeyboardArrowUp";
6
- import p from "@mui/icons-material/KeyboardArrowDown";
7
- import m from "@mui/icons-material/Close";
8
- // src/components/SearchBar/SearchBar.tsx
9
- var h = ({ allowNavigation: h, highlightedIndex: g, numResults: _ = 0, onHighlightedIndexChange: v, onSearchQueryChange: y, searchQuery: b, truncated: x }) => {
10
- let S = i(), C = u(null), w = u(null), T = u(null), E = c((e) => {
11
- let t = e.target.value;
12
- y(t);
13
- }, [y]), D = c(() => {
14
- y(""), C.current?.focus();
15
- }, [y]), O = c((e) => {
16
- if (e.key === "Enter") {
17
- if (!_) return;
18
- e.preventDefault(), v?.(0), T.current?.focus();
19
- }
20
- }, [_, v]), k = c(() => {
21
- if (!_) return;
22
- let e = g == null || Number.isNaN(g) || g <= 0 ? _ - 1 : g - 1;
23
- v?.(e);
24
- }, [
25
- _,
26
- g,
27
- v
28
- ]), A = c(() => {
29
- if (!_) return;
30
- let e = g == null || Number.isNaN(g) || g >= _ - 1 ? 0 : g + 1;
31
- v?.(e);
32
- }, [
33
- _,
34
- g,
35
- v
36
- ]), j = c((e) => {
37
- if (e.key === "ArrowRight") {
38
- e.preventDefault();
39
- let t = e.currentTarget.nextElementSibling;
40
- t && t.focus();
41
- }
42
- if (e.key === "ArrowLeft") {
43
- if (e.preventDefault(), e.target === w.current) {
44
- C.current?.focus();
45
- return;
46
- }
47
- let t = e.currentTarget.previousElementSibling;
48
- t && t.focus();
49
- }
50
- }, []), M = l(() => b ? b && (Number.isNaN(_) || _ <= 0) ? "No results" : g == null || Number.isNaN(g) || g < 0 || !h ? `${_}${x ? "+" : ""} results` : h ? `${g + 1}/${_}${x ? "+" : ""} results` : "" : "", [
51
- b,
52
- _,
53
- g,
54
- h,
55
- x
56
- ]);
57
- return /* @__PURE__ */ o(t, {
58
- endAdornment: /* @__PURE__ */ s(r, {
59
- position: "end",
60
- children: [
61
- M && /* @__PURE__ */ o(e, {
62
- "aria-atomic": "true",
63
- "aria-live": "polite",
64
- role: "status",
65
- sx: { fontSize: "1rem" },
66
- children: M
67
- }),
68
- _ > 0 && h && /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(n, {
69
- "aria-label": "Goto previous search result",
70
- disabled: !_,
71
- edge: "end",
72
- onClick: k,
73
- onKeyDown: j,
74
- ref: w,
75
- sx: { color: S.palette.primary.main },
76
- children: /* @__PURE__ */ o(f, {})
77
- }), /* @__PURE__ */ o(n, {
78
- "aria-label": "Goto next search result",
79
- disabled: !_,
80
- edge: "end",
81
- onClick: A,
82
- onKeyDown: j,
83
- ref: T,
84
- sx: { color: S.palette.primary.main },
85
- children: /* @__PURE__ */ o(p, {})
86
- })] }),
87
- b && /* @__PURE__ */ o(n, {
88
- "aria-label": "Clear",
89
- edge: "end",
90
- onClick: D,
91
- onKeyDown: j,
92
- children: /* @__PURE__ */ o(m, {})
93
- })
94
- ]
95
- }),
96
- fullWidth: !0,
97
- inputRef: C,
98
- name: "Search",
99
- onChange: E,
100
- onKeyDown: O,
101
- placeholder: "Search",
102
- size: "small",
103
- slotProps: { input: {
104
- "aria-label": "Search",
105
- sx: {
106
- "&::-webkit-search-cancel-button": { display: "none" },
107
- fontSize: "1rem",
108
- height: S.spacing(4),
109
- outline: "none !important",
110
- paddingBottom: "0 !important",
111
- paddingTop: "0 !important"
112
- }
113
- } },
114
- startAdornment: /* @__PURE__ */ o(r, {
115
- position: "start",
116
- children: /* @__PURE__ */ o(d, { fontSize: "small" })
117
- }),
118
- sx: {
119
- backgroundColor: S.palette.background.paper,
120
- height: S.spacing(4)
121
- },
122
- type: "search",
123
- value: b
124
- });
125
- };
126
- export { h as SearchBar };
127
-
128
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_Fragment","SearchIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","CloseIcon","SearchBar","theme","useTheme","inputRef","useRef","arrowUpButtonRef","arrowDownButtonRef","onTextInputChange","useCallback","nextSearchText","event","onSearchQueryChange","onClearButtonClick","onTextInputKeyDown","numResults","onHighlightedIndexChange","onUpArrowButtonClick","newHighlightedIndex","highlightedIndex","onDownArrowButtonClick","onGenericKeyDown","nextFocusableElement","previousFocusableElement","searchResultStatusText","useMemo","searchQuery","allowNavigation","truncated","FilledInput","InputAdornment","Box","Fragment","IconButton"],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n KeyboardEvent,\n} from 'react';\nimport {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport {\n Box,\n FilledInput,\n IconButton,\n InputAdornment,\n useTheme,\n} from '@mui/material';\nimport SearchIcon from '@mui/icons-material/Search';\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\n\nexport type SearchBarProps = {\n allowNavigation?: boolean;\n highlightedIndex?: null | number;\n numResults?: number;\n onHighlightedIndexChange?: (index: number) => void;\n onSearchQueryChange: (query: string) => void;\n searchQuery: string;\n truncated?: boolean;\n};\n\nexport const SearchBar = ({ allowNavigation, highlightedIndex, numResults = 0, onHighlightedIndexChange, onSearchQueryChange, searchQuery, truncated }: SearchBarProps) => {\n const theme = useTheme();\n const inputRef = useRef<HTMLInputElement>(null);\n const arrowUpButtonRef = useRef<HTMLButtonElement>(null);\n const arrowDownButtonRef = useRef<HTMLButtonElement>(null);\n\n const onTextInputChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n const nextSearchText = event.target.value;\n onSearchQueryChange(nextSearchText);\n }, [onSearchQueryChange]);\n\n const onClearButtonClick = useCallback(() => {\n onSearchQueryChange('');\n inputRef.current?.focus();\n }, [onSearchQueryChange]);\n\n const onTextInputKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n // on enter press, highlight the first result and focus the down arrow button\n if (event.key === 'Enter') {\n if (!numResults) {\n return;\n }\n event.preventDefault();\n onHighlightedIndexChange?.(0);\n arrowDownButtonRef.current?.focus();\n }\n }, [numResults, onHighlightedIndexChange]);\n\n const onUpArrowButtonClick = useCallback(() => {\n // goto previous result\n if (!numResults) {\n return;\n }\n const newHighlightedIndex = highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex <= 0 ? numResults - 1 : highlightedIndex - 1;\n\n onHighlightedIndexChange?.(newHighlightedIndex);\n }, [numResults, highlightedIndex, onHighlightedIndexChange]);\n\n const onDownArrowButtonClick = useCallback(() => {\n // goto next result\n if (!numResults) {\n return;\n }\n const newHighlightedIndex = highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex >= numResults - 1 ? 0 : highlightedIndex + 1;\n onHighlightedIndexChange?.(newHighlightedIndex);\n }, [numResults, highlightedIndex, onHighlightedIndexChange]);\n\n const onGenericKeyDown = useCallback((event: KeyboardEvent<HTMLButtonElement>) => {\n // arrow right, focus the next focusable element\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n const nextFocusableElement = event.currentTarget.nextElementSibling as HTMLElement;\n if (nextFocusableElement) {\n nextFocusableElement.focus();\n }\n }\n // arrow left, focus the previous focusable element\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (event.target === arrowUpButtonRef.current) {\n inputRef.current?.focus();\n return;\n }\n const previousFocusableElement = event.currentTarget.previousElementSibling as HTMLElement;\n if (previousFocusableElement) {\n previousFocusableElement.focus();\n }\n }\n }, []);\n\n const searchResultStatusText = useMemo(() => {\n if (!searchQuery) {\n return '';\n }\n if (searchQuery && (Number.isNaN(numResults) || numResults <= 0)) {\n return 'No results';\n } else if (highlightedIndex === null || highlightedIndex === undefined || Number.isNaN(highlightedIndex) || highlightedIndex < 0 || !allowNavigation) {\n return `${numResults}${truncated ? '+' : ''} results`;\n } else if (allowNavigation) {\n return `${highlightedIndex + 1}/${numResults}${truncated ? '+' : ''} results`;\n }\n return '';\n }, [searchQuery, numResults, highlightedIndex, allowNavigation, truncated]);\n\n\n return (\n <FilledInput\n endAdornment={(\n <InputAdornment position={'end'}>\n {searchResultStatusText && (\n <Box\n aria-atomic={'true'}\n aria-live={'polite'}\n role={'status'}\n sx={{\n fontSize: '1rem',\n }}\n >\n {searchResultStatusText}\n </Box>\n )}\n {numResults > 0 && allowNavigation && (\n <>\n <IconButton\n aria-label={'Goto previous search result'}\n disabled={!numResults}\n edge={'end'}\n onClick={onUpArrowButtonClick}\n onKeyDown={onGenericKeyDown}\n ref={arrowUpButtonRef}\n sx={{ color: theme.palette.primary.main }}\n >\n <KeyboardArrowUpIcon />\n </IconButton>\n <IconButton\n aria-label={'Goto next search result'}\n disabled={!numResults}\n edge={'end'}\n onClick={onDownArrowButtonClick}\n onKeyDown={onGenericKeyDown}\n ref={arrowDownButtonRef}\n sx={{ color: theme.palette.primary.main }}\n >\n <KeyboardArrowDownIcon />\n </IconButton>\n </>\n )}\n {searchQuery && (\n <IconButton\n aria-label={'Clear'}\n edge={'end'}\n onClick={onClearButtonClick}\n onKeyDown={onGenericKeyDown}\n >\n <CloseIcon />\n </IconButton>\n )}\n </InputAdornment>\n )}\n fullWidth\n inputRef={inputRef}\n name={'Search'}\n onChange={onTextInputChange}\n onKeyDown={onTextInputKeyDown}\n placeholder={'Search'}\n size={'small'}\n slotProps={{\n input: {\n 'aria-label': 'Search',\n sx: {\n '&::-webkit-search-cancel-button': {\n display: 'none',\n },\n fontSize: '1rem',\n height: theme.spacing(4),\n outline: 'none !important',\n paddingBottom: '0 !important',\n paddingTop: '0 !important',\n },\n },\n }}\n startAdornment={(\n <InputAdornment position={'start'}>\n <SearchIcon fontSize={'small'} />\n </InputAdornment>\n )}\n sx={{\n backgroundColor: theme.palette.background.paper,\n height: theme.spacing(4),\n }}\n type={'search'}\n value={searchQuery}\n />\n );\n};\n"],"mappings":"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"}