@verdaccio/ui-components 5.0.0-next-9.24 → 5.0.0-next-9.26

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 (296) hide show
  1. package/README.md +20 -0
  2. package/build/api/use-data.d.ts +2 -2
  3. package/build/api/use-data.js +2 -2
  4. package/build/api/use-data.js.map +1 -1
  5. package/build/api/use-data.mjs +2 -2
  6. package/build/api/use-data.mjs.map +1 -1
  7. package/build/components/CopyClipboard/CopyToClipBoard.d.ts +1 -0
  8. package/build/components/CopyClipboard/CopyToClipBoard.js +36 -17
  9. package/build/components/CopyClipboard/CopyToClipBoard.js.map +1 -1
  10. package/build/components/CopyClipboard/CopyToClipBoard.mjs +36 -19
  11. package/build/components/CopyClipboard/CopyToClipBoard.mjs.map +1 -1
  12. package/build/components/CopyClipboard/utils.d.ts +2 -1
  13. package/build/components/CopyClipboard/utils.js +6 -4
  14. package/build/components/CopyClipboard/utils.js.map +1 -1
  15. package/build/components/CopyClipboard/utils.mjs +6 -4
  16. package/build/components/CopyClipboard/utils.mjs.map +1 -1
  17. package/build/components/DocsLink/DocsLink.d.ts +8 -0
  18. package/build/components/DocsLink/DocsLink.js +40 -0
  19. package/build/components/DocsLink/DocsLink.js.map +1 -0
  20. package/build/components/DocsLink/DocsLink.mjs +35 -0
  21. package/build/components/DocsLink/DocsLink.mjs.map +1 -0
  22. package/build/components/DocsLink/index.d.ts +1 -0
  23. package/build/components/DocsLink/index.js +3 -0
  24. package/build/components/DocsLink/index.mjs +1 -0
  25. package/build/components/Help/Help.d.ts +13 -0
  26. package/build/components/Help/Help.js +280 -36
  27. package/build/components/Help/Help.js.map +1 -1
  28. package/build/components/Help/Help.mjs +274 -39
  29. package/build/components/Help/Help.mjs.map +1 -1
  30. package/build/components/Help/styles.d.ts +29 -0
  31. package/build/components/Help/styles.js +86 -1
  32. package/build/components/Help/styles.js.map +1 -1
  33. package/build/components/Help/styles.mjs +82 -2
  34. package/build/components/Help/styles.mjs.map +1 -1
  35. package/build/components/Icons/Managers/Bun.d.ts +2 -0
  36. package/build/components/Icons/Managers/Bun2.js +18 -0
  37. package/build/components/Icons/Managers/Bun2.js.map +1 -0
  38. package/build/components/Icons/Managers/Bun2.mjs +16 -0
  39. package/build/components/Icons/Managers/Bun2.mjs.map +1 -0
  40. package/build/components/Icons/Managers/bun.js +6 -0
  41. package/build/components/Icons/Managers/bun.js.map +1 -0
  42. package/build/components/Icons/Managers/bun.mjs +6 -0
  43. package/build/components/Icons/Managers/bun.mjs.map +1 -0
  44. package/build/components/Icons/Managers/bun.svg +1 -0
  45. package/build/components/Icons/Managers/index.d.ts +1 -0
  46. package/build/components/Icons/Managers/index.js +2 -0
  47. package/build/components/Icons/Managers/index.mjs +2 -1
  48. package/build/components/Icons/index.js +3 -0
  49. package/build/components/Icons/index.mjs +3 -1
  50. package/build/components/Install/Install.d.ts +2 -0
  51. package/build/components/Install/Install.js +30 -2
  52. package/build/components/Install/Install.js.map +1 -1
  53. package/build/components/Install/Install.mjs +30 -3
  54. package/build/components/Install/Install.mjs.map +1 -1
  55. package/build/components/Install/InstallListItem.d.ts +2 -1
  56. package/build/components/Install/InstallListItem.js +17 -0
  57. package/build/components/Install/InstallListItem.js.map +1 -1
  58. package/build/components/Install/InstallListItem.mjs +17 -0
  59. package/build/components/Install/InstallListItem.mjs.map +1 -1
  60. package/build/components/Loading/PackageListSkeleton.d.ts +3 -0
  61. package/build/components/Loading/PackageListSkeleton.js +70 -0
  62. package/build/components/Loading/PackageListSkeleton.js.map +1 -0
  63. package/build/components/Loading/PackageListSkeleton.mjs +65 -0
  64. package/build/components/Loading/PackageListSkeleton.mjs.map +1 -0
  65. package/build/components/Loading/VersionSkeleton.d.ts +3 -0
  66. package/build/components/Loading/VersionSkeleton.js +119 -0
  67. package/build/components/Loading/VersionSkeleton.js.map +1 -0
  68. package/build/components/Loading/VersionSkeleton.mjs +111 -0
  69. package/build/components/Loading/VersionSkeleton.mjs.map +1 -0
  70. package/build/components/Loading/index.d.ts +2 -0
  71. package/build/components/Loading/index.js +4 -0
  72. package/build/components/Loading/index.mjs +4 -1
  73. package/build/components/Package/Package.js +5 -1
  74. package/build/components/Package/Package.js.map +1 -1
  75. package/build/components/Package/Package.mjs +6 -2
  76. package/build/components/Package/Package.mjs.map +1 -1
  77. package/build/components/Package/styles.d.ts +3 -0
  78. package/build/components/Package/styles.js +8 -0
  79. package/build/components/Package/styles.js.map +1 -1
  80. package/build/components/Package/styles.mjs +8 -1
  81. package/build/components/Package/styles.mjs.map +1 -1
  82. package/build/components/PackageList/PackageList.js +4 -4
  83. package/build/components/PackageList/PackageList.js.map +1 -1
  84. package/build/components/PackageList/PackageList.mjs +5 -5
  85. package/build/components/PackageList/PackageList.mjs.map +1 -1
  86. package/build/components/PackageList/PackageListToolbar.d.ts +15 -0
  87. package/build/components/PackageList/PackageListToolbar.js +127 -0
  88. package/build/components/PackageList/PackageListToolbar.js.map +1 -0
  89. package/build/components/PackageList/PackageListToolbar.mjs +119 -0
  90. package/build/components/PackageList/PackageListToolbar.mjs.map +1 -0
  91. package/build/components/PackageList/filterPackages.d.ts +16 -0
  92. package/build/components/PackageList/filterPackages.js +37 -0
  93. package/build/components/PackageList/filterPackages.js.map +1 -0
  94. package/build/components/PackageList/filterPackages.mjs +34 -0
  95. package/build/components/PackageList/filterPackages.mjs.map +1 -0
  96. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js +18 -7
  97. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js.map +1 -1
  98. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs +18 -7
  99. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs.map +1 -1
  100. package/build/components/RegistryInfoDialog/types.d.ts +1 -0
  101. package/build/components/Search/AutoComplete/AutoComplete.d.ts +3 -0
  102. package/build/components/Search/AutoComplete/AutoComplete.js +3 -1
  103. package/build/components/Search/AutoComplete/AutoComplete.js.map +1 -1
  104. package/build/components/Search/AutoComplete/AutoComplete.mjs +3 -1
  105. package/build/components/Search/AutoComplete/AutoComplete.mjs.map +1 -1
  106. package/build/components/Search/Search.js +28 -1
  107. package/build/components/Search/Search.js.map +1 -1
  108. package/build/components/Search/Search.mjs +31 -5
  109. package/build/components/Search/Search.mjs.map +1 -1
  110. package/build/components/Search/SearchItem.d.ts +12 -1
  111. package/build/components/Search/SearchItem.js +53 -70
  112. package/build/components/Search/SearchItem.js.map +1 -1
  113. package/build/components/Search/SearchItem.mjs +51 -67
  114. package/build/components/Search/SearchItem.mjs.map +1 -1
  115. package/build/components/Search/utils.d.ts +10 -0
  116. package/build/components/Search/utils.js +28 -1
  117. package/build/components/Search/utils.js.map +1 -1
  118. package/build/components/Search/utils.mjs +26 -2
  119. package/build/components/Search/utils.mjs.map +1 -1
  120. package/build/components/SettingsMenu/SettingsMenu.js +2 -2
  121. package/build/components/SettingsMenu/SettingsMenu.mjs +1 -1
  122. package/build/components/Versions/Versions.js +8 -2
  123. package/build/components/Versions/Versions.js.map +1 -1
  124. package/build/components/Versions/Versions.mjs +8 -2
  125. package/build/components/Versions/Versions.mjs.map +1 -1
  126. package/build/components/VisuallyHidden/index.d.ts +5 -0
  127. package/build/components/VisuallyHidden/index.js +17 -0
  128. package/build/components/VisuallyHidden/index.js.map +1 -0
  129. package/build/components/VisuallyHidden/index.mjs +15 -0
  130. package/build/components/VisuallyHidden/index.mjs.map +1 -0
  131. package/build/configuration.js +2 -1
  132. package/build/configuration.js.map +1 -1
  133. package/build/configuration.mjs +2 -1
  134. package/build/configuration.mjs.map +1 -1
  135. package/build/i18n/crowdin/ui.js +68 -11
  136. package/build/i18n/crowdin/ui.js.map +1 -1
  137. package/build/i18n/crowdin/ui.json +64 -11
  138. package/build/i18n/crowdin/ui.mjs +67 -12
  139. package/build/i18n/crowdin/ui.mjs.map +1 -1
  140. package/build/i18n/download_translations/cs-CZ/ui.js +68 -11
  141. package/build/i18n/download_translations/cs-CZ/ui.js.map +1 -1
  142. package/build/i18n/download_translations/cs-CZ/ui.json +64 -11
  143. package/build/i18n/download_translations/cs-CZ/ui.mjs +67 -12
  144. package/build/i18n/download_translations/cs-CZ/ui.mjs.map +1 -1
  145. package/build/i18n/download_translations/de-DE/ui.js +68 -11
  146. package/build/i18n/download_translations/de-DE/ui.js.map +1 -1
  147. package/build/i18n/download_translations/de-DE/ui.json +64 -11
  148. package/build/i18n/download_translations/de-DE/ui.mjs +67 -12
  149. package/build/i18n/download_translations/de-DE/ui.mjs.map +1 -1
  150. package/build/i18n/download_translations/es-ES/ui.js +68 -11
  151. package/build/i18n/download_translations/es-ES/ui.js.map +1 -1
  152. package/build/i18n/download_translations/es-ES/ui.json +64 -11
  153. package/build/i18n/download_translations/es-ES/ui.mjs +67 -12
  154. package/build/i18n/download_translations/es-ES/ui.mjs.map +1 -1
  155. package/build/i18n/download_translations/fr-FR/ui.js +68 -11
  156. package/build/i18n/download_translations/fr-FR/ui.js.map +1 -1
  157. package/build/i18n/download_translations/fr-FR/ui.json +64 -11
  158. package/build/i18n/download_translations/fr-FR/ui.mjs +67 -12
  159. package/build/i18n/download_translations/fr-FR/ui.mjs.map +1 -1
  160. package/build/i18n/download_translations/ga-IE/ui.js +68 -11
  161. package/build/i18n/download_translations/ga-IE/ui.js.map +1 -1
  162. package/build/i18n/download_translations/ga-IE/ui.json +64 -11
  163. package/build/i18n/download_translations/ga-IE/ui.mjs +67 -12
  164. package/build/i18n/download_translations/ga-IE/ui.mjs.map +1 -1
  165. package/build/i18n/download_translations/gl-ES/ui.js +68 -11
  166. package/build/i18n/download_translations/gl-ES/ui.js.map +1 -1
  167. package/build/i18n/download_translations/gl-ES/ui.json +64 -11
  168. package/build/i18n/download_translations/gl-ES/ui.mjs +67 -12
  169. package/build/i18n/download_translations/gl-ES/ui.mjs.map +1 -1
  170. package/build/i18n/download_translations/it-IT/ui.js +68 -11
  171. package/build/i18n/download_translations/it-IT/ui.js.map +1 -1
  172. package/build/i18n/download_translations/it-IT/ui.json +64 -11
  173. package/build/i18n/download_translations/it-IT/ui.mjs +67 -12
  174. package/build/i18n/download_translations/it-IT/ui.mjs.map +1 -1
  175. package/build/i18n/download_translations/ko-KR/ui.js +68 -11
  176. package/build/i18n/download_translations/ko-KR/ui.js.map +1 -1
  177. package/build/i18n/download_translations/ko-KR/ui.json +64 -11
  178. package/build/i18n/download_translations/ko-KR/ui.mjs +67 -12
  179. package/build/i18n/download_translations/ko-KR/ui.mjs.map +1 -1
  180. package/build/i18n/download_translations/pl-PL/ui.js +68 -11
  181. package/build/i18n/download_translations/pl-PL/ui.js.map +1 -1
  182. package/build/i18n/download_translations/pl-PL/ui.json +64 -11
  183. package/build/i18n/download_translations/pl-PL/ui.mjs +67 -12
  184. package/build/i18n/download_translations/pl-PL/ui.mjs.map +1 -1
  185. package/build/i18n/download_translations/pt-BR/ui.js +68 -11
  186. package/build/i18n/download_translations/pt-BR/ui.js.map +1 -1
  187. package/build/i18n/download_translations/pt-BR/ui.json +64 -11
  188. package/build/i18n/download_translations/pt-BR/ui.mjs +67 -12
  189. package/build/i18n/download_translations/pt-BR/ui.mjs.map +1 -1
  190. package/build/i18n/download_translations/ru-RU/ui.js +68 -11
  191. package/build/i18n/download_translations/ru-RU/ui.js.map +1 -1
  192. package/build/i18n/download_translations/ru-RU/ui.json +64 -11
  193. package/build/i18n/download_translations/ru-RU/ui.mjs +67 -12
  194. package/build/i18n/download_translations/ru-RU/ui.mjs.map +1 -1
  195. package/build/i18n/download_translations/sr-CS/ui.js +66 -12
  196. package/build/i18n/download_translations/sr-CS/ui.js.map +1 -1
  197. package/build/i18n/download_translations/sr-CS/ui.json +64 -11
  198. package/build/i18n/download_translations/sr-CS/ui.mjs +66 -13
  199. package/build/i18n/download_translations/sr-CS/ui.mjs.map +1 -1
  200. package/build/i18n/download_translations/tr-TR/ui.js +68 -11
  201. package/build/i18n/download_translations/tr-TR/ui.js.map +1 -1
  202. package/build/i18n/download_translations/tr-TR/ui.json +64 -11
  203. package/build/i18n/download_translations/tr-TR/ui.mjs +67 -12
  204. package/build/i18n/download_translations/tr-TR/ui.mjs.map +1 -1
  205. package/build/i18n/download_translations/vi-VN/ui.js +66 -12
  206. package/build/i18n/download_translations/vi-VN/ui.js.map +1 -1
  207. package/build/i18n/download_translations/vi-VN/ui.json +64 -11
  208. package/build/i18n/download_translations/vi-VN/ui.mjs +66 -13
  209. package/build/i18n/download_translations/vi-VN/ui.mjs.map +1 -1
  210. package/build/i18n/download_translations/yo-NG/ui.js +66 -12
  211. package/build/i18n/download_translations/yo-NG/ui.js.map +1 -1
  212. package/build/i18n/download_translations/yo-NG/ui.json +64 -11
  213. package/build/i18n/download_translations/yo-NG/ui.mjs +66 -13
  214. package/build/i18n/download_translations/yo-NG/ui.mjs.map +1 -1
  215. package/build/i18n/download_translations/zh-CN/ui.js +68 -11
  216. package/build/i18n/download_translations/zh-CN/ui.js.map +1 -1
  217. package/build/i18n/download_translations/zh-CN/ui.json +64 -11
  218. package/build/i18n/download_translations/zh-CN/ui.mjs +67 -12
  219. package/build/i18n/download_translations/zh-CN/ui.mjs.map +1 -1
  220. package/build/i18n/download_translations/zh-TW/ui.js +68 -11
  221. package/build/i18n/download_translations/zh-TW/ui.js.map +1 -1
  222. package/build/i18n/download_translations/zh-TW/ui.json +64 -11
  223. package/build/i18n/download_translations/zh-TW/ui.mjs +67 -12
  224. package/build/i18n/download_translations/zh-TW/ui.mjs.map +1 -1
  225. package/build/i18n/loadTranslationFile.d.ts +2 -2
  226. package/build/i18n/loadTranslationFile.js +2 -2
  227. package/build/i18n/loadTranslationFile.js.map +1 -1
  228. package/build/i18n/loadTranslationFile.mjs +2 -2
  229. package/build/i18n/loadTranslationFile.mjs.map +1 -1
  230. package/build/index.d.ts +1 -0
  231. package/build/index.js +8 -0
  232. package/build/index.mjs +4 -2
  233. package/build/mockServiceWorker.js +1 -0
  234. package/build/pages/Version/Version.js +2 -2
  235. package/build/pages/Version/Version.js.map +1 -1
  236. package/build/pages/Version/Version.mjs +2 -2
  237. package/build/pages/Version/Version.mjs.map +1 -1
  238. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js +3 -1
  239. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js.map +1 -1
  240. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs +3 -1
  241. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs.map +1 -1
  242. package/build/providers/ManifestsProvider/ManifestsProvider.d.ts +3 -0
  243. package/build/providers/ManifestsProvider/ManifestsProvider.js +9 -2
  244. package/build/providers/ManifestsProvider/ManifestsProvider.js.map +1 -1
  245. package/build/providers/ManifestsProvider/ManifestsProvider.mjs +10 -4
  246. package/build/providers/ManifestsProvider/ManifestsProvider.mjs.map +1 -1
  247. package/build/sections/Detail/ContainerContent.js +8 -0
  248. package/build/sections/Detail/ContainerContent.js.map +1 -1
  249. package/build/sections/Detail/ContainerContent.mjs +8 -1
  250. package/build/sections/Detail/ContainerContent.mjs.map +1 -1
  251. package/build/sections/Detail/Detail.d.ts +3 -6
  252. package/build/sections/Detail/Detail.js +13 -14
  253. package/build/sections/Detail/Detail.js.map +1 -1
  254. package/build/sections/Detail/Detail.mjs +14 -15
  255. package/build/sections/Detail/Detail.mjs.map +1 -1
  256. package/build/sections/Detail/Tabs.d.ts +3 -2
  257. package/build/sections/Detail/Tabs.js +9 -4
  258. package/build/sections/Detail/Tabs.js.map +1 -1
  259. package/build/sections/Detail/Tabs.mjs +9 -4
  260. package/build/sections/Detail/Tabs.mjs.map +1 -1
  261. package/build/sections/Footer/Footer.js +24 -3
  262. package/build/sections/Footer/Footer.js.map +1 -1
  263. package/build/sections/Footer/Footer.mjs +24 -4
  264. package/build/sections/Footer/Footer.mjs.map +1 -1
  265. package/build/sections/Footer/styles.d.ts +6 -0
  266. package/build/sections/Footer/styles.js +21 -2
  267. package/build/sections/Footer/styles.js.map +1 -1
  268. package/build/sections/Footer/styles.mjs +21 -3
  269. package/build/sections/Footer/styles.mjs.map +1 -1
  270. package/build/sections/Header/HeaderSettingsDialog.js +39 -10
  271. package/build/sections/Header/HeaderSettingsDialog.js.map +1 -1
  272. package/build/sections/Header/HeaderSettingsDialog.mjs +39 -10
  273. package/build/sections/Header/HeaderSettingsDialog.mjs.map +1 -1
  274. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.d.ts +1 -4
  275. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js +98 -15
  276. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js.map +1 -1
  277. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs +100 -15
  278. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
  279. package/build/sections/Home/Home.js +58 -2
  280. package/build/sections/Home/Home.js.map +1 -1
  281. package/build/sections/Home/Home.mjs +60 -4
  282. package/build/sections/Home/Home.mjs.map +1 -1
  283. package/build/utils/cli-utils.d.ts +10 -0
  284. package/build/utils/cli-utils.js +26 -0
  285. package/build/utils/cli-utils.js.map +1 -1
  286. package/build/utils/cli-utils.mjs +23 -1
  287. package/build/utils/cli-utils.mjs.map +1 -1
  288. package/build/utils/index.d.ts +1 -1
  289. package/build/utils/index.js +4 -0
  290. package/build/utils/index.mjs +2 -2
  291. package/build/utils/markdown.d.ts +6 -0
  292. package/build/utils/markdown.js +16 -0
  293. package/build/utils/markdown.js.map +1 -0
  294. package/build/utils/markdown.mjs +13 -0
  295. package/build/utils/markdown.mjs.map +1 -0
  296. package/package.json +8 -8
@@ -16,12 +16,12 @@ let react_virtualized_dist_commonjs_CellMeasurer = require("react-virtualized/di
16
16
  let react_virtualized_dist_commonjs_List = require("react-virtualized/dist/commonjs/List");
17
17
  let react_virtualized_dist_commonjs_WindowScroller = require("react-virtualized/dist/commonjs/WindowScroller");
18
18
  //#region src/components/PackageList/PackageList.tsx
19
- var cache = new react_virtualized_dist_commonjs_CellMeasurer.CellMeasurerCache({
20
- fixedWidth: true,
21
- defaultHeight: 100
22
- });
23
19
  var PackageList = ({ packages }) => {
24
20
  const { configOptions } = require_AppConfigurationProvider.useConfig();
21
+ const [cache] = (0, react.useState)(() => new react_virtualized_dist_commonjs_CellMeasurer.CellMeasurerCache({
22
+ fixedWidth: true,
23
+ defaultHeight: 100
24
+ }));
25
25
  const renderRow = ({ index, key, parent, style }) => {
26
26
  const { name, version, description, time, keywords, dist, homepage, bugs, author, license } = packages[index];
27
27
  const formattedLicense = require_utils.formatLicense(license);
@@ -1 +1 @@
1
- {"version":3,"file":"PackageList.js","names":["CellMeasurerCache","useConfig","CellMeasurer","Divider","Package","Help","DownloadProvider","WindowScroller","AutoSizer","List"],"sources":["../../../src/components/PackageList/PackageList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport React from 'react';\nimport { AutoSizer } from 'react-virtualized/dist/commonjs/AutoSizer';\nimport { CellMeasurer, CellMeasurerCache } from 'react-virtualized/dist/commonjs/CellMeasurer';\nimport type { ListRowProps } from 'react-virtualized/dist/commonjs/List';\nimport { List } from 'react-virtualized/dist/commonjs/List';\nimport { WindowScroller } from 'react-virtualized/dist/commonjs/WindowScroller';\n\nimport { DownloadProvider, Help, Package, useConfig } from '../..';\nimport type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\nimport { utils } from '../../utils';\n\ninterface Props {\n packages: ManifestWeb[];\n}\n\nconst cache = new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: 100,\n});\n\nconst PackageList: React.FC<Props> = ({ packages }) => {\n const { configOptions } = useConfig();\n const renderRow = ({ index, key, parent, style }: ListRowProps) => {\n const { name, version, description, time, keywords, dist, homepage, bugs, author, license } =\n packages[index];\n // TODO: move format license to API side.\n const formattedLicense = utils.formatLicense(license);\n return (\n <CellMeasurer cache={cache} columnIndex={0} key={key} parent={parent} rowIndex={index}>\n <div style={style}>\n {index !== 0 && <Divider />}\n <Package\n author={author}\n bugs={bugs}\n description={description}\n dist={dist}\n homepage={homepage}\n keywords={keywords}\n license={formattedLicense}\n name={name}\n showDownload={configOptions.showDownloadTarball}\n time={time}\n version={version}\n />\n </div>\n </CellMeasurer>\n );\n };\n\n const hasPackages = packages?.length > 0;\n\n if (!hasPackages) {\n return <Help />;\n }\n\n return (\n <DownloadProvider>\n <WindowScroller>\n {({ height, isScrolling, scrollTop, onChildScroll }) => (\n <AutoSizer disableHeight={true}>\n {({ width }) => {\n return (\n <List\n autoHeight={true}\n deferredMeasurementCache={cache}\n height={height}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n overscanRowCount={3}\n rowCount={packages?.length}\n rowHeight={cache.rowHeight}\n rowRenderer={renderRow}\n scrollTop={scrollTop}\n width={width}\n />\n );\n }}\n </AutoSizer>\n )}\n </WindowScroller>\n </DownloadProvider>\n );\n};\n\nexport default PackageList;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,IAAM,QAAQ,IAAIA,6CAAAA,kBAAkB;CAClC,YAAY;CACZ,eAAe;AACjB,CAAC;AAED,IAAM,eAAgC,EAAE,eAAe;CACrD,MAAM,EAAE,kBAAkBC,iCAAAA,UAAU;CACpC,MAAM,aAAa,EAAE,OAAO,KAAK,QAAQ,YAA0B;EACjE,MAAM,EAAE,MAAM,SAAS,aAAa,MAAM,UAAU,MAAM,UAAU,MAAM,QAAQ,YAChF,SAAS;EAEX,MAAM,mBAAA,cAAA,cAAuC,OAAO;EACpD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6CAAAA,cAAD;GAAqB;GAAO,aAAa;GAAqB;GAAQ,UAAU;GAC9E,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAY;IAAZ,UAAA,CACG,UAAU,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAACC,sBAAAA,SAAD,CAAU,CAAA,GAC1B,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,SAAD;KACU;KACF;KACO;KACP;KACI;KACA;KACV,SAAS;KACH;KACN,cAAc,cAAc;KACtB;KACG;IACV,CAAA,CACE;;EACO,GAjBmC,GAiBnC;CAElB;CAIA,IAAI,EAFgB,UAAU,SAAS,IAGrC,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,SAAD,CAAO,CAAA;CAGhB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,kBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,+CAAAA,gBAAD,EAAA,WACI,EAAE,QAAQ,aAAa,WAAW,oBAClC,iBAAA,GAAA,kBAAA,IAAA,CAACC,0CAAAA,WAAD;EAAW,eAAe;EACtB,WAAA,EAAE,YAAY;GACd,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qCAAAA,MAAD;IACE,YAAY;IACZ,0BAA0B;IAClB;IACK;IACb,UAAU;IACV,kBAAkB;IAClB,UAAU,UAAU;IACpB,WAAW,MAAM;IACjB,aAAa;IACF;IACJ;GACR,CAAA;EAEL;CACS,CAAA,EAEC,CAAA,EACA,CAAA;AAEtB"}
1
+ {"version":3,"file":"PackageList.js","names":["useConfig","useState","CellMeasurerCache","CellMeasurer","Divider","Package","Help","DownloadProvider","WindowScroller","AutoSizer","List"],"sources":["../../../src/components/PackageList/PackageList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport React, { useState } from 'react';\nimport { AutoSizer } from 'react-virtualized/dist/commonjs/AutoSizer';\nimport { CellMeasurer, CellMeasurerCache } from 'react-virtualized/dist/commonjs/CellMeasurer';\nimport type { ListRowProps } from 'react-virtualized/dist/commonjs/List';\nimport { List } from 'react-virtualized/dist/commonjs/List';\nimport { WindowScroller } from 'react-virtualized/dist/commonjs/WindowScroller';\n\nimport { DownloadProvider, Help, Package, useConfig } from '../..';\nimport type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\nimport { utils } from '../../utils';\n\ninterface Props {\n packages: ManifestWeb[];\n}\n\nconst PackageList: React.FC<Props> = ({ packages }) => {\n const { configOptions } = useConfig();\n // heights are cached by row index: callers remount the list (key) when its rows change\n const [cache] = useState(() => new CellMeasurerCache({ fixedWidth: true, defaultHeight: 100 }));\n const renderRow = ({ index, key, parent, style }: ListRowProps) => {\n const { name, version, description, time, keywords, dist, homepage, bugs, author, license } =\n packages[index];\n // TODO: move format license to API side.\n const formattedLicense = utils.formatLicense(license);\n return (\n <CellMeasurer cache={cache} columnIndex={0} key={key} parent={parent} rowIndex={index}>\n <div style={style}>\n {index !== 0 && <Divider />}\n <Package\n author={author}\n bugs={bugs}\n description={description}\n dist={dist}\n homepage={homepage}\n keywords={keywords}\n license={formattedLicense}\n name={name}\n showDownload={configOptions.showDownloadTarball}\n time={time}\n version={version}\n />\n </div>\n </CellMeasurer>\n );\n };\n\n const hasPackages = packages?.length > 0;\n\n if (!hasPackages) {\n return <Help />;\n }\n\n return (\n <DownloadProvider>\n <WindowScroller>\n {({ height, isScrolling, scrollTop, onChildScroll }) => (\n <AutoSizer disableHeight={true}>\n {({ width }) => {\n return (\n <List\n autoHeight={true}\n deferredMeasurementCache={cache}\n height={height}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n overscanRowCount={3}\n rowCount={packages?.length}\n rowHeight={cache.rowHeight}\n rowRenderer={renderRow}\n scrollTop={scrollTop}\n width={width}\n />\n );\n }}\n </AutoSizer>\n )}\n </WindowScroller>\n </DownloadProvider>\n );\n};\n\nexport default PackageList;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,IAAM,eAAgC,EAAE,eAAe;CACrD,MAAM,EAAE,kBAAkBA,iCAAAA,UAAU;CAEpC,MAAM,CAAC,UAAA,GAASC,MAAAA,SAAAA,OAAe,IAAIC,6CAAAA,kBAAkB;EAAE,YAAY;EAAM,eAAe;CAAI,CAAC,CAAC;CAC9F,MAAM,aAAa,EAAE,OAAO,KAAK,QAAQ,YAA0B;EACjE,MAAM,EAAE,MAAM,SAAS,aAAa,MAAM,UAAU,MAAM,UAAU,MAAM,QAAQ,YAChF,SAAS;EAEX,MAAM,mBAAA,cAAA,cAAuC,OAAO;EACpD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6CAAAA,cAAD;GAAqB;GAAO,aAAa;GAAqB;GAAQ,UAAU;GAC9E,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAY;IAAZ,UAAA,CACG,UAAU,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAACC,sBAAAA,SAAD,CAAU,CAAA,GAC1B,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,SAAD;KACU;KACF;KACO;KACP;KACI;KACA;KACV,SAAS;KACH;KACN,cAAc,cAAc;KACtB;KACG;IACV,CAAA,CACE;;EACO,GAjBmC,GAiBnC;CAElB;CAIA,IAAI,EAFgB,UAAU,SAAS,IAGrC,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,SAAD,CAAO,CAAA;CAGhB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,kBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,+CAAAA,gBAAD,EAAA,WACI,EAAE,QAAQ,aAAa,WAAW,oBAClC,iBAAA,GAAA,kBAAA,IAAA,CAACC,0CAAAA,WAAD;EAAW,eAAe;EACtB,WAAA,EAAE,YAAY;GACd,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qCAAAA,MAAD;IACE,YAAY;IACZ,0BAA0B;IAClB;IACK;IACb,UAAU;IACV,kBAAkB;IAClB,UAAU,UAAU;IACpB,WAAW,MAAM;IACjB,aAAa;IACF;IACJ;GACR,CAAA;EAEL;CACS,CAAA,EAEC,CAAA,EACA,CAAA;AAEtB"}
@@ -5,7 +5,7 @@ import { DownloadProvider } from "../../providers/DownloadProvider/DownloadProvi
5
5
  import Package from "../Package/Package.mjs";
6
6
  import Help from "../Help/Help.mjs";
7
7
  import "../../index.mjs";
8
- import "react";
8
+ import { useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import Divider from "@mui/material/Divider";
11
11
  import { AutoSizer } from "react-virtualized/dist/commonjs/AutoSizer";
@@ -13,12 +13,12 @@ import { CellMeasurer, CellMeasurerCache } from "react-virtualized/dist/commonjs
13
13
  import { List } from "react-virtualized/dist/commonjs/List";
14
14
  import { WindowScroller } from "react-virtualized/dist/commonjs/WindowScroller";
15
15
  //#region src/components/PackageList/PackageList.tsx
16
- var cache = new CellMeasurerCache({
17
- fixedWidth: true,
18
- defaultHeight: 100
19
- });
20
16
  var PackageList = ({ packages }) => {
21
17
  const { configOptions } = useConfig();
18
+ const [cache] = useState(() => new CellMeasurerCache({
19
+ fixedWidth: true,
20
+ defaultHeight: 100
21
+ }));
22
22
  const renderRow = ({ index, key, parent, style }) => {
23
23
  const { name, version, description, time, keywords, dist, homepage, bugs, author, license } = packages[index];
24
24
  const formattedLicense = formatLicense(license);
@@ -1 +1 @@
1
- {"version":3,"file":"PackageList.mjs","names":["utils.formatLicense"],"sources":["../../../src/components/PackageList/PackageList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport React from 'react';\nimport { AutoSizer } from 'react-virtualized/dist/commonjs/AutoSizer';\nimport { CellMeasurer, CellMeasurerCache } from 'react-virtualized/dist/commonjs/CellMeasurer';\nimport type { ListRowProps } from 'react-virtualized/dist/commonjs/List';\nimport { List } from 'react-virtualized/dist/commonjs/List';\nimport { WindowScroller } from 'react-virtualized/dist/commonjs/WindowScroller';\n\nimport { DownloadProvider, Help, Package, useConfig } from '../..';\nimport type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\nimport { utils } from '../../utils';\n\ninterface Props {\n packages: ManifestWeb[];\n}\n\nconst cache = new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: 100,\n});\n\nconst PackageList: React.FC<Props> = ({ packages }) => {\n const { configOptions } = useConfig();\n const renderRow = ({ index, key, parent, style }: ListRowProps) => {\n const { name, version, description, time, keywords, dist, homepage, bugs, author, license } =\n packages[index];\n // TODO: move format license to API side.\n const formattedLicense = utils.formatLicense(license);\n return (\n <CellMeasurer cache={cache} columnIndex={0} key={key} parent={parent} rowIndex={index}>\n <div style={style}>\n {index !== 0 && <Divider />}\n <Package\n author={author}\n bugs={bugs}\n description={description}\n dist={dist}\n homepage={homepage}\n keywords={keywords}\n license={formattedLicense}\n name={name}\n showDownload={configOptions.showDownloadTarball}\n time={time}\n version={version}\n />\n </div>\n </CellMeasurer>\n );\n };\n\n const hasPackages = packages?.length > 0;\n\n if (!hasPackages) {\n return <Help />;\n }\n\n return (\n <DownloadProvider>\n <WindowScroller>\n {({ height, isScrolling, scrollTop, onChildScroll }) => (\n <AutoSizer disableHeight={true}>\n {({ width }) => {\n return (\n <List\n autoHeight={true}\n deferredMeasurementCache={cache}\n height={height}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n overscanRowCount={3}\n rowCount={packages?.length}\n rowHeight={cache.rowHeight}\n rowRenderer={renderRow}\n scrollTop={scrollTop}\n width={width}\n />\n );\n }}\n </AutoSizer>\n )}\n </WindowScroller>\n </DownloadProvider>\n );\n};\n\nexport default PackageList;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAM,QAAQ,IAAI,kBAAkB;CAClC,YAAY;CACZ,eAAe;AACjB,CAAC;AAED,IAAM,eAAgC,EAAE,eAAe;CACrD,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,aAAa,EAAE,OAAO,KAAK,QAAQ,YAA0B;EACjE,MAAM,EAAE,MAAM,SAAS,aAAa,MAAM,UAAU,MAAM,UAAU,MAAM,QAAQ,YAChF,SAAS;EAEX,MAAM,mBAAmBA,cAAoB,OAAO;EACpD,OACE,oBAAC,cAAD;GAAqB;GAAO,aAAa;GAAqB;GAAQ,UAAU;GAC9E,UAAA,qBAAC,OAAD;IAAY;IAAZ,UAAA,CACG,UAAU,KAAK,oBAAC,SAAD,CAAU,CAAA,GAC1B,oBAAC,SAAD;KACU;KACF;KACO;KACP;KACI;KACA;KACV,SAAS;KACH;KACN,cAAc,cAAc;KACtB;KACG;IACV,CAAA,CACE;;EACO,GAjBmC,GAiBnC;CAElB;CAIA,IAAI,EAFgB,UAAU,SAAS,IAGrC,OAAO,oBAAC,MAAD,CAAO,CAAA;CAGhB,OACE,oBAAC,kBAAD,EAAA,UACE,oBAAC,gBAAD,EAAA,WACI,EAAE,QAAQ,aAAa,WAAW,oBAClC,oBAAC,WAAD;EAAW,eAAe;EACtB,WAAA,EAAE,YAAY;GACd,OACE,oBAAC,MAAD;IACE,YAAY;IACZ,0BAA0B;IAClB;IACK;IACb,UAAU;IACV,kBAAkB;IAClB,UAAU,UAAU;IACpB,WAAW,MAAM;IACjB,aAAa;IACF;IACJ;GACR,CAAA;EAEL;CACS,CAAA,EAEC,CAAA,EACA,CAAA;AAEtB"}
1
+ {"version":3,"file":"PackageList.mjs","names":["utils.formatLicense"],"sources":["../../../src/components/PackageList/PackageList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport React, { useState } from 'react';\nimport { AutoSizer } from 'react-virtualized/dist/commonjs/AutoSizer';\nimport { CellMeasurer, CellMeasurerCache } from 'react-virtualized/dist/commonjs/CellMeasurer';\nimport type { ListRowProps } from 'react-virtualized/dist/commonjs/List';\nimport { List } from 'react-virtualized/dist/commonjs/List';\nimport { WindowScroller } from 'react-virtualized/dist/commonjs/WindowScroller';\n\nimport { DownloadProvider, Help, Package, useConfig } from '../..';\nimport type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\nimport { utils } from '../../utils';\n\ninterface Props {\n packages: ManifestWeb[];\n}\n\nconst PackageList: React.FC<Props> = ({ packages }) => {\n const { configOptions } = useConfig();\n // heights are cached by row index: callers remount the list (key) when its rows change\n const [cache] = useState(() => new CellMeasurerCache({ fixedWidth: true, defaultHeight: 100 }));\n const renderRow = ({ index, key, parent, style }: ListRowProps) => {\n const { name, version, description, time, keywords, dist, homepage, bugs, author, license } =\n packages[index];\n // TODO: move format license to API side.\n const formattedLicense = utils.formatLicense(license);\n return (\n <CellMeasurer cache={cache} columnIndex={0} key={key} parent={parent} rowIndex={index}>\n <div style={style}>\n {index !== 0 && <Divider />}\n <Package\n author={author}\n bugs={bugs}\n description={description}\n dist={dist}\n homepage={homepage}\n keywords={keywords}\n license={formattedLicense}\n name={name}\n showDownload={configOptions.showDownloadTarball}\n time={time}\n version={version}\n />\n </div>\n </CellMeasurer>\n );\n };\n\n const hasPackages = packages?.length > 0;\n\n if (!hasPackages) {\n return <Help />;\n }\n\n return (\n <DownloadProvider>\n <WindowScroller>\n {({ height, isScrolling, scrollTop, onChildScroll }) => (\n <AutoSizer disableHeight={true}>\n {({ width }) => {\n return (\n <List\n autoHeight={true}\n deferredMeasurementCache={cache}\n height={height}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n overscanRowCount={3}\n rowCount={packages?.length}\n rowHeight={cache.rowHeight}\n rowRenderer={renderRow}\n scrollTop={scrollTop}\n width={width}\n />\n );\n }}\n </AutoSizer>\n )}\n </WindowScroller>\n </DownloadProvider>\n );\n};\n\nexport default PackageList;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAM,eAAgC,EAAE,eAAe;CACrD,MAAM,EAAE,kBAAkB,UAAU;CAEpC,MAAM,CAAC,SAAS,eAAe,IAAI,kBAAkB;EAAE,YAAY;EAAM,eAAe;CAAI,CAAC,CAAC;CAC9F,MAAM,aAAa,EAAE,OAAO,KAAK,QAAQ,YAA0B;EACjE,MAAM,EAAE,MAAM,SAAS,aAAa,MAAM,UAAU,MAAM,UAAU,MAAM,QAAQ,YAChF,SAAS;EAEX,MAAM,mBAAmBA,cAAoB,OAAO;EACpD,OACE,oBAAC,cAAD;GAAqB;GAAO,aAAa;GAAqB;GAAQ,UAAU;GAC9E,UAAA,qBAAC,OAAD;IAAY;IAAZ,UAAA,CACG,UAAU,KAAK,oBAAC,SAAD,CAAU,CAAA,GAC1B,oBAAC,SAAD;KACU;KACF;KACO;KACP;KACI;KACA;KACV,SAAS;KACH;KACN,cAAc,cAAc;KACtB;KACG;IACV,CAAA,CACE;;EACO,GAjBmC,GAiBnC;CAElB;CAIA,IAAI,EAFgB,UAAU,SAAS,IAGrC,OAAO,oBAAC,MAAD,CAAO,CAAA;CAGhB,OACE,oBAAC,kBAAD,EAAA,UACE,oBAAC,gBAAD,EAAA,WACI,EAAE,QAAQ,aAAa,WAAW,oBAClC,oBAAC,WAAD;EAAW,eAAe;EACtB,WAAA,EAAE,YAAY;GACd,OACE,oBAAC,MAAD;IACE,YAAY;IACZ,0BAA0B;IAClB;IACK;IACb,UAAU;IACV,kBAAkB;IAClB,UAAU,UAAU;IACpB,WAAW,MAAM;IACjB,aAAa;IACF;IACJ;GACR,CAAA;EAEL;CACS,CAAA,EAEC,CAAA,EACA,CAAA;AAEtB"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { PackageSort } from './filterPackages';
3
+ type Props = {
4
+ query: string;
5
+ scope: string;
6
+ sort: PackageSort;
7
+ scopes: string[];
8
+ shown: number;
9
+ total: number;
10
+ onQueryChange: (query: string) => void;
11
+ onScopeChange: (scope: string) => void;
12
+ onSortChange: (sort: PackageSort) => void;
13
+ };
14
+ declare const PackageListToolbar: React.FC<Props>;
15
+ export default PackageListToolbar;
@@ -0,0 +1,127 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
+ const require_filterPackages = require("./filterPackages.js");
3
+ let react = require("react");
4
+ react = require_runtime.__toESM(react);
5
+ let react_i18next = require("react-i18next");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let _mui_material_Box = require("@mui/material/Box");
8
+ _mui_material_Box = require_runtime.__toESM(_mui_material_Box);
9
+ let _mui_material_Typography = require("@mui/material/Typography");
10
+ _mui_material_Typography = require_runtime.__toESM(_mui_material_Typography);
11
+ let _mui_material_MenuItem = require("@mui/material/MenuItem");
12
+ _mui_material_MenuItem = require_runtime.__toESM(_mui_material_MenuItem);
13
+ let _mui_material_TextField = require("@mui/material/TextField");
14
+ _mui_material_TextField = require_runtime.__toESM(_mui_material_TextField);
15
+ let _mui_icons_material_Search = require("@mui/icons-material/Search");
16
+ _mui_icons_material_Search = require_runtime.__toESM(_mui_icons_material_Search);
17
+ let _mui_material_InputAdornment = require("@mui/material/InputAdornment");
18
+ _mui_material_InputAdornment = require_runtime.__toESM(_mui_material_InputAdornment);
19
+ //#region src/components/PackageList/PackageListToolbar.tsx
20
+ var selectSx = (minWidth) => ({
21
+ flex: {
22
+ xs: "1 1 0",
23
+ sm: "0 0 auto"
24
+ },
25
+ minWidth: {
26
+ xs: 0,
27
+ sm: minWidth
28
+ }
29
+ });
30
+ var PackageListToolbar = ({ query, scope, sort, scopes, shown, total, onQueryChange, onScopeChange, onSortChange }) => {
31
+ const { t } = (0, react_i18next.useTranslation)();
32
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_Box.default, {
33
+ "data-testid": "package-list-toolbar",
34
+ sx: {
35
+ display: "flex",
36
+ flexWrap: "wrap",
37
+ alignItems: "center",
38
+ gap: 2,
39
+ px: 2,
40
+ pb: 2
41
+ },
42
+ children: [
43
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_TextField.default, {
44
+ onChange: (event) => onQueryChange(event.target.value),
45
+ placeholder: t("packageList.filter"),
46
+ size: "small",
47
+ slotProps: {
48
+ htmlInput: {
49
+ "aria-label": t("packageList.filter"),
50
+ "data-testid": "package-list-filter"
51
+ },
52
+ input: { startAdornment: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_InputAdornment.default, {
53
+ position: "start",
54
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_icons_material_Search.default, { fontSize: "small" })
55
+ }) }
56
+ },
57
+ sx: { flex: {
58
+ xs: "1 1 100%",
59
+ sm: "1 1 240px"
60
+ } },
61
+ type: "search",
62
+ value: query
63
+ }),
64
+ scopes.length > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_TextField.default, {
65
+ label: t("packageList.scope"),
66
+ onChange: (event) => onScopeChange(event.target.value),
67
+ select: true,
68
+ size: "small",
69
+ slotProps: {
70
+ htmlInput: { "data-testid": "package-list-scope" },
71
+ inputLabel: { shrink: true },
72
+ select: { displayEmpty: true }
73
+ },
74
+ sx: selectSx(160),
75
+ value: scope,
76
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_MenuItem.default, {
77
+ value: "",
78
+ children: t("packageList.all-scopes")
79
+ }), scopes.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_MenuItem.default, {
80
+ value: item,
81
+ children: item === "-" ? t("packageList.no-scope") : item
82
+ }, item))]
83
+ }),
84
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_TextField.default, {
85
+ label: t("packageList.sort"),
86
+ onChange: (event) => onSortChange(event.target.value),
87
+ select: true,
88
+ size: "small",
89
+ slotProps: { htmlInput: { "data-testid": "package-list-sort" } },
90
+ sx: selectSx(180),
91
+ value: sort,
92
+ children: [
93
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_MenuItem.default, {
94
+ value: require_filterPackages.PackageSort.DEFAULT,
95
+ children: t("packageList.sort-default")
96
+ }),
97
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_MenuItem.default, {
98
+ value: require_filterPackages.PackageSort.NAME,
99
+ children: t("packageList.sort-name")
100
+ }),
101
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_MenuItem.default, {
102
+ value: require_filterPackages.PackageSort.RECENT,
103
+ children: t("packageList.sort-recent")
104
+ })
105
+ ]
106
+ }),
107
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Typography.default, {
108
+ "aria-live": "polite",
109
+ color: "text.secondary",
110
+ "data-testid": "package-list-count",
111
+ sx: { width: {
112
+ xs: "100%",
113
+ sm: "auto"
114
+ } },
115
+ variant: "body2",
116
+ children: t("packageList.count", {
117
+ shown,
118
+ total
119
+ })
120
+ })
121
+ ]
122
+ });
123
+ };
124
+ //#endregion
125
+ exports.default = PackageListToolbar;
126
+
127
+ //# sourceMappingURL=PackageListToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageListToolbar.js","names":["useTranslation","Box","TextField","InputAdornment","SearchIcon","MenuItem","PackageSort","Typography"],"sources":["../../../src/components/PackageList/PackageListToolbar.tsx"],"sourcesContent":["import SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { NO_SCOPE, PackageSort } from './filterPackages';\n\ntype Props = {\n query: string;\n scope: string;\n sort: PackageSort;\n scopes: string[];\n shown: number;\n total: number;\n onQueryChange: (query: string) => void;\n onScopeChange: (scope: string) => void;\n onSortChange: (sort: PackageSort) => void;\n};\n\n// side by side on phones, natural width from sm up\nconst selectSx = (minWidth: number) => ({\n flex: { xs: '1 1 0', sm: '0 0 auto' },\n minWidth: { xs: 0, sm: minWidth },\n});\n\nconst PackageListToolbar: React.FC<Props> = ({\n query,\n scope,\n sort,\n scopes,\n shown,\n total,\n onQueryChange,\n onScopeChange,\n onSortChange,\n}) => {\n const { t } = useTranslation();\n return (\n <Box\n data-testid=\"package-list-toolbar\"\n sx={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 2, px: 2, pb: 2 }}\n >\n <TextField\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={t('packageList.filter')}\n size=\"small\"\n slotProps={{\n htmlInput: {\n 'aria-label': t('packageList.filter'),\n 'data-testid': 'package-list-filter',\n },\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n },\n }}\n sx={{ flex: { xs: '1 1 100%', sm: '1 1 240px' } }}\n type=\"search\"\n value={query}\n />\n {scopes.length > 1 && (\n <TextField\n label={t('packageList.scope')}\n onChange={(event) => onScopeChange(event.target.value)}\n select={true}\n size=\"small\"\n slotProps={{\n htmlInput: { 'data-testid': 'package-list-scope' },\n inputLabel: { shrink: true },\n select: { displayEmpty: true },\n }}\n sx={selectSx(160)}\n value={scope}\n >\n <MenuItem value=\"\">{t('packageList.all-scopes')}</MenuItem>\n {scopes.map((item) => (\n <MenuItem key={item} value={item}>\n {item === NO_SCOPE ? t('packageList.no-scope') : item}\n </MenuItem>\n ))}\n </TextField>\n )}\n <TextField\n label={t('packageList.sort')}\n onChange={(event) => onSortChange(event.target.value as PackageSort)}\n select={true}\n size=\"small\"\n slotProps={{ htmlInput: { 'data-testid': 'package-list-sort' } }}\n sx={selectSx(180)}\n value={sort}\n >\n <MenuItem value={PackageSort.DEFAULT}>{t('packageList.sort-default')}</MenuItem>\n <MenuItem value={PackageSort.NAME}>{t('packageList.sort-name')}</MenuItem>\n <MenuItem value={PackageSort.RECENT}>{t('packageList.sort-recent')}</MenuItem>\n </TextField>\n <Typography\n aria-live=\"polite\"\n color=\"text.secondary\"\n data-testid=\"package-list-count\"\n sx={{ width: { xs: '100%', sm: 'auto' } }}\n variant=\"body2\"\n >\n {t('packageList.count', { shown, total })}\n </Typography>\n </Box>\n );\n};\n\nexport default PackageListToolbar;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,IAAM,YAAY,cAAsB;CACtC,MAAM;EAAE,IAAI;EAAS,IAAI;CAAW;CACpC,UAAU;EAAE,IAAI;EAAG,IAAI;CAAS;AAClC;AAEA,IAAM,sBAAuC,EAC3C,OACA,OACA,MACA,QACA,OACA,OACA,eACA,eACA,mBACI;CACJ,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,SAAD;EACE,eAAY;EACZ,IAAI;GAAE,SAAS;GAAQ,UAAU;GAAQ,YAAY;GAAU,KAAK;GAAG,IAAI;GAAG,IAAI;EAAE;EAFtF,UAAA;GAIE,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,SAAD;IACE,WAAW,UAAU,cAAc,MAAM,OAAO,KAAK;IACrD,aAAa,EAAE,oBAAoB;IACnC,MAAK;IACL,WAAW;KACT,WAAW;MACT,cAAc,EAAE,oBAAoB;MACpC,eAAe;KACjB;KACA,OAAO,EACL,gBACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,SAAD;MAAgB,UAAS;MACvB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,2BAAAA,SAAD,EAAY,UAAS,QAAS,CAAA;KAChB,CAAA,EAEpB;IACF;IACA,IAAI,EAAE,MAAM;KAAE,IAAI;KAAY,IAAI;IAAY,EAAE;IAChD,MAAK;IACL,OAAO;GACR,CAAA;GACA,OAAO,SAAS,KACf,iBAAA,GAAA,kBAAA,KAAA,CAACF,wBAAAA,SAAD;IACE,OAAO,EAAE,mBAAmB;IAC5B,WAAW,UAAU,cAAc,MAAM,OAAO,KAAK;IACrD,QAAQ;IACR,MAAK;IACL,WAAW;KACT,WAAW,EAAE,eAAe,qBAAqB;KACjD,YAAY,EAAE,QAAQ,KAAK;KAC3B,QAAQ,EAAE,cAAc,KAAK;IAC/B;IACA,IAAI,SAAS,GAAG;IAChB,OAAO;IAXT,UAAA,CAaE,iBAAA,GAAA,kBAAA,IAAA,CAACG,uBAAAA,SAAD;KAAU,OAAM;KAAI,UAAA,EAAE,wBAAwB;IAAY,CAAA,GACzD,OAAO,KAAK,SACX,iBAAA,GAAA,kBAAA,IAAA,CAACA,uBAAAA,SAAD;KAAqB,OAAO;KACzB,UAAA,SAAA,MAAoB,EAAE,sBAAsB,IAAI;IACzC,GAFK,IAEL,CACX,CACQ;;GAEb,iBAAA,GAAA,kBAAA,KAAA,CAACH,wBAAAA,SAAD;IACE,OAAO,EAAE,kBAAkB;IAC3B,WAAW,UAAU,aAAa,MAAM,OAAO,KAAoB;IACnE,QAAQ;IACR,MAAK;IACL,WAAW,EAAE,WAAW,EAAE,eAAe,oBAAoB,EAAE;IAC/D,IAAI,SAAS,GAAG;IAChB,OAAO;IAPT,UAAA;KASE,iBAAA,GAAA,kBAAA,IAAA,CAACG,uBAAAA,SAAD;MAAU,OAAOC,uBAAAA,YAAY;MAAU,UAAA,EAAE,0BAA0B;KAAY,CAAA;KAC/E,iBAAA,GAAA,kBAAA,IAAA,CAACD,uBAAAA,SAAD;MAAU,OAAOC,uBAAAA,YAAY;MAAO,UAAA,EAAE,uBAAuB;KAAY,CAAA;KACzE,iBAAA,GAAA,kBAAA,IAAA,CAACD,uBAAAA,SAAD;MAAU,OAAOC,uBAAAA,YAAY;MAAS,UAAA,EAAE,yBAAyB;KAAY,CAAA;IACpE;;GACX,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,SAAD;IACE,aAAU;IACV,OAAM;IACN,eAAY;IACZ,IAAI,EAAE,OAAO;KAAE,IAAI;KAAQ,IAAI;IAAO,EAAE;IACxC,SAAQ;IAEP,UAAA,EAAE,qBAAqB;KAAE;KAAO;IAAM,CAAC;GAC9B,CAAA;EACT;;AAET"}
@@ -0,0 +1,119 @@
1
+ import { PackageSort } from "./filterPackages.mjs";
2
+ import "react";
3
+ import { useTranslation } from "react-i18next";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import Box from "@mui/material/Box";
6
+ import Typography from "@mui/material/Typography";
7
+ import MenuItem from "@mui/material/MenuItem";
8
+ import TextField from "@mui/material/TextField";
9
+ import SearchMui from "@mui/icons-material/Search";
10
+ import InputAdornment from "@mui/material/InputAdornment";
11
+ //#region src/components/PackageList/PackageListToolbar.tsx
12
+ var selectSx = (minWidth) => ({
13
+ flex: {
14
+ xs: "1 1 0",
15
+ sm: "0 0 auto"
16
+ },
17
+ minWidth: {
18
+ xs: 0,
19
+ sm: minWidth
20
+ }
21
+ });
22
+ var PackageListToolbar = ({ query, scope, sort, scopes, shown, total, onQueryChange, onScopeChange, onSortChange }) => {
23
+ const { t } = useTranslation();
24
+ return /* @__PURE__ */ jsxs(Box, {
25
+ "data-testid": "package-list-toolbar",
26
+ sx: {
27
+ display: "flex",
28
+ flexWrap: "wrap",
29
+ alignItems: "center",
30
+ gap: 2,
31
+ px: 2,
32
+ pb: 2
33
+ },
34
+ children: [
35
+ /* @__PURE__ */ jsx(TextField, {
36
+ onChange: (event) => onQueryChange(event.target.value),
37
+ placeholder: t("packageList.filter"),
38
+ size: "small",
39
+ slotProps: {
40
+ htmlInput: {
41
+ "aria-label": t("packageList.filter"),
42
+ "data-testid": "package-list-filter"
43
+ },
44
+ input: { startAdornment: /* @__PURE__ */ jsx(InputAdornment, {
45
+ position: "start",
46
+ children: /* @__PURE__ */ jsx(SearchMui, { fontSize: "small" })
47
+ }) }
48
+ },
49
+ sx: { flex: {
50
+ xs: "1 1 100%",
51
+ sm: "1 1 240px"
52
+ } },
53
+ type: "search",
54
+ value: query
55
+ }),
56
+ scopes.length > 1 && /* @__PURE__ */ jsxs(TextField, {
57
+ label: t("packageList.scope"),
58
+ onChange: (event) => onScopeChange(event.target.value),
59
+ select: true,
60
+ size: "small",
61
+ slotProps: {
62
+ htmlInput: { "data-testid": "package-list-scope" },
63
+ inputLabel: { shrink: true },
64
+ select: { displayEmpty: true }
65
+ },
66
+ sx: selectSx(160),
67
+ value: scope,
68
+ children: [/* @__PURE__ */ jsx(MenuItem, {
69
+ value: "",
70
+ children: t("packageList.all-scopes")
71
+ }), scopes.map((item) => /* @__PURE__ */ jsx(MenuItem, {
72
+ value: item,
73
+ children: item === "-" ? t("packageList.no-scope") : item
74
+ }, item))]
75
+ }),
76
+ /* @__PURE__ */ jsxs(TextField, {
77
+ label: t("packageList.sort"),
78
+ onChange: (event) => onSortChange(event.target.value),
79
+ select: true,
80
+ size: "small",
81
+ slotProps: { htmlInput: { "data-testid": "package-list-sort" } },
82
+ sx: selectSx(180),
83
+ value: sort,
84
+ children: [
85
+ /* @__PURE__ */ jsx(MenuItem, {
86
+ value: PackageSort.DEFAULT,
87
+ children: t("packageList.sort-default")
88
+ }),
89
+ /* @__PURE__ */ jsx(MenuItem, {
90
+ value: PackageSort.NAME,
91
+ children: t("packageList.sort-name")
92
+ }),
93
+ /* @__PURE__ */ jsx(MenuItem, {
94
+ value: PackageSort.RECENT,
95
+ children: t("packageList.sort-recent")
96
+ })
97
+ ]
98
+ }),
99
+ /* @__PURE__ */ jsx(Typography, {
100
+ "aria-live": "polite",
101
+ color: "text.secondary",
102
+ "data-testid": "package-list-count",
103
+ sx: { width: {
104
+ xs: "100%",
105
+ sm: "auto"
106
+ } },
107
+ variant: "body2",
108
+ children: t("packageList.count", {
109
+ shown,
110
+ total
111
+ })
112
+ })
113
+ ]
114
+ });
115
+ };
116
+ //#endregion
117
+ export { PackageListToolbar as default };
118
+
119
+ //# sourceMappingURL=PackageListToolbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageListToolbar.mjs","names":["SearchIcon"],"sources":["../../../src/components/PackageList/PackageListToolbar.tsx"],"sourcesContent":["import SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { NO_SCOPE, PackageSort } from './filterPackages';\n\ntype Props = {\n query: string;\n scope: string;\n sort: PackageSort;\n scopes: string[];\n shown: number;\n total: number;\n onQueryChange: (query: string) => void;\n onScopeChange: (scope: string) => void;\n onSortChange: (sort: PackageSort) => void;\n};\n\n// side by side on phones, natural width from sm up\nconst selectSx = (minWidth: number) => ({\n flex: { xs: '1 1 0', sm: '0 0 auto' },\n minWidth: { xs: 0, sm: minWidth },\n});\n\nconst PackageListToolbar: React.FC<Props> = ({\n query,\n scope,\n sort,\n scopes,\n shown,\n total,\n onQueryChange,\n onScopeChange,\n onSortChange,\n}) => {\n const { t } = useTranslation();\n return (\n <Box\n data-testid=\"package-list-toolbar\"\n sx={{ display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 2, px: 2, pb: 2 }}\n >\n <TextField\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={t('packageList.filter')}\n size=\"small\"\n slotProps={{\n htmlInput: {\n 'aria-label': t('packageList.filter'),\n 'data-testid': 'package-list-filter',\n },\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n },\n }}\n sx={{ flex: { xs: '1 1 100%', sm: '1 1 240px' } }}\n type=\"search\"\n value={query}\n />\n {scopes.length > 1 && (\n <TextField\n label={t('packageList.scope')}\n onChange={(event) => onScopeChange(event.target.value)}\n select={true}\n size=\"small\"\n slotProps={{\n htmlInput: { 'data-testid': 'package-list-scope' },\n inputLabel: { shrink: true },\n select: { displayEmpty: true },\n }}\n sx={selectSx(160)}\n value={scope}\n >\n <MenuItem value=\"\">{t('packageList.all-scopes')}</MenuItem>\n {scopes.map((item) => (\n <MenuItem key={item} value={item}>\n {item === NO_SCOPE ? t('packageList.no-scope') : item}\n </MenuItem>\n ))}\n </TextField>\n )}\n <TextField\n label={t('packageList.sort')}\n onChange={(event) => onSortChange(event.target.value as PackageSort)}\n select={true}\n size=\"small\"\n slotProps={{ htmlInput: { 'data-testid': 'package-list-sort' } }}\n sx={selectSx(180)}\n value={sort}\n >\n <MenuItem value={PackageSort.DEFAULT}>{t('packageList.sort-default')}</MenuItem>\n <MenuItem value={PackageSort.NAME}>{t('packageList.sort-name')}</MenuItem>\n <MenuItem value={PackageSort.RECENT}>{t('packageList.sort-recent')}</MenuItem>\n </TextField>\n <Typography\n aria-live=\"polite\"\n color=\"text.secondary\"\n data-testid=\"package-list-count\"\n sx={{ width: { xs: '100%', sm: 'auto' } }}\n variant=\"body2\"\n >\n {t('packageList.count', { shown, total })}\n </Typography>\n </Box>\n );\n};\n\nexport default PackageListToolbar;\n"],"mappings":";;;;;;;;;;;AAwBA,IAAM,YAAY,cAAsB;CACtC,MAAM;EAAE,IAAI;EAAS,IAAI;CAAW;CACpC,UAAU;EAAE,IAAI;EAAG,IAAI;CAAS;AAClC;AAEA,IAAM,sBAAuC,EAC3C,OACA,OACA,MACA,QACA,OACA,OACA,eACA,eACA,mBACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,OACE,qBAAC,KAAD;EACE,eAAY;EACZ,IAAI;GAAE,SAAS;GAAQ,UAAU;GAAQ,YAAY;GAAU,KAAK;GAAG,IAAI;GAAG,IAAI;EAAE;EAFtF,UAAA;GAIE,oBAAC,WAAD;IACE,WAAW,UAAU,cAAc,MAAM,OAAO,KAAK;IACrD,aAAa,EAAE,oBAAoB;IACnC,MAAK;IACL,WAAW;KACT,WAAW;MACT,cAAc,EAAE,oBAAoB;MACpC,eAAe;KACjB;KACA,OAAO,EACL,gBACE,oBAAC,gBAAD;MAAgB,UAAS;MACvB,UAAA,oBAACA,WAAD,EAAY,UAAS,QAAS,CAAA;KAChB,CAAA,EAEpB;IACF;IACA,IAAI,EAAE,MAAM;KAAE,IAAI;KAAY,IAAI;IAAY,EAAE;IAChD,MAAK;IACL,OAAO;GACR,CAAA;GACA,OAAO,SAAS,KACf,qBAAC,WAAD;IACE,OAAO,EAAE,mBAAmB;IAC5B,WAAW,UAAU,cAAc,MAAM,OAAO,KAAK;IACrD,QAAQ;IACR,MAAK;IACL,WAAW;KACT,WAAW,EAAE,eAAe,qBAAqB;KACjD,YAAY,EAAE,QAAQ,KAAK;KAC3B,QAAQ,EAAE,cAAc,KAAK;IAC/B;IACA,IAAI,SAAS,GAAG;IAChB,OAAO;IAXT,UAAA,CAaE,oBAAC,UAAD;KAAU,OAAM;KAAI,UAAA,EAAE,wBAAwB;IAAY,CAAA,GACzD,OAAO,KAAK,SACX,oBAAC,UAAD;KAAqB,OAAO;KACzB,UAAA,SAAA,MAAoB,EAAE,sBAAsB,IAAI;IACzC,GAFK,IAEL,CACX,CACQ;;GAEb,qBAAC,WAAD;IACE,OAAO,EAAE,kBAAkB;IAC3B,WAAW,UAAU,aAAa,MAAM,OAAO,KAAoB;IACnE,QAAQ;IACR,MAAK;IACL,WAAW,EAAE,WAAW,EAAE,eAAe,oBAAoB,EAAE;IAC/D,IAAI,SAAS,GAAG;IAChB,OAAO;IAPT,UAAA;KASE,oBAAC,UAAD;MAAU,OAAO,YAAY;MAAU,UAAA,EAAE,0BAA0B;KAAY,CAAA;KAC/E,oBAAC,UAAD;MAAU,OAAO,YAAY;MAAO,UAAA,EAAE,uBAAuB;KAAY,CAAA;KACzE,oBAAC,UAAD;MAAU,OAAO,YAAY;MAAS,UAAA,EAAE,yBAAyB;KAAY,CAAA;IACpE;;GACX,oBAAC,YAAD;IACE,aAAU;IACV,OAAM;IACN,eAAY;IACZ,IAAI,EAAE,OAAO;KAAE,IAAI;KAAQ,IAAI;IAAO,EAAE;IACxC,SAAQ;IAEP,UAAA,EAAE,qBAAqB;KAAE;KAAO;IAAM,CAAC;GAC9B,CAAA;EACT;;AAET"}
@@ -0,0 +1,16 @@
1
+ import type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';
2
+ export declare enum PackageSort {
3
+ DEFAULT = "default",
4
+ NAME = "name",
5
+ RECENT = "recent"
6
+ }
7
+ export declare const NO_SCOPE = "-";
8
+ export type PackageFilter = {
9
+ query?: string;
10
+ scope?: string;
11
+ sort?: PackageSort;
12
+ };
13
+ export declare function getPackageScope(name: string): string;
14
+ export declare function getScopes(packages: ManifestWeb[]): string[];
15
+ /** Filters and sorts the home list; `PackageSort.DEFAULT` keeps the order configured on the server. */
16
+ export declare function filterPackages(packages: ManifestWeb[], { query, scope, sort }: PackageFilter): ManifestWeb[];
@@ -0,0 +1,37 @@
1
+ //#region src/components/PackageList/filterPackages.ts
2
+ var PackageSort = /* @__PURE__ */ function(PackageSort) {
3
+ PackageSort["DEFAULT"] = "default";
4
+ PackageSort["NAME"] = "name";
5
+ PackageSort["RECENT"] = "recent";
6
+ return PackageSort;
7
+ }({});
8
+ function getPackageScope(name) {
9
+ return name.startsWith("@") && name.includes("/") ? name.slice(0, name.indexOf("/")) : "-";
10
+ }
11
+ function getScopes(packages) {
12
+ return Array.from(new Set(packages.map((pkg) => getPackageScope(pkg.name)))).sort((a, b) => a === "-" ? 1 : b === "-" ? -1 : a.localeCompare(b));
13
+ }
14
+ function matchesQuery(pkg, query) {
15
+ const keywords = Array.isArray(pkg.keywords) ? pkg.keywords : [];
16
+ return [
17
+ pkg.name,
18
+ pkg.description ?? "",
19
+ ...keywords
20
+ ].some((field) => String(field).toLowerCase().includes(query));
21
+ }
22
+ var publishedAt = (pkg) => pkg.time ? new Date(pkg.time).getTime() || 0 : 0;
23
+ /** Filters and sorts the home list; `PackageSort.DEFAULT` keeps the order configured on the server. */
24
+ function filterPackages(packages, { query = "", scope = "", sort = "default" }) {
25
+ const normalizedQuery = query.trim().toLowerCase();
26
+ const filtered = packages.filter((pkg) => (!scope || getPackageScope(pkg.name) === scope) && (!normalizedQuery || matchesQuery(pkg, normalizedQuery)));
27
+ if (sort === "name") return filtered.sort((a, b) => a.name.localeCompare(b.name));
28
+ if (sort === "recent") return filtered.sort((a, b) => publishedAt(b) - publishedAt(a));
29
+ return filtered;
30
+ }
31
+ //#endregion
32
+ exports.PackageSort = PackageSort;
33
+ exports.filterPackages = filterPackages;
34
+ exports.getPackageScope = getPackageScope;
35
+ exports.getScopes = getScopes;
36
+
37
+ //# sourceMappingURL=filterPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterPackages.js","names":[],"sources":["../../../src/components/PackageList/filterPackages.ts"],"sourcesContent":["import type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\n\nexport enum PackageSort {\n DEFAULT = 'default',\n NAME = 'name',\n RECENT = 'recent',\n}\n\nexport const NO_SCOPE = '-';\n\nexport type PackageFilter = {\n query?: string;\n scope?: string;\n sort?: PackageSort;\n};\n\nexport function getPackageScope(name: string): string {\n return name.startsWith('@') && name.includes('/') ? name.slice(0, name.indexOf('/')) : NO_SCOPE;\n}\n\nexport function getScopes(packages: ManifestWeb[]): string[] {\n return Array.from(new Set(packages.map((pkg) => getPackageScope(pkg.name)))).sort((a, b) =>\n a === NO_SCOPE ? 1 : b === NO_SCOPE ? -1 : a.localeCompare(b)\n );\n}\n\nfunction matchesQuery(pkg: ManifestWeb, query: string): boolean {\n const keywords = Array.isArray(pkg.keywords) ? pkg.keywords : [];\n return [pkg.name, pkg.description ?? '', ...keywords].some((field) =>\n String(field).toLowerCase().includes(query)\n );\n}\n\nconst publishedAt = (pkg: ManifestWeb): number =>\n pkg.time ? new Date(pkg.time).getTime() || 0 : 0;\n\n/** Filters and sorts the home list; `PackageSort.DEFAULT` keeps the order configured on the server. */\nexport function filterPackages(\n packages: ManifestWeb[],\n { query = '', scope = '', sort = PackageSort.DEFAULT }: PackageFilter\n): ManifestWeb[] {\n const normalizedQuery = query.trim().toLowerCase();\n const filtered = packages.filter(\n (pkg) =>\n (!scope || getPackageScope(pkg.name) === scope) &&\n (!normalizedQuery || matchesQuery(pkg, normalizedQuery))\n );\n if (sort === PackageSort.NAME) {\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n }\n if (sort === PackageSort.RECENT) {\n return filtered.sort((a, b) => publishedAt(b) - publishedAt(a));\n }\n return filtered;\n}\n"],"mappings":";AAEA,IAAY,cAAL,yBAAA,aAAA;CACL,YAAA,aAAA;CACA,YAAA,UAAA;CACA,YAAA,YAAA;;AACF,EAAA,CAAA,CAAA;AAUA,SAAgB,gBAAgB,MAAsB;CACpD,OAAO,KAAK,WAAW,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,CAAC,IAAA;AACrF;AAEA,SAAgB,UAAU,UAAmC;CAC3D,OAAO,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,QAAQ,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MACpF,MAAA,MAAiB,IAAI,MAAA,MAAiB,KAAK,EAAE,cAAc,CAAC,CAC9D;AACF;AAEA,SAAS,aAAa,KAAkB,OAAwB;CAC9D,MAAM,WAAW,MAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI,WAAW,CAAC;CAC/D,OAAO;EAAC,IAAI;EAAM,IAAI,eAAe;EAAI,GAAG;CAAQ,CAAC,CAAC,MAAM,UAC1D,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,KAAK,CAC5C;AACF;AAEA,IAAM,eAAe,QACnB,IAAI,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;;AAGjD,SAAgB,eACd,UACA,EAAE,QAAQ,IAAI,QAAQ,IAAI,OAAA,aACX;CACf,MAAM,kBAAkB,MAAM,KAAK,CAAC,CAAC,YAAY;CACjD,MAAM,WAAW,SAAS,QACvB,SACE,CAAC,SAAS,gBAAgB,IAAI,IAAI,MAAM,WACxC,CAAC,mBAAmB,aAAa,KAAK,eAAe,EAC1D;CACA,IAAI,SAAA,QACF,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;CAE7D,IAAI,SAAA,UACF,OAAO,SAAS,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,YAAY,CAAC,CAAC;CAEhE,OAAO;AACT"}
@@ -0,0 +1,34 @@
1
+ //#region src/components/PackageList/filterPackages.ts
2
+ var PackageSort = /* @__PURE__ */ function(PackageSort) {
3
+ PackageSort["DEFAULT"] = "default";
4
+ PackageSort["NAME"] = "name";
5
+ PackageSort["RECENT"] = "recent";
6
+ return PackageSort;
7
+ }({});
8
+ function getPackageScope(name) {
9
+ return name.startsWith("@") && name.includes("/") ? name.slice(0, name.indexOf("/")) : "-";
10
+ }
11
+ function getScopes(packages) {
12
+ return Array.from(new Set(packages.map((pkg) => getPackageScope(pkg.name)))).sort((a, b) => a === "-" ? 1 : b === "-" ? -1 : a.localeCompare(b));
13
+ }
14
+ function matchesQuery(pkg, query) {
15
+ const keywords = Array.isArray(pkg.keywords) ? pkg.keywords : [];
16
+ return [
17
+ pkg.name,
18
+ pkg.description ?? "",
19
+ ...keywords
20
+ ].some((field) => String(field).toLowerCase().includes(query));
21
+ }
22
+ var publishedAt = (pkg) => pkg.time ? new Date(pkg.time).getTime() || 0 : 0;
23
+ /** Filters and sorts the home list; `PackageSort.DEFAULT` keeps the order configured on the server. */
24
+ function filterPackages(packages, { query = "", scope = "", sort = "default" }) {
25
+ const normalizedQuery = query.trim().toLowerCase();
26
+ const filtered = packages.filter((pkg) => (!scope || getPackageScope(pkg.name) === scope) && (!normalizedQuery || matchesQuery(pkg, normalizedQuery)));
27
+ if (sort === "name") return filtered.sort((a, b) => a.name.localeCompare(b.name));
28
+ if (sort === "recent") return filtered.sort((a, b) => publishedAt(b) - publishedAt(a));
29
+ return filtered;
30
+ }
31
+ //#endregion
32
+ export { PackageSort, filterPackages, getPackageScope, getScopes };
33
+
34
+ //# sourceMappingURL=filterPackages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterPackages.mjs","names":[],"sources":["../../../src/components/PackageList/filterPackages.ts"],"sourcesContent":["import type { ManifestWeb } from '../../providers/ManifestsProvider/ManifestsProvider';\n\nexport enum PackageSort {\n DEFAULT = 'default',\n NAME = 'name',\n RECENT = 'recent',\n}\n\nexport const NO_SCOPE = '-';\n\nexport type PackageFilter = {\n query?: string;\n scope?: string;\n sort?: PackageSort;\n};\n\nexport function getPackageScope(name: string): string {\n return name.startsWith('@') && name.includes('/') ? name.slice(0, name.indexOf('/')) : NO_SCOPE;\n}\n\nexport function getScopes(packages: ManifestWeb[]): string[] {\n return Array.from(new Set(packages.map((pkg) => getPackageScope(pkg.name)))).sort((a, b) =>\n a === NO_SCOPE ? 1 : b === NO_SCOPE ? -1 : a.localeCompare(b)\n );\n}\n\nfunction matchesQuery(pkg: ManifestWeb, query: string): boolean {\n const keywords = Array.isArray(pkg.keywords) ? pkg.keywords : [];\n return [pkg.name, pkg.description ?? '', ...keywords].some((field) =>\n String(field).toLowerCase().includes(query)\n );\n}\n\nconst publishedAt = (pkg: ManifestWeb): number =>\n pkg.time ? new Date(pkg.time).getTime() || 0 : 0;\n\n/** Filters and sorts the home list; `PackageSort.DEFAULT` keeps the order configured on the server. */\nexport function filterPackages(\n packages: ManifestWeb[],\n { query = '', scope = '', sort = PackageSort.DEFAULT }: PackageFilter\n): ManifestWeb[] {\n const normalizedQuery = query.trim().toLowerCase();\n const filtered = packages.filter(\n (pkg) =>\n (!scope || getPackageScope(pkg.name) === scope) &&\n (!normalizedQuery || matchesQuery(pkg, normalizedQuery))\n );\n if (sort === PackageSort.NAME) {\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n }\n if (sort === PackageSort.RECENT) {\n return filtered.sort((a, b) => publishedAt(b) - publishedAt(a));\n }\n return filtered;\n}\n"],"mappings":";AAEA,IAAY,cAAL,yBAAA,aAAA;CACL,YAAA,aAAA;CACA,YAAA,UAAA;CACA,YAAA,YAAA;;AACF,EAAA,CAAA,CAAA;AAUA,SAAgB,gBAAgB,MAAsB;CACpD,OAAO,KAAK,WAAW,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,CAAC,IAAA;AACrF;AAEA,SAAgB,UAAU,UAAmC;CAC3D,OAAO,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,QAAQ,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MACpF,MAAA,MAAiB,IAAI,MAAA,MAAiB,KAAK,EAAE,cAAc,CAAC,CAC9D;AACF;AAEA,SAAS,aAAa,KAAkB,OAAwB;CAC9D,MAAM,WAAW,MAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI,WAAW,CAAC;CAC/D,OAAO;EAAC,IAAI;EAAM,IAAI,eAAe;EAAI,GAAG;CAAQ,CAAC,CAAC,MAAM,UAC1D,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,KAAK,CAC5C;AACF;AAEA,IAAM,eAAe,QACnB,IAAI,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;;AAGjD,SAAgB,eACd,UACA,EAAE,QAAQ,IAAI,QAAQ,IAAI,OAAA,aACX;CACf,MAAM,kBAAkB,MAAM,KAAK,CAAC,CAAC,YAAY;CACjD,MAAM,WAAW,SAAS,QACvB,SACE,CAAC,SAAS,gBAAgB,IAAI,IAAI,MAAM,WACxC,CAAC,mBAAmB,aAAa,KAAK,eAAe,EAC1D;CACA,IAAI,SAAA,QACF,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;CAE7D,IAAI,SAAA,UACF,OAAO,SAAS,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,YAAY,CAAC,CAAC;CAEhE,OAAO;AACT"}
@@ -1,4 +1,6 @@
1
1
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
+ const require_DocsLink = require("../DocsLink/DocsLink.js");
3
+ require("../DocsLink/index.js");
2
4
  const require_styles = require("./styles.js");
3
5
  let react = require("react");
4
6
  react = require_runtime.__toESM(react);
@@ -11,7 +13,7 @@ _mui_material_Button = require_runtime.__toESM(_mui_material_Button);
11
13
  let _mui_material_DialogActions = require("@mui/material/DialogActions");
12
14
  _mui_material_DialogActions = require_runtime.__toESM(_mui_material_DialogActions);
13
15
  //#region src/components/RegistryInfoDialog/RegistryInfoDialog.tsx
14
- var RegistryInfoDialog = ({ open = false, children, onClose, title = "" }) => {
16
+ var RegistryInfoDialog = ({ open = false, children, onClose, title = "", docsUrl }) => {
15
17
  const { t } = (0, react_i18next.useTranslation)();
16
18
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_Dialog.default, {
17
19
  "data-testid": "registryInfo--dialog",
@@ -22,12 +24,21 @@ var RegistryInfoDialog = ({ open = false, children, onClose, title = "" }) => {
22
24
  children: [
23
25
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Title, { children: title }),
24
26
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Content, { children }),
25
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_DialogActions.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Button.default, {
26
- color: "inherit",
27
- id: "registryInfo--dialog-close",
28
- onClick: onClose,
29
- children: t("button.close")
30
- }) })
27
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_DialogActions.default, {
28
+ sx: {
29
+ justifyContent: docsUrl ? "space-between" : "flex-end",
30
+ px: 3
31
+ },
32
+ children: [docsUrl && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DocsLink.default, {
33
+ dataTestId: "registryInfo--dialog-docs",
34
+ href: docsUrl
35
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Button.default, {
36
+ color: "inherit",
37
+ id: "registryInfo--dialog-close",
38
+ onClick: onClose,
39
+ children: t("button.close")
40
+ })]
41
+ })
31
42
  ]
32
43
  });
33
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryInfoDialog.js","names":["useTranslation","Dialog","Title","Content","DialogActions","Button"],"sources":["../../../src/components/RegistryInfoDialog/RegistryInfoDialog.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Content, Title } from './styles';\nimport type { Props } from './types';\n\nconst RegistryInfoDialog: React.FC<Props> = ({ open = false, children, onClose, title = '' }) => {\n const { t } = useTranslation();\n return (\n <Dialog\n data-testid={'registryInfo--dialog'}\n id=\"registryInfo--dialog-container\"\n maxWidth=\"sm\"\n onClose={onClose}\n open={open}\n >\n <Title>{title}</Title>\n <Content>{children}</Content>\n <DialogActions>\n <Button color=\"inherit\" id=\"registryInfo--dialog-close\" onClick={onClose}>\n {t('button.close')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default RegistryInfoDialog;\n"],"mappings":";;;;;;;;;;;;;AASA,IAAM,sBAAuC,EAAE,OAAO,OAAO,UAAU,SAAS,QAAQ,SAAS;CAC/F,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,qBAAAA,SAAD;EACE,eAAa;EACb,IAAG;EACH,UAAS;EACA;EACH;EALR,UAAA;GAOE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,OAAD,EAAA,UAAQ,MAAa,CAAA;GACrB,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,SAAD,EAAU,SAAkB,CAAA;GAC5B,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,SAAD;IAAQ,OAAM;IAAU,IAAG;IAA6B,SAAS;IAC9D,UAAA,EAAE,cAAc;GACX,CAAA,EACK,CAAA;EACT;;AAEZ"}
1
+ {"version":3,"file":"RegistryInfoDialog.js","names":["useTranslation","Dialog","Title","Content","DialogActions","DocsLink","Button"],"sources":["../../../src/components/RegistryInfoDialog/RegistryInfoDialog.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport DocsLink from '../DocsLink';\nimport { Content, Title } from './styles';\nimport type { Props } from './types';\n\nconst RegistryInfoDialog: React.FC<Props> = ({\n open = false,\n children,\n onClose,\n title = '',\n docsUrl,\n}) => {\n const { t } = useTranslation();\n return (\n <Dialog\n data-testid={'registryInfo--dialog'}\n id=\"registryInfo--dialog-container\"\n maxWidth=\"sm\"\n onClose={onClose}\n open={open}\n >\n <Title>{title}</Title>\n <Content>{children}</Content>\n <DialogActions sx={{ justifyContent: docsUrl ? 'space-between' : 'flex-end', px: 3 }}>\n {docsUrl && <DocsLink dataTestId=\"registryInfo--dialog-docs\" href={docsUrl} />}\n <Button color=\"inherit\" id=\"registryInfo--dialog-close\" onClick={onClose}>\n {t('button.close')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default RegistryInfoDialog;\n"],"mappings":";;;;;;;;;;;;;;;AAUA,IAAM,sBAAuC,EAC3C,OAAO,OACP,UACA,SACA,QAAQ,IACR,cACI;CACJ,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,qBAAAA,SAAD;EACE,eAAa;EACb,IAAG;EACH,UAAS;EACA;EACH;EALR,UAAA;GAOE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,OAAD,EAAA,UAAQ,MAAa,CAAA;GACrB,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,SAAD,EAAU,SAAkB,CAAA;GAC5B,iBAAA,GAAA,kBAAA,KAAA,CAACC,4BAAAA,SAAD;IAAe,IAAI;KAAE,gBAAgB,UAAU,kBAAkB;KAAY,IAAI;IAAE;IAAnF,UAAA,CACG,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,SAAD;KAAU,YAAW;KAA4B,MAAM;IAAU,CAAA,GAC7E,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,SAAD;KAAQ,OAAM;KAAU,IAAG;KAA6B,SAAS;KAC9D,UAAA,EAAE,cAAc;IACX,CAAA,CACK;;EACT;;AAEZ"}
@@ -1,3 +1,5 @@
1
+ import DocsLink from "../DocsLink/DocsLink.mjs";
2
+ import "../DocsLink/index.mjs";
1
3
  import { Content, Title } from "./styles.mjs";
2
4
  import "react";
3
5
  import { useTranslation } from "react-i18next";
@@ -6,7 +8,7 @@ import Dialog from "@mui/material/Dialog";
6
8
  import Button from "@mui/material/Button";
7
9
  import DialogActions from "@mui/material/DialogActions";
8
10
  //#region src/components/RegistryInfoDialog/RegistryInfoDialog.tsx
9
- var RegistryInfoDialog = ({ open = false, children, onClose, title = "" }) => {
11
+ var RegistryInfoDialog = ({ open = false, children, onClose, title = "", docsUrl }) => {
10
12
  const { t } = useTranslation();
11
13
  return /* @__PURE__ */ jsxs(Dialog, {
12
14
  "data-testid": "registryInfo--dialog",
@@ -17,12 +19,21 @@ var RegistryInfoDialog = ({ open = false, children, onClose, title = "" }) => {
17
19
  children: [
18
20
  /* @__PURE__ */ jsx(Title, { children: title }),
19
21
  /* @__PURE__ */ jsx(Content, { children }),
20
- /* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(Button, {
21
- color: "inherit",
22
- id: "registryInfo--dialog-close",
23
- onClick: onClose,
24
- children: t("button.close")
25
- }) })
22
+ /* @__PURE__ */ jsxs(DialogActions, {
23
+ sx: {
24
+ justifyContent: docsUrl ? "space-between" : "flex-end",
25
+ px: 3
26
+ },
27
+ children: [docsUrl && /* @__PURE__ */ jsx(DocsLink, {
28
+ dataTestId: "registryInfo--dialog-docs",
29
+ href: docsUrl
30
+ }), /* @__PURE__ */ jsx(Button, {
31
+ color: "inherit",
32
+ id: "registryInfo--dialog-close",
33
+ onClick: onClose,
34
+ children: t("button.close")
35
+ })]
36
+ })
26
37
  ]
27
38
  });
28
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryInfoDialog.mjs","names":[],"sources":["../../../src/components/RegistryInfoDialog/RegistryInfoDialog.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Content, Title } from './styles';\nimport type { Props } from './types';\n\nconst RegistryInfoDialog: React.FC<Props> = ({ open = false, children, onClose, title = '' }) => {\n const { t } = useTranslation();\n return (\n <Dialog\n data-testid={'registryInfo--dialog'}\n id=\"registryInfo--dialog-container\"\n maxWidth=\"sm\"\n onClose={onClose}\n open={open}\n >\n <Title>{title}</Title>\n <Content>{children}</Content>\n <DialogActions>\n <Button color=\"inherit\" id=\"registryInfo--dialog-close\" onClick={onClose}>\n {t('button.close')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default RegistryInfoDialog;\n"],"mappings":";;;;;;;;AASA,IAAM,sBAAuC,EAAE,OAAO,OAAO,UAAU,SAAS,QAAQ,SAAS;CAC/F,MAAM,EAAE,MAAM,eAAe;CAC7B,OACE,qBAAC,QAAD;EACE,eAAa;EACb,IAAG;EACH,UAAS;EACA;EACH;EALR,UAAA;GAOE,oBAAC,OAAD,EAAA,UAAQ,MAAa,CAAA;GACrB,oBAAC,SAAD,EAAU,SAAkB,CAAA;GAC5B,oBAAC,eAAD,EAAA,UACE,oBAAC,QAAD;IAAQ,OAAM;IAAU,IAAG;IAA6B,SAAS;IAC9D,UAAA,EAAE,cAAc;GACX,CAAA,EACK,CAAA;EACT;;AAEZ"}
1
+ {"version":3,"file":"RegistryInfoDialog.mjs","names":[],"sources":["../../../src/components/RegistryInfoDialog/RegistryInfoDialog.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport DocsLink from '../DocsLink';\nimport { Content, Title } from './styles';\nimport type { Props } from './types';\n\nconst RegistryInfoDialog: React.FC<Props> = ({\n open = false,\n children,\n onClose,\n title = '',\n docsUrl,\n}) => {\n const { t } = useTranslation();\n return (\n <Dialog\n data-testid={'registryInfo--dialog'}\n id=\"registryInfo--dialog-container\"\n maxWidth=\"sm\"\n onClose={onClose}\n open={open}\n >\n <Title>{title}</Title>\n <Content>{children}</Content>\n <DialogActions sx={{ justifyContent: docsUrl ? 'space-between' : 'flex-end', px: 3 }}>\n {docsUrl && <DocsLink dataTestId=\"registryInfo--dialog-docs\" href={docsUrl} />}\n <Button color=\"inherit\" id=\"registryInfo--dialog-close\" onClick={onClose}>\n {t('button.close')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default RegistryInfoDialog;\n"],"mappings":";;;;;;;;;;AAUA,IAAM,sBAAuC,EAC3C,OAAO,OACP,UACA,SACA,QAAQ,IACR,cACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,OACE,qBAAC,QAAD;EACE,eAAa;EACb,IAAG;EACH,UAAS;EACA;EACH;EALR,UAAA;GAOE,oBAAC,OAAD,EAAA,UAAQ,MAAa,CAAA;GACrB,oBAAC,SAAD,EAAU,SAAkB,CAAA;GAC5B,qBAAC,eAAD;IAAe,IAAI;KAAE,gBAAgB,UAAU,kBAAkB;KAAY,IAAI;IAAE;IAAnF,UAAA,CACG,WAAW,oBAAC,UAAD;KAAU,YAAW;KAA4B,MAAM;IAAU,CAAA,GAC7E,oBAAC,QAAD;KAAQ,OAAM;KAAU,IAAG;KAA6B,SAAS;KAC9D,UAAA,EAAE,cAAc;IACX,CAAA,CACK;;EACT;;AAEZ"}
@@ -4,4 +4,5 @@ export interface Props {
4
4
  open: boolean;
5
5
  title: string;
6
6
  onClose: () => void;
7
+ docsUrl?: string;
7
8
  }
@@ -1,3 +1,4 @@
1
+ import type { AutocompleteRenderGroupParams } from '@mui/material/Autocomplete';
1
2
  import type { FC } from 'react';
2
3
  import React from 'react';
3
4
  import type { SearchResultWeb } from '@verdaccio/types';
@@ -13,6 +14,8 @@ interface Props {
13
14
  getOptionLabel: (option: any) => any;
14
15
  onCleanSuggestions: (event: React.SyntheticEvent) => void;
15
16
  onSelectItem: OnSelecItem;
17
+ groupBy?: (option: any) => string;
18
+ renderGroup?: (params: AutocompleteRenderGroupParams) => React.ReactNode;
16
19
  }
17
20
  declare const AutoComplete: FC<Props>;
18
21
  export default AutoComplete;