@verdaccio/ui-components 5.0.0-next-9.10 → 5.0.0-next-9.11

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.
@@ -12,13 +12,13 @@ import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { common } from "@mui/material/colors";
13
13
  import Avatar from "@mui/material/Avatar";
14
14
  import ListItem from "@mui/material/ListItem";
15
- import ListItemText from "@mui/material/ListItemText";
15
+ import MuiListItemText from "@mui/material/ListItemText";
16
16
  //#region src/components/Install/InstallListItem.tsx
17
17
  var InstallItem = styled(ListItem)({
18
18
  padding: 0,
19
19
  ":hover": { backgroundColor: "transparent" }
20
20
  });
21
- var InstallListItemText = styled(ListItemText)({
21
+ var InstallListItemText = styled(MuiListItemText)({
22
22
  padding: "0 0 0 10px",
23
23
  margin: 0
24
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"InstallListItem.mjs","names":[],"sources":["../../../src/components/Install/InstallListItem.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Avatar from '@mui/material/Avatar';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\nimport React from 'react';\n\nimport { useSettings } from '../../providers/PersistenceSettingProvider';\nimport CopyToClipBoard from '../CopyClipboard';\nimport { Npm, Pnpm, Yarn } from '../Icons';\n\nconst InstallItem = styled(ListItem)({\n padding: 0,\n ':hover': {\n backgroundColor: 'transparent',\n },\n});\n\nconst InstallListItemText = styled(ListItemText)({\n padding: '0 0 0 10px',\n margin: 0,\n});\n\nconst PackageMangerAvatar = styled(Avatar)({\n backgroundColor: 'transparent',\n padding: 0,\n marginLeft: 0,\n});\n\nexport enum DependencyManager {\n NPM = 'npm',\n YARN = 'yarn',\n PNPM = 'pnpm',\n}\n\ninterface Interface {\n packageName: string;\n dependencyManager: DependencyManager;\n packageVersion?: string;\n}\n\nexport function getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, isYarn = false) {\n const name = isGlobal\n ? `${isYarn ? '' : '-g'} ${packageVersion && !isLatest ? `${packageName}@${packageVersion}` : packageName}`\n : packageVersion && !isLatest\n ? `${packageName}@${packageVersion}`\n : packageName;\n\n return name.trim();\n}\n\nconst InstallListItem: React.FC<Interface> = ({\n packageName,\n dependencyManager,\n packageVersion,\n}) => {\n const { localSettings } = useSettings();\n // const theme: Theme = useTheme();\n const isLatest = localSettings[packageName]?.latest ?? false;\n const isGlobal = localSettings[packageName]?.global ?? false;\n switch (dependencyManager) {\n case DependencyManager.NPM:\n return (\n <InstallItem data-testid={'installListItem-npm'}>\n <PackageMangerAvatar alt=\"npm\" sx={{ bgcolor: common.white }}>\n <Npm />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installNpm\"\n text={`npm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n title={`npm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n />\n }\n />\n </InstallItem>\n );\n case DependencyManager.YARN:\n return (\n <InstallItem data-testid={'installListItem-yarn'}>\n <PackageMangerAvatar alt=\"yarn\" sx={{ bgcolor: common.white }}>\n <Yarn />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installYarn\"\n text={\n isGlobal\n ? `yarn ${localSettings.yarnModern ? '' : 'global'} add ${getGlobalInstall(\n isGlobal,\n packageVersion,\n packageName,\n true\n )}`\n : `yarn add ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, true)}`\n }\n title={\n isGlobal\n ? `yarn global add ${getGlobalInstall(\n isGlobal,\n packageVersion,\n packageName,\n true\n )}`\n : `yarn add ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, true)}`\n }\n />\n }\n />\n </InstallItem>\n );\n case DependencyManager.PNPM:\n return (\n <InstallItem data-testid={'installListItem-pnpm'}>\n <PackageMangerAvatar alt={'pnpm'} sx={{ bgcolor: common.white }}>\n <Pnpm />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installPnpm\"\n text={`pnpm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n title={`pnpm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n />\n }\n />\n </InstallItem>\n );\n default:\n return null;\n }\n};\n\nexport default InstallListItem;\n"],"mappings":";;;;;;;;;;;;;;;;AAWA,IAAM,cAAc,OAAO,SAAS,CAAC;CACnC,SAAS;CACT,UAAU,EACR,iBAAiB,eAClB;CACF,CAAC;AAEF,IAAM,sBAAsB,OAAO,aAAa,CAAC;CAC/C,SAAS;CACT,QAAQ;CACT,CAAC;AAEF,IAAM,sBAAsB,OAAO,OAAO,CAAC;CACzC,iBAAiB;CACjB,SAAS;CACT,YAAY;CACb,CAAC;AAEF,IAAY,oBAAL,yBAAA,mBAAA;AACL,mBAAA,SAAA;AACA,mBAAA,UAAA;AACA,mBAAA,UAAA;;KACD;AAQD,SAAgB,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,SAAS,OAAO;AAOhG,SANa,WACT,GAAG,SAAS,KAAK,KAAK,GAAG,kBAAkB,CAAC,WAAW,GAAG,YAAY,GAAG,mBAAmB,gBAC5F,kBAAkB,CAAC,WACjB,GAAG,YAAY,GAAG,mBAClB,aAEM,MAAM;;AAGpB,IAAM,mBAAwC,EAC5C,aACA,mBACA,qBACI;CACJ,MAAM,EAAE,kBAAkB,aAAa;CAEvC,MAAM,WAAW,cAAc,cAAc,UAAU;CACvD,MAAM,WAAW,cAAc,cAAc,UAAU;AACvD,SAAQ,mBAAR;EACE,KAAK,kBAAkB,IACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAI;IAAM,IAAI,EAAE,SAAS,OAAO,OAAO;cAC1D,oBAAC,KAAD,EAAO,CAAA;IACa,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MAAM,eAAe,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACtF,OAAO,eAAe,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACvF,CAAA,EAEJ,CAAA,CACU;;EAElB,KAAK,kBAAkB,KACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAI;IAAO,IAAI,EAAE,SAAS,OAAO,OAAO;cAC3D,oBAAC,MAAD,EAAQ,CAAA;IACY,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MACE,WACI,QAAQ,cAAc,aAAa,KAAK,SAAS,OAAO,iBACtD,UACA,gBACA,aACA,KACD,KACD,YAAY,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,KAAK;IAEzF,OACE,WACI,mBAAmB,iBACjB,UACA,gBACA,aACA,KACD,KACD,YAAY,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,KAAK;IAEzF,CAAA,EAEJ,CAAA,CACU;;EAElB,KAAK,kBAAkB,KACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAK;IAAQ,IAAI,EAAE,SAAS,OAAO,OAAO;cAC7D,oBAAC,MAAD,EAAQ,CAAA;IACY,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MAAM,gBAAgB,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACvF,OAAO,gBAAgB,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACxF,CAAA,EAEJ,CAAA,CACU;;EAElB,QACE,QAAO"}
1
+ {"version":3,"file":"InstallListItem.mjs","names":[],"sources":["../../../src/components/Install/InstallListItem.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Avatar from '@mui/material/Avatar';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\nimport React from 'react';\n\nimport { useSettings } from '../../providers/PersistenceSettingProvider';\nimport CopyToClipBoard from '../CopyClipboard';\nimport { Npm, Pnpm, Yarn } from '../Icons';\n\nconst InstallItem = styled(ListItem)({\n padding: 0,\n ':hover': {\n backgroundColor: 'transparent',\n },\n});\n\nconst InstallListItemText = styled(ListItemText)({\n padding: '0 0 0 10px',\n margin: 0,\n});\n\nconst PackageMangerAvatar = styled(Avatar)({\n backgroundColor: 'transparent',\n padding: 0,\n marginLeft: 0,\n});\n\nexport enum DependencyManager {\n NPM = 'npm',\n YARN = 'yarn',\n PNPM = 'pnpm',\n}\n\ninterface Interface {\n packageName: string;\n dependencyManager: DependencyManager;\n packageVersion?: string;\n}\n\nexport function getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, isYarn = false) {\n const name = isGlobal\n ? `${isYarn ? '' : '-g'} ${packageVersion && !isLatest ? `${packageName}@${packageVersion}` : packageName}`\n : packageVersion && !isLatest\n ? `${packageName}@${packageVersion}`\n : packageName;\n\n return name.trim();\n}\n\nconst InstallListItem: React.FC<Interface> = ({\n packageName,\n dependencyManager,\n packageVersion,\n}) => {\n const { localSettings } = useSettings();\n // const theme: Theme = useTheme();\n const isLatest = localSettings[packageName]?.latest ?? false;\n const isGlobal = localSettings[packageName]?.global ?? false;\n switch (dependencyManager) {\n case DependencyManager.NPM:\n return (\n <InstallItem data-testid={'installListItem-npm'}>\n <PackageMangerAvatar alt=\"npm\" sx={{ bgcolor: common.white }}>\n <Npm />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installNpm\"\n text={`npm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n title={`npm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n />\n }\n />\n </InstallItem>\n );\n case DependencyManager.YARN:\n return (\n <InstallItem data-testid={'installListItem-yarn'}>\n <PackageMangerAvatar alt=\"yarn\" sx={{ bgcolor: common.white }}>\n <Yarn />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installYarn\"\n text={\n isGlobal\n ? `yarn ${localSettings.yarnModern ? '' : 'global'} add ${getGlobalInstall(\n isGlobal,\n packageVersion,\n packageName,\n true\n )}`\n : `yarn add ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, true)}`\n }\n title={\n isGlobal\n ? `yarn global add ${getGlobalInstall(\n isGlobal,\n packageVersion,\n packageName,\n true\n )}`\n : `yarn add ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName, true)}`\n }\n />\n }\n />\n </InstallItem>\n );\n case DependencyManager.PNPM:\n return (\n <InstallItem data-testid={'installListItem-pnpm'}>\n <PackageMangerAvatar alt={'pnpm'} sx={{ bgcolor: common.white }}>\n <Pnpm />\n </PackageMangerAvatar>\n <InstallListItemText\n primary={\n <CopyToClipBoard\n dataTestId=\"installPnpm\"\n text={`pnpm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n title={`pnpm install ${getGlobalInstall(isLatest, isGlobal, packageVersion, packageName)}`}\n />\n }\n />\n </InstallItem>\n );\n default:\n return null;\n }\n};\n\nexport default InstallListItem;\n"],"mappings":";;;;;;;;;;;;;;;;AAWA,IAAM,cAAc,OAAO,SAAS,CAAC;CACnC,SAAS;CACT,UAAU,EACR,iBAAiB,eAClB;CACF,CAAC;AAEF,IAAM,sBAAsB,OAAO,gBAAa,CAAC;CAC/C,SAAS;CACT,QAAQ;CACT,CAAC;AAEF,IAAM,sBAAsB,OAAO,OAAO,CAAC;CACzC,iBAAiB;CACjB,SAAS;CACT,YAAY;CACb,CAAC;AAEF,IAAY,oBAAL,yBAAA,mBAAA;AACL,mBAAA,SAAA;AACA,mBAAA,UAAA;AACA,mBAAA,UAAA;;KACD;AAQD,SAAgB,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,SAAS,OAAO;AAOhG,SANa,WACT,GAAG,SAAS,KAAK,KAAK,GAAG,kBAAkB,CAAC,WAAW,GAAG,YAAY,GAAG,mBAAmB,gBAC5F,kBAAkB,CAAC,WACjB,GAAG,YAAY,GAAG,mBAClB,aAEM,MAAM;;AAGpB,IAAM,mBAAwC,EAC5C,aACA,mBACA,qBACI;CACJ,MAAM,EAAE,kBAAkB,aAAa;CAEvC,MAAM,WAAW,cAAc,cAAc,UAAU;CACvD,MAAM,WAAW,cAAc,cAAc,UAAU;AACvD,SAAQ,mBAAR;EACE,KAAK,kBAAkB,IACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAI;IAAM,IAAI,EAAE,SAAS,OAAO,OAAO;cAC1D,oBAAC,KAAD,EAAO,CAAA;IACa,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MAAM,eAAe,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACtF,OAAO,eAAe,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACvF,CAAA,EAEJ,CAAA,CACU;;EAElB,KAAK,kBAAkB,KACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAI;IAAO,IAAI,EAAE,SAAS,OAAO,OAAO;cAC3D,oBAAC,MAAD,EAAQ,CAAA;IACY,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MACE,WACI,QAAQ,cAAc,aAAa,KAAK,SAAS,OAAO,iBACtD,UACA,gBACA,aACA,KACD,KACD,YAAY,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,KAAK;IAEzF,OACE,WACI,mBAAmB,iBACjB,UACA,gBACA,aACA,KACD,KACD,YAAY,iBAAiB,UAAU,UAAU,gBAAgB,aAAa,KAAK;IAEzF,CAAA,EAEJ,CAAA,CACU;;EAElB,KAAK,kBAAkB,KACrB,QACE,qBAAC,aAAD;GAAa,eAAa;aAA1B,CACE,oBAAC,qBAAD;IAAqB,KAAK;IAAQ,IAAI,EAAE,SAAS,OAAO,OAAO;cAC7D,oBAAC,MAAD,EAAQ,CAAA;IACY,CAAA,EACtB,oBAAC,qBAAD,EACE,SACE,oBAAC,iBAAD;IACE,YAAW;IACX,MAAM,gBAAgB,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACvF,OAAO,gBAAgB,iBAAiB,UAAU,UAAU,gBAAgB,YAAY;IACxF,CAAA,EAEJ,CAAA,CACU;;EAElB,QACE,QAAO"}
@@ -17,7 +17,7 @@ export declare const Author: import('@emotion/styled').StyledComponent<{
17
17
  theme?: import('@emotion/react').Theme;
18
18
  as?: React.ElementType;
19
19
  }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
20
- export declare const Avatar: import('@emotion/styled').StyledComponent<import('@mui/material/Avatar').AvatarOwnProps & import('@mui/material/Avatar').AvatarSlotsAndSlotProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "children" | "style" | "className" | "classes" | "sx" | "variant" | "slots" | "slotProps" | "alt" | "imgProps" | "sizes" | "src" | "srcSet"> & {
20
+ export declare const Avatar: import('@emotion/styled').StyledComponent<import('@mui/material/Avatar').AvatarOwnProps & import('@mui/material/Avatar').AvatarSlotsAndSlotProps & import('@mui/material/OverridableComponent').CommonProps & Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "children" | "style" | "className" | "classes" | "sx" | "variant" | "slots" | "slotProps" | "src" | "alt" | "imgProps" | "sizes" | "srcSet"> & {
21
21
  theme?: import('@emotion/react').Theme;
22
22
  }, {}, {}>;
23
23
  export declare const WrapperLink: import('@emotion/styled').StyledComponent<import('react-router').LinkProps & import('react').RefAttributes<HTMLAnchorElement> & {
@@ -6,7 +6,7 @@ import { Link } from "react-router";
6
6
  import List from "@mui/material/List";
7
7
  import Avatar from "@mui/material/Avatar";
8
8
  import Grid from "@mui/material/Grid";
9
- import ListItemText from "@mui/material/ListItemText";
9
+ import MuiListItemText from "@mui/material/ListItemText";
10
10
  //#region src/components/Package/styles.ts
11
11
  var OverviewItem = styled("span")(({ theme }) => ({
12
12
  display: "flex",
@@ -53,7 +53,7 @@ var IconButton$1 = styled(IconButton)({
53
53
  padding: 6,
54
54
  svg: { fontSize: 16 }
55
55
  });
56
- var PackageListItemText = styled(ListItemText)({ paddingRight: 0 });
56
+ var PackageListItemText = styled(MuiListItemText)({ paddingRight: 0 });
57
57
  var Description = styled("span")(({ theme }) => ({
58
58
  color: theme.palette.mode === "light" ? greyDark : common.white,
59
59
  fontSize: "14px",
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/Package/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as Photo } from '@mui/material/Avatar';\nimport Grid from '@mui/material/Grid';\nimport { default as MuiIconButton } from '@mui/material/IconButton';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\nimport { Link } from 'react-router';\n\nimport type { Theme } from '../../';\nimport { greyDark } from '../../Theme/colors';\n\nexport const OverviewItem = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n margin: '0 20px 0 0',\n color: theme.palette.mode === 'light' ? theme.palette.greyDark2 : common.white,\n fontSize: 12,\n [`@media (max-width: ${theme.breakPoints.medium}px)`]: {\n ':nth-of-type(3)': {\n display: 'none',\n },\n },\n [`@media (max-width: ${theme.breakPoints.small}px)`]: {\n ':nth-of-type(4)': {\n display: 'none',\n },\n },\n}));\n\nexport const Published = styled('span')({\n margin: '0 5px 0 0',\n});\n\nexport const Details = styled('span')({\n marginLeft: '5px',\n lineHeight: 1.5,\n display: 'flex',\n flexDirection: 'column',\n});\n\nexport const Author = styled('div')({\n display: 'flex',\n alignItems: 'center',\n});\n\nexport const Avatar = styled(Photo)({\n width: '20px',\n height: '20px',\n});\n\nexport const WrapperLink = styled(Link)({\n textDecoration: 'none',\n});\n\nexport const PackageTitle = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: 20,\n display: 'block',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n wordBreak: 'break-word',\n [`@media (max-width: ${theme.breakPoints.small}px)`]: {\n fontSize: 16,\n },\n}));\n\nexport const GridRightAligned = styled(Grid)({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n});\n\nexport const Wrapper = styled(List)<{ theme?: Theme }>(({ theme }) => ({\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n}));\n\nexport const IconButton = styled(MuiIconButton)({\n padding: 6,\n svg: {\n fontSize: 16,\n },\n});\n\nexport const PackageListItemText = styled(ListItemText)({\n paddingRight: 0,\n});\n\nexport const Description = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n color: theme.palette.mode === 'light' ? greyDark : common.white,\n fontSize: '14px',\n paddingRight: 0,\n}));\n"],"mappings":";;;;;;;;;;AAYA,IAAa,eAAe,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC5E,SAAS;CACT,YAAY;CACZ,QAAQ;CACR,OAAO,MAAM,QAAQ,SAAS,UAAU,MAAM,QAAQ,YAAY,OAAO;CACzE,UAAU;EACT,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,mBAAmB,EACjB,SAAS,QACV,EACF;EACA,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,mBAAmB,EACjB,SAAS,QACV,EACF;CACF,EAAE;AAEH,IAAa,YAAY,OAAO,OAAO,CAAC,EACtC,QAAQ,aACT,CAAC;AAEF,IAAa,UAAU,OAAO,OAAO,CAAC;CACpC,YAAY;CACZ,YAAY;CACZ,SAAS;CACT,eAAe;CAChB,CAAC;AAEF,IAAa,SAAS,OAAO,MAAM,CAAC;CAClC,SAAS;CACT,YAAY;CACb,CAAC;AAEF,IAAa,WAAS,OAAO,OAAM,CAAC;CAClC,OAAO;CACP,QAAQ;CACT,CAAC;AAEF,IAAa,cAAc,OAAO,KAAK,CAAC,EACtC,gBAAgB,QACjB,CAAC;AAEF,IAAa,eAAe,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC5E,YAAY,MAAM,WAAW;CAC7B,UAAU;CACV,SAAS;CACT,OAAO,MAAM,QAAQ,QAAQ;CAC7B,QAAQ;CACR,gBAAgB;CAChB,WAAW;EACV,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,UAAU,IACX;CACF,EAAE;AAEH,IAAa,mBAAmB,OAAO,KAAK,CAAC;CAC3C,SAAS;CACT,YAAY;CACZ,gBAAgB;CACjB,CAAC;AAEF,IAAa,UAAU,OAAO,KAAK,EAAqB,EAAE,aAAa,EACrE,WAAW,EACT,iBAAiB,MAAM,QAAQ,OAAO,OACvC,EACF,EAAE;AAEH,IAAa,eAAa,OAAO,WAAc,CAAC;CAC9C,SAAS;CACT,KAAK,EACH,UAAU,IACX;CACF,CAAC;AAEF,IAAa,sBAAsB,OAAO,aAAa,CAAC,EACtD,cAAc,GACf,CAAC;AAEF,IAAa,cAAc,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC3E,OAAO,MAAM,QAAQ,SAAS,UAAU,WAAW,OAAO;CAC1D,UAAU;CACV,cAAc;CACf,EAAE"}
1
+ {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/Package/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as Photo } from '@mui/material/Avatar';\nimport Grid from '@mui/material/Grid';\nimport { default as MuiIconButton } from '@mui/material/IconButton';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\nimport { Link } from 'react-router';\n\nimport type { Theme } from '../../';\nimport { greyDark } from '../../Theme/colors';\n\nexport const OverviewItem = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n margin: '0 20px 0 0',\n color: theme.palette.mode === 'light' ? theme.palette.greyDark2 : common.white,\n fontSize: 12,\n [`@media (max-width: ${theme.breakPoints.medium}px)`]: {\n ':nth-of-type(3)': {\n display: 'none',\n },\n },\n [`@media (max-width: ${theme.breakPoints.small}px)`]: {\n ':nth-of-type(4)': {\n display: 'none',\n },\n },\n}));\n\nexport const Published = styled('span')({\n margin: '0 5px 0 0',\n});\n\nexport const Details = styled('span')({\n marginLeft: '5px',\n lineHeight: 1.5,\n display: 'flex',\n flexDirection: 'column',\n});\n\nexport const Author = styled('div')({\n display: 'flex',\n alignItems: 'center',\n});\n\nexport const Avatar = styled(Photo)({\n width: '20px',\n height: '20px',\n});\n\nexport const WrapperLink = styled(Link)({\n textDecoration: 'none',\n});\n\nexport const PackageTitle = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: 20,\n display: 'block',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textDecoration: 'none',\n wordBreak: 'break-word',\n [`@media (max-width: ${theme.breakPoints.small}px)`]: {\n fontSize: 16,\n },\n}));\n\nexport const GridRightAligned = styled(Grid)({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n});\n\nexport const Wrapper = styled(List)<{ theme?: Theme }>(({ theme }) => ({\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n}));\n\nexport const IconButton = styled(MuiIconButton)({\n padding: 6,\n svg: {\n fontSize: 16,\n },\n});\n\nexport const PackageListItemText = styled(ListItemText)({\n paddingRight: 0,\n});\n\nexport const Description = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n color: theme.palette.mode === 'light' ? greyDark : common.white,\n fontSize: '14px',\n paddingRight: 0,\n}));\n"],"mappings":";;;;;;;;;;AAYA,IAAa,eAAe,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC5E,SAAS;CACT,YAAY;CACZ,QAAQ;CACR,OAAO,MAAM,QAAQ,SAAS,UAAU,MAAM,QAAQ,YAAY,OAAO;CACzE,UAAU;EACT,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,mBAAmB,EACjB,SAAS,QACV,EACF;EACA,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,mBAAmB,EACjB,SAAS,QACV,EACF;CACF,EAAE;AAEH,IAAa,YAAY,OAAO,OAAO,CAAC,EACtC,QAAQ,aACT,CAAC;AAEF,IAAa,UAAU,OAAO,OAAO,CAAC;CACpC,YAAY;CACZ,YAAY;CACZ,SAAS;CACT,eAAe;CAChB,CAAC;AAEF,IAAa,SAAS,OAAO,MAAM,CAAC;CAClC,SAAS;CACT,YAAY;CACb,CAAC;AAEF,IAAa,WAAS,OAAO,OAAM,CAAC;CAClC,OAAO;CACP,QAAQ;CACT,CAAC;AAEF,IAAa,cAAc,OAAO,KAAK,CAAC,EACtC,gBAAgB,QACjB,CAAC;AAEF,IAAa,eAAe,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC5E,YAAY,MAAM,WAAW;CAC7B,UAAU;CACV,SAAS;CACT,OAAO,MAAM,QAAQ,QAAQ;CAC7B,QAAQ;CACR,gBAAgB;CAChB,WAAW;EACV,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,UAAU,IACX;CACF,EAAE;AAEH,IAAa,mBAAmB,OAAO,KAAK,CAAC;CAC3C,SAAS;CACT,YAAY;CACZ,gBAAgB;CACjB,CAAC;AAEF,IAAa,UAAU,OAAO,KAAK,EAAqB,EAAE,aAAa,EACrE,WAAW,EACT,iBAAiB,MAAM,QAAQ,OAAO,OACvC,EACF,EAAE;AAEH,IAAa,eAAa,OAAO,WAAc,CAAC;CAC9C,SAAS;CACT,KAAK,EACH,UAAU,IACX;CACF,CAAC;AAEF,IAAa,sBAAsB,OAAO,gBAAa,CAAC,EACtD,cAAc,GACf,CAAC;AAEF,IAAa,cAAc,OAAO,OAAO,EAAqB,EAAE,aAAa;CAC3E,OAAO,MAAM,QAAQ,SAAS,UAAU,WAAW,OAAO;CAC1D,UAAU;CACV,cAAc;CACf,EAAE"}
@@ -17,7 +17,6 @@ _mui_material_DialogTitle = require_runtime.__toESM(_mui_material_DialogTitle);
17
17
  let _mui_material_styles = require("@mui/material/styles");
18
18
  let react_i18next = require("react-i18next");
19
19
  //#region src/components/RawViewer/RawViewer.tsx
20
- var ReactJson = _microlink_react_json_view.default ?? _microlink_react_json_view.reactJsonView ?? _microlink_react_json_view;
21
20
  var ViewerTitle = (props) => {
22
21
  const { children, onClose } = props;
23
22
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mui_material_DialogTitle.default, {
@@ -50,7 +49,7 @@ var RawViewer = ({ isOpen = false, onClose, packageMeta }) => {
50
49
  id: "viewer-title",
51
50
  onClose,
52
51
  children: t("action-bar-action.raw-title", { package: packageMeta.latest.name })
53
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_DialogContent.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReactJson, {
52
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_DialogContent.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_microlink_react_json_view.default, {
54
53
  collapseStringsAfterLength: 200,
55
54
  collapsed: 2,
56
55
  enableClipboard: true,
@@ -1 +1 @@
1
- {"version":3,"file":"RawViewer.js","names":[],"sources":["../../../src/components/RawViewer/RawViewer.tsx"],"sourcesContent":["import * as ReactJsonViewModule from '@microlink/react-json-view';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport { useTheme } from '@mui/material/styles';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\nconst ReactJson = ((ReactJsonViewModule as any).default ??\n (ReactJsonViewModule as any).reactJsonView ??\n ReactJsonViewModule) as React.ComponentType<any>;\n\nexport interface ViewerTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst ViewerTitle = (props: ViewerTitleProps) => {\n const { children, onClose } = props;\n\n return (\n <DialogTitle sx={{ m: 0, p: 2 }}>\n {children}\n {onClose ? (\n <IconButton\n aria-label=\"close\"\n data-testid=\"close-raw-viewer\"\n onClick={onClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n packageMeta: any;\n};\n\nconst RawViewer: React.FC<Props> = ({ isOpen = false, onClose, packageMeta }) => {\n const { t } = useTranslation();\n const theme: Theme = useTheme();\n return (\n <Dialog data-testid={'rawViewer--dialog'} fullScreen={true} open={isOpen}>\n <ViewerTitle id=\"viewer-title\" onClose={onClose}>\n {t('action-bar-action.raw-title', { package: packageMeta.latest.name })}\n </ViewerTitle>\n <DialogContent>\n <ReactJson\n collapseStringsAfterLength={200}\n collapsed={2}\n enableClipboard={true}\n groupArraysAfterLength={10}\n src={packageMeta as any}\n theme={theme.palette.mode == 'light' ? 'bright:inverted' : 'bright'}\n />\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RawViewer;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAYA,IAAM,YAAc,2BAA4B,WAC7C,2BAA4B,iBAC7B;AAQF,IAAM,eAAe,UAA4B;CAC/C,MAAM,EAAE,UAAU,YAAY;AAE9B,QACE,iBAAA,GAAA,kBAAA,MAAC,0BAAA,SAAD;EAAa,IAAI;GAAE,GAAG;GAAG,GAAG;GAAG;YAA/B,CACG,UACA,UACC,iBAAA,GAAA,kBAAA,KAAC,yBAAA,SAAD;GACE,cAAW;GACX,eAAY;GACZ,SAAS;GACT,IAAI;IACF,UAAU;IACV,OAAO;IACP,KAAK;IACL,QAAQ,UAAU,MAAM,QAAQ,KAAK;IACtC;aAED,iBAAA,GAAA,kBAAA,KAAC,0BAAA,SAAD,EAAa,CAAA;GACF,CAAA,GACX,KACQ;;;AAUlB,IAAM,aAA8B,EAAE,SAAS,OAAO,SAAS,kBAAkB;CAC/E,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,SAAA,GAAA,qBAAA,WAAyB;AAC/B,QACE,iBAAA,GAAA,kBAAA,MAAC,qBAAA,SAAD;EAAQ,eAAa;EAAqB,YAAY;EAAM,MAAM;YAAlE,CACE,iBAAA,GAAA,kBAAA,KAAC,aAAD;GAAa,IAAG;GAAwB;aACrC,EAAE,+BAA+B,EAAE,SAAS,YAAY,OAAO,MAAM,CAAC;GAC3D,CAAA,EACd,iBAAA,GAAA,kBAAA,KAAC,4BAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,WAAD;GACE,4BAA4B;GAC5B,WAAW;GACX,iBAAiB;GACjB,wBAAwB;GACxB,KAAK;GACL,OAAO,MAAM,QAAQ,QAAQ,UAAU,oBAAoB;GAC3D,CAAA,EACY,CAAA,CACT"}
1
+ {"version":3,"file":"RawViewer.js","names":[],"sources":["../../../src/components/RawViewer/RawViewer.tsx"],"sourcesContent":["import ReactJsonView from '@microlink/react-json-view';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport { useTheme } from '@mui/material/styles';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\nexport interface ViewerTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst ViewerTitle = (props: ViewerTitleProps) => {\n const { children, onClose } = props;\n\n return (\n <DialogTitle sx={{ m: 0, p: 2 }}>\n {children}\n {onClose ? (\n <IconButton\n aria-label=\"close\"\n data-testid=\"close-raw-viewer\"\n onClick={onClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n packageMeta: any;\n};\n\nconst RawViewer: React.FC<Props> = ({ isOpen = false, onClose, packageMeta }) => {\n const { t } = useTranslation();\n const theme: Theme = useTheme();\n return (\n <Dialog data-testid={'rawViewer--dialog'} fullScreen={true} open={isOpen}>\n <ViewerTitle id=\"viewer-title\" onClose={onClose}>\n {t('action-bar-action.raw-title', { package: packageMeta.latest.name })}\n </ViewerTitle>\n <DialogContent>\n <ReactJsonView\n collapseStringsAfterLength={200}\n collapsed={2}\n enableClipboard={true}\n groupArraysAfterLength={10}\n src={packageMeta as any}\n theme={theme.palette.mode == 'light' ? 'bright:inverted' : 'bright'}\n />\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RawViewer;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,IAAM,eAAe,UAA4B;CAC/C,MAAM,EAAE,UAAU,YAAY;AAE9B,QACE,iBAAA,GAAA,kBAAA,MAAC,0BAAA,SAAD;EAAa,IAAI;GAAE,GAAG;GAAG,GAAG;GAAG;YAA/B,CACG,UACA,UACC,iBAAA,GAAA,kBAAA,KAAC,yBAAA,SAAD;GACE,cAAW;GACX,eAAY;GACZ,SAAS;GACT,IAAI;IACF,UAAU;IACV,OAAO;IACP,KAAK;IACL,QAAQ,UAAU,MAAM,QAAQ,KAAK;IACtC;aAED,iBAAA,GAAA,kBAAA,KAAC,0BAAA,SAAD,EAAa,CAAA;GACF,CAAA,GACX,KACQ;;;AAUlB,IAAM,aAA8B,EAAE,SAAS,OAAO,SAAS,kBAAkB;CAC/E,MAAM,EAAE,OAAA,GAAA,cAAA,iBAAsB;CAC9B,MAAM,SAAA,GAAA,qBAAA,WAAyB;AAC/B,QACE,iBAAA,GAAA,kBAAA,MAAC,qBAAA,SAAD;EAAQ,eAAa;EAAqB,YAAY;EAAM,MAAM;YAAlE,CACE,iBAAA,GAAA,kBAAA,KAAC,aAAD;GAAa,IAAG;GAAwB;aACrC,EAAE,+BAA+B,EAAE,SAAS,YAAY,OAAO,MAAM,CAAC;GAC3D,CAAA,EACd,iBAAA,GAAA,kBAAA,KAAC,4BAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,2BAAA,SAAD;GACE,4BAA4B;GAC5B,WAAW;GACX,iBAAiB;GACjB,wBAAwB;GACxB,KAAK;GACL,OAAO,MAAM,QAAQ,QAAQ,UAAU,oBAAoB;GAC3D,CAAA,EACY,CAAA,CACT"}
@@ -1,7 +1,7 @@
1
1
  import IconButton from "@mui/material/IconButton";
2
2
  import "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import * as ReactJsonViewModule from "@microlink/react-json-view";
4
+ import ReactJsonView from "@microlink/react-json-view";
5
5
  import CloseIcon from "@mui/icons-material/Close";
6
6
  import Dialog from "@mui/material/Dialog";
7
7
  import DialogContent from "@mui/material/DialogContent";
@@ -9,7 +9,6 @@ import DialogTitle from "@mui/material/DialogTitle";
9
9
  import { useTheme } from "@mui/material/styles";
10
10
  import { useTranslation } from "react-i18next";
11
11
  //#region src/components/RawViewer/RawViewer.tsx
12
- var ReactJson = ReactJsonViewModule.default ?? ReactJsonViewModule.reactJsonView ?? ReactJsonViewModule;
13
12
  var ViewerTitle = (props) => {
14
13
  const { children, onClose } = props;
15
14
  return /* @__PURE__ */ jsxs(DialogTitle, {
@@ -42,7 +41,7 @@ var RawViewer = ({ isOpen = false, onClose, packageMeta }) => {
42
41
  id: "viewer-title",
43
42
  onClose,
44
43
  children: t("action-bar-action.raw-title", { package: packageMeta.latest.name })
45
- }), /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(ReactJson, {
44
+ }), /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(ReactJsonView, {
46
45
  collapseStringsAfterLength: 200,
47
46
  collapsed: 2,
48
47
  enableClipboard: true,
@@ -1 +1 @@
1
- {"version":3,"file":"RawViewer.mjs","names":[],"sources":["../../../src/components/RawViewer/RawViewer.tsx"],"sourcesContent":["import * as ReactJsonViewModule from '@microlink/react-json-view';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport { useTheme } from '@mui/material/styles';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\nconst ReactJson = ((ReactJsonViewModule as any).default ??\n (ReactJsonViewModule as any).reactJsonView ??\n ReactJsonViewModule) as React.ComponentType<any>;\n\nexport interface ViewerTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst ViewerTitle = (props: ViewerTitleProps) => {\n const { children, onClose } = props;\n\n return (\n <DialogTitle sx={{ m: 0, p: 2 }}>\n {children}\n {onClose ? (\n <IconButton\n aria-label=\"close\"\n data-testid=\"close-raw-viewer\"\n onClick={onClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n packageMeta: any;\n};\n\nconst RawViewer: React.FC<Props> = ({ isOpen = false, onClose, packageMeta }) => {\n const { t } = useTranslation();\n const theme: Theme = useTheme();\n return (\n <Dialog data-testid={'rawViewer--dialog'} fullScreen={true} open={isOpen}>\n <ViewerTitle id=\"viewer-title\" onClose={onClose}>\n {t('action-bar-action.raw-title', { package: packageMeta.latest.name })}\n </ViewerTitle>\n <DialogContent>\n <ReactJson\n collapseStringsAfterLength={200}\n collapsed={2}\n enableClipboard={true}\n groupArraysAfterLength={10}\n src={packageMeta as any}\n theme={theme.palette.mode == 'light' ? 'bright:inverted' : 'bright'}\n />\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RawViewer;\n"],"mappings":";;;;;;;;;;;AAYA,IAAM,YAAc,oBAA4B,WAC7C,oBAA4B,iBAC7B;AAQF,IAAM,eAAe,UAA4B;CAC/C,MAAM,EAAE,UAAU,YAAY;AAE9B,QACE,qBAAC,aAAD;EAAa,IAAI;GAAE,GAAG;GAAG,GAAG;GAAG;YAA/B,CACG,UACA,UACC,oBAAC,YAAD;GACE,cAAW;GACX,eAAY;GACZ,SAAS;GACT,IAAI;IACF,UAAU;IACV,OAAO;IACP,KAAK;IACL,QAAQ,UAAU,MAAM,QAAQ,KAAK;IACtC;aAED,oBAAC,WAAD,EAAa,CAAA;GACF,CAAA,GACX,KACQ;;;AAUlB,IAAM,aAA8B,EAAE,SAAS,OAAO,SAAS,kBAAkB;CAC/E,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,QAAe,UAAU;AAC/B,QACE,qBAAC,QAAD;EAAQ,eAAa;EAAqB,YAAY;EAAM,MAAM;YAAlE,CACE,oBAAC,aAAD;GAAa,IAAG;GAAwB;aACrC,EAAE,+BAA+B,EAAE,SAAS,YAAY,OAAO,MAAM,CAAC;GAC3D,CAAA,EACd,oBAAC,eAAD,EAAA,UACE,oBAAC,WAAD;GACE,4BAA4B;GAC5B,WAAW;GACX,iBAAiB;GACjB,wBAAwB;GACxB,KAAK;GACL,OAAO,MAAM,QAAQ,QAAQ,UAAU,oBAAoB;GAC3D,CAAA,EACY,CAAA,CACT"}
1
+ {"version":3,"file":"RawViewer.mjs","names":[],"sources":["../../../src/components/RawViewer/RawViewer.tsx"],"sourcesContent":["import ReactJsonView from '@microlink/react-json-view';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport { useTheme } from '@mui/material/styles';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\nexport interface ViewerTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst ViewerTitle = (props: ViewerTitleProps) => {\n const { children, onClose } = props;\n\n return (\n <DialogTitle sx={{ m: 0, p: 2 }}>\n {children}\n {onClose ? (\n <IconButton\n aria-label=\"close\"\n data-testid=\"close-raw-viewer\"\n onClick={onClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n packageMeta: any;\n};\n\nconst RawViewer: React.FC<Props> = ({ isOpen = false, onClose, packageMeta }) => {\n const { t } = useTranslation();\n const theme: Theme = useTheme();\n return (\n <Dialog data-testid={'rawViewer--dialog'} fullScreen={true} open={isOpen}>\n <ViewerTitle id=\"viewer-title\" onClose={onClose}>\n {t('action-bar-action.raw-title', { package: packageMeta.latest.name })}\n </ViewerTitle>\n <DialogContent>\n <ReactJsonView\n collapseStringsAfterLength={200}\n collapsed={2}\n enableClipboard={true}\n groupArraysAfterLength={10}\n src={packageMeta as any}\n theme={theme.palette.mode == 'light' ? 'bright:inverted' : 'bright'}\n />\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RawViewer;\n"],"mappings":";;;;;;;;;;;AAkBA,IAAM,eAAe,UAA4B;CAC/C,MAAM,EAAE,UAAU,YAAY;AAE9B,QACE,qBAAC,aAAD;EAAa,IAAI;GAAE,GAAG;GAAG,GAAG;GAAG;YAA/B,CACG,UACA,UACC,oBAAC,YAAD;GACE,cAAW;GACX,eAAY;GACZ,SAAS;GACT,IAAI;IACF,UAAU;IACV,OAAO;IACP,KAAK;IACL,QAAQ,UAAU,MAAM,QAAQ,KAAK;IACtC;aAED,oBAAC,WAAD,EAAa,CAAA;GACF,CAAA,GACX,KACQ;;;AAUlB,IAAM,aAA8B,EAAE,SAAS,OAAO,SAAS,kBAAkB;CAC/E,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,QAAe,UAAU;AAC/B,QACE,qBAAC,QAAD;EAAQ,eAAa;EAAqB,YAAY;EAAM,MAAM;YAAlE,CACE,oBAAC,aAAD;GAAa,IAAG;GAAwB;aACrC,EAAE,+BAA+B,EAAE,SAAS,YAAY,OAAO,MAAM,CAAC;GAC3D,CAAA,EACd,oBAAC,eAAD,EAAA,UACE,oBAAC,eAAD;GACE,4BAA4B;GAC5B,WAAW;GACX,iBAAiB;GACjB,wBAAwB;GACxB,KAAK;GACL,OAAO,MAAM,QAAQ,QAAQ,UAAU,oBAAoB;GAC3D,CAAA,EACY,CAAA,CACT"}
@@ -20,8 +20,8 @@
20
20
  --borderRadius-medium: .375rem;
21
21
  --stack-padding-condensed: .5rem;
22
22
  --stack-padding-normal: 1rem;
23
- --fontStack-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
24
- --fontStack-sansSerif: "Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
23
+ --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
24
+ --fontStack-sansSerif: "Mona Sans VF", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
25
25
  --text-body-size-small: var(--base-text-size-xs);
26
26
  --h6-size: .75rem;
27
27
  --fgColor-accent: Highlight;
@@ -100,8 +100,8 @@
100
100
  --borderRadius-medium: .375rem;
101
101
  --stack-padding-condensed: .5rem;
102
102
  --stack-padding-normal: 1rem;
103
- --fontStack-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
104
- --fontStack-sansSerif: "Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
103
+ --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
104
+ --fontStack-sansSerif: "Mona Sans VF", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
105
105
  --text-body-size-small: var(--base-text-size-xs);
106
106
  --h6-size: .75rem;
107
107
  --fgColor-accent: Highlight;
@@ -173,7 +173,7 @@
173
173
  font-weight: var(--base-text-weight-normal,400);
174
174
  color: var(--fgColor-default);
175
175
  background-color: var(--bgColor-default);
176
- font-family: var(--fontStack-sansSerif,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji");
176
+ font-family: var(--fontStack-sansSerif,-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji");
177
177
  overflow-wrap: break-word;
178
178
  font-size: 16px;
179
179
  line-height: 1.5;
@@ -293,7 +293,7 @@
293
293
  background: 0 0;
294
294
  overflow: hidden;
295
295
  height: .25em;
296
- margin: var(--base-size-24)0;
296
+ margin: var(--base-size-24) 0;
297
297
  background-color: var(--borderColor-default);
298
298
  border: 0;
299
299
  padding: 0;
@@ -425,7 +425,7 @@
425
425
 
426
426
  .markdown-body kbd {
427
427
  padding: var(--base-size-4);
428
- font: 11px var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
428
+ font: 11px var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
429
429
  color: var(--fgColor-default);
430
430
  vertical-align: middle;
431
431
  background-color: var(--bgColor-muted);
@@ -520,12 +520,12 @@
520
520
  .markdown-body tt,
521
521
  .markdown-body code,
522
522
  .markdown-body samp {
523
- font-family: var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
523
+ font-family: var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
524
524
  font-size: 12px;
525
525
  }
526
526
 
527
527
  .markdown-body pre {
528
- font-family: var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
528
+ font-family: var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
529
529
  margin-top: 0;
530
530
  margin-bottom: 0;
531
531
  font-size: 12px;
@@ -562,7 +562,7 @@
562
562
  }
563
563
 
564
564
  .markdown-body .border {
565
- border: var(--borderWidth-thin,1px)solid var(--borderColor-default)!important;
565
+ border: var(--borderWidth-thin,1px) solid var(--borderColor-default)!important;
566
566
  }
567
567
 
568
568
  .markdown-body .border-0 {
@@ -1035,7 +1035,7 @@
1035
1035
  }
1036
1036
 
1037
1037
  .markdown-body .csv-data .blob-num {
1038
- padding: 10px var(--base-size-8)9px;
1038
+ padding: 10px var(--base-size-8) 9px;
1039
1039
  text-align: right;
1040
1040
  background: var(--bgColor-default);
1041
1041
  border: 0;
@@ -1125,11 +1125,11 @@
1125
1125
  .markdown-body .Box--condensed .Box-body,
1126
1126
  .markdown-body .Box--condensed .Box-footer,
1127
1127
  .markdown-body .Box--condensed .Box-header {
1128
- padding: var(--stack-padding-condensed)var(--stack-padding-normal);
1128
+ padding: var(--stack-padding-condensed) var(--stack-padding-normal);
1129
1129
  }
1130
1130
 
1131
1131
  .markdown-body .Box--condensed .Box-row {
1132
- padding: var(--stack-padding-condensed)var(--stack-padding-normal);
1132
+ padding: var(--stack-padding-condensed) var(--stack-padding-normal);
1133
1133
  }
1134
1134
 
1135
1135
  .markdown-body .Box-header {
@@ -1139,12 +1139,12 @@
1139
1139
  border-top-right-radius: var(--borderRadius-medium);
1140
1140
  border-style: solid;
1141
1141
  border-width: var(--borderWidth-thin);
1142
- margin: calc(var(--borderWidth-thin)*-1)calc(var(--borderWidth-thin)*-1)0;
1142
+ margin: calc(var(--borderWidth-thin)*-1) calc(var(--borderWidth-thin)*-1) 0;
1143
1143
  padding: var(--stack-padding-normal);
1144
1144
  }
1145
1145
 
1146
1146
  .markdown-body .Box-body {
1147
- border-bottom: var(--borderWidth-thin)solid var(--borderColor-default);
1147
+ border-bottom: var(--borderWidth-thin) solid var(--borderColor-default);
1148
1148
  padding: var(--stack-padding-normal);
1149
1149
  }
1150
1150
 
@@ -1465,7 +1465,7 @@
1465
1465
  }
1466
1466
 
1467
1467
  .markdown-body .markdown-alert {
1468
- padding: var(--base-size-8)var(--base-size-16);
1468
+ padding: var(--base-size-8) var(--base-size-16);
1469
1469
  margin-bottom: var(--base-size-16);
1470
1470
  color: inherit;
1471
1471
  border-left: .25em solid var(--borderColor-default);
@@ -1530,6 +1530,48 @@
1530
1530
  margin-top: 0!important;
1531
1531
  }
1532
1532
 
1533
+ .markdown-body .markdown-heading {
1534
+ position: relative;
1535
+ }
1536
+
1537
+ .markdown-body .markdown-heading .heading-element:hover+.anchor {
1538
+ opacity: 1;
1539
+ }
1540
+
1541
+ .markdown-body .markdown-heading h1.heading-element+.anchor,
1542
+ .markdown-body .markdown-heading h2.heading-element+.anchor {
1543
+ transform: translateY(calc(-50% - .3rem));
1544
+ }
1545
+
1546
+ .markdown-body .markdown-heading .anchor {
1547
+ border-radius: var(--borderRadius-medium);
1548
+ opacity: 0;
1549
+ justify-content: center;
1550
+ align-items: center;
1551
+ width: 28px;
1552
+ height: 28px;
1553
+ margin: auto;
1554
+ display: flex;
1555
+ position: absolute;
1556
+ top: 50%;
1557
+ left: -28px;
1558
+ transform: translateY(-50%);
1559
+ }
1560
+
1561
+ .markdown-body .markdown-heading .anchor:hover {
1562
+ opacity: 1;
1563
+ }
1564
+
1565
+ .markdown-body .markdown-heading .anchor:focus {
1566
+ outline: 2px solid var(--focus-outlineColor);
1567
+ outline-offset: -2px;
1568
+ opacity: 1;
1569
+ }
1570
+
1571
+ .markdown-body .markdown-heading .anchor .octicon {
1572
+ color: var(--fgColor-default);
1573
+ }
1574
+
1533
1575
  .markdown-body .tab-size[data-tab-size="1"] {
1534
1576
  tab-size: 1;
1535
1577
  }
@@ -15,7 +15,7 @@ import List from "@mui/material/List";
15
15
  import Avatar from "@mui/material/Avatar";
16
16
  import Typography from "@mui/material/Typography";
17
17
  import ListItem from "@mui/material/ListItem";
18
- import ListItemText from "@mui/material/ListItemText";
18
+ import MuiListItemText from "@mui/material/ListItemText";
19
19
  //#region src/components/Repository/Repository.tsx
20
20
  var StyledText = styled(Typography)((props) => ({
21
21
  fontWeight: props.theme.fontWeight.bold,
@@ -25,7 +25,7 @@ var RepositoryListItem = styled(ListItem)({
25
25
  padding: 0,
26
26
  ":hover": { backgroundColor: "transparent" }
27
27
  });
28
- var RepositoryListItemText = styled(ListItemText)({
28
+ var RepositoryListItemText = styled(MuiListItemText)({
29
29
  padding: "0 0 0 10px",
30
30
  margin: 0
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.mjs","names":[],"sources":["../../../src/components/Repository/Repository.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Avatar from '@mui/material/Avatar';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport { common } from '@mui/material/colors';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\nimport { url as urlUtils } from '../../utils';\nimport CopyClipboard from '../CopyClipboard';\nimport { Git } from '../Icons';\nimport LinkExternal from '../LinkExternal';\n\nconst StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst RepositoryListItem = styled(ListItem)({\n padding: 0,\n ':hover': {\n backgroundColor: 'transparent',\n },\n});\n\nconst RepositoryListItemText = styled(ListItemText)({\n padding: '0 0 0 10px',\n margin: 0,\n});\n\nconst RepositoryAvatar = styled(Avatar)({\n padding: 0,\n marginLeft: 0,\n backgroundColor: 'transparent',\n});\n\nconst Repository: React.FC<{ packageMeta: any }> = ({ packageMeta }) => {\n const { t } = useTranslation();\n const url = packageMeta?.latest?.repository?.url;\n if (!url || !urlUtils.isURL(url)) {\n return null;\n }\n\n const getCorrectRepositoryURL = (): string => {\n if (!url.includes('git+')) {\n return url;\n }\n\n return url.split('git+')[1];\n };\n\n const repositoryURL = getCorrectRepositoryURL();\n\n return (\n <List\n dense={true}\n subheader={<StyledText variant=\"subtitle1\">{t('sidebar.repository.title')}</StyledText>}\n >\n <RepositoryListItem>\n <RepositoryAvatar sx={{ bgcolor: common.white }}>\n <Git />\n </RepositoryAvatar>\n <RepositoryListItemText\n primary={\n <CopyClipboard dataTestId=\"repositoryID\" text={repositoryURL} title={repositoryURL}>\n <LinkExternal to={repositoryURL} variant=\"outline\">\n {repositoryURL}\n </LinkExternal>\n </CopyClipboard>\n }\n />\n </RepositoryListItem>\n </List>\n );\n};\n\nexport default Repository;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBA,IAAM,aAAa,OAAO,WAAW,EAAqB,WAAW;CACnE,YAAY,MAAM,MAAM,WAAW;CACnC,eAAe;CAChB,EAAE;AAEH,IAAM,qBAAqB,OAAO,SAAS,CAAC;CAC1C,SAAS;CACT,UAAU,EACR,iBAAiB,eAClB;CACF,CAAC;AAEF,IAAM,yBAAyB,OAAO,aAAa,CAAC;CAClD,SAAS;CACT,QAAQ;CACT,CAAC;AAEF,IAAM,mBAAmB,OAAO,OAAO,CAAC;CACtC,SAAS;CACT,YAAY;CACZ,iBAAiB;CAClB,CAAC;AAEF,IAAM,cAA8C,EAAE,kBAAkB;CACtE,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,MAAM,aAAa,QAAQ,YAAY;AAC7C,KAAI,CAAC,OAAO,CAAC,MAAe,IAAI,CAC9B,QAAO;CAGT,MAAM,gCAAwC;AAC5C,MAAI,CAAC,IAAI,SAAS,OAAO,CACvB,QAAO;AAGT,SAAO,IAAI,MAAM,OAAO,CAAC;;CAG3B,MAAM,gBAAgB,yBAAyB;AAE/C,QACE,oBAAC,MAAD;EACE,OAAO;EACP,WAAW,oBAAC,YAAD;GAAY,SAAQ;aAAa,EAAE,2BAA2B;GAAc,CAAA;YAEvF,qBAAC,oBAAD,EAAA,UAAA,CACE,oBAAC,kBAAD;GAAkB,IAAI,EAAE,SAAS,OAAO,OAAO;aAC7C,oBAAC,KAAD,EAAO,CAAA;GACU,CAAA,EACnB,oBAAC,wBAAD,EACE,SACE,oBAAC,iBAAD;GAAe,YAAW;GAAe,MAAM;GAAe,OAAO;aACnE,oBAAC,cAAD;IAAc,IAAI;IAAe,SAAQ;cACtC;IACY,CAAA;GACD,CAAA,EAElB,CAAA,CACiB,EAAA,CAAA;EAChB,CAAA"}
1
+ {"version":3,"file":"Repository.mjs","names":[],"sources":["../../../src/components/Repository/Repository.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Avatar from '@mui/material/Avatar';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport { common } from '@mui/material/colors';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\nimport { url as urlUtils } from '../../utils';\nimport CopyClipboard from '../CopyClipboard';\nimport { Git } from '../Icons';\nimport LinkExternal from '../LinkExternal';\n\nconst StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme.fontWeight.bold,\n textTransform: 'capitalize',\n}));\n\nconst RepositoryListItem = styled(ListItem)({\n padding: 0,\n ':hover': {\n backgroundColor: 'transparent',\n },\n});\n\nconst RepositoryListItemText = styled(ListItemText)({\n padding: '0 0 0 10px',\n margin: 0,\n});\n\nconst RepositoryAvatar = styled(Avatar)({\n padding: 0,\n marginLeft: 0,\n backgroundColor: 'transparent',\n});\n\nconst Repository: React.FC<{ packageMeta: any }> = ({ packageMeta }) => {\n const { t } = useTranslation();\n const url = packageMeta?.latest?.repository?.url;\n if (!url || !urlUtils.isURL(url)) {\n return null;\n }\n\n const getCorrectRepositoryURL = (): string => {\n if (!url.includes('git+')) {\n return url;\n }\n\n return url.split('git+')[1];\n };\n\n const repositoryURL = getCorrectRepositoryURL();\n\n return (\n <List\n dense={true}\n subheader={<StyledText variant=\"subtitle1\">{t('sidebar.repository.title')}</StyledText>}\n >\n <RepositoryListItem>\n <RepositoryAvatar sx={{ bgcolor: common.white }}>\n <Git />\n </RepositoryAvatar>\n <RepositoryListItemText\n primary={\n <CopyClipboard dataTestId=\"repositoryID\" text={repositoryURL} title={repositoryURL}>\n <LinkExternal to={repositoryURL} variant=\"outline\">\n {repositoryURL}\n </LinkExternal>\n </CopyClipboard>\n }\n />\n </RepositoryListItem>\n </List>\n );\n};\n\nexport default Repository;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBA,IAAM,aAAa,OAAO,WAAW,EAAqB,WAAW;CACnE,YAAY,MAAM,MAAM,WAAW;CACnC,eAAe;CAChB,EAAE;AAEH,IAAM,qBAAqB,OAAO,SAAS,CAAC;CAC1C,SAAS;CACT,UAAU,EACR,iBAAiB,eAClB;CACF,CAAC;AAEF,IAAM,yBAAyB,OAAO,gBAAa,CAAC;CAClD,SAAS;CACT,QAAQ;CACT,CAAC;AAEF,IAAM,mBAAmB,OAAO,OAAO,CAAC;CACtC,SAAS;CACT,YAAY;CACZ,iBAAiB;CAClB,CAAC;AAEF,IAAM,cAA8C,EAAE,kBAAkB;CACtE,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,MAAM,aAAa,QAAQ,YAAY;AAC7C,KAAI,CAAC,OAAO,CAAC,MAAe,IAAI,CAC9B,QAAO;CAGT,MAAM,gCAAwC;AAC5C,MAAI,CAAC,IAAI,SAAS,OAAO,CACvB,QAAO;AAGT,SAAO,IAAI,MAAM,OAAO,CAAC;;CAG3B,MAAM,gBAAgB,yBAAyB;AAE/C,QACE,oBAAC,MAAD;EACE,OAAO;EACP,WAAW,oBAAC,YAAD;GAAY,SAAQ;aAAa,EAAE,2BAA2B;GAAc,CAAA;YAEvF,qBAAC,oBAAD,EAAA,UAAA,CACE,oBAAC,kBAAD;GAAkB,IAAI,EAAE,SAAS,OAAO,OAAO;aAC7C,oBAAC,KAAD,EAAO,CAAA;GACU,CAAA,EACnB,oBAAC,wBAAD,EACE,SACE,oBAAC,iBAAD;GAAe,YAAW;GAAe,MAAM;GAAe,OAAO;aACnE,oBAAC,cAAD;IAAc,IAAI;IAAe,SAAQ;cACtC;IACY,CAAA;GACD,CAAA,EAElB,CAAA,CACiB,EAAA,CAAA;EAChB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import styled from "@emotion/styled";
2
2
  import { common } from "@mui/material/colors";
3
3
  import Typography from "@mui/material/Typography";
4
- import ListItemText from "@mui/material/ListItemText";
4
+ import MuiListItemText from "@mui/material/ListItemText";
5
5
  //#region src/components/UpLinks/styles.ts
6
6
  var StyledText = styled(Typography)((props) => ({ fontWeight: props.theme.fontWeight.bold }));
7
7
  var Spacer = styled("div")(({ theme }) => ({
@@ -11,12 +11,12 @@ var Spacer = styled("div")(({ theme }) => ({
11
11
  height: "0.5em",
12
12
  margin: "0 16px"
13
13
  }));
14
- var ListItemText$1 = styled(ListItemText)(({ theme }) => ({
14
+ var ListItemText = styled(MuiListItemText)(({ theme }) => ({
15
15
  flex: "none",
16
16
  color: theme.palette.mode == "light" ? theme.palette.black : common.white,
17
17
  opacity: .6
18
18
  }));
19
19
  //#endregion
20
- export { ListItemText$1 as ListItemText, Spacer, StyledText };
20
+ export { ListItemText, Spacer, StyledText };
21
21
 
22
22
  //# sourceMappingURL=styles.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/UpLinks/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as MuiListItemText } from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../Theme';\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme.fontWeight.bold,\n}));\n\nexport const Spacer = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n flex: '1 1 auto',\n borderBottom: `1px dotted ${\n theme.palette.mode == 'light' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)'\n } `,\n whiteSpace: 'nowrap',\n height: '0.5em',\n margin: '0 16px',\n}));\n\nexport const ListItemText = styled(MuiListItemText)<{ theme?: Theme }>(({ theme }) => ({\n flex: 'none',\n color: theme.palette.mode == 'light' ? theme.palette.black : common.white,\n opacity: 0.6,\n}));\n"],"mappings":";;;;;AAOA,IAAa,aAAa,OAAO,WAAW,EAAqB,WAAW,EAC1E,YAAY,MAAM,MAAM,WAAW,MACpC,EAAE;AAEH,IAAa,SAAS,OAAO,MAAM,EAAqB,EAAE,aAAa;CACrE,MAAM;CACN,cAAc,cACZ,MAAM,QAAQ,QAAQ,UAAU,uBAAuB,2BACxD;CACD,YAAY;CACZ,QAAQ;CACR,QAAQ;CACT,EAAE;AAEH,IAAa,iBAAe,OAAO,aAAgB,EAAqB,EAAE,aAAa;CACrF,MAAM;CACN,OAAO,MAAM,QAAQ,QAAQ,UAAU,MAAM,QAAQ,QAAQ,OAAO;CACpE,SAAS;CACV,EAAE"}
1
+ {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/UpLinks/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as MuiListItemText } from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../Theme';\n\nexport const StyledText = styled(Typography)<{ theme?: Theme }>((props) => ({\n fontWeight: props.theme.fontWeight.bold,\n}));\n\nexport const Spacer = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n flex: '1 1 auto',\n borderBottom: `1px dotted ${\n theme.palette.mode == 'light' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)'\n } `,\n whiteSpace: 'nowrap',\n height: '0.5em',\n margin: '0 16px',\n}));\n\nexport const ListItemText = styled(MuiListItemText)<{ theme?: Theme }>(({ theme }) => ({\n flex: 'none',\n color: theme.palette.mode == 'light' ? theme.palette.black : common.white,\n opacity: 0.6,\n}));\n"],"mappings":";;;;;AAOA,IAAa,aAAa,OAAO,WAAW,EAAqB,WAAW,EAC1E,YAAY,MAAM,MAAM,WAAW,MACpC,EAAE;AAEH,IAAa,SAAS,OAAO,MAAM,EAAqB,EAAE,aAAa;CACrE,MAAM;CACN,cAAc,cACZ,MAAM,QAAQ,QAAQ,UAAU,uBAAuB,2BACxD;CACD,YAAY;CACZ,QAAQ;CACR,QAAQ;CACT,EAAE;AAEH,IAAa,eAAe,OAAO,gBAAgB,EAAqB,EAAE,aAAa;CACrF,MAAM;CACN,OAAO,MAAM,QAAQ,QAAQ,UAAU,MAAM,QAAQ,QAAQ,OAAO;CACpE,SAAS;CACV,EAAE"}
@@ -1,6 +1,6 @@
1
1
  import styled from "@emotion/styled";
2
2
  import { common } from "@mui/material/colors";
3
- import ListItemText from "@mui/material/ListItemText";
3
+ import MuiListItemText from "@mui/material/ListItemText";
4
4
  //#region src/components/Versions/styles.ts
5
5
  var Spacer = styled("div")(({ theme }) => ({
6
6
  flex: "1 1 auto",
@@ -9,12 +9,12 @@ var Spacer = styled("div")(({ theme }) => ({
9
9
  height: "0.5em",
10
10
  margin: "0 16px"
11
11
  }));
12
- var ListItemText$1 = styled(ListItemText)(({ theme }) => ({
12
+ var ListItemText = styled(MuiListItemText)(({ theme }) => ({
13
13
  flex: "none",
14
14
  opacity: .6,
15
15
  color: theme.palette.mode == "light" ? theme.palette.black : common.white
16
16
  }));
17
17
  //#endregion
18
- export { ListItemText$1 as ListItemText, Spacer };
18
+ export { ListItemText, Spacer };
19
19
 
20
20
  //# sourceMappingURL=styles.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/Versions/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as MuiListItemText } from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../Theme';\n\nexport const Spacer = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n flex: '1 1 auto',\n borderBottom: `1px dotted ${\n theme.palette.mode == 'light' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)'\n } `,\n whiteSpace: 'nowrap',\n height: '0.5em',\n margin: '0 16px',\n}));\n\nexport const ListItemText = styled(MuiListItemText)<{ theme?: Theme }>(({ theme }) => ({\n flex: 'none',\n opacity: 0.6,\n color: theme.palette.mode == 'light' ? theme.palette.black : common.white,\n}));\n"],"mappings":";;;;AAMA,IAAa,SAAS,OAAO,MAAM,EAAqB,EAAE,aAAa;CACrE,MAAM;CACN,cAAc,cACZ,MAAM,QAAQ,QAAQ,UAAU,uBAAuB,2BACxD;CACD,YAAY;CACZ,QAAQ;CACR,QAAQ;CACT,EAAE;AAEH,IAAa,iBAAe,OAAO,aAAgB,EAAqB,EAAE,aAAa;CACrF,MAAM;CACN,SAAS;CACT,OAAO,MAAM,QAAQ,QAAQ,UAAU,MAAM,QAAQ,QAAQ,OAAO;CACrE,EAAE"}
1
+ {"version":3,"file":"styles.mjs","names":[],"sources":["../../../src/components/Versions/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { default as MuiListItemText } from '@mui/material/ListItemText';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../Theme';\n\nexport const Spacer = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n flex: '1 1 auto',\n borderBottom: `1px dotted ${\n theme.palette.mode == 'light' ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)'\n } `,\n whiteSpace: 'nowrap',\n height: '0.5em',\n margin: '0 16px',\n}));\n\nexport const ListItemText = styled(MuiListItemText)<{ theme?: Theme }>(({ theme }) => ({\n flex: 'none',\n opacity: 0.6,\n color: theme.palette.mode == 'light' ? theme.palette.black : common.white,\n}));\n"],"mappings":";;;;AAMA,IAAa,SAAS,OAAO,MAAM,EAAqB,EAAE,aAAa;CACrE,MAAM;CACN,cAAc,cACZ,MAAM,QAAQ,QAAQ,UAAU,uBAAuB,2BACxD;CACD,YAAY;CACZ,QAAQ;CACR,QAAQ;CACT,EAAE;AAEH,IAAa,eAAe,OAAO,gBAAgB,EAAqB,EAAE,aAAa;CACrF,MAAM;CACN,SAAS;CACT,OAAO,MAAM,QAAQ,QAAQ,UAAU,MAAM,QAAQ,QAAQ,OAAO;CACrE,EAAE"}
@@ -20,8 +20,8 @@
20
20
  --borderRadius-medium: .375rem;
21
21
  --stack-padding-condensed: .5rem;
22
22
  --stack-padding-normal: 1rem;
23
- --fontStack-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
24
- --fontStack-sansSerif: "Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
23
+ --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
24
+ --fontStack-sansSerif: "Mona Sans VF", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
25
25
  --text-body-size-small: var(--base-text-size-xs);
26
26
  --h6-size: .75rem;
27
27
  --fgColor-accent: Highlight;
@@ -100,8 +100,8 @@
100
100
  --borderRadius-medium: .375rem;
101
101
  --stack-padding-condensed: .5rem;
102
102
  --stack-padding-normal: 1rem;
103
- --fontStack-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
104
- --fontStack-sansSerif: "Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
103
+ --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
104
+ --fontStack-sansSerif: "Mona Sans VF", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
105
105
  --text-body-size-small: var(--base-text-size-xs);
106
106
  --h6-size: .75rem;
107
107
  --fgColor-accent: Highlight;
@@ -173,7 +173,7 @@
173
173
  font-weight: var(--base-text-weight-normal,400);
174
174
  color: var(--fgColor-default);
175
175
  background-color: var(--bgColor-default);
176
- font-family: var(--fontStack-sansSerif,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji");
176
+ font-family: var(--fontStack-sansSerif,-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji");
177
177
  overflow-wrap: break-word;
178
178
  font-size: 16px;
179
179
  line-height: 1.5;
@@ -293,7 +293,7 @@
293
293
  background: 0 0;
294
294
  overflow: hidden;
295
295
  height: .25em;
296
- margin: var(--base-size-24)0;
296
+ margin: var(--base-size-24) 0;
297
297
  background-color: var(--borderColor-default);
298
298
  border: 0;
299
299
  padding: 0;
@@ -425,7 +425,7 @@
425
425
 
426
426
  .markdown-body kbd {
427
427
  padding: var(--base-size-4);
428
- font: 11px var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
428
+ font: 11px var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
429
429
  color: var(--fgColor-default);
430
430
  vertical-align: middle;
431
431
  background-color: var(--bgColor-muted);
@@ -520,12 +520,12 @@
520
520
  .markdown-body tt,
521
521
  .markdown-body code,
522
522
  .markdown-body samp {
523
- font-family: var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
523
+ font-family: var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
524
524
  font-size: 12px;
525
525
  }
526
526
 
527
527
  .markdown-body pre {
528
- font-family: var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);
528
+ font-family: var(--fontStack-monospace,ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
529
529
  margin-top: 0;
530
530
  margin-bottom: 0;
531
531
  font-size: 12px;
@@ -562,7 +562,7 @@
562
562
  }
563
563
 
564
564
  .markdown-body .border {
565
- border: var(--borderWidth-thin,1px)solid var(--borderColor-default)!important;
565
+ border: var(--borderWidth-thin,1px) solid var(--borderColor-default)!important;
566
566
  }
567
567
 
568
568
  .markdown-body .border-0 {
@@ -1035,7 +1035,7 @@
1035
1035
  }
1036
1036
 
1037
1037
  .markdown-body .csv-data .blob-num {
1038
- padding: 10px var(--base-size-8)9px;
1038
+ padding: 10px var(--base-size-8) 9px;
1039
1039
  text-align: right;
1040
1040
  background: var(--bgColor-default);
1041
1041
  border: 0;
@@ -1125,11 +1125,11 @@
1125
1125
  .markdown-body .Box--condensed .Box-body,
1126
1126
  .markdown-body .Box--condensed .Box-footer,
1127
1127
  .markdown-body .Box--condensed .Box-header {
1128
- padding: var(--stack-padding-condensed)var(--stack-padding-normal);
1128
+ padding: var(--stack-padding-condensed) var(--stack-padding-normal);
1129
1129
  }
1130
1130
 
1131
1131
  .markdown-body .Box--condensed .Box-row {
1132
- padding: var(--stack-padding-condensed)var(--stack-padding-normal);
1132
+ padding: var(--stack-padding-condensed) var(--stack-padding-normal);
1133
1133
  }
1134
1134
 
1135
1135
  .markdown-body .Box-header {
@@ -1139,12 +1139,12 @@
1139
1139
  border-top-right-radius: var(--borderRadius-medium);
1140
1140
  border-style: solid;
1141
1141
  border-width: var(--borderWidth-thin);
1142
- margin: calc(var(--borderWidth-thin)*-1)calc(var(--borderWidth-thin)*-1)0;
1142
+ margin: calc(var(--borderWidth-thin)*-1) calc(var(--borderWidth-thin)*-1) 0;
1143
1143
  padding: var(--stack-padding-normal);
1144
1144
  }
1145
1145
 
1146
1146
  .markdown-body .Box-body {
1147
- border-bottom: var(--borderWidth-thin)solid var(--borderColor-default);
1147
+ border-bottom: var(--borderWidth-thin) solid var(--borderColor-default);
1148
1148
  padding: var(--stack-padding-normal);
1149
1149
  }
1150
1150
 
@@ -1465,7 +1465,7 @@
1465
1465
  }
1466
1466
 
1467
1467
  .markdown-body .markdown-alert {
1468
- padding: var(--base-size-8)var(--base-size-16);
1468
+ padding: var(--base-size-8) var(--base-size-16);
1469
1469
  margin-bottom: var(--base-size-16);
1470
1470
  color: inherit;
1471
1471
  border-left: .25em solid var(--borderColor-default);
@@ -1530,6 +1530,48 @@
1530
1530
  margin-top: 0!important;
1531
1531
  }
1532
1532
 
1533
+ .markdown-body .markdown-heading {
1534
+ position: relative;
1535
+ }
1536
+
1537
+ .markdown-body .markdown-heading .heading-element:hover+.anchor {
1538
+ opacity: 1;
1539
+ }
1540
+
1541
+ .markdown-body .markdown-heading h1.heading-element+.anchor,
1542
+ .markdown-body .markdown-heading h2.heading-element+.anchor {
1543
+ transform: translateY(calc(-50% - .3rem));
1544
+ }
1545
+
1546
+ .markdown-body .markdown-heading .anchor {
1547
+ border-radius: var(--borderRadius-medium);
1548
+ opacity: 0;
1549
+ justify-content: center;
1550
+ align-items: center;
1551
+ width: 28px;
1552
+ height: 28px;
1553
+ margin: auto;
1554
+ display: flex;
1555
+ position: absolute;
1556
+ top: 50%;
1557
+ left: -28px;
1558
+ transform: translateY(-50%);
1559
+ }
1560
+
1561
+ .markdown-body .markdown-heading .anchor:hover {
1562
+ opacity: 1;
1563
+ }
1564
+
1565
+ .markdown-body .markdown-heading .anchor:focus {
1566
+ outline: 2px solid var(--focus-outlineColor);
1567
+ outline-offset: -2px;
1568
+ opacity: 1;
1569
+ }
1570
+
1571
+ .markdown-body .markdown-heading .anchor .octicon {
1572
+ color: var(--fgColor-default);
1573
+ }
1574
+
1533
1575
  .markdown-body .tab-size[data-tab-size="1"] {
1534
1576
  tab-size: 1;
1535
1577
  }
@@ -29,11 +29,10 @@ function extractFileName(url) {
29
29
  return url.substring(url.lastIndexOf("/") + 1);
30
30
  }
31
31
  function blobToFile(blob, fileName) {
32
- const fileProperties = {
32
+ return Object.assign(blob, {
33
33
  lastModified: Date.now(),
34
34
  name: fileName
35
- };
36
- return Object.assign(blob, fileProperties);
35
+ });
37
36
  }
38
37
  function downloadFile(fileStream, fileName) {
39
38
  let file;
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,SAAA,GAAA,oBAAA,SAAsB,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,SAAA,GAAA,sBAAA,SAAwB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;CAEtD,MAAM,iBAAiB;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP;AAGD,QAAO,OAAO,OAAO,MAAM,eAAe;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
1
+ {"version":3,"file":"url.js","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,SAAA,GAAA,oBAAA,SAAsB,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,SAAA,GAAA,sBAAA,SAAwB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;AAQtD,QAAO,OAAO,OAAO,MANE;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP,CAGyC;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
@@ -27,11 +27,10 @@ function extractFileName(url) {
27
27
  return url.substring(url.lastIndexOf("/") + 1);
28
28
  }
29
29
  function blobToFile(blob, fileName) {
30
- const fileProperties = {
30
+ return Object.assign(blob, {
31
31
  lastModified: Date.now(),
32
32
  name: fileName
33
- };
34
- return Object.assign(blob, fileProperties);
33
+ });
35
34
  }
36
35
  function downloadFile(fileStream, fileName) {
37
36
  let file;
@@ -1 +1 @@
1
- {"version":3,"file":"url.mjs","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,QAAO,eAAe,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,QAAO,iBAAiB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;CAEtD,MAAM,iBAAiB;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP;AAGD,QAAO,OAAO,OAAO,MAAM,eAAe;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
1
+ {"version":3,"file":"url.mjs","names":[],"sources":["../../src/utils/url.ts"],"sourcesContent":["import isEmailValidator from 'validator/lib/isEmail';\nimport isURLValidator from 'validator/lib/isURL';\n\nexport function isURL(url: string): boolean {\n return isURLValidator(url || '', {\n protocols: ['http', 'https', 'git+https', 'git'],\n require_protocol: true,\n require_tld: false,\n });\n}\n\nexport function isEmail(email: string): boolean {\n return isEmailValidator(email || '');\n}\n\nexport function extractFileName(url: string): string {\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\n// Legacy Edge support for file downloads\ninterface NavigatorWithMSSaveBlob extends Navigator {\n msSaveBlob?: (blob: Blob, fileName: string) => boolean;\n}\n\nfunction blobToFile(blob: Blob, fileName: string): File {\n // Create a proper File object by extending the Blob with File properties\n const fileProperties = {\n lastModified: Date.now(),\n name: fileName,\n };\n\n // Use Object.assign to copy properties while maintaining the Blob prototype\n return Object.assign(blob, fileProperties) as File;\n}\n\nexport function downloadFile(fileStream: Blob, fileName: string): void {\n let file: File;\n // File constructor is not supported by Edge\n // https://developer.mozilla.org/en-US/docs/Web/API/File#Browser_compatibility\n const nav = navigator as NavigatorWithMSSaveBlob;\n if (nav.msSaveBlob) {\n // Detect if Edge\n file = blobToFile(new Blob([fileStream], { type: 'application/octet-stream' }), fileName);\n } else {\n file = new File([fileStream], fileName, {\n type: 'application/octet-stream',\n lastModified: Date.now(),\n });\n }\n\n const objectURL = URL.createObjectURL(file);\n const fileLink = document.createElement('a');\n fileLink.href = objectURL;\n fileLink.download = fileName;\n\n // Skip actual download in test environment to avoid JSDOM navigation error\n // Check if we're in a test environment (JSDOM)\n const isTestEnvironment =\n (typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent &&\n window.navigator.userAgent.includes('Node.js')) ||\n window.navigator.userAgent.includes('jsdom');\n\n if (!isTestEnvironment) {\n // Without appending to an HTML Element, download dialog does not show up on Firefox\n // https://github.com/verdaccio/ui/issues/119\n document.documentElement.appendChild(fileLink);\n fileLink.click();\n // firefox requires remove the object url\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n document.documentElement.removeChild(fileLink);\n }, 150);\n } else {\n // In test environment, just clean up without triggering navigation\n setTimeout(() => {\n URL.revokeObjectURL(objectURL);\n }, 150);\n }\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAgB,MAAM,KAAsB;AAC1C,QAAO,eAAe,OAAO,IAAI;EAC/B,WAAW;GAAC;GAAQ;GAAS;GAAa;GAAM;EAChD,kBAAkB;EAClB,aAAa;EACd,CAAC;;AAGJ,SAAgB,QAAQ,OAAwB;AAC9C,QAAO,iBAAiB,SAAS,GAAG;;AAGtC,SAAgB,gBAAgB,KAAqB;AACnD,QAAO,IAAI,UAAU,IAAI,YAAY,IAAI,GAAG,EAAE;;AAQhD,SAAS,WAAW,MAAY,UAAwB;AAQtD,QAAO,OAAO,OAAO,MANE;EACrB,cAAc,KAAK,KAAK;EACxB,MAAM;EACP,CAGyC;;AAG5C,SAAgB,aAAa,YAAkB,UAAwB;CACrE,IAAI;AAIJ,KADY,UACJ,WAEN,QAAO,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,MAAM,4BAA4B,CAAC,EAAE,SAAS;KAEzF,QAAO,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;EACtC,MAAM;EACN,cAAc,KAAK,KAAK;EACzB,CAAC;CAGJ,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,WAAW,SAAS,cAAc,IAAI;AAC5C,UAAS,OAAO;AAChB,UAAS,WAAW;AAWpB,KAAI,EAND,OAAO,WAAW,eACjB,OAAO,aACP,OAAO,UAAU,aACjB,OAAO,UAAU,UAAU,SAAS,UAAU,IAChD,OAAO,UAAU,UAAU,SAAS,QAAQ,GAEtB;AAGtB,WAAS,gBAAgB,YAAY,SAAS;AAC9C,WAAS,OAAO;AAEhB,mBAAiB;AACf,OAAI,gBAAgB,UAAU;AAC9B,YAAS,gBAAgB,YAAY,SAAS;KAC7C,IAAI;OAGP,kBAAiB;AACf,MAAI,gBAAgB,UAAU;IAC7B,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/ui-components",
3
- "version": "5.0.0-next-9.10",
3
+ "version": "5.0.0-next-9.11",
4
4
  "description": "Verdaccio UI Components",
5
5
  "author": "Juan Picado <juanpicado19@gmail.com>",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@
25
25
  "@emotion/react": "11.14.0",
26
26
  "@emotion/styled": "11.14.1",
27
27
  "@hookform/resolvers": "5.2.2",
28
- "@microlink/react-json-view": "1.31.12",
28
+ "@microlink/react-json-view": "1.31.16",
29
29
  "@mui/icons-material": "7.3.9",
30
30
  "@mui/material": "7.3.9",
31
31
  "@mui/system": "7.3.9",
@@ -33,25 +33,25 @@
33
33
  "country-flag-icons": "1.6.15",
34
34
  "dayjs": "1.11.20",
35
35
  "debug": "4.4.3",
36
- "dompurify": "3.3.3",
36
+ "dompurify": "3.4.0",
37
37
  "highlight.js": "11.11.1",
38
- "i18next": "25.8.18",
38
+ "i18next": "25.10.10",
39
39
  "js-base64": "3.7.8",
40
40
  "localstorage-memory": "1.0.3",
41
- "lodash-es": "4.17.23",
42
- "marked": "17.0.4",
41
+ "lodash-es": "4.18.1",
42
+ "marked": "17.0.5",
43
43
  "marked-highlight": "2.2.3",
44
44
  "normalize.css": "8.0.1",
45
45
  "react": "19.2.4",
46
46
  "react-dom": "19.2.4",
47
- "react-hook-form": "7.71.2",
48
- "react-i18next": "16.5.8",
47
+ "react-hook-form": "7.72.1",
48
+ "react-i18next": "16.6.6",
49
49
  "react-markdown": "10.1.0",
50
- "react-router": "7.13.1",
50
+ "react-router": "7.14.0",
51
51
  "react-virtualized": "9.22.6",
52
52
  "semver": "7.7.4",
53
53
  "swr": "2.4.1",
54
- "validator": "13.15.26",
54
+ "validator": "13.15.35",
55
55
  "yup": "1.7.1"
56
56
  },
57
57
  "devDependencies": {
@@ -63,18 +63,16 @@
63
63
  "@testing-library/react": "16.3.2",
64
64
  "@types/lodash-es": "4.17.12",
65
65
  "@types/node": "24.10.13",
66
- "@verdaccio/types": "14.0.0-next-9.5",
66
+ "@verdaccio/types": "14.0.0-next-9.6",
67
67
  "@vitejs/plugin-react": "6.0.1",
68
- "eslint-plugin-storybook": "10.2.17",
69
- "eslint-plugin-verdaccio": "10.0.0",
70
- "generate-github-markdown-css": "^6.6.0",
68
+ "generate-github-markdown-css": "6.6.0",
71
69
  "jsdom": "28.1.0",
72
70
  "mockdate": "3.0.5",
73
71
  "msw": "2.12.10",
74
72
  "msw-storybook-addon": "2.0.6",
75
73
  "mutationobserver-shim": "0.3.7",
76
74
  "storybook": "10.2.17",
77
- "vite": "^8.0.0",
75
+ "vite": "8.0.5",
78
76
  "vitest": "4.1.0",
79
77
  "whatwg-fetch": "3.6.20"
80
78
  },