@veecode-platform/plugin-veecode-homepage-dynamic 0.2.2 → 0.2.3
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.
- package/dist/components/VeeCodeHomePage.esm.js +0 -2
- package/dist/components/VeeCodeHomePage.esm.js.map +1 -1
- package/dist-scalprum/plugin-manifest.json +3 -3
- package/dist-scalprum/static/{1213.412457e8.chunk.js → 1213.aff960fc.chunk.js} +3 -3
- package/dist-scalprum/static/1213.aff960fc.chunk.js.map +1 -0
- package/dist-scalprum/static/2211.f5266f49.chunk.js +29 -0
- package/dist-scalprum/static/2211.f5266f49.chunk.js.map +1 -0
- package/dist-scalprum/static/3837.e9b60659.chunk.js +2 -0
- package/dist-scalprum/static/3837.e9b60659.chunk.js.map +1 -0
- package/dist-scalprum/static/41.53c70bd6.chunk.js +2 -0
- package/dist-scalprum/static/41.53c70bd6.chunk.js.map +1 -0
- package/dist-scalprum/static/{4197.8a8b877f.chunk.js → 4197.0e023080.chunk.js} +2 -2
- package/dist-scalprum/static/{4197.8a8b877f.chunk.js.map → 4197.0e023080.chunk.js.map} +1 -1
- package/dist-scalprum/static/{4864.0a352dc6.chunk.js → 4864.3cede332.chunk.js} +2 -2
- package/dist-scalprum/static/{4864.0a352dc6.chunk.js.map → 4864.3cede332.chunk.js.map} +1 -1
- package/dist-scalprum/static/{5255.21365d93.chunk.js → 5255.31f4471a.chunk.js} +2 -2
- package/dist-scalprum/static/{5255.21365d93.chunk.js.map → 5255.31f4471a.chunk.js.map} +1 -1
- package/dist-scalprum/static/5749.9f83e5fe.chunk.js +179 -0
- package/dist-scalprum/static/5749.9f83e5fe.chunk.js.map +1 -0
- package/dist-scalprum/static/{5888.d5ff87d6.chunk.js → 5888.39088266.chunk.js} +1 -1
- package/dist-scalprum/static/{5888.d5ff87d6.chunk.js.map → 5888.39088266.chunk.js.map} +1 -1
- package/dist-scalprum/static/6123.b8f54e25.chunk.js +2 -0
- package/dist-scalprum/static/6123.b8f54e25.chunk.js.map +1 -0
- package/dist-scalprum/static/{6356.0690b575.chunk.js → 6356.a59d5e2e.chunk.js} +2 -2
- package/dist-scalprum/static/{6356.0690b575.chunk.js.map → 6356.a59d5e2e.chunk.js.map} +1 -1
- package/dist-scalprum/static/{6700.f2dbf122.chunk.js → 6700.8ab31ec1.chunk.js} +1 -1
- package/dist-scalprum/static/{6700.f2dbf122.chunk.js.map → 6700.8ab31ec1.chunk.js.map} +1 -1
- package/dist-scalprum/static/8692.8ab75fef.chunk.js +2 -0
- package/dist-scalprum/static/8692.8ab75fef.chunk.js.map +1 -0
- package/dist-scalprum/static/9541.dde4bd87.chunk.js +3 -0
- package/dist-scalprum/static/9541.dde4bd87.chunk.js.map +1 -0
- package/dist-scalprum/static/{9633.d7b4641e.chunk.js → 9633.47d13d21.chunk.js} +2 -2
- package/dist-scalprum/static/{9633.d7b4641e.chunk.js.map → 9633.47d13d21.chunk.js.map} +1 -1
- package/dist-scalprum/static/{exposed-PluginRoot.bf5e0b03.chunk.js → exposed-PluginRoot.221d8f69.chunk.js} +2 -2
- package/dist-scalprum/static/{exposed-PluginRoot.bf5e0b03.chunk.js.map → exposed-PluginRoot.221d8f69.chunk.js.map} +1 -1
- package/dist-scalprum/{veecode-platform.plugin-veecode-homepage.52a7b0ce89460aa40ee1.js → veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js} +2 -2
- package/dist-scalprum/veecode-platform.plugin-veecode-homepage.ea406b87d3dc1c912550.js.map +1 -0
- package/package.json +1 -1
- package/dist/components/headerComponent/HeaderComponent.esm.js +0 -67
- package/dist/components/headerComponent/HeaderComponent.esm.js.map +0 -1
- package/dist/components/headerComponent/iconButtonComponent/IconButtonComponent.esm.js +0 -35
- package/dist/components/headerComponent/iconButtonComponent/IconButtonComponent.esm.js.map +0 -1
- package/dist/components/headerComponent/logout/Logout.esm.js +0 -30
- package/dist/components/headerComponent/logout/Logout.esm.js.map +0 -1
- package/dist/components/headerComponent/menuItems/MenuItems.esm.js +0 -134
- package/dist/components/headerComponent/menuItems/MenuItems.esm.js.map +0 -1
- package/dist/components/headerComponent/notifications/Notifications.esm.js +0 -72
- package/dist/components/headerComponent/notifications/Notifications.esm.js.map +0 -1
- package/dist/components/headerComponent/profile/Profle.esm.js +0 -19
- package/dist/components/headerComponent/profile/Profle.esm.js.map +0 -1
- package/dist/components/headerComponent/searchComponent/SearchBar.esm.js +0 -113
- package/dist/components/headerComponent/searchComponent/SearchBar.esm.js.map +0 -1
- package/dist/components/headerComponent/searchComponent/SearchComponent.esm.js +0 -13
- package/dist/components/headerComponent/searchComponent/SearchComponent.esm.js.map +0 -1
- package/dist/components/headerComponent/searchComponent/SearchInput.esm.js +0 -32
- package/dist/components/headerComponent/searchComponent/SearchInput.esm.js.map +0 -1
- package/dist/components/headerComponent/searchComponent/SearchOption.esm.js +0 -50
- package/dist/components/headerComponent/searchComponent/SearchOption.esm.js.map +0 -1
- package/dist/components/headerComponent/searchComponent/SearchResultItem.esm.js +0 -44
- package/dist/components/headerComponent/searchComponent/SearchResultItem.esm.js.map +0 -1
- package/dist/components/headerComponent/toggleTheme/ToggleTheme.esm.js +0 -37
- package/dist/components/headerComponent/toggleTheme/ToggleTheme.esm.js.map +0 -1
- package/dist/hooks/useDebouncedCallback.esm.js +0 -26
- package/dist/hooks/useDebouncedCallback.esm.js.map +0 -1
- package/dist/utils/stringUtils.esm.js +0 -35
- package/dist/utils/stringUtils.esm.js.map +0 -1
- package/dist-scalprum/static/1213.412457e8.chunk.js.map +0 -1
- package/dist-scalprum/static/1853.9c4997f9.chunk.js +0 -2
- package/dist-scalprum/static/1853.9c4997f9.chunk.js.map +0 -1
- package/dist-scalprum/static/41.a129355f.chunk.js +0 -2
- package/dist-scalprum/static/41.a129355f.chunk.js.map +0 -1
- package/dist-scalprum/static/5211.b1dc9542.chunk.js +0 -3
- package/dist-scalprum/static/5211.b1dc9542.chunk.js.map +0 -1
- package/dist-scalprum/static/5571.73942ff6.chunk.js +0 -206
- package/dist-scalprum/static/5571.73942ff6.chunk.js.map +0 -1
- package/dist-scalprum/static/6123.94c2f019.chunk.js +0 -2
- package/dist-scalprum/static/6123.94c2f019.chunk.js.map +0 -1
- package/dist-scalprum/static/6460.86145f5a.chunk.js +0 -2
- package/dist-scalprum/static/6460.86145f5a.chunk.js.map +0 -1
- package/dist-scalprum/static/6921.efadb98d.chunk.js +0 -2
- package/dist-scalprum/static/6921.efadb98d.chunk.js.map +0 -1
- package/dist-scalprum/veecode-platform.plugin-veecode-homepage.52a7b0ce89460aa40ee1.js.map +0 -1
- /package/dist-scalprum/static/{1213.412457e8.chunk.js.LICENSE.txt → 1213.aff960fc.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5571.73942ff6.chunk.js.LICENSE.txt → 5749.9f83e5fe.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5211.b1dc9542.chunk.js.LICENSE.txt → 9541.dde4bd87.chunk.js.LICENSE.txt} +0 -0
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { IconButtonComponent } from '../iconButtonComponent/IconButtonComponent.esm.js';
|
|
3
|
-
import { UserAvatar } from '../../userAvatar/UserAvatar.esm.js';
|
|
4
|
-
|
|
5
|
-
const Profile = ({ handleOpenMenu }) => {
|
|
6
|
-
return /* @__PURE__ */ jsx(
|
|
7
|
-
IconButtonComponent,
|
|
8
|
-
{
|
|
9
|
-
title: "",
|
|
10
|
-
label: "profile-menu",
|
|
11
|
-
handleClick: handleOpenMenu,
|
|
12
|
-
color: "inherit",
|
|
13
|
-
children: /* @__PURE__ */ jsx(UserAvatar, { width: "42px", height: "42px" })
|
|
14
|
-
}
|
|
15
|
-
);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export { Profile };
|
|
19
|
-
//# sourceMappingURL=Profle.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Profle.esm.js","sources":["../../../../src/components/headerComponent/profile/Profle.tsx"],"sourcesContent":["import { IconButtonComponent } from '../iconButtonComponent/IconButtonComponent';\nimport { UserAvatar } from '../../userAvatar/UserAvatar';\n\ninterface ProfileProps {\n handleOpenMenu: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\nexport const Profile: React.FC<ProfileProps> = ({ handleOpenMenu }) => {\n return (\n <IconButtonComponent\n title=\"\"\n label=\"profile-menu\"\n handleClick={handleOpenMenu}\n color=\"inherit\"\n >\n <UserAvatar width=\"42px\" height=\"42px\" />\n </IconButtonComponent>\n );\n};\n"],"names":[],"mappings":";;;;AAOO,MAAM,OAAA,GAAkC,CAAC,EAAE,cAAA,EAAe,KAAM;AACrE,EAAA,uBACE,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAa,cAAA;AAAA,MACb,KAAA,EAAM,SAAA;AAAA,MAEN,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,MAAA,EAAO,QAAO,MAAA,EAAO;AAAA;AAAA,GACzC;AAEJ;;;;"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useRef, useEffect } from 'react';
|
|
3
|
-
import { useSearch, SearchResultState } from '@backstage/plugin-search-react';
|
|
4
|
-
import Autocomplete from '@mui/material/Autocomplete';
|
|
5
|
-
import { createSearchLink } from '../../../utils/stringUtils.esm.js';
|
|
6
|
-
import { useNavigate } from 'react-router-dom';
|
|
7
|
-
import { SearchInput } from './SearchInput.esm.js';
|
|
8
|
-
import { SearchOption } from './SearchOption.esm.js';
|
|
9
|
-
import { useDebouncedCallback } from '../../../hooks/useDebouncedCallback.esm.js';
|
|
10
|
-
import { useTheme } from '@mui/material/styles';
|
|
11
|
-
|
|
12
|
-
const SearchBar = (props) => {
|
|
13
|
-
const { query, setSearchTerm } = props;
|
|
14
|
-
const navigate = useNavigate();
|
|
15
|
-
const [highlightedIndex, setHighlightedIndex] = useState(-1);
|
|
16
|
-
const highlightedIndexRef = useRef(highlightedIndex);
|
|
17
|
-
const { setTerm } = useSearch();
|
|
18
|
-
const theme = useTheme();
|
|
19
|
-
const onInputChange = useDebouncedCallback((_, inputValue) => {
|
|
20
|
-
setSearchTerm(inputValue);
|
|
21
|
-
setTerm(inputValue);
|
|
22
|
-
}, 300);
|
|
23
|
-
useEffect(() => {
|
|
24
|
-
highlightedIndexRef.current = highlightedIndex;
|
|
25
|
-
}, [highlightedIndex]);
|
|
26
|
-
return /* @__PURE__ */ jsx(SearchResultState, { ...props, children: ({ loading, error, value }) => {
|
|
27
|
-
const results = query?.term ? value?.results ?? [] : [];
|
|
28
|
-
let options = [];
|
|
29
|
-
if (query?.term && results.length === 0) {
|
|
30
|
-
options = ["No results found"];
|
|
31
|
-
}
|
|
32
|
-
if (results.length > 0) {
|
|
33
|
-
options = [
|
|
34
|
-
...results.map((result) => result.document.title),
|
|
35
|
-
`${query?.term}`
|
|
36
|
-
];
|
|
37
|
-
}
|
|
38
|
-
const searchLink = createSearchLink(query?.term ?? "");
|
|
39
|
-
return /* @__PURE__ */ jsx(
|
|
40
|
-
Autocomplete,
|
|
41
|
-
{
|
|
42
|
-
freeSolo: true,
|
|
43
|
-
options,
|
|
44
|
-
loading,
|
|
45
|
-
value: query?.term ?? "",
|
|
46
|
-
getOptionLabel: (option) => option ?? "",
|
|
47
|
-
onInputChange,
|
|
48
|
-
onHighlightChange: (_, option) => setHighlightedIndex(options.indexOf(option ?? "")),
|
|
49
|
-
componentsProps: {
|
|
50
|
-
paper: {
|
|
51
|
-
sx: {
|
|
52
|
-
borderRadius: "4px",
|
|
53
|
-
outline: "unset"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
sx: {
|
|
58
|
-
width: "100%",
|
|
59
|
-
background: theme.palette.mode === "dark" ? "#FFFFFF10" : "#CDCDCD10",
|
|
60
|
-
'& [class*="MuiAutocomplete-clearIndicator"]': {
|
|
61
|
-
visibility: query?.term ? "visible" : "hidden"
|
|
62
|
-
},
|
|
63
|
-
padding: ".2rem",
|
|
64
|
-
borderRadius: "8px",
|
|
65
|
-
"&:hover": {
|
|
66
|
-
background: theme.palette.mode === "dark" ? "#FFFFFF25" : "#CDCDCD25"
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
filterOptions: (x) => x,
|
|
70
|
-
onKeyDown: (event) => {
|
|
71
|
-
const currentHighlight = highlightedIndexRef.current;
|
|
72
|
-
if (event.key === "Enter") {
|
|
73
|
-
event.preventDefault();
|
|
74
|
-
if (currentHighlight === -1 && query?.term) {
|
|
75
|
-
navigate(searchLink);
|
|
76
|
-
} else if (currentHighlight !== -1) {
|
|
77
|
-
navigate(
|
|
78
|
-
results[highlightedIndex]?.document?.location ?? searchLink
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
setHighlightedIndex(-1);
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
renderInput: (params) => /* @__PURE__ */ jsx(
|
|
85
|
-
SearchInput,
|
|
86
|
-
{
|
|
87
|
-
params,
|
|
88
|
-
error: !!error,
|
|
89
|
-
helperText: error ? "Error fetching results" : ""
|
|
90
|
-
}
|
|
91
|
-
),
|
|
92
|
-
renderOption: (renderProps, option, { index }) => /* @__PURE__ */ jsx(
|
|
93
|
-
SearchOption,
|
|
94
|
-
{
|
|
95
|
-
option,
|
|
96
|
-
index,
|
|
97
|
-
options,
|
|
98
|
-
query,
|
|
99
|
-
results,
|
|
100
|
-
renderProps,
|
|
101
|
-
searchLink
|
|
102
|
-
}
|
|
103
|
-
),
|
|
104
|
-
ListboxProps: {
|
|
105
|
-
sx: { maxHeight: "60vh" }
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
} });
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
export { SearchBar };
|
|
113
|
-
//# sourceMappingURL=SearchBar.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.esm.js","sources":["../../../../src/components/headerComponent/searchComponent/SearchBar.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef, useState } from 'react';\nimport {\n SearchResultState,\n SearchResultProps,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { createSearchLink } from '../../../utils/stringUtils';\nimport { useNavigate } from 'react-router-dom';\nimport { SearchInput } from './SearchInput';\nimport { SearchOption } from './SearchOption';\nimport { useDebouncedCallback } from '../../../hooks/useDebouncedCallback';\nimport { useTheme } from '@mui/material/styles';\n\ninterface SearchBarProps {\n query: SearchResultProps['query'];\n setSearchTerm: (term: string) => void;\n}\nexport const SearchBar = (props: SearchBarProps) => {\n const { query, setSearchTerm } = props;\n const navigate = useNavigate();\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const highlightedIndexRef = useRef(highlightedIndex);\n const { setTerm } = useSearch();\n const theme = useTheme();\n\n const onInputChange = useDebouncedCallback((_, inputValue) => {\n setSearchTerm(inputValue);\n setTerm(inputValue);\n }, 300);\n\n useEffect(() => {\n highlightedIndexRef.current = highlightedIndex;\n }, [highlightedIndex]);\n\n return (\n <SearchResultState {...props}>\n {({ loading, error, value }) => {\n const results = query?.term ? value?.results ?? [] : [];\n let options: string[] = [];\n if (query?.term && results.length === 0) {\n options = ['No results found'];\n }\n if (results.length > 0) {\n options = [\n ...results.map(result => result.document.title),\n `${query?.term}`,\n ];\n }\n const searchLink = createSearchLink(query?.term ?? '');\n\n return (\n <Autocomplete\n freeSolo\n options={options}\n loading={loading}\n value={query?.term ?? ''}\n getOptionLabel={option => option ?? ''}\n onInputChange={onInputChange}\n onHighlightChange={(_, option) =>\n setHighlightedIndex(options.indexOf(option ?? ''))\n }\n componentsProps={{\n paper: {\n sx: {\n borderRadius: '4px',\n outline: 'unset',\n },\n },\n }}\n sx={{\n width: '100%',\n background:\n theme.palette.mode === 'dark' ? '#FFFFFF10' : '#CDCDCD10',\n '& [class*=\"MuiAutocomplete-clearIndicator\"]': {\n visibility: query?.term ? 'visible' : 'hidden',\n },\n padding: '.2rem',\n borderRadius: '8px',\n '&:hover': {\n background:\n theme.palette.mode === 'dark' ? '#FFFFFF25' : '#CDCDCD25',\n },\n }}\n filterOptions={x => x}\n onKeyDown={event => {\n const currentHighlight = highlightedIndexRef.current;\n if (event.key === 'Enter') {\n event.preventDefault();\n if (currentHighlight === -1 && query?.term) {\n navigate(searchLink);\n } else if (currentHighlight !== -1) {\n navigate(\n results[highlightedIndex]?.document?.location ?? searchLink,\n );\n }\n setHighlightedIndex(-1);\n }\n }}\n renderInput={params => (\n <SearchInput\n params={params}\n error={!!error}\n helperText={error ? 'Error fetching results' : ''}\n />\n )}\n renderOption={(renderProps, option, { index }) => (\n <SearchOption\n option={option}\n index={index}\n options={options}\n query={query}\n results={results}\n renderProps={renderProps}\n searchLink={searchLink}\n />\n )}\n ListboxProps={{\n sx: { maxHeight: '60vh' },\n }}\n />\n );\n }}\n </SearchResultState>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { SearchContextProvider } from '@backstage/plugin-search-react';
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { SearchBar } from './SearchBar.esm.js';
|
|
5
|
-
import { Box } from '@mui/material';
|
|
6
|
-
|
|
7
|
-
const SearchComponent = () => {
|
|
8
|
-
const [searchTerm, setSearchTerm] = useState("");
|
|
9
|
-
return /* @__PURE__ */ jsx(SearchContextProvider, { children: /* @__PURE__ */ jsx(Box, { component: "div", sx: { width: "100%", maxWidth: "50vw" }, children: /* @__PURE__ */ jsx(SearchBar, { query: { term: searchTerm }, setSearchTerm }) }) });
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { SearchComponent };
|
|
13
|
-
//# sourceMappingURL=SearchComponent.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchComponent.esm.js","sources":["../../../../src/components/headerComponent/searchComponent/SearchComponent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SearchContextProvider } from '@backstage/plugin-search-react';\nimport { useState } from 'react';\nimport { SearchBar } from './SearchBar';\nimport { Box } from '@mui/material';\n\nexport const SearchComponent = () => {\n const [searchTerm, setSearchTerm] = useState<string>('');\n\n return (\n <SearchContextProvider>\n <Box component=\"div\" sx={{ width: '100%', maxWidth: '50vw' }}>\n <SearchBar query={{ term: searchTerm }} setSearchTerm={setSearchTerm} />\n </Box>\n </SearchContextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;AAqBO,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAiB,EAAE,CAAA;AAEvD,EAAA,uBACE,GAAA,CAAC,yBACC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,WAAU,KAAA,EAAM,EAAA,EAAI,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,QAAO,EACzD,QAAA,kBAAA,GAAA,CAAC,aAAU,KAAA,EAAO,EAAE,MAAM,UAAA,EAAW,EAAG,aAAA,EAA8B,CAAA,EACxE,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import TextField from '@mui/material/TextField';
|
|
3
|
-
import InputAdornment from '@mui/material/InputAdornment';
|
|
4
|
-
import SearchIcon from '@mui/icons-material/Search';
|
|
5
|
-
|
|
6
|
-
const SearchInput = ({
|
|
7
|
-
params,
|
|
8
|
-
error,
|
|
9
|
-
helperText
|
|
10
|
-
}) => /* @__PURE__ */ jsx(
|
|
11
|
-
TextField,
|
|
12
|
-
{
|
|
13
|
-
...params,
|
|
14
|
-
placeholder: "Search...",
|
|
15
|
-
variant: "standard",
|
|
16
|
-
error,
|
|
17
|
-
helperText,
|
|
18
|
-
InputProps: {
|
|
19
|
-
...params.InputProps,
|
|
20
|
-
disableUnderline: true,
|
|
21
|
-
startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx(SearchIcon, { style: { color: "#ffffff" } }) })
|
|
22
|
-
},
|
|
23
|
-
sx: {
|
|
24
|
-
input: { color: "#CDCDCD" },
|
|
25
|
-
button: { color: "inherit" },
|
|
26
|
-
"& fieldset": { border: "none" }
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
export { SearchInput };
|
|
32
|
-
//# sourceMappingURL=SearchInput.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInput.esm.js","sources":["../../../../src/components/headerComponent/searchComponent/SearchInput.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\n\ninterface SearchInputProps {\n params: any;\n error: boolean;\n helperText: string;\n}\n\nexport const SearchInput = ({\n params,\n error,\n helperText,\n}: SearchInputProps) => (\n <TextField\n {...params}\n placeholder=\"Search...\"\n variant=\"standard\"\n error={error}\n helperText={helperText}\n InputProps={{\n ...params.InputProps,\n disableUnderline: true,\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon style={{ color: '#ffffff' }} />\n </InputAdornment>\n ),\n }}\n sx={{\n input: { color: '#CDCDCD' },\n button: { color: 'inherit' },\n '& fieldset': { border: 'none' },\n }}\n />\n);\n"],"names":[],"mappings":";;;;;AA0BO,MAAM,cAAc,CAAC;AAAA,EAC1B,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACE,GAAG,MAAA;AAAA,IACJ,WAAA,EAAY,WAAA;AAAA,IACZ,OAAA,EAAQ,UAAA;AAAA,IACR,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA,EAAY;AAAA,MACV,GAAG,MAAA,CAAO,UAAA;AAAA,MACV,gBAAA,EAAkB,IAAA;AAAA,MAClB,cAAA,kBACE,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,OAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA,EAC3C;AAAA,KAEJ;AAAA,IACA,EAAA,EAAI;AAAA,MACF,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU;AAAA,MAC1B,MAAA,EAAQ,EAAE,KAAA,EAAO,SAAA,EAAU;AAAA,MAC3B,YAAA,EAAc,EAAE,MAAA,EAAQ,MAAA;AAAO;AACjC;AACF;;;;"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
|
-
import Divider from '@mui/material/Divider';
|
|
4
|
-
import { Link } from '@backstage/core-components';
|
|
5
|
-
import ListItem from '@mui/material/ListItem';
|
|
6
|
-
import Typography from '@mui/material/Typography';
|
|
7
|
-
import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
|
|
8
|
-
import { SearchResultItem } from './SearchResultItem.esm.js';
|
|
9
|
-
|
|
10
|
-
const SearchOption = ({
|
|
11
|
-
option,
|
|
12
|
-
index,
|
|
13
|
-
options,
|
|
14
|
-
query,
|
|
15
|
-
results,
|
|
16
|
-
renderProps,
|
|
17
|
-
searchLink
|
|
18
|
-
}) => {
|
|
19
|
-
if (option === query?.term && index === options.length - 1) {
|
|
20
|
-
return /* @__PURE__ */ jsxs(Box, { id: "all-results", children: [
|
|
21
|
-
/* @__PURE__ */ jsx(Divider, { sx: { my: 0.5 } }),
|
|
22
|
-
/* @__PURE__ */ jsx(Link, { to: searchLink, underline: "none", children: /* @__PURE__ */ jsx(
|
|
23
|
-
ListItem,
|
|
24
|
-
{
|
|
25
|
-
...renderProps,
|
|
26
|
-
sx: { my: 0 },
|
|
27
|
-
className: "allResultsOption",
|
|
28
|
-
children: /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
29
|
-
/* @__PURE__ */ jsx(Typography, { sx: { flexGrow: 1 }, children: "All results" }),
|
|
30
|
-
/* @__PURE__ */ jsx(ArrowForwardIcon, { fontSize: "small" })
|
|
31
|
-
] })
|
|
32
|
-
}
|
|
33
|
-
) })
|
|
34
|
-
] }, "all-results");
|
|
35
|
-
}
|
|
36
|
-
const result = results.find((r) => r.document.title === option);
|
|
37
|
-
return /* @__PURE__ */ jsx(
|
|
38
|
-
SearchResultItem,
|
|
39
|
-
{
|
|
40
|
-
option,
|
|
41
|
-
query,
|
|
42
|
-
result,
|
|
43
|
-
renderProps
|
|
44
|
-
},
|
|
45
|
-
index
|
|
46
|
-
);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export { SearchOption };
|
|
50
|
-
//# sourceMappingURL=SearchOption.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchOption.esm.js","sources":["../../../../src/components/headerComponent/searchComponent/SearchOption.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport { Link } from '@backstage/core-components';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport { SearchResultItem } from './SearchResultItem';\nimport { Result, SearchDocument } from '@backstage/plugin-search-common';\nimport { SearchResultProps } from '@backstage/plugin-search-react';\n\ninterface SearchOptionProps {\n option: string;\n index: number;\n options: string[];\n query: SearchResultProps['query'];\n results: Result<SearchDocument>[];\n renderProps: any;\n searchLink: string;\n}\n\nexport const SearchOption = ({\n option,\n index,\n options,\n query,\n results,\n renderProps,\n searchLink,\n}: SearchOptionProps) => {\n if (option === query?.term && index === options.length - 1) {\n return (\n <Box key=\"all-results\" id=\"all-results\">\n <Divider sx={{ my: 0.5 }} />\n <Link to={searchLink} underline=\"none\">\n <ListItem\n {...renderProps}\n sx={{ my: 0 }}\n className=\"allResultsOption\"\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Typography sx={{ flexGrow: 1 }}>All results</Typography>\n <ArrowForwardIcon fontSize=\"small\" />\n </Box>\n </ListItem>\n </Link>\n </Box>\n );\n }\n\n const result = results.find(r => r.document.title === option);\n return (\n <SearchResultItem\n key={index}\n option={option}\n query={query}\n result={result}\n renderProps={renderProps}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAoCO,MAAM,eAAe,CAAC;AAAA,EAC3B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAyB;AACvB,EAAA,IAAI,WAAW,KAAA,EAAO,IAAA,IAAQ,KAAA,KAAU,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC1D,IAAA,uBACE,IAAA,CAAC,GAAA,EAAA,EAAsB,EAAA,EAAG,aAAA,EACxB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAI,EAAE,EAAA,EAAI,KAAI,EAAG,CAAA;AAAA,sBAC1B,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAI,UAAA,EAAY,WAAU,MAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA,EAAE;AAAA,UACZ,SAAA,EAAU,kBAAA;AAAA,UAEV,QAAA,kBAAA,IAAA,CAAC,OAAI,EAAA,EAAI,EAAE,SAAS,MAAA,EAAQ,UAAA,EAAY,UAAS,EAC/C,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,cAAW,EAAA,EAAI,EAAE,QAAA,EAAU,CAAA,IAAK,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,4BAC5C,GAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAS,OAAA,EAAQ;AAAA,WAAA,EACrC;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EAAA,EAbO,aAcT,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,QAAA,CAAS,UAAU,MAAM,CAAA;AAC5D,EAAA,uBACE,GAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MAEC,MAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KAAA;AAAA,IAJK;AAAA,GAKP;AAEJ;;;;"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Link } from '@backstage/core-components';
|
|
3
|
-
import ListItem from '@mui/material/ListItem';
|
|
4
|
-
import Box from '@mui/material/Box';
|
|
5
|
-
import Typography from '@mui/material/Typography';
|
|
6
|
-
import { highlightMatch } from '../../../utils/stringUtils.esm.js';
|
|
7
|
-
import { useAnalytics } from '@backstage/core-plugin-api';
|
|
8
|
-
|
|
9
|
-
const SearchResultItem = ({
|
|
10
|
-
option,
|
|
11
|
-
query,
|
|
12
|
-
result,
|
|
13
|
-
renderProps
|
|
14
|
-
}) => {
|
|
15
|
-
const isNoResultsFound = option === "No results found";
|
|
16
|
-
const analytics = useAnalytics();
|
|
17
|
-
return /* @__PURE__ */ jsx(
|
|
18
|
-
Box,
|
|
19
|
-
{
|
|
20
|
-
component: isNoResultsFound ? "div" : Link,
|
|
21
|
-
to: result?.document.location,
|
|
22
|
-
underline: "none",
|
|
23
|
-
sx: { width: "100%", ...isNoResultsFound ? {} : { cursor: "pointer" } },
|
|
24
|
-
children: /* @__PURE__ */ jsx(
|
|
25
|
-
ListItem,
|
|
26
|
-
{
|
|
27
|
-
...renderProps,
|
|
28
|
-
sx: { py: 1 },
|
|
29
|
-
onClick: (e) => {
|
|
30
|
-
analytics.captureEvent("discover", result?.document.title ?? "", {
|
|
31
|
-
attributes: { to: result?.document.location ?? "#" },
|
|
32
|
-
value: result?.rank
|
|
33
|
-
});
|
|
34
|
-
renderProps?.onClick?.(e);
|
|
35
|
-
},
|
|
36
|
-
children: /* @__PURE__ */ jsx(Typography, { sx: { color: "text.primary", flexGrow: 1 }, children: isNoResultsFound ? option : highlightMatch(option, query?.term ?? "") })
|
|
37
|
-
}
|
|
38
|
-
)
|
|
39
|
-
}
|
|
40
|
-
);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export { SearchResultItem };
|
|
44
|
-
//# sourceMappingURL=SearchResultItem.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultItem.esm.js","sources":["../../../../src/components/headerComponent/searchComponent/SearchResultItem.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from '@backstage/core-components';\nimport ListItem from '@mui/material/ListItem';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { highlightMatch } from '../../../utils/stringUtils';\nimport { SearchResultProps } from '@backstage/plugin-search-react';\nimport { Result, SearchDocument } from '@backstage/plugin-search-common';\nimport { useAnalytics } from '@backstage/core-plugin-api';\n\ninterface SearchResultItemProps {\n option: string;\n query: SearchResultProps['query'];\n result: Result<SearchDocument> | undefined;\n renderProps: any;\n}\n\nexport const SearchResultItem = ({\n option,\n query,\n result,\n renderProps,\n}: SearchResultItemProps) => {\n const isNoResultsFound = option === 'No results found';\n const analytics = useAnalytics();\n\n return (\n <Box\n component={isNoResultsFound ? 'div' : Link}\n to={result?.document.location}\n underline=\"none\"\n sx={{ width: '100%', ...(isNoResultsFound ? {} : { cursor: 'pointer' }) }}\n >\n <ListItem\n {...renderProps}\n sx={{ py: 1 }}\n onClick={(e: any) => {\n analytics.captureEvent('discover', result?.document.title ?? '', {\n attributes: { to: result?.document.location ?? '#' },\n value: result?.rank,\n });\n renderProps?.onClick?.(e);\n }}\n >\n <Typography sx={{ color: 'text.primary', flexGrow: 1 }}>\n {isNoResultsFound\n ? option\n : highlightMatch(option, query?.term ?? '')}\n </Typography>\n </ListItem>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAgCO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,KAA6B;AAC3B,EAAA,MAAM,mBAAmB,MAAA,KAAW,kBAAA;AACpC,EAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,mBAAmB,KAAA,GAAQ,IAAA;AAAA,MACtC,EAAA,EAAI,QAAQ,QAAA,CAAS,QAAA;AAAA,MACrB,SAAA,EAAU,MAAA;AAAA,MACV,EAAA,EAAI,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAI,gBAAA,GAAmB,EAAC,GAAI,EAAE,MAAA,EAAQ,SAAA,EAAU,EAAG;AAAA,MAExE,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA,EAAE;AAAA,UACZ,OAAA,EAAS,CAAC,CAAA,KAAW;AACnB,YAAA,SAAA,CAAU,YAAA,CAAa,UAAA,EAAY,MAAA,EAAQ,QAAA,CAAS,SAAS,EAAA,EAAI;AAAA,cAC/D,YAAY,EAAE,EAAA,EAAI,MAAA,EAAQ,QAAA,CAAS,YAAY,GAAA,EAAI;AAAA,cACnD,OAAO,MAAA,EAAQ;AAAA,aAChB,CAAA;AACD,YAAA,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,UAC1B,CAAA;AAAA,UAEA,8BAAC,UAAA,EAAA,EAAW,EAAA,EAAI,EAAE,KAAA,EAAO,gBAAgB,QAAA,EAAU,CAAA,EAAE,EAClD,QAAA,EAAA,gBAAA,GACG,SACA,cAAA,CAAe,MAAA,EAAQ,KAAA,EAAO,IAAA,IAAQ,EAAE,CAAA,EAC9C;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useTheme } from '@mui/material/styles';
|
|
3
|
-
import LightModeOutlinedIcon from '@mui/icons-material/LightModeOutlined';
|
|
4
|
-
import DarkModeOutlinedIcon from '@mui/icons-material/DarkModeOutlined';
|
|
5
|
-
import { useApi, appThemeApiRef } from '@backstage/core-plugin-api';
|
|
6
|
-
import { IconButtonComponent } from '../iconButtonComponent/IconButtonComponent.esm.js';
|
|
7
|
-
|
|
8
|
-
const ToogleTheme = () => {
|
|
9
|
-
const appThemeApi = useApi(appThemeApiRef);
|
|
10
|
-
const theme = useTheme();
|
|
11
|
-
const isDarkMode = theme.palette.mode === "dark";
|
|
12
|
-
const tooltipTitle = isDarkMode ? "Select theme Light Theme" : "Select theme Dark Theme";
|
|
13
|
-
const themeIds = appThemeApi.getInstalledThemes();
|
|
14
|
-
const handleSetTheme = (e) => {
|
|
15
|
-
const newThemeId = isDarkMode ? "light" : "dark";
|
|
16
|
-
e.preventDefault();
|
|
17
|
-
e.stopPropagation();
|
|
18
|
-
if (themeIds.some((it) => it.id === newThemeId)) {
|
|
19
|
-
appThemeApi.setActiveThemeId(newThemeId);
|
|
20
|
-
} else {
|
|
21
|
-
appThemeApi.setActiveThemeId(void 0);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
return /* @__PURE__ */ jsx(
|
|
25
|
-
IconButtonComponent,
|
|
26
|
-
{
|
|
27
|
-
title: tooltipTitle,
|
|
28
|
-
handleClick: handleSetTheme,
|
|
29
|
-
color: "inherit",
|
|
30
|
-
label: "Toggle-theme",
|
|
31
|
-
children: isDarkMode ? /* @__PURE__ */ jsx(LightModeOutlinedIcon, {}) : /* @__PURE__ */ jsx(DarkModeOutlinedIcon, {})
|
|
32
|
-
}
|
|
33
|
-
);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export { ToogleTheme };
|
|
37
|
-
//# sourceMappingURL=ToggleTheme.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleTheme.esm.js","sources":["../../../../src/components/headerComponent/toggleTheme/ToggleTheme.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles';\nimport LightModeOutlinedIcon from '@mui/icons-material/LightModeOutlined';\nimport DarkModeOutlinedIcon from '@mui/icons-material/DarkModeOutlined';\nimport { appThemeApiRef, useApi } from '@backstage/core-plugin-api';\nimport { IconButtonComponent } from '../iconButtonComponent/IconButtonComponent';\n\nexport const ToogleTheme = () => {\n const appThemeApi = useApi(appThemeApiRef);\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n const tooltipTitle = isDarkMode\n ? 'Select theme Light Theme'\n : 'Select theme Dark Theme';\n const themeIds = appThemeApi.getInstalledThemes();\n\n const handleSetTheme = (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n const newThemeId = isDarkMode ? 'light' : 'dark';\n e.preventDefault();\n e.stopPropagation();\n if (themeIds.some(it => it.id === newThemeId)) {\n appThemeApi.setActiveThemeId(newThemeId);\n } else {\n appThemeApi.setActiveThemeId(undefined);\n }\n };\n\n return (\n <IconButtonComponent\n title={tooltipTitle}\n handleClick={handleSetTheme}\n color=\"inherit\"\n label=\"Toggle-theme\"\n >\n {isDarkMode ? <LightModeOutlinedIcon /> : <DarkModeOutlinedIcon />}\n </IconButtonComponent>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,cAAc,MAAM;AAC/B,EAAA,MAAM,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,MAAA;AAC1C,EAAA,MAAM,YAAA,GAAe,aACjB,0BAAA,GACA,yBAAA;AACJ,EAAA,MAAM,QAAA,GAAW,YAAY,kBAAA,EAAmB;AAEhD,EAAA,MAAM,cAAA,GAAiB,CACrB,CAAA,KACG;AACH,IAAA,MAAM,UAAA,GAAa,aAAa,OAAA,GAAU,MAAA;AAC1C,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,IAAI,SAAS,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,EAAA,KAAO,UAAU,CAAA,EAAG;AAC7C,MAAA,WAAA,CAAY,iBAAiB,UAAU,CAAA;AAAA,IACzC,CAAA,MAAO;AACL,MAAA,WAAA,CAAY,iBAAiB,MAAS,CAAA;AAAA,IACxC;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EAAa,cAAA;AAAA,MACb,KAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAM,cAAA;AAAA,MAEL,QAAA,EAAA,UAAA,mBAAa,GAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA,uBAAM,oBAAA,EAAA,EAAqB;AAAA;AAAA,GAClE;AAEJ;;;;"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { useRef, useEffect, useCallback } from 'react';
|
|
2
|
-
|
|
3
|
-
const useDebouncedCallback = (callback, delay) => {
|
|
4
|
-
const timeoutRef = useRef(null);
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
return () => {
|
|
7
|
-
if (timeoutRef.current) {
|
|
8
|
-
clearTimeout(timeoutRef.current);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
}, []);
|
|
12
|
-
return useCallback(
|
|
13
|
-
(...args) => {
|
|
14
|
-
if (timeoutRef.current) {
|
|
15
|
-
clearTimeout(timeoutRef.current);
|
|
16
|
-
}
|
|
17
|
-
timeoutRef.current = setTimeout(() => {
|
|
18
|
-
callback(...args);
|
|
19
|
-
}, delay);
|
|
20
|
-
},
|
|
21
|
-
[callback, delay]
|
|
22
|
-
);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export { useDebouncedCallback };
|
|
26
|
-
//# sourceMappingURL=useDebouncedCallback.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDebouncedCallback.esm.js","sources":["../../src/hooks/useDebouncedCallback.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useRef, useEffect, useCallback } from 'react';\n\nexport const useDebouncedCallback = <T extends (...args: any[]) => void>(\n callback: T,\n delay: number,\n) => {\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return useCallback(\n (...args: Parameters<T>) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => {\n callback(...args);\n }, delay);\n },\n [callback, delay],\n );\n};\n"],"names":[],"mappings":";;AAiBO,MAAM,oBAAA,GAAuB,CAClC,QAAA,EACA,KAAA,KACG;AACH,EAAA,MAAM,UAAA,GAAa,OAA8B,IAAI,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,WAAA;AAAA,IACL,IAAI,IAAA,KAAwB;AAC1B,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,UAAA,CAAW,OAAA,GAAU,WAAW,MAAM;AACpC,QAAA,QAAA,CAAS,GAAG,IAAI,CAAA;AAAA,MAClB,GAAG,KAAK,CAAA;AAAA,IACV,CAAA;AAAA,IACA,CAAC,UAAU,KAAK;AAAA,GAClB;AACF;;;;"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import Typography from '@mui/material/Typography';
|
|
3
|
-
|
|
4
|
-
const highlightMatch = (text, query) => {
|
|
5
|
-
if (!query) return /* @__PURE__ */ jsx(Fragment, { children: text });
|
|
6
|
-
const escapeRegex = (input) => input.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
|
-
const escapedQuery = escapeRegex(query);
|
|
8
|
-
const regex = new RegExp(`(${escapedQuery})`, "i");
|
|
9
|
-
const parts = text.split(regex);
|
|
10
|
-
return /* @__PURE__ */ jsx(Fragment, { children: parts.map(
|
|
11
|
-
(part, index) => regex.test(part) ? /* @__PURE__ */ jsx(
|
|
12
|
-
Typography,
|
|
13
|
-
{
|
|
14
|
-
component: "span",
|
|
15
|
-
sx: { fontWeight: "normal" },
|
|
16
|
-
children: part
|
|
17
|
-
},
|
|
18
|
-
`${part}-${index}`
|
|
19
|
-
) : /* @__PURE__ */ jsx(
|
|
20
|
-
Typography,
|
|
21
|
-
{
|
|
22
|
-
component: "span",
|
|
23
|
-
sx: { fontWeight: "bold" },
|
|
24
|
-
children: part
|
|
25
|
-
},
|
|
26
|
-
`${part}-${index}`
|
|
27
|
-
)
|
|
28
|
-
) });
|
|
29
|
-
};
|
|
30
|
-
const createSearchLink = (searchTerm) => {
|
|
31
|
-
return `/search?query=${encodeURIComponent(searchTerm)}`;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export { createSearchLink, highlightMatch };
|
|
35
|
-
//# sourceMappingURL=stringUtils.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringUtils.esm.js","sources":["../../src/utils/stringUtils.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Typography from '@mui/material/Typography';\n\n/**\n * Highlights the substring that matches the query term.\n * @param text The full text to render.\n * @param query The query term to highlight.\n * @returns JSX.Element with highlighted matching substring.\n */\nexport const highlightMatch = (text: string, query: string) => {\n if (!query) return <>{text}</>;\n\n const escapeRegex = (input: string) =>\n input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const escapedQuery = escapeRegex(query);\n\n const regex = new RegExp(`(${escapedQuery})`, 'i');\n const parts = text.split(regex);\n\n return (\n <>\n {parts.map((part, index) =>\n regex.test(part) ? (\n <Typography\n key={`${part}-${index}`}\n component=\"span\"\n sx={{ fontWeight: 'normal' }}\n >\n {part}\n </Typography>\n ) : (\n <Typography\n key={`${part}-${index}`}\n component=\"span\"\n sx={{ fontWeight: 'bold' }}\n >\n {part}\n </Typography>\n ),\n )}\n </>\n );\n};\n\nexport const createSearchLink = (searchTerm: string) => {\n return `/search?query=${encodeURIComponent(searchTerm)}`;\n};\n"],"names":[],"mappings":";;;AAwBO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAc,KAAA,KAAkB;AAC7D,EAAA,IAAI,CAAC,KAAA,EAAO,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,IAAA,EAAK,CAAA;AAE3B,EAAA,MAAM,cAAc,CAAC,KAAA,KACnB,KAAA,CAAM,OAAA,CAAQ,uBAAuB,MAAM,CAAA;AAC7C,EAAA,MAAM,YAAA,GAAe,YAAY,KAAK,CAAA;AAEtC,EAAA,MAAM,QAAQ,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,YAAY,KAAK,GAAG,CAAA;AACjD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAE9B,EAAA,uCAEK,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,IAAA,EAAM,KAAA,KAChB,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,mBACb,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,MAAA;AAAA,QACV,EAAA,EAAI,EAAE,UAAA,EAAY,QAAA,EAAS;AAAA,QAE1B,QAAA,EAAA;AAAA,OAAA;AAAA,MAJI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAKvB,mBAEA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,MAAA;AAAA,QACV,EAAA,EAAI,EAAE,UAAA,EAAY,MAAA,EAAO;AAAA,QAExB,QAAA,EAAA;AAAA,OAAA;AAAA,MAJI,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA;AAKvB,GAEJ,EACF,CAAA;AAEJ;AAEO,MAAM,gBAAA,GAAmB,CAAC,UAAA,KAAuB;AACtD,EAAA,OAAO,CAAA,cAAA,EAAiB,kBAAA,CAAmB,UAAU,CAAC,CAAA,CAAA;AACxD;;;;"}
|