@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.
- package/README.md +20 -0
- package/build/api/use-data.d.ts +2 -2
- package/build/api/use-data.js +2 -2
- package/build/api/use-data.js.map +1 -1
- package/build/api/use-data.mjs +2 -2
- package/build/api/use-data.mjs.map +1 -1
- package/build/components/CopyClipboard/CopyToClipBoard.d.ts +1 -0
- package/build/components/CopyClipboard/CopyToClipBoard.js +36 -17
- package/build/components/CopyClipboard/CopyToClipBoard.js.map +1 -1
- package/build/components/CopyClipboard/CopyToClipBoard.mjs +36 -19
- package/build/components/CopyClipboard/CopyToClipBoard.mjs.map +1 -1
- package/build/components/CopyClipboard/utils.d.ts +2 -1
- package/build/components/CopyClipboard/utils.js +6 -4
- package/build/components/CopyClipboard/utils.js.map +1 -1
- package/build/components/CopyClipboard/utils.mjs +6 -4
- package/build/components/CopyClipboard/utils.mjs.map +1 -1
- package/build/components/DocsLink/DocsLink.d.ts +8 -0
- package/build/components/DocsLink/DocsLink.js +40 -0
- package/build/components/DocsLink/DocsLink.js.map +1 -0
- package/build/components/DocsLink/DocsLink.mjs +35 -0
- package/build/components/DocsLink/DocsLink.mjs.map +1 -0
- package/build/components/DocsLink/index.d.ts +1 -0
- package/build/components/DocsLink/index.js +3 -0
- package/build/components/DocsLink/index.mjs +1 -0
- package/build/components/Help/Help.d.ts +13 -0
- package/build/components/Help/Help.js +280 -36
- package/build/components/Help/Help.js.map +1 -1
- package/build/components/Help/Help.mjs +274 -39
- package/build/components/Help/Help.mjs.map +1 -1
- package/build/components/Help/styles.d.ts +29 -0
- package/build/components/Help/styles.js +86 -1
- package/build/components/Help/styles.js.map +1 -1
- package/build/components/Help/styles.mjs +82 -2
- package/build/components/Help/styles.mjs.map +1 -1
- package/build/components/Icons/Managers/Bun.d.ts +2 -0
- package/build/components/Icons/Managers/Bun2.js +18 -0
- package/build/components/Icons/Managers/Bun2.js.map +1 -0
- package/build/components/Icons/Managers/Bun2.mjs +16 -0
- package/build/components/Icons/Managers/Bun2.mjs.map +1 -0
- package/build/components/Icons/Managers/bun.js +6 -0
- package/build/components/Icons/Managers/bun.js.map +1 -0
- package/build/components/Icons/Managers/bun.mjs +6 -0
- package/build/components/Icons/Managers/bun.mjs.map +1 -0
- package/build/components/Icons/Managers/bun.svg +1 -0
- package/build/components/Icons/Managers/index.d.ts +1 -0
- package/build/components/Icons/Managers/index.js +2 -0
- package/build/components/Icons/Managers/index.mjs +2 -1
- package/build/components/Icons/index.js +3 -0
- package/build/components/Icons/index.mjs +3 -1
- package/build/components/Install/Install.d.ts +2 -0
- package/build/components/Install/Install.js +30 -2
- package/build/components/Install/Install.js.map +1 -1
- package/build/components/Install/Install.mjs +30 -3
- package/build/components/Install/Install.mjs.map +1 -1
- package/build/components/Install/InstallListItem.d.ts +2 -1
- package/build/components/Install/InstallListItem.js +17 -0
- package/build/components/Install/InstallListItem.js.map +1 -1
- package/build/components/Install/InstallListItem.mjs +17 -0
- package/build/components/Install/InstallListItem.mjs.map +1 -1
- package/build/components/Loading/PackageListSkeleton.d.ts +3 -0
- package/build/components/Loading/PackageListSkeleton.js +70 -0
- package/build/components/Loading/PackageListSkeleton.js.map +1 -0
- package/build/components/Loading/PackageListSkeleton.mjs +65 -0
- package/build/components/Loading/PackageListSkeleton.mjs.map +1 -0
- package/build/components/Loading/VersionSkeleton.d.ts +3 -0
- package/build/components/Loading/VersionSkeleton.js +119 -0
- package/build/components/Loading/VersionSkeleton.js.map +1 -0
- package/build/components/Loading/VersionSkeleton.mjs +111 -0
- package/build/components/Loading/VersionSkeleton.mjs.map +1 -0
- package/build/components/Loading/index.d.ts +2 -0
- package/build/components/Loading/index.js +4 -0
- package/build/components/Loading/index.mjs +4 -1
- package/build/components/Package/Package.js +5 -1
- package/build/components/Package/Package.js.map +1 -1
- package/build/components/Package/Package.mjs +6 -2
- package/build/components/Package/Package.mjs.map +1 -1
- package/build/components/Package/styles.d.ts +3 -0
- package/build/components/Package/styles.js +8 -0
- package/build/components/Package/styles.js.map +1 -1
- package/build/components/Package/styles.mjs +8 -1
- package/build/components/Package/styles.mjs.map +1 -1
- package/build/components/PackageList/PackageList.js +4 -4
- package/build/components/PackageList/PackageList.js.map +1 -1
- package/build/components/PackageList/PackageList.mjs +5 -5
- package/build/components/PackageList/PackageList.mjs.map +1 -1
- package/build/components/PackageList/PackageListToolbar.d.ts +15 -0
- package/build/components/PackageList/PackageListToolbar.js +127 -0
- package/build/components/PackageList/PackageListToolbar.js.map +1 -0
- package/build/components/PackageList/PackageListToolbar.mjs +119 -0
- package/build/components/PackageList/PackageListToolbar.mjs.map +1 -0
- package/build/components/PackageList/filterPackages.d.ts +16 -0
- package/build/components/PackageList/filterPackages.js +37 -0
- package/build/components/PackageList/filterPackages.js.map +1 -0
- package/build/components/PackageList/filterPackages.mjs +34 -0
- package/build/components/PackageList/filterPackages.mjs.map +1 -0
- package/build/components/RegistryInfoDialog/RegistryInfoDialog.js +18 -7
- package/build/components/RegistryInfoDialog/RegistryInfoDialog.js.map +1 -1
- package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs +18 -7
- package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs.map +1 -1
- package/build/components/RegistryInfoDialog/types.d.ts +1 -0
- package/build/components/Search/AutoComplete/AutoComplete.d.ts +3 -0
- package/build/components/Search/AutoComplete/AutoComplete.js +3 -1
- package/build/components/Search/AutoComplete/AutoComplete.js.map +1 -1
- package/build/components/Search/AutoComplete/AutoComplete.mjs +3 -1
- package/build/components/Search/AutoComplete/AutoComplete.mjs.map +1 -1
- package/build/components/Search/Search.js +28 -1
- package/build/components/Search/Search.js.map +1 -1
- package/build/components/Search/Search.mjs +31 -5
- package/build/components/Search/Search.mjs.map +1 -1
- package/build/components/Search/SearchItem.d.ts +12 -1
- package/build/components/Search/SearchItem.js +53 -70
- package/build/components/Search/SearchItem.js.map +1 -1
- package/build/components/Search/SearchItem.mjs +51 -67
- package/build/components/Search/SearchItem.mjs.map +1 -1
- package/build/components/Search/utils.d.ts +10 -0
- package/build/components/Search/utils.js +28 -1
- package/build/components/Search/utils.js.map +1 -1
- package/build/components/Search/utils.mjs +26 -2
- package/build/components/Search/utils.mjs.map +1 -1
- package/build/components/SettingsMenu/SettingsMenu.js +2 -2
- package/build/components/SettingsMenu/SettingsMenu.mjs +1 -1
- package/build/components/Versions/Versions.js +8 -2
- package/build/components/Versions/Versions.js.map +1 -1
- package/build/components/Versions/Versions.mjs +8 -2
- package/build/components/Versions/Versions.mjs.map +1 -1
- package/build/components/VisuallyHidden/index.d.ts +5 -0
- package/build/components/VisuallyHidden/index.js +17 -0
- package/build/components/VisuallyHidden/index.js.map +1 -0
- package/build/components/VisuallyHidden/index.mjs +15 -0
- package/build/components/VisuallyHidden/index.mjs.map +1 -0
- package/build/configuration.js +2 -1
- package/build/configuration.js.map +1 -1
- package/build/configuration.mjs +2 -1
- package/build/configuration.mjs.map +1 -1
- package/build/i18n/crowdin/ui.js +68 -11
- package/build/i18n/crowdin/ui.js.map +1 -1
- package/build/i18n/crowdin/ui.json +64 -11
- package/build/i18n/crowdin/ui.mjs +67 -12
- package/build/i18n/crowdin/ui.mjs.map +1 -1
- package/build/i18n/download_translations/cs-CZ/ui.js +68 -11
- package/build/i18n/download_translations/cs-CZ/ui.js.map +1 -1
- package/build/i18n/download_translations/cs-CZ/ui.json +64 -11
- package/build/i18n/download_translations/cs-CZ/ui.mjs +67 -12
- package/build/i18n/download_translations/cs-CZ/ui.mjs.map +1 -1
- package/build/i18n/download_translations/de-DE/ui.js +68 -11
- package/build/i18n/download_translations/de-DE/ui.js.map +1 -1
- package/build/i18n/download_translations/de-DE/ui.json +64 -11
- package/build/i18n/download_translations/de-DE/ui.mjs +67 -12
- package/build/i18n/download_translations/de-DE/ui.mjs.map +1 -1
- package/build/i18n/download_translations/es-ES/ui.js +68 -11
- package/build/i18n/download_translations/es-ES/ui.js.map +1 -1
- package/build/i18n/download_translations/es-ES/ui.json +64 -11
- package/build/i18n/download_translations/es-ES/ui.mjs +67 -12
- package/build/i18n/download_translations/es-ES/ui.mjs.map +1 -1
- package/build/i18n/download_translations/fr-FR/ui.js +68 -11
- package/build/i18n/download_translations/fr-FR/ui.js.map +1 -1
- package/build/i18n/download_translations/fr-FR/ui.json +64 -11
- package/build/i18n/download_translations/fr-FR/ui.mjs +67 -12
- package/build/i18n/download_translations/fr-FR/ui.mjs.map +1 -1
- package/build/i18n/download_translations/ga-IE/ui.js +68 -11
- package/build/i18n/download_translations/ga-IE/ui.js.map +1 -1
- package/build/i18n/download_translations/ga-IE/ui.json +64 -11
- package/build/i18n/download_translations/ga-IE/ui.mjs +67 -12
- package/build/i18n/download_translations/ga-IE/ui.mjs.map +1 -1
- package/build/i18n/download_translations/gl-ES/ui.js +68 -11
- package/build/i18n/download_translations/gl-ES/ui.js.map +1 -1
- package/build/i18n/download_translations/gl-ES/ui.json +64 -11
- package/build/i18n/download_translations/gl-ES/ui.mjs +67 -12
- package/build/i18n/download_translations/gl-ES/ui.mjs.map +1 -1
- package/build/i18n/download_translations/it-IT/ui.js +68 -11
- package/build/i18n/download_translations/it-IT/ui.js.map +1 -1
- package/build/i18n/download_translations/it-IT/ui.json +64 -11
- package/build/i18n/download_translations/it-IT/ui.mjs +67 -12
- package/build/i18n/download_translations/it-IT/ui.mjs.map +1 -1
- package/build/i18n/download_translations/ko-KR/ui.js +68 -11
- package/build/i18n/download_translations/ko-KR/ui.js.map +1 -1
- package/build/i18n/download_translations/ko-KR/ui.json +64 -11
- package/build/i18n/download_translations/ko-KR/ui.mjs +67 -12
- package/build/i18n/download_translations/ko-KR/ui.mjs.map +1 -1
- package/build/i18n/download_translations/pl-PL/ui.js +68 -11
- package/build/i18n/download_translations/pl-PL/ui.js.map +1 -1
- package/build/i18n/download_translations/pl-PL/ui.json +64 -11
- package/build/i18n/download_translations/pl-PL/ui.mjs +67 -12
- package/build/i18n/download_translations/pl-PL/ui.mjs.map +1 -1
- package/build/i18n/download_translations/pt-BR/ui.js +68 -11
- package/build/i18n/download_translations/pt-BR/ui.js.map +1 -1
- package/build/i18n/download_translations/pt-BR/ui.json +64 -11
- package/build/i18n/download_translations/pt-BR/ui.mjs +67 -12
- package/build/i18n/download_translations/pt-BR/ui.mjs.map +1 -1
- package/build/i18n/download_translations/ru-RU/ui.js +68 -11
- package/build/i18n/download_translations/ru-RU/ui.js.map +1 -1
- package/build/i18n/download_translations/ru-RU/ui.json +64 -11
- package/build/i18n/download_translations/ru-RU/ui.mjs +67 -12
- package/build/i18n/download_translations/ru-RU/ui.mjs.map +1 -1
- package/build/i18n/download_translations/sr-CS/ui.js +66 -12
- package/build/i18n/download_translations/sr-CS/ui.js.map +1 -1
- package/build/i18n/download_translations/sr-CS/ui.json +64 -11
- package/build/i18n/download_translations/sr-CS/ui.mjs +66 -13
- package/build/i18n/download_translations/sr-CS/ui.mjs.map +1 -1
- package/build/i18n/download_translations/tr-TR/ui.js +68 -11
- package/build/i18n/download_translations/tr-TR/ui.js.map +1 -1
- package/build/i18n/download_translations/tr-TR/ui.json +64 -11
- package/build/i18n/download_translations/tr-TR/ui.mjs +67 -12
- package/build/i18n/download_translations/tr-TR/ui.mjs.map +1 -1
- package/build/i18n/download_translations/vi-VN/ui.js +66 -12
- package/build/i18n/download_translations/vi-VN/ui.js.map +1 -1
- package/build/i18n/download_translations/vi-VN/ui.json +64 -11
- package/build/i18n/download_translations/vi-VN/ui.mjs +66 -13
- package/build/i18n/download_translations/vi-VN/ui.mjs.map +1 -1
- package/build/i18n/download_translations/yo-NG/ui.js +66 -12
- package/build/i18n/download_translations/yo-NG/ui.js.map +1 -1
- package/build/i18n/download_translations/yo-NG/ui.json +64 -11
- package/build/i18n/download_translations/yo-NG/ui.mjs +66 -13
- package/build/i18n/download_translations/yo-NG/ui.mjs.map +1 -1
- package/build/i18n/download_translations/zh-CN/ui.js +68 -11
- package/build/i18n/download_translations/zh-CN/ui.js.map +1 -1
- package/build/i18n/download_translations/zh-CN/ui.json +64 -11
- package/build/i18n/download_translations/zh-CN/ui.mjs +67 -12
- package/build/i18n/download_translations/zh-CN/ui.mjs.map +1 -1
- package/build/i18n/download_translations/zh-TW/ui.js +68 -11
- package/build/i18n/download_translations/zh-TW/ui.js.map +1 -1
- package/build/i18n/download_translations/zh-TW/ui.json +64 -11
- package/build/i18n/download_translations/zh-TW/ui.mjs +67 -12
- package/build/i18n/download_translations/zh-TW/ui.mjs.map +1 -1
- package/build/i18n/loadTranslationFile.d.ts +2 -2
- package/build/i18n/loadTranslationFile.js +2 -2
- package/build/i18n/loadTranslationFile.js.map +1 -1
- package/build/i18n/loadTranslationFile.mjs +2 -2
- package/build/i18n/loadTranslationFile.mjs.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +8 -0
- package/build/index.mjs +4 -2
- package/build/mockServiceWorker.js +1 -0
- package/build/pages/Version/Version.js +2 -2
- package/build/pages/Version/Version.js.map +1 -1
- package/build/pages/Version/Version.mjs +2 -2
- package/build/pages/Version/Version.mjs.map +1 -1
- package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js +3 -1
- package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js.map +1 -1
- package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs +3 -1
- package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs.map +1 -1
- package/build/providers/ManifestsProvider/ManifestsProvider.d.ts +3 -0
- package/build/providers/ManifestsProvider/ManifestsProvider.js +9 -2
- package/build/providers/ManifestsProvider/ManifestsProvider.js.map +1 -1
- package/build/providers/ManifestsProvider/ManifestsProvider.mjs +10 -4
- package/build/providers/ManifestsProvider/ManifestsProvider.mjs.map +1 -1
- package/build/sections/Detail/ContainerContent.js +8 -0
- package/build/sections/Detail/ContainerContent.js.map +1 -1
- package/build/sections/Detail/ContainerContent.mjs +8 -1
- package/build/sections/Detail/ContainerContent.mjs.map +1 -1
- package/build/sections/Detail/Detail.d.ts +3 -6
- package/build/sections/Detail/Detail.js +13 -14
- package/build/sections/Detail/Detail.js.map +1 -1
- package/build/sections/Detail/Detail.mjs +14 -15
- package/build/sections/Detail/Detail.mjs.map +1 -1
- package/build/sections/Detail/Tabs.d.ts +3 -2
- package/build/sections/Detail/Tabs.js +9 -4
- package/build/sections/Detail/Tabs.js.map +1 -1
- package/build/sections/Detail/Tabs.mjs +9 -4
- package/build/sections/Detail/Tabs.mjs.map +1 -1
- package/build/sections/Footer/Footer.js +24 -3
- package/build/sections/Footer/Footer.js.map +1 -1
- package/build/sections/Footer/Footer.mjs +24 -4
- package/build/sections/Footer/Footer.mjs.map +1 -1
- package/build/sections/Footer/styles.d.ts +6 -0
- package/build/sections/Footer/styles.js +21 -2
- package/build/sections/Footer/styles.js.map +1 -1
- package/build/sections/Footer/styles.mjs +21 -3
- package/build/sections/Footer/styles.mjs.map +1 -1
- package/build/sections/Header/HeaderSettingsDialog.js +39 -10
- package/build/sections/Header/HeaderSettingsDialog.js.map +1 -1
- package/build/sections/Header/HeaderSettingsDialog.mjs +39 -10
- package/build/sections/Header/HeaderSettingsDialog.mjs.map +1 -1
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.d.ts +1 -4
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js +98 -15
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js.map +1 -1
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs +100 -15
- package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
- package/build/sections/Home/Home.js +58 -2
- package/build/sections/Home/Home.js.map +1 -1
- package/build/sections/Home/Home.mjs +60 -4
- package/build/sections/Home/Home.mjs.map +1 -1
- package/build/utils/cli-utils.d.ts +10 -0
- package/build/utils/cli-utils.js +26 -0
- package/build/utils/cli-utils.js.map +1 -1
- package/build/utils/cli-utils.mjs +23 -1
- package/build/utils/cli-utils.mjs.map +1 -1
- package/build/utils/index.d.ts +1 -1
- package/build/utils/index.js +4 -0
- package/build/utils/index.mjs +2 -2
- package/build/utils/markdown.d.ts +6 -0
- package/build/utils/markdown.js +16 -0
- package/build/utils/markdown.js.map +1 -0
- package/build/utils/markdown.mjs +13 -0
- package/build/utils/markdown.mjs.map +1 -0
- package/package.json +8 -8
|
@@ -1,90 +1,74 @@
|
|
|
1
1
|
import { useConfig } from "../../providers/AppConfigurationProvider/AppConfigurationProvider.mjs";
|
|
2
|
-
import { cleanDescription } from "./utils.mjs";
|
|
2
|
+
import { SearchOrigin, cleanDescription } from "./utils.mjs";
|
|
3
3
|
import "../../index.mjs";
|
|
4
4
|
import styled from "@emotion/styled";
|
|
5
5
|
import "react";
|
|
6
6
|
import { useTranslation } from "react-i18next";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import HttpsIcon from "@mui/icons-material/Https";
|
|
12
|
-
import SyncAlt from "@mui/icons-material/SyncAlt";
|
|
8
|
+
import LockOutlined from "@mui/icons-material/LockOutlined";
|
|
9
|
+
import CloudOutlined from "@mui/icons-material/CloudOutlined";
|
|
10
|
+
import Inventory2Outlined from "@mui/icons-material/Inventory2Outlined";
|
|
13
11
|
//#region src/components/Search/SearchItem.tsx
|
|
14
|
-
var
|
|
12
|
+
var ORIGIN_ICONS = {
|
|
13
|
+
[SearchOrigin.PRIVATE]: LockOutlined,
|
|
14
|
+
[SearchOrigin.CACHED]: Inventory2Outlined,
|
|
15
|
+
[SearchOrigin.REMOTE]: CloudOutlined
|
|
16
|
+
};
|
|
17
|
+
var Row = styled("div")({
|
|
15
18
|
display: "flex",
|
|
16
19
|
alignItems: "center",
|
|
17
|
-
|
|
20
|
+
gap: 12,
|
|
21
|
+
width: "100%",
|
|
22
|
+
minWidth: 0
|
|
18
23
|
});
|
|
19
|
-
var
|
|
20
|
-
display: "
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
overflow: "hidden",
|
|
27
|
-
paddingLeft: theme.spacing(),
|
|
28
|
-
fontSize: theme.fontSize.ssm,
|
|
29
|
-
[`@media (min-width: ${theme.breakPoints.medium}px)`]: {
|
|
30
|
-
display: "block",
|
|
31
|
-
width: "300px"
|
|
32
|
-
},
|
|
33
|
-
[`@media (min-width: ${theme.breakPoints.large}px)`]: {
|
|
34
|
-
display: "block",
|
|
35
|
-
width: "500px"
|
|
36
|
-
},
|
|
37
|
-
[`@media (min-width: 1440px)`]: {
|
|
38
|
-
display: "block",
|
|
39
|
-
width: "600px"
|
|
40
|
-
}
|
|
41
|
-
}));
|
|
42
|
-
var NameGroup = styled.span({
|
|
24
|
+
var Text = styled("div")({
|
|
25
|
+
display: "flex",
|
|
26
|
+
flexDirection: "column",
|
|
27
|
+
flex: 1,
|
|
28
|
+
minWidth: 0
|
|
29
|
+
});
|
|
30
|
+
var TitleLine = styled("div")({
|
|
43
31
|
display: "flex",
|
|
44
|
-
|
|
32
|
+
alignItems: "baseline",
|
|
33
|
+
gap: 8
|
|
45
34
|
});
|
|
46
35
|
var Name = styled("span")(({ theme }) => ({
|
|
47
|
-
fontWeight:
|
|
48
|
-
fontSize: theme.fontSize.sm
|
|
36
|
+
fontWeight: 700,
|
|
37
|
+
fontSize: theme.fontSize.sm,
|
|
38
|
+
overflow: "hidden",
|
|
39
|
+
textOverflow: "ellipsis",
|
|
40
|
+
whiteSpace: "nowrap"
|
|
41
|
+
}));
|
|
42
|
+
var Version = styled("span")(({ theme }) => ({
|
|
43
|
+
marginLeft: "auto",
|
|
44
|
+
flexShrink: 0,
|
|
45
|
+
fontSize: theme.fontSize.ssm,
|
|
46
|
+
color: theme.palette.text.secondary
|
|
47
|
+
}));
|
|
48
|
+
var Description = styled("span")(({ theme }) => ({
|
|
49
|
+
color: theme.palette.text.secondary,
|
|
50
|
+
fontSize: theme.fontSize.ssm,
|
|
51
|
+
lineHeight: 1.5,
|
|
52
|
+
overflow: "hidden",
|
|
53
|
+
textOverflow: "ellipsis",
|
|
54
|
+
whiteSpace: "nowrap"
|
|
49
55
|
}));
|
|
50
|
-
var Version = styled("span")(({ theme }) => ({ fontSize: theme.fontSize.ssm }));
|
|
51
56
|
var SearchItem = ({ name, description, isPrivate = false, isRemote = false, isCached = false, version, ...props }) => {
|
|
52
57
|
const { t } = useTranslation();
|
|
53
58
|
const { configOptions } = useConfig();
|
|
54
|
-
const
|
|
55
|
-
|
|
59
|
+
const origin = isPrivate ? SearchOrigin.PRIVATE : isCached ? SearchOrigin.CACHED : isRemote ? SearchOrigin.REMOTE : void 0;
|
|
60
|
+
const OriginIcon = configOptions?.showUplinks && origin ? ORIGIN_ICONS[origin] : void 0;
|
|
61
|
+
return /* @__PURE__ */ jsx("li", {
|
|
56
62
|
...props,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
color: "primary",
|
|
64
|
-
deleteIcon: /* @__PURE__ */ jsx(HttpsIcon, {}),
|
|
65
|
-
label: t("search.isPrivate"),
|
|
66
|
-
onDelete: handleDelete,
|
|
67
|
-
size: "small"
|
|
68
|
-
}),
|
|
69
|
-
isRemote && !isPrivate && /* @__PURE__ */ jsx(Chip, {
|
|
70
|
-
deleteIcon: /* @__PURE__ */ jsx(SyncAlt, {}),
|
|
71
|
-
label: t("search.isRemote"),
|
|
72
|
-
onDelete: handleDelete,
|
|
73
|
-
size: "small",
|
|
74
|
-
variant: "outlined"
|
|
75
|
-
}),
|
|
76
|
-
isCached && /* @__PURE__ */ jsx(Chip, {
|
|
77
|
-
deleteIcon: /* @__PURE__ */ jsx(Cached, {}),
|
|
78
|
-
label: t("search.isCached"),
|
|
79
|
-
onDelete: handleDelete,
|
|
80
|
-
size: "small",
|
|
81
|
-
variant: "outlined"
|
|
82
|
-
})
|
|
83
|
-
]
|
|
84
|
-
}) })]
|
|
63
|
+
children: /* @__PURE__ */ jsxs(Row, { children: [OriginIcon && /* @__PURE__ */ jsx(OriginIcon, {
|
|
64
|
+
color: origin === SearchOrigin.PRIVATE ? "primary" : "action",
|
|
65
|
+
"data-testid": `search-origin-${origin}`,
|
|
66
|
+
fontSize: "small",
|
|
67
|
+
titleAccess: t(`search.origin.${origin}`)
|
|
68
|
+
}), /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsxs(TitleLine, { children: [/* @__PURE__ */ jsx(Name, { children: name }), version && /* @__PURE__ */ jsx(Version, { children: version })] }), description && /* @__PURE__ */ jsx(Description, { children: cleanDescription(description) })] })] })
|
|
85
69
|
});
|
|
86
70
|
};
|
|
87
71
|
//#endregion
|
|
88
|
-
export { Description, SearchItem as default };
|
|
72
|
+
export { Description, ORIGIN_ICONS, SearchItem as default };
|
|
89
73
|
|
|
90
74
|
//# sourceMappingURL=SearchItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchItem.mjs","names":[],"sources":["../../../src/components/Search/SearchItem.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport
|
|
1
|
+
{"version":3,"file":"SearchItem.mjs","names":[],"sources":["../../../src/components/Search/SearchItem.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport CloudOutlined from '@mui/icons-material/CloudOutlined';\nimport Inventory2Outlined from '@mui/icons-material/Inventory2Outlined';\nimport LockOutlined from '@mui/icons-material/LockOutlined';\nimport type { Theme } from '@mui/material';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useConfig } from '../../';\nimport { SearchOrigin, cleanDescription } from './utils';\n\ntype SearchItemProps = {\n name: string;\n version?: string;\n description?: string;\n isPrivate?: boolean;\n isCached?: boolean;\n isRemote?: boolean;\n};\n\nexport const ORIGIN_ICONS = {\n [SearchOrigin.PRIVATE]: LockOutlined,\n [SearchOrigin.CACHED]: Inventory2Outlined,\n [SearchOrigin.REMOTE]: CloudOutlined,\n};\n\nconst Row = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n width: '100%',\n minWidth: 0,\n});\n\nconst Text = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n});\n\nconst TitleLine = styled('div')({\n display: 'flex',\n alignItems: 'baseline',\n gap: 8,\n});\n\nconst Name = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n fontWeight: 700,\n fontSize: theme.fontSize.sm,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}));\n\nconst Version = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n marginLeft: 'auto',\n flexShrink: 0,\n fontSize: theme.fontSize.ssm,\n color: theme.palette.text.secondary,\n}));\n\nexport const Description = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n color: theme.palette.text.secondary,\n fontSize: theme.fontSize.ssm,\n lineHeight: 1.5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}));\n\nconst SearchItem: React.FC<SearchItemProps> = ({\n name,\n description,\n isPrivate = false,\n isRemote = false,\n isCached = false,\n version,\n ...props\n}) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n const origin = isPrivate\n ? SearchOrigin.PRIVATE\n : isCached\n ? SearchOrigin.CACHED\n : isRemote\n ? SearchOrigin.REMOTE\n : undefined;\n const OriginIcon = configOptions?.showUplinks && origin ? ORIGIN_ICONS[origin] : undefined;\n\n return (\n <li {...props}>\n <Row>\n {OriginIcon && (\n <OriginIcon\n color={origin === SearchOrigin.PRIVATE ? 'primary' : 'action'}\n data-testid={`search-origin-${origin}`}\n fontSize=\"small\"\n titleAccess={t(`search.origin.${origin}`)}\n />\n )}\n <Text>\n <TitleLine>\n <Name>{name}</Name>\n {version && <Version>{version}</Version>}\n </TitleLine>\n {description && <Description>{cleanDescription(description)}</Description>}\n </Text>\n </Row>\n </li>\n );\n};\n\nexport default SearchItem;\n"],"mappings":";;;;;;;;;;;AAoBA,IAAa,eAAe;EACzB,aAAa,UAAU;EACvB,aAAa,SAAS;EACtB,aAAa,SAAS;AACzB;AAEA,IAAM,MAAM,OAAO,KAAK,CAAC,CAAC;CACxB,SAAS;CACT,YAAY;CACZ,KAAK;CACL,OAAO;CACP,UAAU;AACZ,CAAC;AAED,IAAM,OAAO,OAAO,KAAK,CAAC,CAAC;CACzB,SAAS;CACT,eAAe;CACf,MAAM;CACN,UAAU;AACZ,CAAC;AAED,IAAM,YAAY,OAAO,KAAK,CAAC,CAAC;CAC9B,SAAS;CACT,YAAY;CACZ,KAAK;AACP,CAAC;AAED,IAAM,OAAO,OAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CAC7D,YAAY;CACZ,UAAU,MAAM,SAAS;CACzB,UAAU;CACV,cAAc;CACd,YAAY;AACd,EAAE;AAEF,IAAM,UAAU,OAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CAChE,YAAY;CACZ,YAAY;CACZ,UAAU,MAAM,SAAS;CACzB,OAAO,MAAM,QAAQ,KAAK;AAC5B,EAAE;AAEF,IAAa,cAAc,OAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CAC3E,OAAO,MAAM,QAAQ,KAAK;CAC1B,UAAU,MAAM,SAAS;CACzB,YAAY;CACZ,UAAU;CACV,cAAc;CACd,YAAY;AACd,EAAE;AAEF,IAAM,cAAyC,EAC7C,MACA,aACA,YAAY,OACZ,WAAW,OACX,WAAW,OACX,SACA,GAAG,YACC;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,SAAS,YACX,aAAa,UACb,WACE,aAAa,SACb,WACE,aAAa,SACb,KAAA;CACR,MAAM,aAAa,eAAe,eAAe,SAAS,aAAa,UAAU,KAAA;CAEjF,OACE,oBAAC,MAAD;EAAI,GAAI;EACN,UAAA,qBAAC,KAAD,EAAA,UAAA,CACG,cACC,oBAAC,YAAD;GACE,OAAO,WAAW,aAAa,UAAU,YAAY;GACrD,eAAa,iBAAiB;GAC9B,UAAS;GACT,aAAa,EAAE,iBAAiB,QAAQ;EACzC,CAAA,GAEH,qBAAC,MAAD,EAAA,UAAA,CACE,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,MAAD,EAAA,UAAO,KAAW,CAAA,GACjB,WAAW,oBAAC,SAAD,EAAA,UAAU,QAAiB,CAAA,CAC9B,EAAA,CAAA,GACV,eAAe,oBAAC,aAAD,EAAA,UAAc,iBAAiB,WAAW,EAAe,CAAA,CACrE,EAAA,CAAA,CACH,EAAA,CAAA;CACH,CAAA;AAER"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/** Where a search result lives: published here, cached from an uplink, or only on an uplink. */
|
|
2
|
+
export declare enum SearchOrigin {
|
|
3
|
+
PRIVATE = "private",
|
|
4
|
+
CACHED = "cached",
|
|
5
|
+
REMOTE = "remote"
|
|
6
|
+
}
|
|
7
|
+
export declare const SEARCH_ORIGIN_ORDER: SearchOrigin[];
|
|
1
8
|
export type NormalizedSearchOption = {
|
|
2
9
|
name: string;
|
|
3
10
|
version?: string;
|
|
@@ -5,6 +12,7 @@ export type NormalizedSearchOption = {
|
|
|
5
12
|
isPrivate: boolean;
|
|
6
13
|
isCached: boolean;
|
|
7
14
|
isRemote: boolean;
|
|
15
|
+
origin?: SearchOrigin;
|
|
8
16
|
};
|
|
9
17
|
/**
|
|
10
18
|
* Normalize a raw search result into a unified shape the UI can render,
|
|
@@ -19,4 +27,6 @@ export type NormalizedSearchOption = {
|
|
|
19
27
|
* default to `false` and the UI simply omits the corresponding badges.
|
|
20
28
|
*/
|
|
21
29
|
export declare function normalizeSearchOption(option: any): NormalizedSearchOption;
|
|
30
|
+
/** Orders results private, cached, remote (stable inside each group), as grouping requires. */
|
|
31
|
+
export declare function sortByOrigin<T>(options: T[]): T[];
|
|
22
32
|
export declare function cleanDescription(description: string): string;
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
//#region src/components/Search/utils.ts
|
|
2
|
+
/** Where a search result lives: published here, cached from an uplink, or only on an uplink. */
|
|
3
|
+
var SearchOrigin = /* @__PURE__ */ function(SearchOrigin) {
|
|
4
|
+
SearchOrigin["PRIVATE"] = "private";
|
|
5
|
+
SearchOrigin["CACHED"] = "cached";
|
|
6
|
+
SearchOrigin["REMOTE"] = "remote";
|
|
7
|
+
return SearchOrigin;
|
|
8
|
+
}({});
|
|
9
|
+
var SEARCH_ORIGIN_ORDER = [
|
|
10
|
+
"private",
|
|
11
|
+
"cached",
|
|
12
|
+
"remote"
|
|
13
|
+
];
|
|
2
14
|
/**
|
|
3
15
|
* Normalize a raw search result into a unified shape the UI can render,
|
|
4
16
|
* regardless of which backend response format was returned:
|
|
@@ -22,7 +34,8 @@ function normalizeSearchOption(option) {
|
|
|
22
34
|
description: pkg.description,
|
|
23
35
|
isPrivate,
|
|
24
36
|
isCached,
|
|
25
|
-
isRemote: !isCached && !isPrivate
|
|
37
|
+
isRemote: !isCached && !isPrivate,
|
|
38
|
+
origin: isPrivate ? "private" : isCached ? "cached" : "remote"
|
|
26
39
|
};
|
|
27
40
|
}
|
|
28
41
|
const flat = option ?? {};
|
|
@@ -35,6 +48,17 @@ function normalizeSearchOption(option) {
|
|
|
35
48
|
isRemote: false
|
|
36
49
|
};
|
|
37
50
|
}
|
|
51
|
+
/** Orders results private, cached, remote (stable inside each group), as grouping requires. */
|
|
52
|
+
function sortByOrigin(options) {
|
|
53
|
+
const rank = (option) => {
|
|
54
|
+
const origin = normalizeSearchOption(option).origin;
|
|
55
|
+
return origin ? SEARCH_ORIGIN_ORDER.indexOf(origin) : SEARCH_ORIGIN_ORDER.length;
|
|
56
|
+
};
|
|
57
|
+
return options.map((option, index) => ({
|
|
58
|
+
option,
|
|
59
|
+
index
|
|
60
|
+
})).sort((a, b) => rank(a.option) - rank(b.option) || a.index - b.index).map(({ option }) => option);
|
|
61
|
+
}
|
|
38
62
|
function removeHtmlTags(input) {
|
|
39
63
|
let previous;
|
|
40
64
|
do {
|
|
@@ -50,7 +74,10 @@ function cleanDescription(description) {
|
|
|
50
74
|
return output;
|
|
51
75
|
}
|
|
52
76
|
//#endregion
|
|
77
|
+
exports.SEARCH_ORIGIN_ORDER = SEARCH_ORIGIN_ORDER;
|
|
78
|
+
exports.SearchOrigin = SearchOrigin;
|
|
53
79
|
exports.cleanDescription = cleanDescription;
|
|
54
80
|
exports.normalizeSearchOption = normalizeSearchOption;
|
|
81
|
+
exports.sortByOrigin = sortByOrigin;
|
|
55
82
|
|
|
56
83
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/Search/utils.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/Search/utils.ts"],"sourcesContent":["/** Where a search result lives: published here, cached from an uplink, or only on an uplink. */\nexport enum SearchOrigin {\n PRIVATE = 'private',\n CACHED = 'cached',\n REMOTE = 'remote',\n}\n\nexport const SEARCH_ORIGIN_ORDER = [SearchOrigin.PRIVATE, SearchOrigin.CACHED, SearchOrigin.REMOTE];\n\nexport type NormalizedSearchOption = {\n name: string;\n version?: string;\n description?: string;\n isPrivate: boolean;\n isCached: boolean;\n isRemote: boolean;\n origin?: SearchOrigin;\n};\n\n/**\n * Normalize a raw search result into a unified shape the UI can render,\n * regardless of which backend response format was returned:\n *\n * 1) npm-style \"search objects\" response where each entry is wrapped in\n * `{ package: { name, version, description, ... }, verdaccioPrivate, verdaccioPkgCached }`.\n * 2) Flat packument-style response where each entry exposes `name`, `version`,\n * `description`, `dist`, etc. directly at the top level.\n *\n * The second shape carries no uplink metadata, so private/remote/cached flags\n * default to `false` and the UI simply omits the corresponding badges.\n */\nexport function normalizeSearchOption(option: any): NormalizedSearchOption {\n if (option && typeof option === 'object' && option.package) {\n const pkg = option.package ?? {};\n const isPrivate = Boolean(option.verdaccioPrivate);\n const isCached = Boolean(option.verdaccioPkgCached);\n return {\n name: pkg.name,\n version: pkg.version,\n description: pkg.description,\n isPrivate,\n isCached,\n isRemote: !isCached && !isPrivate,\n origin: isPrivate\n ? SearchOrigin.PRIVATE\n : isCached\n ? SearchOrigin.CACHED\n : SearchOrigin.REMOTE,\n };\n }\n\n const flat = option ?? {};\n return {\n name: flat.name,\n version: flat.version,\n description: flat.description,\n isPrivate: false,\n isCached: false,\n isRemote: false,\n };\n}\n\n/** Orders results private, cached, remote (stable inside each group), as grouping requires. */\nexport function sortByOrigin<T>(options: T[]): T[] {\n const rank = (option: T) => {\n const origin = normalizeSearchOption(option).origin;\n return origin ? SEARCH_ORIGIN_ORDER.indexOf(origin) : SEARCH_ORIGIN_ORDER.length;\n };\n return options\n .map((option, index) => ({ option, index }))\n .sort((a, b) => rank(a.option) - rank(b.option) || a.index - b.index)\n .map(({ option }) => option);\n}\n\nfunction removeHtmlTags(input: string): string {\n let previous;\n do {\n previous = input;\n input = input.replace(/<[^>]*>?/gm, '');\n } while (input !== previous);\n return input;\n}\n\nexport function cleanDescription(description: string): string {\n let output = description;\n // remove html tags from description (e.g. <h1...>)\n output = removeHtmlTags(output);\n // remove markdown links from description (e.g. [link](url))\n output = output.replace(/\\(.*?\\)/gm, '').replace(/(\\[!?|\\])/gm, '');\n return output;\n}\n"],"mappings":";;AACA,IAAY,eAAL,yBAAA,cAAA;CACL,aAAA,aAAA;CACA,aAAA,YAAA;CACA,aAAA,YAAA;;AACF,EAAA,CAAA,CAAA;AAEA,IAAa,sBAAsB;;;;AAA+D;;;;;;;;;;;;;AAwBlG,SAAgB,sBAAsB,QAAqC;CACzE,IAAI,UAAU,OAAO,WAAW,YAAY,OAAO,SAAS;EAC1D,MAAM,MAAM,OAAO,WAAW,CAAC;EAC/B,MAAM,YAAY,QAAQ,OAAO,gBAAgB;EACjD,MAAM,WAAW,QAAQ,OAAO,kBAAkB;EAClD,OAAO;GACL,MAAM,IAAI;GACV,SAAS,IAAI;GACb,aAAa,IAAI;GACjB;GACA;GACA,UAAU,CAAC,YAAY,CAAC;GACxB,QAAQ,YAAA,YAEJ,WAAA,WAAA;EAGN;CACF;CAEA,MAAM,OAAO,UAAU,CAAC;CACxB,OAAO;EACL,MAAM,KAAK;EACX,SAAS,KAAK;EACd,aAAa,KAAK;EAClB,WAAW;EACX,UAAU;EACV,UAAU;CACZ;AACF;;AAGA,SAAgB,aAAgB,SAAmB;CACjD,MAAM,QAAQ,WAAc;EAC1B,MAAM,SAAS,sBAAsB,MAAM,CAAC,CAAC;EAC7C,OAAO,SAAS,oBAAoB,QAAQ,MAAM,IAAI,oBAAoB;CAC5E;CACA,OAAO,QACJ,KAAK,QAAQ,WAAW;EAAE;EAAQ;CAAM,EAAE,CAAC,CAC3C,MAAM,GAAG,MAAM,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CACpE,KAAK,EAAE,aAAa,MAAM;AAC/B;AAEA,SAAS,eAAe,OAAuB;CAC7C,IAAI;CACJ,GAAG;EACD,WAAW;EACX,QAAQ,MAAM,QAAQ,cAAc,EAAE;CACxC,SAAS,UAAU;CACnB,OAAO;AACT;AAEA,SAAgB,iBAAiB,aAA6B;CAC5D,IAAI,SAAS;CAEb,SAAS,eAAe,MAAM;CAE9B,SAAS,OAAO,QAAQ,aAAa,EAAE,CAAC,CAAC,QAAQ,eAAe,EAAE;CAClE,OAAO;AACT"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
//#region src/components/Search/utils.ts
|
|
2
|
+
/** Where a search result lives: published here, cached from an uplink, or only on an uplink. */
|
|
3
|
+
var SearchOrigin = /* @__PURE__ */ function(SearchOrigin) {
|
|
4
|
+
SearchOrigin["PRIVATE"] = "private";
|
|
5
|
+
SearchOrigin["CACHED"] = "cached";
|
|
6
|
+
SearchOrigin["REMOTE"] = "remote";
|
|
7
|
+
return SearchOrigin;
|
|
8
|
+
}({});
|
|
9
|
+
var SEARCH_ORIGIN_ORDER = [
|
|
10
|
+
"private",
|
|
11
|
+
"cached",
|
|
12
|
+
"remote"
|
|
13
|
+
];
|
|
2
14
|
/**
|
|
3
15
|
* Normalize a raw search result into a unified shape the UI can render,
|
|
4
16
|
* regardless of which backend response format was returned:
|
|
@@ -22,7 +34,8 @@ function normalizeSearchOption(option) {
|
|
|
22
34
|
description: pkg.description,
|
|
23
35
|
isPrivate,
|
|
24
36
|
isCached,
|
|
25
|
-
isRemote: !isCached && !isPrivate
|
|
37
|
+
isRemote: !isCached && !isPrivate,
|
|
38
|
+
origin: isPrivate ? "private" : isCached ? "cached" : "remote"
|
|
26
39
|
};
|
|
27
40
|
}
|
|
28
41
|
const flat = option ?? {};
|
|
@@ -35,6 +48,17 @@ function normalizeSearchOption(option) {
|
|
|
35
48
|
isRemote: false
|
|
36
49
|
};
|
|
37
50
|
}
|
|
51
|
+
/** Orders results private, cached, remote (stable inside each group), as grouping requires. */
|
|
52
|
+
function sortByOrigin(options) {
|
|
53
|
+
const rank = (option) => {
|
|
54
|
+
const origin = normalizeSearchOption(option).origin;
|
|
55
|
+
return origin ? SEARCH_ORIGIN_ORDER.indexOf(origin) : SEARCH_ORIGIN_ORDER.length;
|
|
56
|
+
};
|
|
57
|
+
return options.map((option, index) => ({
|
|
58
|
+
option,
|
|
59
|
+
index
|
|
60
|
+
})).sort((a, b) => rank(a.option) - rank(b.option) || a.index - b.index).map(({ option }) => option);
|
|
61
|
+
}
|
|
38
62
|
function removeHtmlTags(input) {
|
|
39
63
|
let previous;
|
|
40
64
|
do {
|
|
@@ -50,6 +74,6 @@ function cleanDescription(description) {
|
|
|
50
74
|
return output;
|
|
51
75
|
}
|
|
52
76
|
//#endregion
|
|
53
|
-
export { cleanDescription, normalizeSearchOption };
|
|
77
|
+
export { SEARCH_ORIGIN_ORDER, SearchOrigin, cleanDescription, normalizeSearchOption, sortByOrigin };
|
|
54
78
|
|
|
55
79
|
//# sourceMappingURL=utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/components/Search/utils.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/components/Search/utils.ts"],"sourcesContent":["/** Where a search result lives: published here, cached from an uplink, or only on an uplink. */\nexport enum SearchOrigin {\n PRIVATE = 'private',\n CACHED = 'cached',\n REMOTE = 'remote',\n}\n\nexport const SEARCH_ORIGIN_ORDER = [SearchOrigin.PRIVATE, SearchOrigin.CACHED, SearchOrigin.REMOTE];\n\nexport type NormalizedSearchOption = {\n name: string;\n version?: string;\n description?: string;\n isPrivate: boolean;\n isCached: boolean;\n isRemote: boolean;\n origin?: SearchOrigin;\n};\n\n/**\n * Normalize a raw search result into a unified shape the UI can render,\n * regardless of which backend response format was returned:\n *\n * 1) npm-style \"search objects\" response where each entry is wrapped in\n * `{ package: { name, version, description, ... }, verdaccioPrivate, verdaccioPkgCached }`.\n * 2) Flat packument-style response where each entry exposes `name`, `version`,\n * `description`, `dist`, etc. directly at the top level.\n *\n * The second shape carries no uplink metadata, so private/remote/cached flags\n * default to `false` and the UI simply omits the corresponding badges.\n */\nexport function normalizeSearchOption(option: any): NormalizedSearchOption {\n if (option && typeof option === 'object' && option.package) {\n const pkg = option.package ?? {};\n const isPrivate = Boolean(option.verdaccioPrivate);\n const isCached = Boolean(option.verdaccioPkgCached);\n return {\n name: pkg.name,\n version: pkg.version,\n description: pkg.description,\n isPrivate,\n isCached,\n isRemote: !isCached && !isPrivate,\n origin: isPrivate\n ? SearchOrigin.PRIVATE\n : isCached\n ? SearchOrigin.CACHED\n : SearchOrigin.REMOTE,\n };\n }\n\n const flat = option ?? {};\n return {\n name: flat.name,\n version: flat.version,\n description: flat.description,\n isPrivate: false,\n isCached: false,\n isRemote: false,\n };\n}\n\n/** Orders results private, cached, remote (stable inside each group), as grouping requires. */\nexport function sortByOrigin<T>(options: T[]): T[] {\n const rank = (option: T) => {\n const origin = normalizeSearchOption(option).origin;\n return origin ? SEARCH_ORIGIN_ORDER.indexOf(origin) : SEARCH_ORIGIN_ORDER.length;\n };\n return options\n .map((option, index) => ({ option, index }))\n .sort((a, b) => rank(a.option) - rank(b.option) || a.index - b.index)\n .map(({ option }) => option);\n}\n\nfunction removeHtmlTags(input: string): string {\n let previous;\n do {\n previous = input;\n input = input.replace(/<[^>]*>?/gm, '');\n } while (input !== previous);\n return input;\n}\n\nexport function cleanDescription(description: string): string {\n let output = description;\n // remove html tags from description (e.g. <h1...>)\n output = removeHtmlTags(output);\n // remove markdown links from description (e.g. [link](url))\n output = output.replace(/\\(.*?\\)/gm, '').replace(/(\\[!?|\\])/gm, '');\n return output;\n}\n"],"mappings":";;AACA,IAAY,eAAL,yBAAA,cAAA;CACL,aAAA,aAAA;CACA,aAAA,YAAA;CACA,aAAA,YAAA;;AACF,EAAA,CAAA,CAAA;AAEA,IAAa,sBAAsB;;;;AAA+D;;;;;;;;;;;;;AAwBlG,SAAgB,sBAAsB,QAAqC;CACzE,IAAI,UAAU,OAAO,WAAW,YAAY,OAAO,SAAS;EAC1D,MAAM,MAAM,OAAO,WAAW,CAAC;EAC/B,MAAM,YAAY,QAAQ,OAAO,gBAAgB;EACjD,MAAM,WAAW,QAAQ,OAAO,kBAAkB;EAClD,OAAO;GACL,MAAM,IAAI;GACV,SAAS,IAAI;GACb,aAAa,IAAI;GACjB;GACA;GACA,UAAU,CAAC,YAAY,CAAC;GACxB,QAAQ,YAAA,YAEJ,WAAA,WAAA;EAGN;CACF;CAEA,MAAM,OAAO,UAAU,CAAC;CACxB,OAAO;EACL,MAAM,KAAK;EACX,SAAS,KAAK;EACd,aAAa,KAAK;EAClB,WAAW;EACX,UAAU;EACV,UAAU;CACZ;AACF;;AAGA,SAAgB,aAAgB,SAAmB;CACjD,MAAM,QAAQ,WAAc;EAC1B,MAAM,SAAS,sBAAsB,MAAM,CAAC,CAAC;EAC7C,OAAO,SAAS,oBAAoB,QAAQ,MAAM,IAAI,oBAAoB;CAC5E;CACA,OAAO,QACJ,KAAK,QAAQ,WAAW;EAAE;EAAQ;CAAM,EAAE,CAAC,CAC3C,MAAM,GAAG,MAAM,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CACpE,KAAK,EAAE,aAAa,MAAM;AAC/B;AAEA,SAAS,eAAe,OAAuB;CAC7C,IAAI;CACJ,GAAG;EACD,WAAW;EACX,QAAQ,MAAM,QAAQ,cAAc,EAAE;CACxC,SAAS,UAAU;CACnB,OAAO;AACT;AAEA,SAAgB,iBAAiB,aAA6B;CAC5D,IAAI,SAAS;CAEb,SAAS,eAAe,MAAM;CAE9B,SAAS,OAAO,QAAQ,aAAa,EAAE,CAAC,CAAC,QAAQ,eAAe,EAAE;CAClE,OAAO;AACT"}
|
|
@@ -3,14 +3,14 @@ const require_AppConfigurationProvider = require("../../providers/AppConfigurati
|
|
|
3
3
|
const require_PersistenceSettingProvider = require("../../providers/PersistenceSettingProvider/PersistenceSettingProvider.js");
|
|
4
4
|
require("../../providers/PersistenceSettingProvider/index.js");
|
|
5
5
|
require("../../providers/index.js");
|
|
6
|
+
let _mui_icons_material_Check = require("@mui/icons-material/Check");
|
|
7
|
+
_mui_icons_material_Check = require_runtime.__toESM(_mui_icons_material_Check);
|
|
6
8
|
let _mui_material_IconButton = require("@mui/material/IconButton");
|
|
7
9
|
_mui_material_IconButton = require_runtime.__toESM(_mui_material_IconButton);
|
|
8
10
|
let react = require("react");
|
|
9
11
|
react = require_runtime.__toESM(react);
|
|
10
12
|
let react_i18next = require("react-i18next");
|
|
11
13
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
12
|
-
let _mui_icons_material_Check = require("@mui/icons-material/Check");
|
|
13
|
-
_mui_icons_material_Check = require_runtime.__toESM(_mui_icons_material_Check);
|
|
14
14
|
let _mui_icons_material_Settings = require("@mui/icons-material/Settings");
|
|
15
15
|
_mui_icons_material_Settings = require_runtime.__toESM(_mui_icons_material_Settings);
|
|
16
16
|
let _mui_material_ListItemIcon = require("@mui/material/ListItemIcon");
|
|
@@ -2,11 +2,11 @@ import { useConfig } from "../../providers/AppConfigurationProvider/AppConfigura
|
|
|
2
2
|
import { useSettings } from "../../providers/PersistenceSettingProvider/PersistenceSettingProvider.mjs";
|
|
3
3
|
import "../../providers/PersistenceSettingProvider/index.mjs";
|
|
4
4
|
import "../../providers/index.mjs";
|
|
5
|
+
import Check from "@mui/icons-material/Check";
|
|
5
6
|
import IconButton from "@mui/material/IconButton";
|
|
6
7
|
import React from "react";
|
|
7
8
|
import { useTranslation } from "react-i18next";
|
|
8
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import Check from "@mui/icons-material/Check";
|
|
10
10
|
import Settings from "@mui/icons-material/Settings";
|
|
11
11
|
import ListItemIcon from "@mui/material/ListItemIcon";
|
|
12
12
|
import Menu from "@mui/material/Menu";
|
|
@@ -57,7 +57,10 @@ var Versions = ({ packageMeta, packageName }) => {
|
|
|
57
57
|
sx: { mb: 2 },
|
|
58
58
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_CardContent.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_Box.default, {
|
|
59
59
|
"data-testid": "versions",
|
|
60
|
-
sx: { m:
|
|
60
|
+
sx: { m: {
|
|
61
|
+
xs: 0,
|
|
62
|
+
sm: 2
|
|
63
|
+
} },
|
|
61
64
|
children: [
|
|
62
65
|
hasDistTags ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(StyledText, {
|
|
63
66
|
variant: "subtitle1",
|
|
@@ -77,7 +80,10 @@ var Versions = ({ packageMeta, packageName }) => {
|
|
|
77
80
|
}, 200),
|
|
78
81
|
size: "small",
|
|
79
82
|
variant: "standard",
|
|
80
|
-
sx: { width:
|
|
83
|
+
sx: { width: {
|
|
84
|
+
xs: "100%",
|
|
85
|
+
sm: "50%"
|
|
86
|
+
} }
|
|
81
87
|
}, packageName)] }),
|
|
82
88
|
hasVersionHistory ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [hideDeprecatedVersions === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Alert.default, {
|
|
83
89
|
severity: "info",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Versions.js","names":["styled","Typography","useTranslation","useConfig","useState","useMemo","Card","CardContent","Box","_Fragment","VersionsTagList","TextField","debounce","Alert","VersionsHistoryList"],"sources":["../../../src/components/Versions/Versions.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { debounce } from 'lodash-es';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport semver from 'semver';\n\nimport type { Theme } from '../../Theme';\nimport { useConfig } from '../../providers';\nimport VersionsHistoryList from './HistoryList';\nimport VersionsTagList from './TagList';\n\nexport type Props = { packageMeta: any; packageName: string };\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme && props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst Versions: React.FC<Props> = ({ packageMeta, packageName }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n const { versions = {}, time = {}, ['dist-tags']: distTags = {} } = packageMeta ?? {};\n\n const [textSearch, setTextSearch] = useState('');\n // the detail routes reuse this mounted component across packages: reset the\n // filter so the previous package's text does not apply to the next one\n useEffect(() => {\n setTextSearch('');\n }, [packageName]);\n const packageVersions = useMemo(() => {\n if (textSearch === '') {\n return versions;\n }\n return Object.keys(versions).reduce((acc, version) => {\n if (typeof versions[version] !== 'undefined') {\n if (semver.satisfies(version, textSearch, { includePrerelease: true, loose: true })) {\n acc[version] = versions[version];\n }\n }\n return acc;\n }, {});\n }, [versions, textSearch]);\n\n if (!packageMeta || Object.keys(packageMeta).length === 0) {\n return null;\n }\n const hideDeprecatedVersions = configOptions.hideDeprecatedVersions;\n const hasDistTags = distTags && Object.keys(distTags).length > 0 && packageName;\n const hasVersionHistory =\n packageVersions && Object.keys(packageVersions).length > 0 && packageName;\n\n return (\n <Card sx={{ mb: 2 }}>\n <CardContent>\n <Box data-testid=\"versions\" sx={{ m: 2 }}>\n {hasDistTags ? (\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.current-tags')}\n <span>{` (${Object.keys(distTags).length})`}</span>\n </StyledText>\n <VersionsTagList packageName={packageName} tags={distTags} time={time} />\n </>\n ) : null}\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.version-history')}\n <span>{` (${Object.keys(packageVersions).length})`}</span>\n </StyledText>\n <TextField\n // uncontrolled input: remount on navigation to clear its text\n key={packageName}\n helperText={t('versions.search.placeholder')}\n onChange={debounce((e) => {\n setTextSearch(e.target.value);\n }, 200)}\n size=\"small\"\n variant=\"standard\"\n sx={{ width: '50%' }}\n />\n </>\n {hasVersionHistory ? (\n <>\n {hideDeprecatedVersions === true && (\n // @ts-ignore - Alert does accept children despite the type error\n <Alert severity=\"info\" sx={{ marginTop: 1, marginBottom: 1 }}>\n {t('versions.hide-deprecated')}\n </Alert>\n )}\n <VersionsHistoryList\n packageName={packageName}\n time={time}\n versions={packageVersions}\n />\n </>\n ) : null}\n </Box>\n </CardContent>\n </Card>\n );\n};\n\nexport default Versions;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAa,cAAA,GAAaA,gBAAAA,QAAAA,CAAOC,yBAAAA,OAAU,CAAC,EAAqB,WAAW;CAC1E,YAAY,MAAM,SAAS,MAAM,MAAM,WAAW;CAClD,eAAe;AACjB,EAAE;AAEF,IAAM,YAA6B,EAAE,aAAa,kBAAkB;CAClE,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAC7B,MAAM,EAAE,kBAAkBC,iCAAAA,UAAU;CACpC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,cAAc,WAAW,CAAC,MAAM,eAAe,CAAC;CAEnF,MAAM,CAAC,YAAY,kBAAA,GAAiBC,MAAAA,SAAAA,CAAS,EAAE;CAG/C,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,cAAc,EAAE;CAClB,GAAG,CAAC,WAAW,CAAC;CAChB,MAAM,mBAAA,GAAkBC,MAAAA,QAAAA,OAAc;EACpC,IAAI,eAAe,IACjB,OAAO;EAET,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,QAAQ,KAAK,YAAY;GACpD,IAAI,OAAO,SAAS,aAAa,aAC3B;QAAA,OAAA,QAAO,UAAU,SAAS,YAAY;KAAE,mBAAmB;KAAM,OAAO;IAAK,CAAC,GAChF,IAAI,WAAW,SAAS;GAAA;GAG5B,OAAO;EACT,GAAG,CAAC,CAAC;CACP,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,IAAI,CAAC,eAAe,OAAO,KAAK,WAAW,CAAC,CAAC,WAAW,GACtD,OAAO;CAET,MAAM,yBAAyB,cAAc;CAC7C,MAAM,cAAc,YAAY,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,KAAK;CACpE,MAAM,oBACJ,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,KAAK;CAEhE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,SAAD;EAAM,IAAI,EAAE,IAAI,EAAE;EAChB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0BAAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,SAAD;GAAK,eAAY;GAAW,IAAI,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"Versions.js","names":["styled","Typography","useTranslation","useConfig","useState","useMemo","Card","CardContent","Box","_Fragment","VersionsTagList","TextField","debounce","Alert","VersionsHistoryList"],"sources":["../../../src/components/Versions/Versions.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { debounce } from 'lodash-es';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport semver from 'semver';\n\nimport type { Theme } from '../../Theme';\nimport { useConfig } from '../../providers';\nimport VersionsHistoryList from './HistoryList';\nimport VersionsTagList from './TagList';\n\nexport type Props = { packageMeta: any; packageName: string };\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme && props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst Versions: React.FC<Props> = ({ packageMeta, packageName }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n const { versions = {}, time = {}, ['dist-tags']: distTags = {} } = packageMeta ?? {};\n\n const [textSearch, setTextSearch] = useState('');\n // the detail routes reuse this mounted component across packages: reset the\n // filter so the previous package's text does not apply to the next one\n useEffect(() => {\n setTextSearch('');\n }, [packageName]);\n const packageVersions = useMemo(() => {\n if (textSearch === '') {\n return versions;\n }\n return Object.keys(versions).reduce((acc, version) => {\n if (typeof versions[version] !== 'undefined') {\n if (semver.satisfies(version, textSearch, { includePrerelease: true, loose: true })) {\n acc[version] = versions[version];\n }\n }\n return acc;\n }, {});\n }, [versions, textSearch]);\n\n if (!packageMeta || Object.keys(packageMeta).length === 0) {\n return null;\n }\n const hideDeprecatedVersions = configOptions.hideDeprecatedVersions;\n const hasDistTags = distTags && Object.keys(distTags).length > 0 && packageName;\n const hasVersionHistory =\n packageVersions && Object.keys(packageVersions).length > 0 && packageName;\n\n return (\n <Card sx={{ mb: 2 }}>\n <CardContent>\n <Box data-testid=\"versions\" sx={{ m: { xs: 0, sm: 2 } }}>\n {hasDistTags ? (\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.current-tags')}\n <span>{` (${Object.keys(distTags).length})`}</span>\n </StyledText>\n <VersionsTagList packageName={packageName} tags={distTags} time={time} />\n </>\n ) : null}\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.version-history')}\n <span>{` (${Object.keys(packageVersions).length})`}</span>\n </StyledText>\n <TextField\n // uncontrolled input: remount on navigation to clear its text\n key={packageName}\n helperText={t('versions.search.placeholder')}\n onChange={debounce((e) => {\n setTextSearch(e.target.value);\n }, 200)}\n size=\"small\"\n variant=\"standard\"\n sx={{ width: { xs: '100%', sm: '50%' } }}\n />\n </>\n {hasVersionHistory ? (\n <>\n {hideDeprecatedVersions === true && (\n // @ts-ignore - Alert does accept children despite the type error\n <Alert severity=\"info\" sx={{ marginTop: 1, marginBottom: 1 }}>\n {t('versions.hide-deprecated')}\n </Alert>\n )}\n <VersionsHistoryList\n packageName={packageName}\n time={time}\n versions={packageVersions}\n />\n </>\n ) : null}\n </Box>\n </CardContent>\n </Card>\n );\n};\n\nexport default Versions;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAa,cAAA,GAAaA,gBAAAA,QAAAA,CAAOC,yBAAAA,OAAU,CAAC,EAAqB,WAAW;CAC1E,YAAY,MAAM,SAAS,MAAM,MAAM,WAAW;CAClD,eAAe;AACjB,EAAE;AAEF,IAAM,YAA6B,EAAE,aAAa,kBAAkB;CAClE,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAC7B,MAAM,EAAE,kBAAkBC,iCAAAA,UAAU;CACpC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,cAAc,WAAW,CAAC,MAAM,eAAe,CAAC;CAEnF,MAAM,CAAC,YAAY,kBAAA,GAAiBC,MAAAA,SAAAA,CAAS,EAAE;CAG/C,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,cAAc,EAAE;CAClB,GAAG,CAAC,WAAW,CAAC;CAChB,MAAM,mBAAA,GAAkBC,MAAAA,QAAAA,OAAc;EACpC,IAAI,eAAe,IACjB,OAAO;EAET,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,QAAQ,KAAK,YAAY;GACpD,IAAI,OAAO,SAAS,aAAa,aAC3B;QAAA,OAAA,QAAO,UAAU,SAAS,YAAY;KAAE,mBAAmB;KAAM,OAAO;IAAK,CAAC,GAChF,IAAI,WAAW,SAAS;GAAA;GAG5B,OAAO;EACT,GAAG,CAAC,CAAC;CACP,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,IAAI,CAAC,eAAe,OAAO,KAAK,WAAW,CAAC,CAAC,WAAW,GACtD,OAAO;CAET,MAAM,yBAAyB,cAAc;CAC7C,MAAM,cAAc,YAAY,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,KAAK;CACpE,MAAM,oBACJ,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,KAAK;CAEhE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,SAAD;EAAM,IAAI,EAAE,IAAI,EAAE;EAChB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,0BAAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,kBAAAA,SAAD;GAAK,eAAY;GAAW,IAAI,EAAE,GAAG;IAAE,IAAI;IAAG,IAAI;GAAE,EAAE;GAAtD,UAAA;IACG,cACC,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,YAAD;KAAY,SAAQ;KAApB,UAAA,CACG,EAAE,uBAAuB,GAC1B,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAO,KAAK,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAS,CAAA,CACxC;IACZ,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,gBAAAA,SAAD;KAA8B;KAAa,MAAM;KAAgB;IAAO,CAAA,CACxE,EAAA,CAAA,IACA;IACJ,iBAAA,GAAA,kBAAA,KAAA,CAAAD,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,YAAD;KAAY,SAAQ;KAApB,UAAA,CACG,EAAE,0BAA0B,GAC7B,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD,EAAA,UAAO,KAAK,OAAO,KAAK,eAAe,CAAC,CAAC,OAAO,GAAS,CAAA,CAC/C;IACZ,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAACE,wBAAAA,SAAD;KAGE,YAAY,EAAE,6BAA6B;KAC3C,WAAA,GAAUC,UAAAA,SAAAA,EAAU,MAAM;MACxB,cAAc,EAAE,OAAO,KAAK;KAC9B,GAAG,GAAG;KACN,MAAK;KACL,SAAQ;KACR,IAAI,EAAE,OAAO;MAAE,IAAI;MAAQ,IAAI;KAAM,EAAE;IACxC,GARM,WAQN,CACD,EAAA,CAAA;IACD,oBACC,iBAAA,GAAA,kBAAA,KAAA,CAAAH,kBAAAA,UAAA,EAAA,UAAA,CACG,2BAA2B,QAE1B,iBAAA,GAAA,kBAAA,IAAA,CAACI,oBAAAA,SAAD;KAAO,UAAS;KAAO,IAAI;MAAE,WAAW;MAAG,cAAc;KAAE;KACxD,UAAA,EAAE,0BAA0B;IACxB,CAAA,GAET,iBAAA,GAAA,kBAAA,IAAA,CAACC,oBAAAA,SAAD;KACe;KACP;KACN,UAAU;IACX,CAAA,CACD,EAAA,CAAA,IACA;GACD;EACM,CAAA,EAAA,CAAA;CACT,CAAA;AAEV"}
|
|
@@ -47,7 +47,10 @@ var Versions = ({ packageMeta, packageName }) => {
|
|
|
47
47
|
sx: { mb: 2 },
|
|
48
48
|
children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(Box, {
|
|
49
49
|
"data-testid": "versions",
|
|
50
|
-
sx: { m:
|
|
50
|
+
sx: { m: {
|
|
51
|
+
xs: 0,
|
|
52
|
+
sm: 2
|
|
53
|
+
} },
|
|
51
54
|
children: [
|
|
52
55
|
hasDistTags ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(StyledText, {
|
|
53
56
|
variant: "subtitle1",
|
|
@@ -67,7 +70,10 @@ var Versions = ({ packageMeta, packageName }) => {
|
|
|
67
70
|
}, 200),
|
|
68
71
|
size: "small",
|
|
69
72
|
variant: "standard",
|
|
70
|
-
sx: { width:
|
|
73
|
+
sx: { width: {
|
|
74
|
+
xs: "100%",
|
|
75
|
+
sm: "50%"
|
|
76
|
+
} }
|
|
71
77
|
}, packageName)] }),
|
|
72
78
|
hasVersionHistory ? /* @__PURE__ */ jsxs(Fragment$1, { children: [hideDeprecatedVersions === true && /* @__PURE__ */ jsx(Alert, {
|
|
73
79
|
severity: "info",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Versions.mjs","names":["_Fragment"],"sources":["../../../src/components/Versions/Versions.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { debounce } from 'lodash-es';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport semver from 'semver';\n\nimport type { Theme } from '../../Theme';\nimport { useConfig } from '../../providers';\nimport VersionsHistoryList from './HistoryList';\nimport VersionsTagList from './TagList';\n\nexport type Props = { packageMeta: any; packageName: string };\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme && props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst Versions: React.FC<Props> = ({ packageMeta, packageName }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n const { versions = {}, time = {}, ['dist-tags']: distTags = {} } = packageMeta ?? {};\n\n const [textSearch, setTextSearch] = useState('');\n // the detail routes reuse this mounted component across packages: reset the\n // filter so the previous package's text does not apply to the next one\n useEffect(() => {\n setTextSearch('');\n }, [packageName]);\n const packageVersions = useMemo(() => {\n if (textSearch === '') {\n return versions;\n }\n return Object.keys(versions).reduce((acc, version) => {\n if (typeof versions[version] !== 'undefined') {\n if (semver.satisfies(version, textSearch, { includePrerelease: true, loose: true })) {\n acc[version] = versions[version];\n }\n }\n return acc;\n }, {});\n }, [versions, textSearch]);\n\n if (!packageMeta || Object.keys(packageMeta).length === 0) {\n return null;\n }\n const hideDeprecatedVersions = configOptions.hideDeprecatedVersions;\n const hasDistTags = distTags && Object.keys(distTags).length > 0 && packageName;\n const hasVersionHistory =\n packageVersions && Object.keys(packageVersions).length > 0 && packageName;\n\n return (\n <Card sx={{ mb: 2 }}>\n <CardContent>\n <Box data-testid=\"versions\" sx={{ m: 2 }}>\n {hasDistTags ? (\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.current-tags')}\n <span>{` (${Object.keys(distTags).length})`}</span>\n </StyledText>\n <VersionsTagList packageName={packageName} tags={distTags} time={time} />\n </>\n ) : null}\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.version-history')}\n <span>{` (${Object.keys(packageVersions).length})`}</span>\n </StyledText>\n <TextField\n // uncontrolled input: remount on navigation to clear its text\n key={packageName}\n helperText={t('versions.search.placeholder')}\n onChange={debounce((e) => {\n setTextSearch(e.target.value);\n }, 200)}\n size=\"small\"\n variant=\"standard\"\n sx={{ width: '50%' }}\n />\n </>\n {hasVersionHistory ? (\n <>\n {hideDeprecatedVersions === true && (\n // @ts-ignore - Alert does accept children despite the type error\n <Alert severity=\"info\" sx={{ marginTop: 1, marginBottom: 1 }}>\n {t('versions.hide-deprecated')}\n </Alert>\n )}\n <VersionsHistoryList\n packageName={packageName}\n time={time}\n versions={packageVersions}\n />\n </>\n ) : null}\n </Box>\n </CardContent>\n </Card>\n );\n};\n\nexport default Versions;\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,IAAa,aAAa,OAAO,UAAU,CAAC,EAAqB,WAAW;CAC1E,YAAY,MAAM,SAAS,MAAM,MAAM,WAAW;CAClD,eAAe;AACjB,EAAE;AAEF,IAAM,YAA6B,EAAE,aAAa,kBAAkB;CAClE,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,cAAc,WAAW,CAAC,MAAM,eAAe,CAAC;CAEnF,MAAM,CAAC,YAAY,iBAAiB,SAAS,EAAE;CAG/C,gBAAgB;EACd,cAAc,EAAE;CAClB,GAAG,CAAC,WAAW,CAAC;CAChB,MAAM,kBAAkB,cAAc;EACpC,IAAI,eAAe,IACjB,OAAO;EAET,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,QAAQ,KAAK,YAAY;GACpD,IAAI,OAAO,SAAS,aAAa,aAC3B;QAAA,OAAO,UAAU,SAAS,YAAY;KAAE,mBAAmB;KAAM,OAAO;IAAK,CAAC,GAChF,IAAI,WAAW,SAAS;GAAA;GAG5B,OAAO;EACT,GAAG,CAAC,CAAC;CACP,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,IAAI,CAAC,eAAe,OAAO,KAAK,WAAW,CAAC,CAAC,WAAW,GACtD,OAAO;CAET,MAAM,yBAAyB,cAAc;CAC7C,MAAM,cAAc,YAAY,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,KAAK;CACpE,MAAM,oBACJ,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,KAAK;CAEhE,OACE,oBAAC,MAAD;EAAM,IAAI,EAAE,IAAI,EAAE;EAChB,UAAA,oBAAC,aAAD,EAAA,UACE,qBAAC,KAAD;GAAK,eAAY;GAAW,IAAI,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"Versions.mjs","names":["_Fragment"],"sources":["../../../src/components/Versions/Versions.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Alert from '@mui/material/Alert';\nimport Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { debounce } from 'lodash-es';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport semver from 'semver';\n\nimport type { Theme } from '../../Theme';\nimport { useConfig } from '../../providers';\nimport VersionsHistoryList from './HistoryList';\nimport VersionsTagList from './TagList';\n\nexport type Props = { packageMeta: any; packageName: string };\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme && props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst Versions: React.FC<Props> = ({ packageMeta, packageName }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n const { versions = {}, time = {}, ['dist-tags']: distTags = {} } = packageMeta ?? {};\n\n const [textSearch, setTextSearch] = useState('');\n // the detail routes reuse this mounted component across packages: reset the\n // filter so the previous package's text does not apply to the next one\n useEffect(() => {\n setTextSearch('');\n }, [packageName]);\n const packageVersions = useMemo(() => {\n if (textSearch === '') {\n return versions;\n }\n return Object.keys(versions).reduce((acc, version) => {\n if (typeof versions[version] !== 'undefined') {\n if (semver.satisfies(version, textSearch, { includePrerelease: true, loose: true })) {\n acc[version] = versions[version];\n }\n }\n return acc;\n }, {});\n }, [versions, textSearch]);\n\n if (!packageMeta || Object.keys(packageMeta).length === 0) {\n return null;\n }\n const hideDeprecatedVersions = configOptions.hideDeprecatedVersions;\n const hasDistTags = distTags && Object.keys(distTags).length > 0 && packageName;\n const hasVersionHistory =\n packageVersions && Object.keys(packageVersions).length > 0 && packageName;\n\n return (\n <Card sx={{ mb: 2 }}>\n <CardContent>\n <Box data-testid=\"versions\" sx={{ m: { xs: 0, sm: 2 } }}>\n {hasDistTags ? (\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.current-tags')}\n <span>{` (${Object.keys(distTags).length})`}</span>\n </StyledText>\n <VersionsTagList packageName={packageName} tags={distTags} time={time} />\n </>\n ) : null}\n <>\n <StyledText variant=\"subtitle1\">\n {t('versions.version-history')}\n <span>{` (${Object.keys(packageVersions).length})`}</span>\n </StyledText>\n <TextField\n // uncontrolled input: remount on navigation to clear its text\n key={packageName}\n helperText={t('versions.search.placeholder')}\n onChange={debounce((e) => {\n setTextSearch(e.target.value);\n }, 200)}\n size=\"small\"\n variant=\"standard\"\n sx={{ width: { xs: '100%', sm: '50%' } }}\n />\n </>\n {hasVersionHistory ? (\n <>\n {hideDeprecatedVersions === true && (\n // @ts-ignore - Alert does accept children despite the type error\n <Alert severity=\"info\" sx={{ marginTop: 1, marginBottom: 1 }}>\n {t('versions.hide-deprecated')}\n </Alert>\n )}\n <VersionsHistoryList\n packageName={packageName}\n time={time}\n versions={packageVersions}\n />\n </>\n ) : null}\n </Box>\n </CardContent>\n </Card>\n );\n};\n\nexport default Versions;\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,IAAa,aAAa,OAAO,UAAU,CAAC,EAAqB,WAAW;CAC1E,YAAY,MAAM,SAAS,MAAM,MAAM,WAAW;CAClD,eAAe;AACjB,EAAE;AAEF,IAAM,YAA6B,EAAE,aAAa,kBAAkB;CAClE,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,cAAc,WAAW,CAAC,MAAM,eAAe,CAAC;CAEnF,MAAM,CAAC,YAAY,iBAAiB,SAAS,EAAE;CAG/C,gBAAgB;EACd,cAAc,EAAE;CAClB,GAAG,CAAC,WAAW,CAAC;CAChB,MAAM,kBAAkB,cAAc;EACpC,IAAI,eAAe,IACjB,OAAO;EAET,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,QAAQ,KAAK,YAAY;GACpD,IAAI,OAAO,SAAS,aAAa,aAC3B;QAAA,OAAO,UAAU,SAAS,YAAY;KAAE,mBAAmB;KAAM,OAAO;IAAK,CAAC,GAChF,IAAI,WAAW,SAAS;GAAA;GAG5B,OAAO;EACT,GAAG,CAAC,CAAC;CACP,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,IAAI,CAAC,eAAe,OAAO,KAAK,WAAW,CAAC,CAAC,WAAW,GACtD,OAAO;CAET,MAAM,yBAAyB,cAAc;CAC7C,MAAM,cAAc,YAAY,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,KAAK;CACpE,MAAM,oBACJ,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,KAAK;CAEhE,OACE,oBAAC,MAAD;EAAM,IAAI,EAAE,IAAI,EAAE;EAChB,UAAA,oBAAC,aAAD,EAAA,UACE,qBAAC,KAAD;GAAK,eAAY;GAAW,IAAI,EAAE,GAAG;IAAE,IAAI;IAAG,IAAI;GAAE,EAAE;GAAtD,UAAA;IACG,cACC,qBAAAA,YAAA,EAAA,UAAA,CACE,qBAAC,YAAD;KAAY,SAAQ;KAApB,UAAA,CACG,EAAE,uBAAuB,GAC1B,oBAAC,QAAD,EAAA,UAAO,KAAK,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAS,CAAA,CACxC;IACZ,CAAA,GAAA,oBAAC,iBAAD;KAA8B;KAAa,MAAM;KAAgB;IAAO,CAAA,CACxE,EAAA,CAAA,IACA;IACJ,qBAAAA,YAAA,EAAA,UAAA,CACE,qBAAC,YAAD;KAAY,SAAQ;KAApB,UAAA,CACG,EAAE,0BAA0B,GAC7B,oBAAC,QAAD,EAAA,UAAO,KAAK,OAAO,KAAK,eAAe,CAAC,CAAC,OAAO,GAAS,CAAA,CAC/C;IACZ,CAAA,GAAA,oBAAC,WAAD;KAGE,YAAY,EAAE,6BAA6B;KAC3C,UAAU,UAAU,MAAM;MACxB,cAAc,EAAE,OAAO,KAAK;KAC9B,GAAG,GAAG;KACN,MAAK;KACL,SAAQ;KACR,IAAI,EAAE,OAAO;MAAE,IAAI;MAAQ,IAAI;KAAM,EAAE;IACxC,GARM,WAQN,CACD,EAAA,CAAA;IACD,oBACC,qBAAAA,YAAA,EAAA,UAAA,CACG,2BAA2B,QAE1B,oBAAC,OAAD;KAAO,UAAS;KAAO,IAAI;MAAE,WAAW;MAAG,cAAc;KAAE;KACxD,UAAA,EAAE,0BAA0B;IACxB,CAAA,GAET,oBAAC,qBAAD;KACe;KACP;KACN,UAAU;IACX,CAAA,CACD,EAAA,CAAA,IACA;GACD;EACM,CAAA,EAAA,CAAA;CACT,CAAA;AAEV"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Text for screen readers only. */
|
|
2
|
+
export declare const VisuallyHidden: import("@emotion/styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme;
|
|
4
|
+
as?: React.ElementType;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
let _emotion_styled = require("@emotion/styled");
|
|
3
|
+
_emotion_styled = require_runtime.__toESM(_emotion_styled);
|
|
4
|
+
//#region src/components/VisuallyHidden/index.ts
|
|
5
|
+
/** Text for screen readers only. */
|
|
6
|
+
var VisuallyHidden = (0, _emotion_styled.default)("span")({
|
|
7
|
+
position: "absolute",
|
|
8
|
+
width: 1,
|
|
9
|
+
height: 1,
|
|
10
|
+
overflow: "hidden",
|
|
11
|
+
clip: "rect(0 0 0 0)",
|
|
12
|
+
whiteSpace: "nowrap"
|
|
13
|
+
});
|
|
14
|
+
//#endregion
|
|
15
|
+
exports.VisuallyHidden = VisuallyHidden;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled"],"sources":["../../../src/components/VisuallyHidden/index.ts"],"sourcesContent":["import styled from '@emotion/styled';\n\n/** Text for screen readers only. */\nexport const VisuallyHidden = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n});\n"],"mappings":";;;;;AAGA,IAAa,kBAAA,GAAiBA,gBAAAA,QAAAA,CAAO,MAAM,CAAC,CAAC;CAC3C,UAAU;CACV,OAAO;CACP,QAAQ;CACR,UAAU;CACV,MAAM;CACN,YAAY;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import styled from "@emotion/styled";
|
|
2
|
+
//#region src/components/VisuallyHidden/index.ts
|
|
3
|
+
/** Text for screen readers only. */
|
|
4
|
+
var VisuallyHidden = styled("span")({
|
|
5
|
+
position: "absolute",
|
|
6
|
+
width: 1,
|
|
7
|
+
height: 1,
|
|
8
|
+
overflow: "hidden",
|
|
9
|
+
clip: "rect(0 0 0 0)",
|
|
10
|
+
whiteSpace: "nowrap"
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
export { VisuallyHidden };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/VisuallyHidden/index.ts"],"sourcesContent":["import styled from '@emotion/styled';\n\n/** Text for screen readers only. */\nexport const VisuallyHidden = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n});\n"],"mappings":";;;AAGA,IAAa,iBAAiB,OAAO,MAAM,CAAC,CAAC;CAC3C,UAAU;CACV,OAAO;CACP,QAAQ;CACR,UAAU;CACV,MAAM;CACN,YAAY;AACd,CAAC"}
|
package/build/configuration.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","names":[],"sources":["../src/configuration.ts"],"sourcesContent":["import type { TemplateUIOptions } from '@verdaccio/types';\n\nconst defaultValues: TemplateUIOptions = {\n primaryColor: '#ffffff',\n darkMode: false,\n pkgManagers: ['yarn', 'pnpm', 'npm'],\n scope: '',\n base: '',\n login: true,\n flags: {},\n url_prefix: '',\n title: 'Verdaccio',\n};\n\nexport function getConfiguration() {\n const uiConfiguration = window?.__VERDACCIO_BASENAME_UI_OPTIONS ?? defaultValues;\n return uiConfiguration;\n}\n"],"mappings":";AAEA,IAAM,gBAAmC;CACvC,cAAc;CACd,UAAU;CACV,aAAa;EAAC;EAAQ;EAAQ;CAAK;
|
|
1
|
+
{"version":3,"file":"configuration.js","names":[],"sources":["../src/configuration.ts"],"sourcesContent":["import type { TemplateUIOptions } from '@verdaccio/types';\n\nconst defaultValues: TemplateUIOptions = {\n primaryColor: '#ffffff',\n darkMode: false,\n pkgManagers: ['yarn', 'pnpm', 'npm', 'bun'],\n scope: '',\n base: '',\n login: true,\n flags: {},\n url_prefix: '',\n title: 'Verdaccio',\n};\n\nexport function getConfiguration() {\n const uiConfiguration = window?.__VERDACCIO_BASENAME_UI_OPTIONS ?? defaultValues;\n return uiConfiguration;\n}\n"],"mappings":";AAEA,IAAM,gBAAmC;CACvC,cAAc;CACd,UAAU;CACV,aAAa;EAAC;EAAQ;EAAQ;EAAO;CAAK;CAC1C,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO,CAAC;CACR,YAAY;CACZ,OAAO;AACT;AAEA,SAAgB,mBAAmB;CAEjC,OADwB,QAAQ,mCAAmC;AAErE"}
|
package/build/configuration.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.mjs","names":[],"sources":["../src/configuration.ts"],"sourcesContent":["import type { TemplateUIOptions } from '@verdaccio/types';\n\nconst defaultValues: TemplateUIOptions = {\n primaryColor: '#ffffff',\n darkMode: false,\n pkgManagers: ['yarn', 'pnpm', 'npm'],\n scope: '',\n base: '',\n login: true,\n flags: {},\n url_prefix: '',\n title: 'Verdaccio',\n};\n\nexport function getConfiguration() {\n const uiConfiguration = window?.__VERDACCIO_BASENAME_UI_OPTIONS ?? defaultValues;\n return uiConfiguration;\n}\n"],"mappings":";AAEA,IAAM,gBAAmC;CACvC,cAAc;CACd,UAAU;CACV,aAAa;EAAC;EAAQ;EAAQ;CAAK;
|
|
1
|
+
{"version":3,"file":"configuration.mjs","names":[],"sources":["../src/configuration.ts"],"sourcesContent":["import type { TemplateUIOptions } from '@verdaccio/types';\n\nconst defaultValues: TemplateUIOptions = {\n primaryColor: '#ffffff',\n darkMode: false,\n pkgManagers: ['yarn', 'pnpm', 'npm', 'bun'],\n scope: '',\n base: '',\n login: true,\n flags: {},\n url_prefix: '',\n title: 'Verdaccio',\n};\n\nexport function getConfiguration() {\n const uiConfiguration = window?.__VERDACCIO_BASENAME_UI_OPTIONS ?? defaultValues;\n return uiConfiguration;\n}\n"],"mappings":";AAEA,IAAM,gBAAmC;CACvC,cAAc;CACd,UAAU;CACV,aAAa;EAAC;EAAQ;EAAQ;EAAO;CAAK;CAC1C,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO,CAAC;CACR,YAAY;CACZ,OAAO;AACT;AAEA,SAAgB,mBAAmB;CAEjC,OADwB,QAAQ,mCAAmC;AAErE"}
|