construct-hub-webapp 0.1.769 → 0.1.770

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/build/asset-manifest.json +13 -13
  2. package/build/index.html +1 -1
  3. package/build/static/js/{29.b6e6fdea.chunk.js → 29.b8d3336e.chunk.js} +2 -2
  4. package/build/static/js/29.b8d3336e.chunk.js.map +1 -0
  5. package/build/static/js/51.56334876.chunk.js +2 -0
  6. package/build/static/js/51.56334876.chunk.js.map +1 -0
  7. package/build/static/js/545.a8e262dc.chunk.js +2 -0
  8. package/build/static/js/545.a8e262dc.chunk.js.map +1 -0
  9. package/build/static/js/58.a6b0cce7.chunk.js +2 -0
  10. package/build/static/js/58.a6b0cce7.chunk.js.map +1 -0
  11. package/build/static/js/{634.5156d57c.chunk.js → 912.4e8446c1.chunk.js} +3 -3
  12. package/build/static/js/{634.5156d57c.chunk.js.LICENSE.txt → 912.4e8446c1.chunk.js.LICENSE.txt} +0 -0
  13. package/build/static/js/912.4e8446c1.chunk.js.map +1 -0
  14. package/build/static/js/{main.5a0d1251.js → main.5de3122d.js} +3 -3
  15. package/build/static/js/{main.5a0d1251.js.LICENSE.txt → main.5de3122d.js.LICENSE.txt} +0 -0
  16. package/build/static/js/main.5de3122d.js.map +1 -0
  17. package/package.json +8 -8
  18. package/build/static/js/29.b6e6fdea.chunk.js.map +0 -1
  19. package/build/static/js/51.f94ba9fe.chunk.js +0 -2
  20. package/build/static/js/51.f94ba9fe.chunk.js.map +0 -1
  21. package/build/static/js/545.a5b3997b.chunk.js +0 -2
  22. package/build/static/js/545.a5b3997b.chunk.js.map +0 -1
  23. package/build/static/js/58.ffa5e414.chunk.js +0 -2
  24. package/build/static/js/58.ffa5e414.chunk.js.map +0 -1
  25. package/build/static/js/634.5156d57c.chunk.js.map +0 -1
  26. package/build/static/js/main.5a0d1251.js.map +0 -1
package/package.json CHANGED
@@ -46,7 +46,7 @@
46
46
  "@types/lunr": "^2.3.4",
47
47
  "@types/node": "^14",
48
48
  "@types/node-emoji": "^1.8.2",
49
- "@types/react": "^17.0.52",
49
+ "@types/react": "^17.0.53",
50
50
  "@types/react-dom": "^17.0.18",
51
51
  "@types/react-helmet": "^6.1.6",
52
52
  "@types/react-router-dom": "^5.3.3",
@@ -56,21 +56,21 @@
56
56
  "cypress": "9.7.0",
57
57
  "eslint": "^8",
58
58
  "eslint-config-prettier": "^8.6.0",
59
- "eslint-import-resolver-node": "^0.3.6",
59
+ "eslint-import-resolver-node": "^0.3.7",
60
60
  "eslint-import-resolver-typescript": "^2.7.1",
61
- "eslint-plugin-import": "^2.26.0",
62
- "eslint-plugin-jsx-a11y": "^6.7.0",
61
+ "eslint-plugin-import": "^2.27.5",
62
+ "eslint-plugin-jsx-a11y": "^6.7.1",
63
63
  "eslint-plugin-prefer-arrow": "^1.2.3",
64
64
  "eslint-plugin-prettier": "^3.4.1",
65
- "eslint-plugin-react": "^7.31.11",
65
+ "eslint-plugin-react": "^7.32.1",
66
66
  "eslint-plugin-react-hooks": "^4.6.0",
67
67
  "express": "^4.18.2",
68
68
  "express-http-proxy": "^1.6.3",
69
69
  "jsii-docgen": "^6.3.27",
70
70
  "json-schema": "^0.4.0",
71
71
  "npm-check-updates": "^16",
72
- "prettier": "^2.8.2",
73
- "projen": "^0.66.10",
72
+ "prettier": "^2.8.3",
73
+ "projen": "^0.67.11",
74
74
  "react-app-rewired": "^2.2.1",
75
75
  "standard-version": "^9",
76
76
  "ts-unused-exports": "^7.0.3",
@@ -116,7 +116,7 @@
116
116
  "node": ">= 14.17.0"
117
117
  },
118
118
  "license": "Apache-2.0",
119
- "version": "0.1.769",
119
+ "version": "0.1.770",
120
120
  "eslintConfig": {
121
121
  "extends": [
122
122
  "react-app",
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/29.b6e6fdea.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text, useColorModeValue } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<\n LanguageSupportTooltipProps\n> = ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the npm registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"link\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n constructFrameworks,\n name,\n version,\n } = usePackageCard();\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"textPrimary\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n overflow=\"hidden\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { ExtendedCatalogPackage } from \"../../api/catalog-search\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n"],"names":["Highlight","label","color","icon","brightness","useColorModeValue","align","direction","filter","spacing","alt","src","w","fontWeight","LanguageSupportTooltip","children","language","isSupported","TEMP_SUPPORTED_LANGUAGES","langName","LANGUAGE_NAME_MAP","message","hasArrow","placement","PackageCardType","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","undefined","testIds","toLocaleString","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","useLanguage","currentLanguage","dataEvent","description","constructFrameworks","version","Link","eventName","getPackagePath","CDKType","mr","wordBreak","packageTags","highlightsFrom","highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","left","right","LANGUAGES","map","lang","info","isSupportedByLibrary","Language","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","keywords","tags","tagObjectsFrom","slice","id","keyword","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","tagProps","textDecoration","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","join","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","suffix","title","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","getInitialLang","langFromParams","storedLang","localStorage","getItem","options","updateUrl","updateSaved","useLocation","pathname","hash","useHistory","replace","params","useQueryParams","get","QUERY_PARAMS","useState","setLanguage","set","toString","update","useCallback","val","setItem","useMemo","URLSearchParams","length","reduce","accum","tag","tagObjects","Array","tagLabels","Set","Boolean","mapPackageTags","KEYWORD_IGNORE_LIST","mapPackageKeywords","toLowerCase","has","push","add"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[51],{55051:function(e,n,t){t.r(n),t.d(n,{default:function(){return we}});var r,a=t(28735),i=t(41712),o=t(777),s=t(93433),l=t(4942),c=t(1413),u=t(29439),d=t(72791),f=t(30791),v=t(59707),h=t(3445),x=t(59534),m=t(16478),g=(r={},(0,l.Z)(r,m.W.NameAsc,"A-Z"),(0,l.Z)(r,m.W.NameDesc,"Z-A"),(0,l.Z)(r,m.W.PublishDateAsc,"Oldest"),(0,l.Z)(r,m.W.PublishDateDesc,"Recently updated"),(0,l.Z)(r,m.W.DownloadsDesc,"Most downloads"),(0,l.Z)(r,m.W.DownloadsAsc,"Least downloads"),r),p=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return x.oJ.apply(void 0,["Search"].concat(n))},j={FILTERS:p("Filters"),RESULTS:p("Results"),SEARCH:p("Search"),SORT:p("Sort")},y=t(75272),b=t(10855),C=t(74817),k=t(80184),S=function(e){var n=e.name,t=e.hint,r=(0,b.Sx)({base:"auto",md:"right"});return(0,k.jsxs)(a.kC,{align:"center",mb:1,children:[(0,k.jsx)(a.X6,{as:"h3",size:"sm",w:"max-content",children:n}),t?(0,k.jsxs)(C.J2,{colorScheme:"dark",placement:r,strategy:"fixed",children:[(0,k.jsx)(C.xo,{children:(0,k.jsx)(a.kC,{"aria-label":"Hint: ".concat(n),as:"button","data-event":(0,x.oJ)(j.FILTERS,n,"Popover"),ml:2,children:(0,k.jsx)(y.UO,{h:3.5,w:3.5})})}),(0,k.jsxs)(C.yk,{bg:"gray.700",borderRadius:"base",color:"white",fontSize:"sm",mx:{base:"1rem",md:"initial"},shadow:"whiteAlpha.300",children:[(0,k.jsx)(C.QH,{bg:"gray.700"}),(0,k.jsx)(C.b,{children:(0,k.jsx)(a.xv,{children:t})})]})]}):null]})},T=(0,t(88606).$)("searchRedesign",["page","searchDetails","nextPage","prevPage","goToPage","sortButton","sortDropdown","sortItem","filtersPanel","cdkTypeFilter","cdkVersionFilter","filterItem","languagesFilter"]),Z=function(e){var n=e["data-testid"],t=e.value,r=e.onValueChange,i=e.options,o=e.name,s=e.hint;return(0,k.jsxs)(a.Kq,{"data-testid":n,spacing:1,children:[(0,k.jsx)(S,{hint:s,name:o}),(0,k.jsx)(h.Ee,{onChange:r,value:t,children:(0,k.jsx)(a.Kq,{spacing:1,children:i.map((function(e){var n=e.display,t=e.value,r=(0,x.oJ)(j.FILTERS,o,"Filter",n);return(0,k.jsx)(h.Y8,{"data-event":r,value:t,children:(0,k.jsx)(a.xv,{color:"textTertiary","data-event":r,"data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})},t)}))})})]})},w=t(29499),R=t(4487),D=function(e){var n=parseInt(e);return"NaN"==="".concat(n)?0:n},F=function(e){return e?decodeURIComponent(e).split(","):[]},E=function(e){return"undefined"===typeof window?null:new URL(window.location.href).searchParams.get(e)},K=function(e,n){var t=(0,R.K)().get(e);return(0,d.useMemo)((function(){return n?n(t):t}),[t])},O=function(){var e;return null!==(e=K(w.Tx.CDK_TYPE))&&void 0!==e?e:void 0},A=function(){return K(w.Tx.CDK_MAJOR,(function(e){return e?D(e):void 0}))},I=function(){return K(w.Tx.KEYWORDS,F)},P=function(){return K(w.Tx.LANGUAGES,F)},L=function(){var e;return null!==(e=K(w.Tx.SEARCH_QUERY))&&void 0!==e?e:""},W=function(){var e;return null!==(e=K(w.Tx.SORT))&&void 0!==e?e:void 0},q=function(){return K(w.Tx.TAGS,F)},M=t(45987),J=t(64880),N=t(19748),V=["offset"],U=function(){var e=(0,J.k6)().push;return(0,d.useCallback)((function(n){var t=null!==n&&void 0!==n?n:{},r=t.offset,a=(0,M.Z)(t,V);e((0,N.yc)((0,c.Z)((0,c.Z)((0,c.Z)({},function(){var e,n,t,r;return{query:null!==(e=E(w.Tx.SEARCH_QUERY))&&void 0!==e?e:"",keywords:F(E(w.Tx.KEYWORDS)),cdkType:null!==(n=E(w.Tx.CDK_TYPE))&&void 0!==n?n:void 0,cdkMajor:function(){var e=E(w.Tx.CDK_MAJOR);return e?D(e):void 0}(),languages:F(E(w.Tx.LANGUAGES)),offset:D(null!==(t=E(w.Tx.OFFSET))&&void 0!==t?t:""),sort:null!==(r=E(w.Tx.SORT))&&void 0!==r?r:void 0,tags:F(E(w.Tx.TAGS))}}()),a),{},{offset:null!==r&&void 0!==r?r:0})))}),[e])},z=function(){var e,n=O(),t=A(),r=U(),a=(0,v.A)(),i=(0,d.useMemo)((function(){var e=a.constructFrameworks,n=Object.entries(e).reduce((function(e,n){var t=(0,u.Z)(n,2),r=t[0],a=t[1];return a.pkgCount<1?e:(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},r,(0,c.Z)({display:f.lQ[r],value:r},a)))}),{});return Object.keys(n).length?n:void 0}),[a]),o=(0,d.useMemo)((function(){var e;if(i&&n){var t=null===(e=i[n])||void 0===e?void 0:e.majorVersions;if(t)return(0,s.Z)(t).sort((function(e,n){return e-n})).map((function(e){return{value:e.toString(),display:"".concat(f.lQ[n]," v").concat(e)}}))}}),[i,n]);if(!i)return null;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{"data-testid":T.cdkTypeFilter,hint:"Choose the right CDK for your IaC technology: AWS CDK for AWS CloudFormation, CDKTF for Terraform, or CDK8s for Kubernetes.",name:"CDK Type",onValueChange:function(e){r({cdkType:e?e:void 0,cdkMajor:void 0})},options:[{display:"Any CDK Type",value:""}].concat((0,s.Z)(Object.values(i))),value:null!==n&&void 0!==n?n:""}),!!(o&&o.length>1)&&(0,k.jsx)(Z,{"data-testid":T.cdkVersionFilter,hint:"Choose the major version of the CDK you're using to see only constructs that will work with that version.",name:"CDK Major Version",onValueChange:function(e){var n=void 0;e&&(n=parseInt(e,10)),r({cdkMajor:n})},options:[{display:"Any Major Version",value:""}].concat((0,s.Z)(o)),value:null!==(e=null===t||void 0===t?void 0:t.toString())&&void 0!==e?e:""})]})},H=t(62732),_=t(81070),Y=t(65223),G=t(77231),Q=t(82504),$=function(e){var n=e.display,t=e.value,r=e.isDisabled,i=e.disabledHint,o=e.isChecked,s=e.onChange;return(0,k.jsx)(H.XZ,{isChecked:o,isDisabled:r,onChange:s,children:(0,k.jsx)(_.u,{hasArrow:!0,isDisabled:!r&&!i,label:i,placement:"right",children:(0,k.jsx)(a.xv,{color:"textTertiary","data-testid":T.filterItem,"data-value":t,isTruncated:!0,children:n})})},t)},B=function(e){var n=e["data-testid"],t=e.initialItemCount,r=e.hint,i=e.name,o=e.options,s=e.values,l=e.onValueChange,u=(0,Y.qY)(),f=(0,x.z$)().trackCustomEvent,v=function(e){return function(){f((0,x.Q5)({name:(0,x.oJ)(j.FILTERS,i,"Filter",e.display)})),l(e.value)}},h=o,m=[];t&&(h=o.slice(0,t),m=o.slice(t,o.length));var g=m.length>0;return(0,k.jsxs)(a.kC,{"data-testid":n,direction:"column",children:[(0,k.jsx)(S,{hint:r,name:i}),(0,k.jsxs)(a.Kq,{mt:1,spacing:1,children:[h.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))})),g&&(0,k.jsx)(G.UO,{animateOpacity:!0,in:u.isOpen,unmountOnExit:!0,children:(0,k.jsx)(a.Kq,{spacing:1,children:m.map((function(e){return(0,d.createElement)($,(0,c.Z)((0,c.Z)({},e),{},{isChecked:s.includes(e.value),key:e.value,onChange:v(e)}))}))})})]}),g&&(0,k.jsx)(a.kC,{align:"start",mt:1,children:(0,k.jsx)(Q.zx,{color:"textTertiary","data-event":(0,x.oJ)(j.FILTERS,i,"Show More"),fontWeight:"normal",leftIcon:u.isOpen?(0,k.jsx)(y.g8,{}):(0,k.jsx)(y.v4,{}),onClick:u.onToggle,size:"sm",textAlign:"left",variant:"link",w:"auto",children:u.isOpen?"Show fewer options (".concat(h.length,")"):"Show more options (".concat(m.length,")")})})]})},X=function(){var e=I(),n=(0,v.A)().keywords,t=U(),r=(0,d.useMemo)((function(){var t=(0,s.Z)(n.entries()).sort((function(e,n){return(0,u.Z)(e,2)[1]<(0,u.Z)(n,2)[1]?1:-1})).filter((function(n){var t=(0,u.Z)(n,1)[0];return!e.includes(t)})).map((function(e){var n=(0,u.Z)(e,1)[0];return{display:n,value:n}})).slice(0,25),r=e.filter((function(e){return!t.some((function(n){return n.value===e}))}));return[].concat((0,s.Z)(r.map((function(e){return{display:e,value:e}}))),(0,s.Z)(t))}),[n,e]);return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Focus the results by choosing one or more keywords reflecting the kind of construct you're looking for. Keywords are provided by construct authors.",initialItemCount:5,name:"Keywords",onValueChange:function(n){t({keywords:e.includes(n)?e.filter((function(e){return e!==n})):[].concat((0,s.Z)(e),[n])})},options:r,values:e})},ee=t(86617),ne=Object.entries(ee.k8).map((function(e){var n=(0,u.Z)(e,2),t=n[0],r=n[1];return(0,c.Z)({display:r,value:t},ee.dX.has(t)?{isDisabled:!1}:{isDisabled:!0,disabledHint:"".concat(ee.k8[t]," support is coming soon!")})})).sort((function(e,n){return e.isDisabled>n.isDisabled?1:-1})),te=function(){var e=P(),n=U();return(0,k.jsx)(B,{"data-testid":T.languagesFilter,hint:"Choose one or more languages. Results include constructs for use with at least one of the selected languages.",name:"Programming Language",onValueChange:function(t){var r=t;n({languages:e.includes(r)?e.filter((function(e){return e!==r})):[].concat((0,s.Z)(e),[r])})},options:ne,values:e})},re=t(56804),ae=function(){var e=(0,re.E)("packageTags"),n=(0,re.E)("packageTagGroups"),t=(0,d.useMemo)((function(){var t,r=new Map;return null===n||void 0===n||n.forEach((function(e){r.set(e.id,e)})),function(e,n){return e.reduce((function(e,t){var r,a,i,o=null===(r=t.searchFilter)||void 0===r?void 0:r.groupBy,u=o?n.get(o):void 0;if(o&&u){var d=e[o];return d?(d.tags=[].concat((0,s.Z)(d.tags),[t]),e):(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,(0,c.Z)((0,c.Z)({},u),{},{tags:[t]})))}return o?(0,c.Z)((0,c.Z)({},e),{},(0,l.Z)({},o,{id:o,tags:[].concat((0,s.Z)(null!==(a=null===e||void 0===e||null===(i=e[o])||void 0===i?void 0:i.tags)&&void 0!==a?a:[]),[t])})):e}),{})}(null!==(t=null===e||void 0===e?void 0:e.filter((function(e){return Boolean(e.searchFilter)})))&&void 0!==t?t:[],r)}),[e,n]),r=q(),a=U(),i=function(e){a({tags:r.includes(e)?r.filter((function(n){return n!==e})):[].concat((0,s.Z)(r),[e])})},o=(0,d.useCallback)((function(e){var n,i,o=new Set((null!==(n=null===(i=t[e])||void 0===i?void 0:i.tags)&&void 0!==n?n:[]).map((function(e){return e.id})));return function(e){var n=r.filter((function(e){return!o.has(e)}));a({tags:e?[].concat((0,s.Z)(n),[e]):n})}}),[t,r,a]);return(0,k.jsx)(k.Fragment,{children:Object.values(t).map((function(e){var n,t,a=e.filterType,l=e.id,u=e.label,f=e.tooltip,v=e.tags,h={hint:f,name:null!==u&&void 0!==u?u:l,options:v.map((function(e){return{display:e.searchFilter.display,value:e.id}}))};return"radio"===a?(0,d.createElement)(Z,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:o(l),options:[{display:"Any ".concat(h.name),value:""}].concat((0,s.Z)(h.options)),value:null!==(n=null===(t=v.find((function(e){return r.includes(e.id)})))||void 0===t?void 0:t.id)&&void 0!==n?n:""})):(0,d.createElement)(B,(0,c.Z)((0,c.Z)({},h),{},{key:l,onValueChange:i,values:r}))}))})},ie="5.75rem",oe=function(){return(0,k.jsx)(o.Z,{borderRadius:"sm","data-testid":T.filtersPanel,display:{base:"none",md:"flex"},maxH:"calc(100vh - ".concat(ie," - 1.25rem)"),maxW:"23rem",minW:"100%",overflow:"hidden auto",p:4,pos:"sticky",top:ie,zIndex:"docked",children:(0,k.jsxs)(a.Kq,{color:"textPrimary",h:"max-content",spacing:4,top:4,children:[(0,k.jsx)(a.X6,{as:"h2",size:"sm",children:"Filters"}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})},se=t(92213),le=t(64159),ce=(0,l.Z)({},le.$.Wide,(function(e){var n=e["data-event"],t=e.items;return(0,k.jsx)(a.Kq,{spacing:4,children:t.map((function(e){return(0,k.jsx)(le.L,{"data-event":n,pkg:e,variant:le.$.Wide},"".concat(e.name,"-").concat(e.version))}))})})),ue=(0,d.memo)((function(e){var n=e["data-event"],t=e.cardView,r=void 0===t?le.$.Wide:t,i=e.items;if(e.loading||!i)return(0,k.jsx)(a.M5,{children:(0,k.jsx)(se.$,{size:"xl"})});var o=ce[r];return(0,k.jsx)(o,{"data-event":n,items:i})}));ue.displayName="PackageList";var de=t(45832),fe=function(e){var n=e["data-event"],t=e["data-testid"],r=e.icon,a=e.label,i=e.onClick,o={"aria-label":a,borderRadius:"md",borderColor:"blue.500",colorScheme:"blue","data-event":n,"data-testid":t,icon:(0,k.jsx)(r,{color:"blue.500",h:5,w:5}),mx:2,h:10,w:10,variant:"outline"};return(0,k.jsx)(Q.hU,(0,c.Z)((0,c.Z)({},o),{},{disabled:!i,onClick:i}))},ve=t(95798),he=function(e){var n=e["data-event"],t=e["data-testid"],r=e.pageLimit,i=e.offset,o=U(),s=(0,x.z$)().trackCustomEvent,l=(0,d.useState)((i+1).toString()),c=(0,u.Z)(l,2),f=c[0],v=c[1];(0,d.useEffect)((function(){v((i+1).toString())}),[i]);return(0,k.jsxs)(a.kC,{align:"center",as:"form",mx:2,onSubmit:function(e){e.preventDefault(),o({offset:parseInt(f)-1})},children:[(0,k.jsx)(ve.II,{"aria-label":"Jump to page",colorScheme:"brand","data-testid":t,h:10,max:r+1,min:1,name:"page",onChange:function(e){e.preventDefault(),v(e.target.value)},onFocus:function(){n&&s((0,x.Q5)({name:n}))},p:0,textAlign:"center",type:"number",value:f,w:10}),(0,k.jsxs)(a.xv,{ml:2,w:"max-content",children:["of ",r+1]})]})},xe=function(e){var n=e.offset,t=e.pageLimit,r=U(),i=n<t?function(){return r({offset:n+1})}:void 0,o=n>0?function(){return r({offset:n-1})}:void 0;return(0,k.jsxs)(a.Kq,{align:"center",direction:"row",justify:"space-between",maxW:"18rem",mx:"auto",spacing:4,w:"full",children:[(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Previous Page"),"data-testid":T.prevPage,icon:y.wy,label:"Previous page button",onClick:o}),(0,k.jsx)(he,{"data-event":(0,x.oJ)(j.RESULTS,"Go to Page"),"data-testid":T.goToPage,offset:n,pageLimit:t}),(0,k.jsx)(fe,{"data-event":(0,x.oJ)(j.RESULTS,"Next Page"),"data-testid":T.nextPage,icon:y.XC,label:"Next page button",onClick:i})]})},me=t(99185),ge=function(){var e=L(),n=U(),t=(0,d.useState)(null!==e&&void 0!==e?e:""),r=(0,u.Z)(t,2),a=r[0],i=r[1];return(0,k.jsx)(me.E1,{bg:"bgSecondary","data-event":j.SEARCH,onChange:function(e){return i(e.target.value)},onSubmit:function(e){e.preventDefault(),n({query:a,sort:void 0})},value:a})},pe=function(e){var n=e.children;return(0,k.jsx)(a.xv,{as:"strong",color:"textSecondary",children:n})},je=function(e){var n=e.first,t=e.count,r=e.last;return!n&&r>=t?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(pe,{children:t})," of ",(0,k.jsx)(pe,{children:t})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(pe,{children:[t?n+1:t," - ",r>t?t:r]})," ","of ",(0,k.jsx)(pe,{children:t})]})},ye=function(e){var n=e.limit,t=e.offset,r=e.count,i=e.filtered,o=e.query,s=n*t,l=s+n,c=r>0;return(0,k.jsxs)(a.xv,{"data-testid":T.searchDetails,children:[c?(0,k.jsxs)(k.Fragment,{children:["Displaying ",(0,k.jsx)(je,{count:r,first:s,last:l})," ",i?"search results":"constructs"]}):(0,k.jsx)(k.Fragment,{children:i?"There were no search results":"No constructs found"}),o&&(0,k.jsxs)(k.Fragment,{children:[" for ",(0,k.jsx)(pe,{children:o})]}),".",!c&&i&&(0,k.jsx)(k.Fragment,{children:" Try a different term."})]})},be=t(3308),Ce=function(){var e=W(),n=U();return(0,k.jsx)(Z,{hint:"Sets the order of search results",name:"Sorted By",onValueChange:function(e){n({sort:e||void 0})},options:[{display:"Relevance",value:""}].concat((0,s.Z)(Object.entries(g).map((function(e){var n=(0,u.Z)(e,2),t=n[0];return{display:n[1],value:t}})))),value:null!==e&&void 0!==e?e:""})},ke=function(){var e=(0,Y.qY)();return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Q.zx,{colorScheme:"brand",display:{md:"none"},onClick:e.onOpen,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:"Sorting and Filters"}),(0,k.jsxs)(be.dy,(0,c.Z)((0,c.Z)({},e),{},{placement:"bottom",children:[(0,k.jsx)(be.P1,{}),(0,k.jsxs)(be.sc,{color:"textPrimary",maxH:"full",children:[(0,k.jsx)(be.OX,{borderBottom:"base",children:"Sorting and Filters"}),(0,k.jsx)(be.cC,{}),(0,k.jsx)(be.Ng,{children:(0,k.jsxs)(a.Kq,{color:"textPrimary",pb:4,spacing:4,children:[(0,k.jsx)(Ce,{}),(0,k.jsx)(z,{}),(0,k.jsx)(te,{}),(0,k.jsx)(ae,{}),(0,k.jsx)(X,{})]})})]})]}))]})},Se=t(81641),Te=function(){var e=W(),n=U(),t=e?g[e]:"Relevance";return(0,k.jsxs)(a.kC,{align:"center",children:[(0,k.jsx)(a.xv,{children:"Sorted by"}),(0,k.jsxs)(Se.v2,{children:[(0,k.jsx)(Se.j2,{as:Q.zx,color:"link","data-event":(0,x.oJ)(j.SORT,"Menu"),"data-testid":T.sortButton,ml:2,pl:2,pr:2,py:1,rightIcon:(0,k.jsx)(y.v4,{}),variant:"link",children:t}),(0,k.jsxs)(Se.qy,{"data-testid":T.sortDropdown,minW:"180",zIndex:"sticky",children:[(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option","Relevance"),"data-testid":T.sortItem,"data-value":"",onClick:function(){return n({sort:void 0})},children:"Relevance"},"Relevance"),Object.entries(g).map((function(e){var t=(0,u.Z)(e,2),r=t[0],a=t[1];return(0,k.jsx)(Se.sN,{"data-event":(0,x.oJ)(j.SORT,"Option",a),"data-testid":T.sortItem,"data-value":r,onClick:function(){return n({sort:r})},children:a},r)}))]})]})]})},Ze=function(){var e=U(),n=K(w.Tx.OFFSET,(function(e){return D(null!==e&&void 0!==e?e:"")})),t=L(),r=I(),o=P(),s=A(),l=O(),c=W(),u=q(),f=(0,de.D)({offset:n,limit:25,query:t,keywords:r,languages:o,cdkMajor:s,cdkType:l,sort:c,tags:u}),v=f.page,h=f.pageLimit,x=f.results;return(0,d.useEffect)((function(){x.length&&(n<0||n>h)&&e(n<0?{offset:0}:{offset:h})}),[x,n,h]),(0,d.useEffect)((function(){window.scrollTo(0,0)}),[v]),(0,k.jsx)(i.T,{meta:{title:t||"Search",description:t?"".concat(x.length," results for ").concat(t," at Construct Hub"):"Search reusable components for your cloud application"},pageName:"search",children:(0,k.jsxs)(a.Kq,{direction:"column",maxW:"100vw",pb:4,px:4,spacing:4,children:[(0,k.jsx)(ge,{}),(0,k.jsxs)(a.Kq,{align:{base:"start",lg:"center"},direction:{base:"column-reverse",lg:"row"},justify:{base:"initial",lg:"space-between"},spacing:4,children:[(0,k.jsx)(ye,{count:x.length,filtered:!!t,limit:25,offset:n,query:t}),(0,k.jsx)(a.xu,{display:{base:"none",md:"initial"},children:(0,k.jsx)(Te,{})}),(0,k.jsx)(a.xu,{display:{md:"none"},children:(0,k.jsx)(ke,{})})]}),(0,k.jsx)(ue,{"data-event":j.RESULTS,items:v}),(0,k.jsx)(a.xu,{w:"full",children:(0,k.jsx)(xe,{offset:n,pageLimit:h})})]})})},we=function(){return(0,k.jsx)(i.T,{meta:{title:"Search - Construct Hub",description:"Search Construct Libraries for AWS CDK, CDK8s, and CDKTF"},pageName:"search",children:(0,k.jsxs)(a.rj,{"data-testid":T.page,gap:4,h:"full",maxW:"100%",px:{base:0,md:6},py:6,templateColumns:{base:"1fr",md:"auto 1fr"},templateRows:"1fr",children:[(0,k.jsx)(oe,{}),(0,k.jsx)(Ze,{})]})})}}}]);
2
- //# sourceMappingURL=51.f94ba9fe.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/51.f94ba9fe.chunk.js","mappings":"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","sources":["views/Search/constants.ts","views/Search/FilterHeading.tsx","views/Search/testIds.ts","views/Search/RadioFilter.tsx","views/Search/util.ts","views/Search/useSearchParam.ts","views/Search/useUpdateSearchParam.ts","views/Search/CDKFilter.tsx","views/Search/CheckboxFilter.tsx","views/Search/KeywordsFilter.tsx","views/Search/LanguageFilter.tsx","views/Search/TagFilter.tsx","views/Search/FilterPanel.tsx","components/PackageList/PackageList.tsx","components/PackageList/WideCardList.tsx","views/Search/ArrowButton.tsx","views/Search/GoToPage.tsx","views/Search/PageControls.tsx","views/Search/SearchBar.tsx","views/Search/SearchDetails.tsx","views/Search/SortFilter.tsx","views/Search/SortAndFilterDrawer.tsx","views/Search/SortedBy.tsx","views/Search/SearchResults.tsx","views/Search/Search.tsx"],"sourcesContent":["import { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport type { QueryParamKey } from \"../../constants/url\";\nimport { eventName } from \"../../contexts/Analytics\";\n\nconst LIMITS = [25, 50, 75, 100];\nexport const LIMIT = LIMITS[0];\n\nexport type SearchQueryParam = Extract<QueryParamKey, \"offset\" | \"q\">;\n\nexport const SORT_RENDER_MAP = {\n [CatalogSearchSort.NameAsc]: \"A-Z\",\n [CatalogSearchSort.NameDesc]: \"Z-A\",\n [CatalogSearchSort.PublishDateAsc]: \"Oldest\",\n [CatalogSearchSort.PublishDateDesc]: \"Recently updated\",\n [CatalogSearchSort.DownloadsDesc]: \"Most downloads\",\n [CatalogSearchSort.DownloadsAsc]: \"Least downloads\",\n};\n\nconst searchEvent: typeof eventName = (...e) => eventName(\"Search\", ...e);\n\nexport const SEARCH_ANALYTICS = {\n FILTERS: searchEvent(\"Filters\"),\n RESULTS: searchEvent(\"Results\"),\n SEARCH: searchEvent(\"Search\"),\n SORT: searchEvent(\"Sort\"),\n};\n","import { QuestionIcon } from \"@chakra-ui/icons\";\nimport {\n Flex,\n Heading,\n Text,\n Popover,\n PopoverTrigger,\n PopoverBody,\n PopoverArrow,\n PopoverContent,\n useBreakpointValue,\n PlacementWithLogical,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { SEARCH_ANALYTICS } from \"./constants\";\n\nexport interface FilterHeadingProps {\n name: string;\n hint?: string;\n}\n\nexport const FilterHeading: FunctionComponent<FilterHeadingProps> = ({\n name,\n hint,\n}) => {\n const placement = useBreakpointValue<PlacementWithLogical>({\n base: \"auto\",\n md: \"right\",\n });\n\n return (\n <Flex align=\"center\" mb={1}>\n <Heading as=\"h3\" size=\"sm\" w=\"max-content\">\n {name}\n </Heading>\n {hint ? (\n <Popover colorScheme=\"dark\" placement={placement} strategy=\"fixed\">\n <PopoverTrigger>\n <Flex\n aria-label={`Hint: ${name}`}\n as=\"button\"\n data-event={eventName(SEARCH_ANALYTICS.FILTERS, name, \"Popover\")}\n ml={2}\n >\n <QuestionIcon h={3.5} w={3.5} />\n </Flex>\n </PopoverTrigger>\n <PopoverContent\n bg=\"gray.700\"\n borderRadius=\"base\"\n color=\"white\"\n fontSize=\"sm\"\n mx={{ base: \"1rem\", md: \"initial\" }}\n shadow=\"whiteAlpha.300\"\n >\n <PopoverArrow bg=\"gray.700\" />\n <PopoverBody>\n <Text>{hint}</Text>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n ) : null}\n </Flex>\n );\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"searchRedesign\", [\n \"page\",\n // Results\n \"searchDetails\",\n \"nextPage\",\n \"prevPage\",\n \"goToPage\",\n // Sorting\n \"sortButton\",\n \"sortDropdown\",\n \"sortItem\",\n // Filters Panel\n \"filtersPanel\",\n \"cdkTypeFilter\",\n \"cdkVersionFilter\",\n \"filterItem\",\n \"languagesFilter\",\n] as const);\n","import { Radio, RadioGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { SEARCH_ANALYTICS } from \"./constants\";\nimport { FilterHeading, FilterHeadingProps } from \"./FilterHeading\";\nimport testIds from \"./testIds\";\n\nexport interface RadioFilterProps extends FilterHeadingProps {\n \"data-testid\"?: string;\n value?: string;\n onValueChange: (value: string) => void;\n options: {\n display: string;\n value: string;\n }[];\n}\n\nexport const RadioFilter: FunctionComponent<RadioFilterProps> = ({\n \"data-testid\": dataTestid,\n value: checkedValue,\n onValueChange,\n options,\n name,\n hint,\n}) => {\n return (\n <Stack data-testid={dataTestid} spacing={1}>\n <FilterHeading hint={hint} name={name} />\n <RadioGroup onChange={onValueChange} value={checkedValue}>\n <Stack spacing={1}>\n {options.map(({ display, value }) => {\n const dataEvent = eventName(\n SEARCH_ANALYTICS.FILTERS,\n name,\n \"Filter\",\n display\n );\n return (\n <Radio data-event={dataEvent} key={value} value={value}>\n <Text\n color=\"textTertiary\"\n data-event={dataEvent}\n data-testid={testIds.filterItem}\n data-value={value}\n isTruncated\n >\n {display}\n </Text>\n </Radio>\n );\n })}\n </Stack>\n </RadioGroup>\n </Stack>\n );\n};\n","import { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { CDKType } from \"../../constants/constructs\";\nimport { Language } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\n\nexport const toNum = (val: string) => {\n const result = parseInt(val);\n\n if (`${result}` === \"NaN\") {\n return 0;\n }\n\n return result;\n};\n\nexport const parseQueryArray = <T extends string>(\n queryString: string | null\n) => {\n if (!queryString) return [];\n\n return decodeURIComponent(queryString).split(\",\") as T[];\n};\n\nconst getParamFromUrl = (key: string) => {\n if (typeof window === \"undefined\") return null;\n const queryParams = new URL(window.location.href).searchParams;\n return queryParams.get(key);\n};\n\nexport const getSearchUrlParams = () => {\n return {\n query: getParamFromUrl(QUERY_PARAMS.SEARCH_QUERY) ?? \"\",\n keywords: parseQueryArray(getParamFromUrl(QUERY_PARAMS.KEYWORDS)),\n cdkType: (getParamFromUrl(QUERY_PARAMS.CDK_TYPE) as CDKType) ?? undefined,\n cdkMajor: (() => {\n const cdkMajorParam = getParamFromUrl(QUERY_PARAMS.CDK_MAJOR);\n return cdkMajorParam ? toNum(cdkMajorParam) : undefined;\n })(),\n languages: parseQueryArray(\n getParamFromUrl(QUERY_PARAMS.LANGUAGES)\n ) as Language[],\n offset: toNum(getParamFromUrl(QUERY_PARAMS.OFFSET) ?? \"\"),\n sort:\n (getParamFromUrl(QUERY_PARAMS.SORT) as CatalogSearchSort) ?? undefined,\n tags: parseQueryArray(getParamFromUrl(QUERY_PARAMS.TAGS)),\n };\n};\n","import { useMemo } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { CDKType } from \"../../constants/constructs\";\nimport { Language } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\nimport { parseQueryArray, toNum } from \"./util\";\n\nconst useSearchParam = <T = string | null>(\n key: string,\n transform?: (param: string | null) => T\n): T => {\n const queryParams = useQueryParams();\n const qp = queryParams.get(key);\n\n return useMemo(\n () => (transform ? transform(qp) : (qp as unknown as T)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [qp]\n );\n};\n\nexport const useCdkType = () => {\n const cdkType: CDKType | undefined =\n useSearchParam(QUERY_PARAMS.CDK_TYPE) ?? undefined;\n\n return cdkType;\n};\n\nexport const useCdkMajor = () => {\n const cdkMajor: number | undefined = useSearchParam(\n QUERY_PARAMS.CDK_MAJOR,\n (p) => (p ? toNum(p) : undefined)\n );\n\n return cdkMajor;\n};\n\nexport const useKeywords = () => {\n const keywords: string[] = useSearchParam(\n QUERY_PARAMS.KEYWORDS,\n parseQueryArray\n );\n\n return keywords;\n};\n\nexport const useLanguages = () => {\n const languages: Language[] = useSearchParam(\n QUERY_PARAMS.LANGUAGES,\n parseQueryArray\n ) as Language[];\n\n return languages;\n};\n\nexport const useOffset = () => {\n const offset = useSearchParam(QUERY_PARAMS.OFFSET, (o) => toNum(o ?? \"\"));\n return offset;\n};\n\nexport const useSearchQuery = () => {\n const query: string = useSearchParam(QUERY_PARAMS.SEARCH_QUERY) ?? \"\";\n return query;\n};\n\nexport const useSort = () => {\n const sort: CatalogSearchSort | undefined =\n useSearchParam(QUERY_PARAMS.SORT) ?? undefined;\n return sort;\n};\n\nexport const useTags = () => {\n const tags: string[] = useSearchParam(QUERY_PARAMS.TAGS, parseQueryArray);\n return tags;\n};\n","import { useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { getSearchPath } from \"../../util/url\";\nimport { getSearchUrlParams } from \"./util\";\n\nexport const useUpdateSearchParam = () => {\n const { push } = useHistory();\n\n return useCallback(\n (p?: Partial<Parameters<typeof getSearchPath>[0]>) => {\n const { offset, ...params } = p ?? {};\n\n push(\n getSearchPath({\n ...getSearchUrlParams(),\n ...params,\n offset: offset ?? 0,\n })\n );\n },\n [push]\n );\n};\n","import { FunctionComponent, useMemo } from \"react\";\nimport { CatalogConstructFrameworkMeta } from \"../../api/catalog-search\";\nimport { CDKType, CDKTYPE_NAME_MAP } from \"../../constants/constructs\";\nimport { useSearchContext } from \"../../contexts/Search\";\nimport { RadioFilter } from \"./RadioFilter\";\nimport testIds from \"./testIds\";\nimport { useCdkMajor, useCdkType } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\ntype CDKOptions = Partial<{\n [key in CDKType]: CatalogConstructFrameworkMeta & {\n display: string;\n value: key;\n };\n}>;\n\nexport const CDKFilter: FunctionComponent = () => {\n const cdkType = useCdkType();\n const cdkMajor = useCdkMajor();\n\n const updateSearch = useUpdateSearchParam();\n\n const searchAPI = useSearchContext()!;\n\n // Options with less than one package will be omitted\n const cdkOptions = useMemo(() => {\n const cdkTypes = searchAPI.constructFrameworks;\n const options = Object.entries(cdkTypes).reduce((opts, [name, meta]) => {\n if (meta.pkgCount < 1) {\n return opts;\n }\n\n return {\n ...opts,\n [name]: {\n display: CDKTYPE_NAME_MAP[name as CDKType],\n value: name,\n ...meta,\n },\n };\n }, {});\n\n return Object.keys(options).length ? (options as CDKOptions) : undefined;\n }, [searchAPI]);\n\n const majorsOptions = useMemo(() => {\n if (!cdkOptions || !cdkType) return undefined;\n const majorVersions = cdkOptions[cdkType]?.majorVersions;\n\n if (!majorVersions) return undefined;\n\n return [...majorVersions]\n .sort((a, b) => a - b)\n .map((value) => ({\n value: value.toString(),\n display: `${CDKTYPE_NAME_MAP[cdkType]} v${value}`,\n }));\n }, [cdkOptions, cdkType]);\n\n if (!cdkOptions) {\n return null;\n }\n\n const onCdkTypeChange = (type: string) => {\n const cdk = type as CDKType;\n updateSearch({ cdkType: type ? cdk : undefined, cdkMajor: undefined });\n };\n\n const onCdkMajorChange = (major: string) => {\n let majorNum: number | undefined = undefined;\n\n if (major) {\n majorNum = parseInt(major, 10);\n }\n\n updateSearch({ cdkMajor: majorNum });\n };\n\n return (\n <>\n <RadioFilter\n data-testid={testIds.cdkTypeFilter}\n hint=\"Choose the right CDK for your IaC technology: AWS CDK for AWS CloudFormation, CDKTF for Terraform, or CDK8s for Kubernetes.\"\n name=\"CDK Type\"\n onValueChange={onCdkTypeChange}\n options={[\n { display: \"Any CDK Type\", value: \"\" },\n ...Object.values(cdkOptions),\n ]}\n value={cdkType ?? \"\"}\n />\n {/* No point in showing major versions if only a single one is available */}\n {!!(majorsOptions && majorsOptions.length > 1) && (\n <RadioFilter\n data-testid={testIds.cdkVersionFilter}\n hint=\"Choose the major version of the CDK you're using to see only constructs that will work with that version.\"\n name=\"CDK Major Version\"\n onValueChange={onCdkMajorChange}\n options={[\n { display: \"Any Major Version\", value: \"\" },\n ...majorsOptions,\n ]}\n value={cdkMajor?.toString() ?? \"\"}\n />\n )}\n </>\n );\n};\n","import { ChevronDownIcon, ChevronUpIcon } from \"@chakra-ui/icons\";\nimport {\n Flex,\n Button,\n Collapse,\n Checkbox,\n Stack,\n Text,\n Tooltip,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { clickEvent, eventName, useAnalytics } from \"../../contexts/Analytics\";\nimport { SEARCH_ANALYTICS } from \"./constants\";\nimport { FilterHeading, FilterHeadingProps } from \"./FilterHeading\";\nimport testIds from \"./testIds\";\n\ninterface CheckboxOption {\n display: string;\n value: string;\n isDisabled?: boolean;\n disabledHint?: string;\n}\n\ninterface CheckboxItemProps extends CheckboxOption {\n onChange: () => void;\n isChecked: boolean;\n}\n\nexport interface CheckboxFilterProps extends FilterHeadingProps {\n /**\n * Test ID to select checkbox in tests\n */\n \"data-testid\"?: string;\n /**\n * Number of items that can be initially shown\n */\n initialItemCount?: number;\n /**\n * Defines checkbox items\n */\n options: CheckboxOption[];\n /**\n * Selected values\n */\n values: string[];\n /**\n * Callback triggered when an item is clicked\n */\n onValueChange: (value: string) => void;\n}\n\nconst CheckboxItem: FunctionComponent<CheckboxItemProps> = ({\n display,\n value,\n isDisabled,\n disabledHint,\n isChecked,\n onChange,\n}) => (\n <Checkbox\n isChecked={isChecked}\n isDisabled={isDisabled}\n key={value}\n onChange={onChange}\n >\n <Tooltip\n hasArrow\n isDisabled={!isDisabled && !disabledHint}\n label={disabledHint}\n placement=\"right\"\n >\n <Text\n color=\"textTertiary\"\n data-testid={testIds.filterItem}\n data-value={value}\n isTruncated\n >\n {display}\n </Text>\n </Tooltip>\n </Checkbox>\n);\n\nexport const CheckboxFilter: FunctionComponent<CheckboxFilterProps> = ({\n \"data-testid\": dataTestid,\n initialItemCount,\n hint,\n name,\n options,\n values: checkedValues,\n onValueChange,\n}) => {\n const collapse = useDisclosure();\n const { trackCustomEvent } = useAnalytics();\n\n const getOnChange = (item: CheckboxOption) => () => {\n trackCustomEvent(\n clickEvent({\n name: eventName(SEARCH_ANALYTICS.FILTERS, name, \"Filter\", item.display),\n })\n );\n onValueChange(item.value);\n };\n\n let alwaysShow: typeof options = options;\n let showWhenExpanded: typeof options = [];\n\n if (initialItemCount) {\n alwaysShow = options.slice(0, initialItemCount);\n showWhenExpanded = options.slice(initialItemCount, options.length);\n }\n\n const isExpandible = showWhenExpanded.length > 0;\n\n return (\n <Flex data-testid={dataTestid} direction=\"column\">\n <FilterHeading hint={hint} name={name} />\n <Stack mt={1} spacing={1}>\n {alwaysShow.map((item) => (\n <CheckboxItem\n {...item}\n isChecked={checkedValues.includes(item.value)}\n key={item.value}\n onChange={getOnChange(item)}\n />\n ))}\n {isExpandible && (\n <Collapse animateOpacity in={collapse.isOpen} unmountOnExit>\n <Stack spacing={1}>\n {showWhenExpanded.map((item) => (\n <CheckboxItem\n {...item}\n isChecked={checkedValues.includes(item.value)}\n key={item.value}\n onChange={getOnChange(item)}\n />\n ))}\n </Stack>\n </Collapse>\n )}\n </Stack>\n {isExpandible && (\n <Flex align=\"start\" mt={1}>\n <Button\n color=\"textTertiary\"\n data-event={eventName(SEARCH_ANALYTICS.FILTERS, name, \"Show More\")}\n fontWeight=\"normal\"\n leftIcon={collapse.isOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n onClick={collapse.onToggle}\n size=\"sm\"\n textAlign=\"left\"\n variant=\"link\"\n w=\"auto\"\n >\n {collapse.isOpen\n ? `Show fewer options (${alwaysShow.length})`\n : `Show more options (${showWhenExpanded.length})`}\n </Button>\n </Flex>\n )}\n </Flex>\n );\n};\n","import { FunctionComponent, useMemo } from \"react\";\nimport { useSearchContext } from \"../../contexts/Search\";\nimport { CheckboxFilter } from \"./CheckboxFilter\";\nimport testIds from \"./testIds\";\nimport { useKeywords } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport const KeywordsFilter: FunctionComponent = () => {\n const keywords = useKeywords();\n const keywordMap = useSearchContext()!.keywords;\n const updateSearch = useUpdateSearchParam();\n\n const onKeywordChange = (keyword: string) => {\n updateSearch({\n keywords: keywords.includes(keyword)\n ? keywords.filter((k) => k !== keyword)\n : [...keywords, keyword],\n });\n };\n\n const keywordOptions = useMemo(() => {\n const baseOptions = [...keywordMap.entries()]\n .sort(([, count1], [, count2]) => {\n return count1 < count2 ? 1 : -1;\n })\n .filter(([keyword]) => !keywords.includes(keyword))\n .map(([keyword]) => ({\n display: keyword,\n value: keyword,\n }))\n .slice(0, 25);\n\n const keywordsNotInOptions = keywords.filter(\n (k) => !baseOptions.some((opt) => opt.value === k)\n );\n\n return [\n ...keywordsNotInOptions.map((k) => ({ display: k, value: k })),\n ...baseOptions,\n ];\n }, [keywordMap, keywords]);\n\n return (\n <CheckboxFilter\n data-testid={testIds.languagesFilter}\n hint=\"Focus the results by choosing one or more keywords reflecting the kind of construct you're looking for. Keywords are provided by construct authors.\"\n initialItemCount={5}\n name=\"Keywords\"\n onValueChange={onKeywordChange}\n options={keywordOptions}\n values={keywords}\n />\n );\n};\n","import { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { CheckboxFilter } from \"./CheckboxFilter\";\nimport testIds from \"./testIds\";\nimport { useLanguages } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nconst languageOptions = Object.entries(LANGUAGE_NAME_MAP)\n .map(([key, value]) => ({\n display: value,\n value: key,\n ...(TEMP_SUPPORTED_LANGUAGES.has(key as Language)\n ? { isDisabled: false }\n : {\n isDisabled: true,\n disabledHint: `${\n LANGUAGE_NAME_MAP[key as Language]\n } support is coming soon!`,\n }),\n }))\n .sort((l1, l2) => {\n // Push disabled languages to back of list\n return l1.isDisabled > l2.isDisabled ? 1 : -1;\n });\n\nexport const LanguageFilter: FunctionComponent = () => {\n const languages = useLanguages();\n\n const updateSearch = useUpdateSearchParam();\n\n const onLanguagesChange = (lang: string) => {\n const language = lang as Language;\n\n updateSearch({\n languages: languages.includes(language)\n ? languages.filter((l) => l !== language)\n : [...languages, language],\n });\n };\n\n return (\n <CheckboxFilter\n data-testid={testIds.languagesFilter}\n hint=\"Choose one or more languages. Results include constructs for use with at least one of the selected languages.\"\n name=\"Programming Language\"\n onValueChange={onLanguagesChange}\n options={languageOptions}\n values={languages}\n />\n );\n};\n","import { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { PackageTagConfig, TagGroupConfig } from \"../../api/config\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { CheckboxFilter } from \"./CheckboxFilter\";\nimport { RadioFilter } from \"./RadioFilter\";\nimport { useTags } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\ninterface FilterGroup extends Partial<TagGroupConfig> {\n id: string;\n tags: PackageTagConfig[];\n}\ninterface FilterGroups {\n [group: string]: FilterGroup;\n}\n\n/**\n * Creates a plain object map of FilterGroups keyed by group id\n */\nexport const mapTagsToFilterGroups = (\n packageTags: PackageTagConfig[],\n tagGroupsMap: Map<string, TagGroupConfig>\n): FilterGroups => {\n return packageTags.reduce(\n (accum: FilterGroups, tag: PackageTagConfig): FilterGroups => {\n const groupIdOrName = tag.searchFilter?.groupBy;\n const customGroup = groupIdOrName\n ? tagGroupsMap.get(groupIdOrName)\n : undefined;\n\n if (groupIdOrName && customGroup) {\n const entry = accum[groupIdOrName];\n if (entry) {\n entry.tags = [...entry.tags, tag];\n return accum;\n }\n\n return {\n ...accum,\n [groupIdOrName]: {\n ...customGroup,\n tags: [tag],\n },\n };\n }\n\n if (groupIdOrName) {\n return {\n ...accum,\n [groupIdOrName]: {\n id: groupIdOrName,\n tags: [...(accum?.[groupIdOrName]?.tags ?? []), tag],\n },\n };\n }\n return accum;\n },\n {}\n );\n};\n\nexport const TagFilter: FunctionComponent = () => {\n const packageTags = useConfigValue(\"packageTags\");\n const packageTagGroups = useConfigValue(\"packageTagGroups\");\n\n const tagFilterGroups: FilterGroups = useMemo(() => {\n const tagGroupsMap = new Map<string, TagGroupConfig>();\n packageTagGroups?.forEach((group) => {\n tagGroupsMap.set(group.id, group);\n });\n\n const filterableTags =\n packageTags?.filter((tag) => Boolean(tag.searchFilter)) ?? [];\n\n return mapTagsToFilterGroups(filterableTags, tagGroupsMap);\n }, [packageTags, packageTagGroups]);\n\n const tags = useTags();\n const updateSearch = useUpdateSearchParam();\n\n const onTagsChange = (tag: string) => {\n updateSearch({\n tags: tags.includes(tag) ? tags.filter((t) => t !== tag) : [...tags, tag],\n });\n };\n\n const getOnRadioTagChange = useCallback(\n (groupName: string) => {\n const groupTags = new Set(\n (tagFilterGroups[groupName]?.tags ?? []).map(({ id }) => id)\n );\n\n return (tag: string) => {\n const filteredTags = tags.filter((t) => !groupTags.has(t));\n\n updateSearch({\n tags: tag ? [...filteredTags, tag] : filteredTags,\n });\n };\n },\n [tagFilterGroups, tags, updateSearch]\n );\n\n return (\n <>\n {Object.values(tagFilterGroups).map(\n ({ filterType, id, label, tooltip, tags: tagItems }) => {\n const sharedProps = {\n hint: tooltip,\n name: label ?? id,\n options: tagItems.map((tag) => {\n return {\n display: tag.searchFilter!.display,\n value: tag.id,\n };\n }),\n };\n\n if (filterType === \"radio\") {\n return (\n <RadioFilter\n {...sharedProps}\n key={id}\n onValueChange={getOnRadioTagChange(id)}\n options={[\n { display: `Any ${sharedProps.name}`, value: \"\" },\n ...sharedProps.options,\n ]}\n value={tagItems.find((t) => tags.includes(t.id))?.id ?? \"\"}\n />\n );\n }\n\n return (\n <CheckboxFilter\n {...sharedProps}\n key={id}\n onValueChange={onTagsChange}\n values={tags}\n />\n );\n }\n )}\n </>\n );\n};\n","import { Heading, Stack } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Card } from \"../../components/Card\";\nimport { CDKFilter } from \"./CDKFilter\";\nimport { KeywordsFilter } from \"./KeywordsFilter\";\nimport { LanguageFilter } from \"./LanguageFilter\";\nimport { TagFilter } from \"./TagFilter\";\nimport testIds from \"./testIds\";\n\nexport interface FilterPanelProps {}\n\n// Header height + section padding\nconst TOP_OFFSET = \"5.75rem\";\n\n/**\n * The desktop Resolution Filter Panel\n */\nexport const FilterPanel: FunctionComponent<FilterPanelProps> = () => {\n return (\n <Card\n borderRadius=\"sm\"\n data-testid={testIds.filtersPanel}\n display={{ base: \"none\", md: \"flex\" }}\n maxH={`calc(100vh - ${TOP_OFFSET} - 1.25rem)`}\n maxW=\"23rem\"\n minW=\"100%\"\n overflow=\"hidden auto\"\n p={4}\n pos=\"sticky\"\n top={TOP_OFFSET}\n zIndex=\"docked\"\n >\n <Stack color=\"textPrimary\" h=\"max-content\" spacing={4} top={4}>\n <Heading as=\"h2\" size=\"sm\">\n Filters\n </Heading>\n\n <CDKFilter />\n\n <LanguageFilter />\n\n <TagFilter />\n\n <KeywordsFilter />\n </Stack>\n </Card>\n );\n};\n","import { Center, Spinner } from \"@chakra-ui/react\";\nimport { FunctionComponent, memo } from \"react\";\nimport { ExtendedCatalogPackage } from \"../../api/catalog-search\";\nimport { PackageCardType } from \"../PackageCard\";\nimport { WideCardList } from \"./WideCardList\";\n\nconst listViews = {\n [PackageCardType.Wide]: WideCardList,\n};\n\nexport interface PackageListViewProps {\n \"data-event\"?: string;\n items: ExtendedCatalogPackage[];\n}\n\nexport interface PackageListProps extends Partial<PackageListViewProps> {\n cardView?: PackageCardType;\n loading?: boolean;\n title?: string;\n}\n\nexport const PackageList: FunctionComponent<PackageListProps> = memo(\n ({\n \"data-event\": dataEvent,\n cardView = PackageCardType.Wide,\n items,\n loading,\n }) => {\n if (loading || !items) {\n return (\n <Center>\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const View = listViews[cardView];\n\n return <View data-event={dataEvent} items={items} />;\n }\n);\n\nPackageList.displayName = \"PackageList\";\n","import { Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { PackageCard, PackageCardType } from \"../PackageCard\";\nimport { PackageListViewProps } from \"./PackageList\";\n\nexport const WideCardList: FunctionComponent<PackageListViewProps> = ({\n \"data-event\": dataEvent,\n items,\n}) => {\n return (\n <Stack spacing={4}>\n {items.map((pkg) => (\n <PackageCard\n data-event={dataEvent}\n key={`${pkg.name}-${pkg.version}`}\n pkg={pkg}\n variant={PackageCardType.Wide}\n />\n ))}\n </Stack>\n );\n};\n","import { IconButton, IconProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport interface ArrowButtonProps {\n \"data-event\"?: string;\n \"data-testid\"?: string;\n icon: FunctionComponent<IconProps>;\n label: string;\n onClick?: () => void;\n}\n\nexport const ArrowButton: FunctionComponent<ArrowButtonProps> = ({\n \"data-event\": dataEvent,\n \"data-testid\": dataTestid,\n icon: Icon,\n label,\n onClick,\n}) => {\n const props = {\n \"aria-label\": label,\n borderRadius: \"md\",\n borderColor: \"blue.500\",\n colorScheme: \"blue\",\n \"data-event\": dataEvent,\n \"data-testid\": dataTestid,\n icon: <Icon color=\"blue.500\" h={5} w={5} />,\n mx: 2,\n h: 10,\n w: 10,\n variant: \"outline\",\n };\n\n return <IconButton {...props} disabled={!onClick} onClick={onClick} />;\n};\n","import { Flex, Input, Text } from \"@chakra-ui/react\";\nimport {\n FormEventHandler,\n FunctionComponent,\n SyntheticEvent,\n useEffect,\n useState,\n} from \"react\";\nimport { clickEvent, useAnalytics } from \"../../contexts/Analytics\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport interface GoToPageProps {\n \"data-event\"?: string;\n \"data-testid\"?: string;\n pageLimit: number;\n offset: number;\n}\n\nexport const GoToPage: FunctionComponent<GoToPageProps> = ({\n \"data-event\": dataEvent,\n \"data-testid\": dataTestid,\n pageLimit,\n offset,\n}) => {\n const updateSearch = useUpdateSearchParam();\n const { trackCustomEvent } = useAnalytics();\n const [inputValue, setInputValue] = useState((offset + 1).toString());\n\n useEffect(() => {\n setInputValue((offset + 1).toString());\n }, [offset]);\n\n const onInputChange = (e: SyntheticEvent<HTMLInputElement>) => {\n e.preventDefault();\n setInputValue((e.target as HTMLInputElement).value);\n };\n\n const onSubmit: FormEventHandler<HTMLInputElement> = (e) => {\n e.preventDefault();\n updateSearch({ offset: parseInt(inputValue) - 1 });\n };\n\n return (\n <Flex align=\"center\" as=\"form\" mx={2} onSubmit={onSubmit}>\n <Input\n aria-label=\"Jump to page\"\n colorScheme=\"brand\"\n data-testid={dataTestid}\n h={10}\n max={pageLimit + 1}\n min={1}\n name=\"page\"\n onChange={onInputChange}\n onFocus={() => {\n if (dataEvent) {\n trackCustomEvent(clickEvent({ name: dataEvent }));\n }\n }}\n p={0}\n textAlign=\"center\"\n type=\"number\"\n value={inputValue}\n w={10}\n />\n <Text ml={2} w=\"max-content\">\n of {pageLimit + 1}\n </Text>\n </Flex>\n );\n};\n","import { ChevronLeftIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\nimport { Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { ArrowButton } from \"./ArrowButton\";\nimport { SEARCH_ANALYTICS } from \"./constants\";\nimport { GoToPage } from \"./GoToPage\";\nimport testIds from \"./testIds\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport interface PageControlsProps {\n offset: number;\n pageLimit: number;\n}\n\nexport const PageControls: FunctionComponent<PageControlsProps> = ({\n offset,\n pageLimit,\n}) => {\n const updateSearch = useUpdateSearchParam();\n const goForward =\n offset < pageLimit ? () => updateSearch({ offset: offset + 1 }) : undefined;\n const goBack =\n offset > 0 ? () => updateSearch({ offset: offset - 1 }) : undefined;\n\n return (\n <Stack\n align=\"center\"\n direction=\"row\"\n justify=\"space-between\"\n maxW=\"18rem\"\n mx=\"auto\"\n spacing={4}\n w=\"full\"\n >\n <ArrowButton\n data-event={eventName(SEARCH_ANALYTICS.RESULTS, \"Previous Page\")}\n data-testid={testIds.prevPage}\n icon={ChevronLeftIcon}\n label=\"Previous page button\"\n onClick={goBack}\n />\n <GoToPage\n data-event={eventName(SEARCH_ANALYTICS.RESULTS, \"Go to Page\")}\n data-testid={testIds.goToPage}\n offset={offset}\n pageLimit={pageLimit}\n />\n <ArrowButton\n data-event={eventName(SEARCH_ANALYTICS.RESULTS, \"Next Page\")}\n data-testid={testIds.nextPage}\n icon={ChevronRightIcon}\n label=\"Next page button\"\n onClick={goForward}\n />\n </Stack>\n );\n};\n","import { FunctionComponent, useState } from \"react\";\nimport { SearchBar as SearchBarComponent } from \"../../components/SearchBar\";\nimport { SEARCH_ANALYTICS } from \"./constants\";\nimport { useSearchQuery } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport const SearchBar: FunctionComponent = () => {\n const query = useSearchQuery();\n const updateSearch = useUpdateSearchParam();\n\n const [value, setValue] = useState(query ?? \"\");\n\n return (\n <SearchBarComponent\n bg=\"bgSecondary\"\n data-event={SEARCH_ANALYTICS.SEARCH}\n onChange={(e) => setValue(e.target.value)}\n onSubmit={(e) => {\n e.preventDefault();\n\n updateSearch({\n query: value,\n sort: undefined,\n });\n }}\n value={value}\n />\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport interface SearchDetailsProps {\n limit: number;\n offset: number;\n count: number;\n filtered: boolean;\n query?: string;\n}\n\nconst Em: FunctionComponent = ({ children }) => (\n <Text as=\"strong\" color=\"textSecondary\">\n {children}\n </Text>\n);\n\nconst Count: FunctionComponent<{\n first: number;\n count: number;\n last: number;\n}> = ({ first, count, last }) => {\n if (!first && last >= count) {\n return (\n <>\n <Em>{count}</Em> of <Em>{count}</Em>\n </>\n );\n }\n\n return (\n <>\n <Em>\n {count ? first + 1 : count} - {last > count ? count : last}\n </Em>{\" \"}\n of <Em>{count}</Em>\n </>\n );\n};\n\nexport const SearchDetails: FunctionComponent<SearchDetailsProps> = ({\n limit,\n offset,\n count,\n filtered,\n query,\n}) => {\n const first = limit * offset;\n const last = first + limit;\n const hasResults = count > 0;\n\n return (\n <Text data-testid={testIds.searchDetails}>\n {hasResults ? (\n <>\n Displaying <Count count={count} first={first} last={last} />{\" \"}\n {filtered ? \"search results\" : \"constructs\"}\n </>\n ) : (\n <>{filtered ? \"There were no search results\" : \"No constructs found\"}</>\n )}\n {query && (\n <>\n {\" for \"}\n <Em>{query}</Em>\n </>\n )}\n .{!hasResults && filtered && <> Try a different term.</>}\n </Text>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { SORT_RENDER_MAP } from \"./constants\";\nimport { RadioFilter } from \"./RadioFilter\";\nimport { useSort } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport const SortFilter: FunctionComponent = () => {\n const sort = useSort();\n const updateSearch = useUpdateSearchParam();\n\n const onSortChange = (newSort: string) => {\n updateSearch({\n sort: newSort ? (newSort as CatalogSearchSort) : undefined,\n });\n };\n\n return (\n <RadioFilter\n hint=\"Sets the order of search results\"\n name=\"Sorted By\"\n onValueChange={onSortChange}\n options={[\n { display: \"Relevance\", value: \"\" },\n ...Object.entries(SORT_RENDER_MAP).map(([value, display]) => ({\n display,\n value,\n })),\n ]}\n value={sort ?? \"\"}\n />\n );\n};\n","import { ChevronDownIcon } from \"@chakra-ui/icons\";\nimport {\n Button,\n Drawer,\n Stack,\n DrawerBody,\n DrawerHeader,\n DrawerOverlay,\n DrawerContent,\n DrawerCloseButton,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CDKFilter } from \"./CDKFilter\";\nimport { KeywordsFilter } from \"./KeywordsFilter\";\nimport { LanguageFilter } from \"./LanguageFilter\";\nimport { SortFilter } from \"./SortFilter\";\nimport { TagFilter } from \"./TagFilter\";\n\n/**\n * The mobile filter Drawer (Bottomsheet in iOS terminology)\n */\nexport const SortAndFilterDrawer: FunctionComponent = () => {\n const drawer = useDisclosure();\n return (\n <>\n <Button\n colorScheme=\"brand\"\n display={{ md: \"none\" }}\n onClick={drawer.onOpen}\n rightIcon={<ChevronDownIcon />}\n variant=\"link\"\n >\n Sorting and Filters\n </Button>\n <Drawer {...drawer} placement=\"bottom\">\n <DrawerOverlay />\n\n <DrawerContent color=\"textPrimary\" maxH=\"full\">\n <DrawerHeader borderBottom=\"base\">Sorting and Filters</DrawerHeader>\n\n <DrawerCloseButton />\n\n <DrawerBody>\n <Stack color=\"textPrimary\" pb={4} spacing={4}>\n <SortFilter />\n\n <CDKFilter />\n\n <LanguageFilter />\n\n <TagFilter />\n\n <KeywordsFilter />\n </Stack>\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n </>\n );\n};\n","import { ChevronDownIcon } from \"@chakra-ui/icons\";\nimport {\n Flex,\n Text,\n Menu,\n MenuButton,\n MenuList,\n MenuItem,\n Button,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { SEARCH_ANALYTICS, SORT_RENDER_MAP } from \"./constants\";\nimport testIds from \"./testIds\";\nimport { useSort } from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport const SortedBy: FunctionComponent = () => {\n const sort = useSort();\n const updateSearch = useUpdateSearchParam();\n\n const selected = sort ? SORT_RENDER_MAP[sort] : \"Relevance\";\n\n return (\n <Flex align=\"center\">\n <Text>Sorted by</Text>\n <Menu>\n <MenuButton\n as={Button}\n color=\"link\"\n data-event={eventName(SEARCH_ANALYTICS.SORT, \"Menu\")}\n data-testid={testIds.sortButton}\n ml={2}\n pl={2} // For some reason, the px shorthand doesn't work on this Button\n pr={2}\n py={1}\n rightIcon={<ChevronDownIcon />}\n variant=\"link\"\n >\n {selected}\n </MenuButton>\n <MenuList data-testid={testIds.sortDropdown} minW=\"180\" zIndex=\"sticky\">\n <MenuItem\n data-event={eventName(SEARCH_ANALYTICS.SORT, \"Option\", \"Relevance\")}\n data-testid={testIds.sortItem}\n data-value=\"\"\n key=\"Relevance\"\n onClick={() => updateSearch({ sort: undefined })}\n >\n Relevance\n </MenuItem>\n {Object.entries(SORT_RENDER_MAP).map(([value, display]) => (\n <MenuItem\n data-event={eventName(SEARCH_ANALYTICS.SORT, \"Option\", display)}\n data-testid={testIds.sortItem}\n data-value={value}\n key={value}\n onClick={() => updateSearch({ sort: value as CatalogSearchSort })}\n >\n {display}\n </MenuItem>\n ))}\n </MenuList>\n </Menu>\n </Flex>\n );\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { FunctionComponent, useEffect } from \"react\";\nimport { PackageList } from \"../../components/PackageList\";\nimport { Page } from \"../../components/Page\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\nimport { LIMIT, SEARCH_ANALYTICS } from \"./constants\";\nimport { PageControls } from \"./PageControls\";\nimport { SearchBar } from \"./SearchBar\";\nimport { SearchDetails } from \"./SearchDetails\";\nimport { SortAndFilterDrawer } from \"./SortAndFilterDrawer\";\nimport { SortedBy } from \"./SortedBy\";\nimport {\n useCdkType,\n useCdkMajor,\n useKeywords,\n useLanguages,\n useOffset,\n useSearchQuery,\n useSort,\n useTags,\n} from \"./useSearchParam\";\nimport { useUpdateSearchParam } from \"./useUpdateSearchParam\";\n\nexport const SearchResults: FunctionComponent = () => {\n const updateSearch = useUpdateSearchParam();\n\n const offset = useOffset();\n const query = useSearchQuery();\n const keywords = useKeywords();\n const languages = useLanguages();\n const cdkMajor = useCdkMajor();\n const cdkType = useCdkType();\n const sort = useSort();\n const tags = useTags();\n\n const { page, pageLimit, results } = useCatalogResults({\n offset,\n limit: LIMIT,\n query,\n keywords,\n languages,\n cdkMajor,\n cdkType,\n sort,\n tags,\n });\n\n // Resets the page number to 1 if query param offset is below 0, or to the last page if offset is higher than page count\n useEffect(() => {\n // If the query has results but the page has nothing to show...\n if (results.length && (offset < 0 || offset > pageLimit)) {\n // Handle an out of bounds offset\n if (offset < 0) {\n updateSearch({ offset: 0 });\n } else {\n // Offset is too large, just take last page\n updateSearch({ offset: pageLimit });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [results, offset, pageLimit]);\n\n // Scroll to top on page change\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [page]);\n\n return (\n <Page\n meta={{\n title: query || \"Search\",\n description: query\n ? `${results.length} results for ${query} at Construct Hub`\n : \"Search reusable components for your cloud application\",\n }}\n pageName=\"search\"\n >\n <Stack direction=\"column\" maxW=\"100vw\" pb={4} px={4} spacing={4}>\n <SearchBar />\n\n <Stack\n align={{ base: \"start\", lg: \"center\" }}\n direction={{ base: \"column-reverse\", lg: \"row\" }}\n justify={{ base: \"initial\", lg: \"space-between\" }}\n spacing={4}\n >\n <SearchDetails\n count={results.length}\n filtered={!!query}\n limit={LIMIT}\n offset={offset}\n query={query}\n />\n\n <Box display={{ base: \"none\", md: \"initial\" }}>\n <SortedBy />\n </Box>\n\n <Box display={{ md: \"none\" }}>\n <SortAndFilterDrawer />\n </Box>\n </Stack>\n\n <PackageList data-event={SEARCH_ANALYTICS.RESULTS} items={page} />\n\n <Box w=\"full\">\n <PageControls offset={offset} pageLimit={pageLimit} />\n </Box>\n </Stack>\n </Page>\n );\n};\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Page } from \"../../components/Page\";\nimport { FilterPanel } from \"./FilterPanel\";\nimport { SearchResults } from \"./SearchResults\";\nimport testIds from \"./testIds\";\n\nexport const Search: FunctionComponent = () => {\n return (\n <Page\n meta={{\n title: \"Search - Construct Hub\",\n description: \"Search Construct Libraries for AWS CDK, CDK8s, and CDKTF\",\n }}\n pageName=\"search\"\n >\n <Grid\n data-testid={testIds.page}\n gap={4}\n h=\"full\"\n maxW=\"100%\"\n px={{ base: 0, md: 6 }}\n py={6}\n templateColumns={{ base: \"1fr\", md: \"auto 1fr\" }}\n templateRows=\"1fr\"\n >\n {/* Filter Panel Desktop */}\n <FilterPanel />\n\n {/* Results, Info, and Controls */}\n <SearchResults />\n </Grid>\n </Page>\n );\n};\n"],"names":["SORT_RENDER_MAP","CatalogSearchSort","searchEvent","e","eventName","SEARCH_ANALYTICS","FILTERS","RESULTS","SEARCH","SORT","FilterHeading","name","hint","placement","useBreakpointValue","base","md","align","mb","as","size","w","colorScheme","strategy","ml","h","bg","borderRadius","color","fontSize","mx","shadow","createTestIds","RadioFilter","dataTestid","checkedValue","value","onValueChange","options","spacing","onChange","map","display","dataEvent","testIds","filterItem","isTruncated","toNum","val","result","parseInt","parseQueryArray","queryString","decodeURIComponent","split","getParamFromUrl","key","window","URL","location","href","searchParams","get","useSearchParam","transform","qp","useQueryParams","useMemo","useCdkType","QUERY_PARAMS","undefined","useCdkMajor","p","useKeywords","useLanguages","useSearchQuery","useSort","useTags","useUpdateSearchParam","push","useHistory","useCallback","offset","params","getSearchPath","query","keywords","cdkType","cdkMajor","cdkMajorParam","languages","sort","tags","getSearchUrlParams","CDKFilter","updateSearch","searchAPI","useSearchContext","cdkOptions","cdkTypes","constructFrameworks","Object","entries","reduce","opts","meta","pkgCount","CDKTYPE_NAME_MAP","keys","length","majorsOptions","majorVersions","a","b","toString","cdkTypeFilter","type","values","cdkVersionFilter","major","majorNum","CheckboxItem","isDisabled","disabledHint","isChecked","hasArrow","label","CheckboxFilter","initialItemCount","checkedValues","collapse","useDisclosure","trackCustomEvent","useAnalytics","getOnChange","item","clickEvent","alwaysShow","showWhenExpanded","slice","isExpandible","direction","mt","includes","animateOpacity","in","isOpen","unmountOnExit","fontWeight","leftIcon","onClick","onToggle","textAlign","variant","KeywordsFilter","keywordMap","keywordOptions","baseOptions","filter","keyword","keywordsNotInOptions","k","some","opt","languagesFilter","languageOptions","LANGUAGE_NAME_MAP","TEMP_SUPPORTED_LANGUAGES","l1","l2","LanguageFilter","lang","language","l","TagFilter","packageTags","useConfigValue","packageTagGroups","tagFilterGroups","tagGroupsMap","Map","forEach","group","set","id","accum","tag","groupIdOrName","searchFilter","groupBy","customGroup","entry","mapTagsToFilterGroups","Boolean","onTagsChange","t","getOnRadioTagChange","groupName","groupTags","Set","filteredTags","has","filterType","tooltip","tagItems","sharedProps","find","TOP_OFFSET","FilterPanel","Card","filtersPanel","maxH","maxW","minW","overflow","pos","top","zIndex","listViews","PackageCardType","items","pkg","PackageCard","version","PackageList","memo","cardView","loading","View","displayName","ArrowButton","Icon","icon","props","borderColor","disabled","GoToPage","pageLimit","useState","inputValue","setInputValue","useEffect","onSubmit","preventDefault","max","min","target","onFocus","PageControls","goForward","goBack","justify","prevPage","ChevronLeftIcon","goToPage","nextPage","ChevronRightIcon","SearchBar","setValue","Em","children","Count","first","count","last","SearchDetails","limit","filtered","hasResults","searchDetails","SortFilter","newSort","SortAndFilterDrawer","drawer","onOpen","rightIcon","borderBottom","pb","SortedBy","selected","Button","sortButton","pl","pr","py","sortDropdown","sortItem","SearchResults","o","useCatalogResults","page","results","scrollTo","Page","title","description","pageName","px","lg","Search","gap","templateColumns","templateRows"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[545],{50535:function(e,n,t){t.d(n,{y:function(){return c}});var r=t(28227),a=t(28735),o=t(53046),i=t(80184),c=function(e){var n=e.label,t=e.color,c=e.icon,s=(0,r.ff)("none","brightness(1.75)");return(0,i.jsxs)(a.Kq,{align:"center",direction:"row",filter:s,spacing:2,children:[(0,i.jsx)(o.Ee,{alt:"".concat(n," icon"),src:c,w:4}),(0,i.jsx)(a.xv,{color:t,fontWeight:"bold",children:n})]})}},2148:function(e,n,t){t.d(n,{N:function(){return i}});var r=t(81070),a=t(86617),o=t(80184),i=function(e){var n=e.children,t=e.language,i=a.dX.has(t),c=a.k8[t],s=i?"Click to view documentation in ".concat(c):"Documentation support for ".concat(c," is coming soon!");return(0,o.jsx)(r.u,{hasArrow:!0,label:s,placement:"top-start",children:(0,o.jsx)("span",{children:n})})}},29988:function(e,n,t){t.d(n,{X:function(){return d}});var r=t(1413),a=t(45987),o=t(96450),i=t(19748),c=t(67003),s=t(80184),l=["children","value","label","zIndex"],d=function(e){var n=e.children,t=e.value,d=e.label,u=void 0===d?t:d,h=e.zIndex,f=(0,a.Z)(e,l);return(0,s.jsx)(c.O,{"aria-label":"Tag: ".concat(u),to:(0,i.yc)({keywords:[t]}),zIndex:h,children:(0,s.jsx)(o.Vp,(0,r.Z)((0,r.Z)({_hover:{textDecoration:"underline"}},f),{},{children:(0,s.jsx)(o.Sn,{children:n})}))})}},41712:function(e,n,t){t.d(n,{T:function(){return l}});var r=t(72791),a=t(54270),o={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=t(59534),c=t(56804),s=t(80184),l=(["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" "),function(e){var n=e.children,t=e.meta,l=e.pageName,d=(0,i.aQ)(o[l]);(0,r.useEffect)((function(){d()}),[d]);var u=(0,c.E)("feeds")||[],h=t.suffix,f=void 0===h||h,p=t.title,v=t.description,m=f?"".concat(p," - Construct Hub"):p;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(a.q,{children:[!1,(0,s.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,s.jsx)("meta",{charSet:"utf-8"}),u.map((function(e){var n=e.url,t=e.mimeType;return(0,s.jsx)("link",{href:n,rel:"alternate",type:t},n)})),(0,s.jsx)("title",{children:m}),(0,s.jsx)("meta",{content:m,property:"og:title"}),(0,s.jsx)("meta",{content:m,name:"twitter:title"}),(0,s.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,s.jsx)("meta",{content:v,name:"description"}),(0,s.jsx)("meta",{content:v,property:"og:description"}),(0,s.jsx)("meta",{content:v,name:"twitter:description"})]}),n]})})},79227:function(e,n,t){t.d(n,{q:function(){return d}});var r=t(1413),a=t(45987),o=t(31959),i=t(28735),c=t(29158),s=t(80184),l=["date","format","formattedDate"],d=(0,o.Gp)((function(e,n){var t=e.date,o=e.format,d=e.formattedDate,u=(0,a.Z)(e,l);return(0,s.jsx)(i.xu,(0,r.Z)((0,r.Z)({as:"time",dateTime:t.toISOString(),ref:n},u),{},{children:null!==d&&void 0!==d?d:(0,c.Z)(t,null!==o&&void 0!==o?o:"")}))}));d.displayName="Time"},56804:function(e,n,t){t.d(n,{E:function(){return a}});var r=t(24026),a=function(e){var n=(0,r.Z)().data;return(null!==n&&void 0!==n?n:{})[e]}},7991:function(e,n,t){t.d(n,{Z:function(){return f}});var r=t(29439),a=t(72791),o=t(64880),i=t(86617),c=t(29499),s=t(4487),l=i.SQ.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.dX.has(e)},h=function(e){if(u(e))return e;try{var n,t=null!==(n=localStorage.getItem(d))&&void 0!==n?n:"";if(u(t))return t}catch(r){}return l},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.updateUrl,t=e.updateSaved,i=(0,o.TH)(),l=i.pathname,f=i.hash,p=(0,o.k6)(),v=p.replace,m=(0,s.K)(),x=m.get(c.Tx.LANGUAGE),g=(0,a.useState)((function(){return h(x)})),b=(0,r.Z)(g,2),j=b[0],y=b[1];(0,a.useEffect)((function(){u(x)&&x!==j&&y(x)}),[x]),(0,a.useEffect)((function(){x!==j&&n&&(m.set(c.Tx.LANGUAGE,j),v({pathname:l,hash:f,search:m.toString()}))}),[j,n]);var w=(0,a.useCallback)((function(e){if(y(e),t)try{localStorage.setItem(d,e)}catch(n){}}),[t]);return(0,a.useMemo)((function(){return[j,w]}),[j,w])}},4487:function(e,n,t){t.d(n,{K:function(){return o}});var r=t(72791),a=t(64880),o=function(){var e=(0,a.TH)().search;return(0,r.useMemo)((function(){return new URLSearchParams(e)}),[e])}},98371:function(e,n,t){t.d(n,{JA:function(){return i},QX:function(){return c}});var r=t(1413),a=t(93433),o=t(9272),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,n){return n.highlight?[].concat((0,a.Z)(e),[n.highlight]):e}),[])},c=function(e){for(var n=e.packageTags,t=e.keywords,i=new Array,c=new Set,s=0,l=[].concat((0,a.Z)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var n;return Boolean(null===(n=e.keyword)||void 0===n?void 0:n.label)})).map((function(e){var n;return(0,r.Z)((0,r.Z)({},e),{},{id:null===(n=e.keyword)||void 0===n?void 0:n.label})}))}(n)),(0,a.Z)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!o.h.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(t)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();c.has(u)||(i.push(d),c.add(u))}return i}},42577:function(e,n,t){t.r(n),t.d(n,{NotFound:function(){return v},default:function(){return v}});var r=t(28735),a=t(82504),o=t(91523),i=t(41712),c=t(1413),s=t(45987),l=t(31959),d=t(53046),u=t(80184),h=["sources"],f=(0,l.Gp)((function(e,n){var t=e.sources,a=(0,s.Z)(e,h);return(0,u.jsxs)(r.xu,{as:"picture",children:[null===t||void 0===t?void 0:t.map((function(e,n){return(0,u.jsx)("source",{media:e.media,srcSet:e.srcSet},n)})),(0,u.jsx)(d.Ee,(0,c.Z)({ref:n},a))]})}));f.displayName="Picture";var p={optimal:[{media:"(max-width:1024px)",srcSet:"/assets/404-hive@50.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.png"}],fallback:"/assets/404-hive@50.png"},v=function(){return(0,u.jsx)(i.T,{meta:{title:"Not Found",description:"Oops! The page you were looking for does not exist"},pageName:"notFound",children:(0,u.jsxs)(r.M5,{h:"100%",position:"relative",w:"100%",children:[(0,u.jsx)(f,{alt:"",inset:0,position:"absolute",sources:p.optimal,src:p.fallback,zIndex:"hide"}),(0,u.jsxs)(r.kC,{align:"center",direction:"column",justify:"center",children:[(0,u.jsx)(f,{alt:"404 Image",sources:[{srcSet:"/assets/robot.webp"}],src:"/assets/robot.png"}),(0,u.jsx)(a.zx,{as:o.rU,colorScheme:"brand",to:"/",children:"Take Me Home"})]})]})})}},73545:function(e,n,t){t.r(n),t.d(n,{default:function(){return Et}});var r=t(64880),a=t(42577),o=t(29439),i=t(28735),c=t(13822),s=t(72791),l=t(41712),d=t(78236),u=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return d.o.apply(void 0,["Package Page"].concat(n))},h={SCOPE:u(),SELECT_VERSION:u("Select Version"),CDK_BADGE:{eventName:function(e){return u("CDK Badge",e)}},KEYWORD:{eventName:function(e){return u("Keyword",e)}},LANGUAGE:{eventName:function(e){return u("Language",e)}},DOCUMENTATION:{TAB:u("Documentation","Tab")},DEPENDENCIES:{TAB:u("Dependencies","Tab")},GITHUB_BADGE:{TAB:u("Badge","Tab")},FEEDBACK:{PUBLISHER:u("Feedback","Publisher"),CONSTRUCT_HUB:u("Feedback","Construct Hub"),ABUSE:u("Feedback","Abuse")}},f="api",p="Readme",v="docs-container",m=t(29499),x=function(e,n){return n?"".concat(n,"/").concat(e):e},g=function(e,n,t){var r="".concat(m.i0.PACKAGES_PREFIX,"/"),a=x(e,t),o="/v".concat(n);return"".concat(r).concat(a).concat(o)},b=function(e){var n=e;return(n.startsWith("~")||n.startsWith("^"))&&(n=n.substring(1)),n},j=t(67003),y=t(7752),w=t(19748),k=t(1413),C=t(91933),Z=t(74165),S=t(15861),T=function(){var e=(0,S.Z)((0,Z.Z)().mark((function e(n,t,r){var a,o;return(0,Z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="".concat(g(n,t,r)).concat(m.i0.ASSEMBLY_SUFFIX),e.next=3,fetch(a);case 3:if((o=e.sent).ok){e.next=6;break}throw new Error("Failed fetching assembly for ".concat(a,": ").concat(o.statusText));case 6:return e.abrupt("return",o.json());case 7:case"end":return e.stop()}}),e)})));return function(n,t,r){return e.apply(this,arguments)}}(),E=function(e,n,t){return"/docs-".concat(t?"".concat(t,"-"):"").concat(e,".").concat(n)},I=function(){var e=(0,S.Z)((0,Z.Z)().mark((function e(n,t,r,a,o){var i,c,s,l,d;return(0,Z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=E(r,"md",o),c="".concat(g(n,t,a)).concat(i),e.next=4,fetch(c);case 4:if((s=e.sent).ok){e.next=7;break}throw new Error("Failed fetching documentation for ".concat(c,": ").concat(s.statusText));case 7:if(l="text/markdown",(d=s.headers.get("Content-Type"))&&d.includes(l)){e.next=11;break}throw new Error("Invalid content type: ".concat(d,". Expected ").concat(l,'"'));case 11:return e.abrupt("return",s.text());case 12:case"end":return e.stop()}}),e)})));return function(n,t,r,a,o){return e.apply(this,arguments)}}(),L=function(){var e=(0,S.Z)((0,Z.Z)().mark((function e(n,t,r,a,o){var i,c,s,l,d;return(0,Z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=E(r,"json",o),c="".concat(g(n,t,a)).concat(i),e.next=4,fetch(c);case 4:if((s=e.sent).ok){e.next=7;break}throw new Error("Failed fetching documentation for ".concat(c,": ").concat(s.statusText));case 7:if(l="application/json",(d=s.headers.get("Content-Type"))&&d.includes(l)){e.next=11;break}throw new Error("Invalid content type: ".concat(d,". Expected ").concat(l,'"'));case 11:return e.abrupt("return",s.json());case 12:case"end":return e.stop()}}),e)})));return function(n,t,r,a,o){return e.apply(this,arguments)}}(),O=function(){var e=(0,S.Z)((0,Z.Z)().mark((function e(n,t,r){var a,o,i;return(0,Z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(a=t).startsWith("^")&&(a=a.substring(1,a.length)),o="".concat(g(n,t,r)).concat(m.i0.METADATA_SUFFIX),e.next=5,fetch(o);case 5:if((i=e.sent).ok){e.next=8;break}throw new Error("Failed fetching metadata for ".concat(o,": ").concat(i.statusText));case 8:return e.abrupt("return",i.json());case 9:case"end":return e.stop()}}),e)})));return function(n,t,r){return e.apply(this,arguments)}}(),A=t(86617),P=t(7991),B=t(4487),D={packages:{},updated:"NOT_FOUND"},z=function(){var e=(0,S.Z)((0,Z.Z)().mark((function e(){var n;return(0,Z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(m.i0.ALL_VERSIONS);case 2:if((n=e.sent).ok){e.next=7;break}return console.error(n.statusText),console.warn("Could not retrieve package versions. Using empty data."),e.abrupt("return",D);case 7:return e.abrupt("return",n.json().catch((function(e){return console.error(e),console.warn("Error in package versions response. Using empty data."),D})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),U=t(4942),M=t(93433),N=t(15841),R=t.n(N),W=function(e){return e.toLowerCase().replace(/[^a-zA-Z0-9 ]/g,"").replace(/ /g,"-")},H=function e(n,t){var r=n[n.length-1];return r&&r.level<t.level?(r.children=e(r.children,t),n):(n.push(t),n)},F=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,t=new RegExp("(`{3}[\\s\\S]*?(?:`{3})|^#{1,".concat(n,"}[^#].*)"),"gm");return e.split(t).reduce((function(e,n){var t=e[e.length-1];return n.startsWith("#")||null!==t&&void 0!==t&&t.startsWith("#")?[].concat((0,M.Z)(e),[n]):(e[e.length-1]+=n,e)}),[])},G=function(e){var n,t,r,a,i=(null!==(n=e.match(/(\S+)\s*=\s*(\"?)([^"]*)(\2|\s|$)/g))&&void 0!==n?n:[]).reduce((function(e,n){var t,r=n.split("="),a=(0,o.Z)(r,2),i=a[0],c=a[1],s=null!==(t=/['"](.*?)['"]/.exec(c))&&void 0!==t?t:[],l=(0,o.Z)(s,2),d=(l[0],l[1]);return(0,k.Z)((0,k.Z)({},e),{},(0,U.Z)({},i,d))}),{}),c=null!==(t=/^#*\s*(?:<a\s.*?(?:\/>|<\/a>))?\s*([^<]+?)\s*(?:<|$)/.exec(e))&&void 0!==t?t:[e,e],s=(0,o.Z)(c,2),l=(s[0],s[1].replace(/\[([^\]]+)\](?:\([^)]+\)|\[[^\]]+\])/g,"$1").replace(/:\+1:|:-1:|:[\w-]+:/g,(function(e){var n;return null!==(n=R().get(e))&&void 0!==n?n:e}))),d=null!==(r=i["data-heading-title"])&&void 0!==r?r:l;return{id:null!==(a=i["data-heading-id"])&&void 0!==a?a:encodeURIComponent(W(d)),title:d}},K=function(e,n){var t=n.scope,r=n.language,a=n.name,o=n.version,i=n.submodule,c=t?"".concat(t,"/").concat(a):"".concat(a),s="/packages/".concat(c,"/v/").concat(o),l="?".concat(m.Tx.LANGUAGE,"=").concat(r);i&&(l+="&submodule=".concat(i));var d='# API Reference <span data-heading-title="API Reference" data-heading-id="api-reference"></span>',u=e.split(d),h=u.length>1?u.pop():"",f=u.join(d),v=F(h,3),x=F(f),g=[d.trim()].concat((0,M.Z)(null!==v&&void 0!==v?v:[])),b="".concat(s).concat(l),j=x.reduce((function(e,n){if(n.startsWith("#")){var t,r,a=G(n),o=a.id,i=a.title,c=null!==(t=null===(r=n.match(/(#)/gm))||void 0===r?void 0:r.length)&&void 0!==t?t:1,s=function(e){return(e.endsWith(".")||e.endsWith(":"))&&(e=e.slice(0,-1)),e}(i),l={level:c,id:o,title:s,path:"".concat(b,"#").concat(o),children:[]};return H(e,l)}return e}),[]);1===j.length&&(j=j[0].children);var y,w,C=[].concat([{level:1,id:p,title:"Readme",path:b,children:j}]),Z={};return null===g||void 0===g||g.forEach((function(e){var n,t,r,a=e.match(/(^#{1,3}[^#].*)/g),o=null!==(n=null===(t=e.match(/(#)/gm))||void 0===t?void 0:t.length)&&void 0!==n?n:1;if(null!==a&&void 0!==a&&a.length){var i=G(e),c=i.id,d=i.title,u=3===o?(r=c,"".concat(s,"/api/").concat(r).concat(l)):void 0,h=(0,k.Z)({level:o,id:c,title:d,children:[]},u?{path:u}:{});C=H(C,h),y={id:c,title:d},w=o}else 3===w&&(Z[y.id]={title:y.title,content:e})})),{readme:f,apiReference:Z,menuItems:C}},V=t(80184),_=(0,s.createContext)(void 0),q=function(){var e=(0,s.useContext)(_);if(!e)throw new Error("This component must be a child of a <PackageStateProvider />");return e},Q=function(e){var n,t,i,c,l,d=e.children,u=(0,r.UO)(),h=u.name,f=u.scope,p=u.version,v="".concat(f,"/").concat(h,"/v").concat(p),x=(0,P.Z)(),g=(0,o.Z)(x,1)[0],b=null!==(n=(0,B.K)().get(m.Tx.SUBMODULE))&&void 0!==n?n:"",j=(0,C.useQuery)("Versions",z).data,y=f?"".concat(f,"/").concat(h):h,w=null===j||void 0===j?void 0:j.packages[y],Z=(0,C.useQuery)("".concat(v,"-docs-").concat(g,"-").concat(b,"-md"),(function(){return I(h,p,A.$[g],f,b)})),S=(0,C.useQuery)("".concat(v,"-docs-").concat(g,"-").concat(b,"-json"),(function(){return L(h,p,A.$[g],f,b)})),E=(0,C.useQuery)("".concat(v,"-assembly"),(function(){return T(h,p,f)})),D=(0,C.useQuery)("".concat(v,"-metadata"),(function(){return O(h,p,f)})),U="".concat(f?"".concat(f,"/").concat(h):h," ").concat(p),M=null!==(t=null===(i=E.data)||void 0===i?void 0:i.description)&&void 0!==t?t:"",N=Boolean(Z.error||S.error||E.error),R=Boolean(!Z.isLoading&&!S.isLoading&&!E.isLoading&&Z.data&&S.data&&E.data),W=Boolean(g===A.SQ.TypeScript||E.isLoading||E.error||null!=(null===(c=E.data)||void 0===c||null===(l=c.targets)||void 0===l?void 0:l[g.toString()])),H=Boolean(!D.isLoading&&(E.isLoading||Z.isLoading||S.isLoading)),F=(0,s.useMemo)((function(){return Z.data?K(Z.data,{scope:f,name:h,version:p,language:g,submodule:b}):{menuItems:[]}}),[Z.data,h,f,p,g,b]);return E.error?(0,V.jsx)(a.NotFound,{}):(0,V.jsx)(_.Provider,{value:(0,k.Z)({assembly:E,hasDocs:R,hasError:N,isLoadingDocs:H,isSupported:W,language:g,markdownDocs:Z,jsonDocs:S,metadata:D,name:h,pageDescription:M,pageTitle:U,scope:f,version:p,allVersions:w},F),children:d})},X=t(88606),$=(0,X.$)("package-page",["page","feedbackLinks","reportLink","reportAbuseLink","githubLink","dependenciesTab","dependenciesList","dependenciesLink","badgeTab","description","markdown","selectVersionButton","selectVersionDropdown","selectVersionItem"]),Y=function(){var e,n=q().assembly.data;if(!n)return(0,V.jsx)(y.w,{});var t=Object.entries(null!==(e=n.dependencies)&&void 0!==e?e:{});return t.length?(0,V.jsx)(i.Kq,{"data-testid":$.dependenciesList,direction:"row",justify:"center",mx:"auto",spacing:4,wrap:"wrap",children:t.map((function(e){var n=(0,o.Z)(e,2),t=n[0],r=n[1];return(0,V.jsxs)(j.O,{_first:{ml:4},"data-testid":$.dependenciesLink,fontWeight:"semibold",p:2,to:(0,w.Mt)({name:t,version:b(r)}),children:[t," - ",r]},"".concat(t,"-").concat(r))}))}):(0,V.jsx)(i.M5,{children:"This library does not have any known CDK dependencies"})},J=t(75272),ee=t(10855),ne=t(6074),te=t(76798),re=t(69113),ae=function(e){return(0,V.jsxs)(re.JO,(0,k.Z)((0,k.Z)({},e),{},{children:[(0,V.jsx)("path",{clipRule:"evenodd",d:"M10.2532 0C4.59124 0 0 4.59022 0 10.2532C0 14.7835 2.93785 18.6266 7.01174 19.9825C7.524 20.0776 7.71212 19.7601 7.71212 19.4893C7.71212 19.2448 7.70261 18.4371 7.6982 17.5804C4.84576 18.2006 4.24386 16.3706 4.24386 16.3706C3.77745 15.1855 3.10543 14.8704 3.10543 14.8704C2.17499 14.234 3.17555 14.2473 3.17555 14.2473C4.20498 14.3194 4.74728 15.3039 4.74728 15.3039C5.66176 16.871 7.14588 16.418 7.73097 16.1562C7.82299 15.4935 8.08871 15.041 8.38194 14.785C6.10457 14.5261 3.71038 13.6467 3.71038 9.718C3.71038 8.59859 4.11108 7.68394 4.76697 6.96573C4.66035 6.70765 4.30939 5.66481 4.86613 4.25252C4.86613 4.25252 5.72696 3.97695 7.68631 5.3035C8.50435 5.07616 9.38165 4.96189 10.2532 4.95799C11.1242 4.96189 12.002 5.07582 12.8216 5.30317C14.7785 3.97661 15.6383 4.25218 15.6383 4.25218C16.1964 5.6643 15.8455 6.70731 15.739 6.96539C16.3964 7.6836 16.7943 8.59825 16.7943 9.71766C16.7943 13.6557 14.3957 14.5227 12.1125 14.7767C12.4805 15.0949 12.8081 15.719 12.8081 16.6754C12.8081 18.0473 12.7963 19.1514 12.7963 19.4891C12.7963 19.762 12.981 20.0817 13.5005 19.981C17.5721 18.6237 20.5065 14.7818 20.5065 10.2532C20.5063 4.59056 15.9156 0.000169776 10.2532 0.000169776V0Z",fill:"currentColor",fillRule:"evenodd"}),(0,V.jsx)("path",{d:"M3.88318 14.7214C3.86059 14.7724 3.78045 14.7876 3.70744 14.7528C3.63274 14.7195 3.59114 14.6501 3.61525 14.599C3.63732 14.5464 3.71763 14.5319 3.79183 14.5671C3.86654 14.6005 3.90898 14.6706 3.88301 14.7216L3.88318 14.7214ZM4.29848 15.1848C4.24975 15.2301 4.15416 15.209 4.0893 15.1372C4.02206 15.0659 4.0095 14.9703 4.05925 14.9243C4.10984 14.8791 4.20255 14.9005 4.26978 14.9719C4.33668 15.0442 4.34992 15.1389 4.29865 15.1849L4.29848 15.1848ZM4.70291 15.7751C4.64009 15.8189 4.5372 15.778 4.4737 15.6868C4.41088 15.5955 4.41088 15.486 4.4754 15.4423C4.53873 15.3985 4.64009 15.4381 4.70461 15.5284C4.76709 15.621 4.76709 15.7305 4.70291 15.775V15.7751ZM5.25659 16.3458C5.20056 16.4078 5.08069 16.3911 4.99308 16.3067C4.9036 16.224 4.87864 16.1064 4.93484 16.0446C4.99189 15.9824 5.11227 15.9998 5.20039 16.0836C5.28987 16.1661 5.31687 16.284 5.25693 16.3456L5.25659 16.3458ZM6.02064 16.677C5.99568 16.7573 5.88056 16.7939 5.76426 16.7596C5.64829 16.7244 5.5724 16.6305 5.59617 16.5494C5.61994 16.4684 5.7359 16.4305 5.85289 16.467C5.96885 16.502 6.04475 16.5954 6.02064 16.677ZM6.8599 16.7383C6.86279 16.8229 6.76431 16.8928 6.64257 16.8945C6.51982 16.8974 6.42049 16.8288 6.4193 16.7456C6.4193 16.6602 6.51574 16.5911 6.63833 16.5887C6.76007 16.5865 6.86007 16.6545 6.86007 16.7382L6.8599 16.7383ZM7.64059 16.6056C7.65519 16.6879 7.57047 16.7726 7.44941 16.7952C7.33056 16.8173 7.22019 16.766 7.20491 16.6843C7.19031 16.5998 7.27656 16.5151 7.39541 16.4932C7.51664 16.4723 7.62531 16.522 7.64059 16.6057V16.6056Z",fill:"currentColor"})]}))},oe={h:6,ml:2,w:6},ie=function(){var e,n=q(),t=(0,ee.Sx)({base:"horizontal",md:"vertical"}),r=(0,V.jsx)(i.iz,{borderColor:"white",mr:6,orientation:t}),a=n.metadata.data,o=n.assembly.data;if(!o||!a)return null;var c,s=null!==(e=null===o||void 0===o?void 0:o.repository)&&void 0!==e?e:{},l=void 0;"git"===s.type&&((l=null!==(c=s.url)&&void 0!==c&&c.endsWith(".git")?s.url.replace(".git",""):s.url).endsWith("/")&&(l=l.slice(0,l.length-1)));return(0,V.jsxs)(i.Kq,{align:"center",backgroundColor:"blue.600",borderTop:"1px solid",borderTopColor:"borderColor",color:"white","data-testid":$.feedbackLinks,direction:{base:"column",md:"row"},justify:"space-evenly",px:8,py:5,spacing:4,children:[l&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(ne.d,{color:"currentcolor","data-event":h.FEEDBACK.PUBLISHER,"data-testid":$.githubLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"".concat(l,"/issues"),rightIcon:(0,V.jsx)(ae,(0,k.Z)({color:"white"},oe)),variant:"solid",children:"Provide feedback to publisher"}),r]}),(0,V.jsx)(ne.d,{color:"currentcolor","data-event":h.FEEDBACK.CONSTRUCT_HUB,"data-testid":$.reportLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"".concat(te.Sx,"/issues/new"),rightIcon:(0,V.jsx)(ae,(0,k.Z)({color:"white"},oe)),children:"Provide feedback to Construct Hub"}),r,(0,V.jsx)(ne.d,{color:"currentcolor","data-event":h.FEEDBACK.ABUSE,"data-testid":$.reportAbuseLink,fontSize:"lg",fontWeight:"semibold",hasIcon:!1,href:"mailto:abuse@amazonaws.com?subject=".concat(encodeURIComponent("ConstructHub - Report of abusive package: ".concat(null===o||void 0===o?void 0:o.name))),rightIcon:(0,V.jsx)(J.LQ,(0,k.Z)({},oe)),children:"Report abuse"})]})},ce=t(65223),se=t(82504),le=t(3308),de=t(3669),ue=t(31959),he=t(95798),fe=t(57992),pe=t(89570),ve=(0,ue.Gp)((function(e,n){var t=e.value,r=e.onChange,a=e.onSubmit,i=(0,s.useState)(t),c=(0,o.Z)(i,2),l=c[0],d=c[1];return(0,pe.N)(l,{onChange:r}),(0,V.jsx)(fe.l,{"data-testid":"choose-submodule-search-form",onSubmit:a,children:(0,V.jsxs)(he.BZ,{children:[(0,V.jsx)(he.Z8,{children:(0,V.jsx)(J.W1,{color:"gray.400"})}),(0,V.jsx)(he.II,{"data-testid":"choose-submodule-search-input",onChange:function(e){return d(e.target.value)},placeholder:"Search",ref:n,value:l,variant:"filled"})]})})}));ve.displayName="SearchInput";var me=function(e){var n=e.inputValue,t=e.isOpen,a=e.onClose,o=e.onInputChange,c=e.submodules,l=(0,s.useRef)(null),d=(0,r.k6)().push,u=(0,s.useCallback)((function(e){a(),d(e)}),[a,d]),h=(0,s.useCallback)((function(e){if(e.preventDefault(),c.length){var n=c[0].to;u(n)}}),[u,c]);return(0,V.jsx)(le.u_,{initialFocusRef:l,isOpen:t,onClose:a,children:(0,V.jsx)(le.ZA,{children:(0,V.jsxs)(le.hz,{mx:4,children:[(0,V.jsx)(le.ol,{"data-testid":"choose-submodule-modal-close"}),(0,V.jsx)(le.xB,{"data-testid":"choose-submodule-modal-header",fontSize:"lg",fontWeight:"bold",children:"Choose a submodule"}),(0,V.jsxs)(le.fe,{"data-testid":"choose-submodule-modal-body",p:0,children:[(0,V.jsx)(i.xu,{pb:4,px:4,children:(0,V.jsx)(ve,{onChange:o,onSubmit:h,ref:l,value:n})}),(0,V.jsx)(i.iz,{}),(0,V.jsx)(i.QI,{"data-testid":"choose-submodule-modal-results",m:0,maxH:"50vh",overflow:"hidden auto",p:0,role:"listbox",tabIndex:-1,children:c.map((function(e){var n=e.name,t=e.to;return(0,V.jsx)(de.T,{"data-testid":"choose-submodule-result",name:n,onClick:function(){return u(t)}},n)}))})]})]})})})},xe=function(){var e,n,t,a=q(),c=a.assembly,l=a.name,d=a.language,u=a.scope,h=a.version,f=(0,r.k6)().push,p=(0,B.K)(),v=Object.keys(null!==(e=null===c||void 0===c||null===(n=c.data)||void 0===n?void 0:n.submodules)&&void 0!==e?e:{}),x=(0,ce.qY)(),g=x.isOpen,b=x.onOpen,j=x.onClose,y=p.get(m.Tx.SUBMODULE),k=y?"Submodule: ".concat(y):"Choose Submodule",C=(0,s.useState)(""),Z=(0,o.Z)(C,2),S=Z[0],T=Z[1],E=u?"".concat(u,"/").concat(l):l,I=(0,s.useCallback)((function(e){return(0,w.Mt)({name:E,version:h,language:d,submodule:e})}),[d,E,h]),L=(0,s.useMemo)((function(){var e=v;return S&&(e=e.filter((function(e){return e.toLowerCase().includes(S.toLowerCase())}))),e.map((function(e){var n=e.split(".")[1];return{name:n,to:I(n)}}))}),[v,S,I]);return 0===v.length?null:(0,V.jsxs)(i.Kq,{spacing:4,w:"100%",children:[y&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(se.zx,{borderRadius:"none","data-testid":"choose-submodule-go-back",leftIcon:(0,V.jsx)(J.Rp,{"aria-label":"Back to construct root"}),onClick:function(){f((0,w.Mt)({name:E,version:h,language:d}))},title:"Back to construct root",variant:"link",children:null===c||void 0===c||null===(t=c.data)||void 0===t?void 0:t.name}),(0,V.jsx)(i.iz,{})]}),(0,V.jsx)(se.zx,{borderRadius:"none",color:"blue.500","data-testid":"choose-submodule-search-trigger",flexGrow:1,onClick:b,rightIcon:(0,V.jsx)(J.v4,{}),title:"Choose Submodule",variant:"link",children:k}),(0,V.jsx)(me,{inputValue:S,isOpen:g,onClose:j,onInputChange:T,submodules:L})]})},ge=t(51922),be=t(59534),je=function(e){var n=e.children,t=e["data-event"],r=e.path,a=e.title,o=e.showToggle,c=e.variant,s=(0,k.Z)({_hover:{bg:"rgba(0, 124, 253, 0.05)"},overflow:"hidden",pl:1,py:o?2:1,marginLeft:o?0:1,fontWeight:o?"bold":void 0,textOverflow:"ellipsis",whiteSpace:"nowrap",w:"100%"},"sm"===c?{fontSize:"sm"}:{fontSize:"md"});return r?(0,V.jsx)(j.O,(0,k.Z)((0,k.Z)({"data-event":t,title:a,to:r},s),{},{children:n})):(0,V.jsx)(i.xv,(0,k.Z)((0,k.Z)({},s),{},{children:n}))},ye=function(e,n){return(0,be.oJ)(e,"NavTree",n)},we={color:"textTertiary",h:4,w:4},ke=function e(n){var t,r,a=n.children,o=n["data-event"],c=n.getIsActiveItem,l=n.id,d=n.title,u=n.path,h=n.level,f=n.onOpen,p=n.variant,v=(0,be.z$)().trackCustomEvent,m=h<2,x=(0,ce.qY)({onOpen:f,defaultIsOpen:m}),g=null!==(t=null===c||void 0===c?void 0:c({id:l,title:d,path:u,children:a}))&&void 0!==t&&t,b=(null!==(r=null===a||void 0===a?void 0:a.length)&&void 0!==r?r:0)>0,j=x.isOpen&&b,y=(0,s.useMemo)((function(){return null===a||void 0===a?void 0:a.map((function(n,t){return(0,s.createElement)(e,(0,k.Z)((0,k.Z)({"data-event":o},n),{},{getIsActiveItem:c,key:t,level:h+1,onOpen:x.onOpen,variant:p}))}))}),[a,o,c,h,x.onOpen,p]);return(0,V.jsxs)(i.kC,{direction:"column",children:[(0,V.jsxs)(i.kC,{align:"center",color:g?"link":"textPrimary",children:[b&&(0,V.jsx)(se.hU,{"aria-label":"expand-toggle",borderRadius:"md",h:4,icon:x.isOpen?(0,V.jsx)(J.v4,(0,k.Z)({},we)):(0,V.jsx)(J.XC,(0,k.Z)({},we)),ml:-1,onClick:function(){x.onToggle(),o&&v((0,be.Q5)({name:ye(o,"Toggle")}))},size:"xs",variant:"link",w:0}),(0,V.jsx)(je,{"data-event":o?ye(o,"Link"):void 0,path:u,showToggle:b,title:d,variant:p,children:d})]}),(0,V.jsx)(i.xu,{_before:{bg:"borderColor",bottom:0,content:'""',left:0,position:"absolute",top:0,w:"1px"},display:j?"initial":"none",ml:2,mr:2,pl:2,position:"relative",children:y})]})},Ce=function(e){var n=e["data-event"],t=e.getIsActiveItem,r=e.items,a=e.variant;return(0,V.jsx)(i.kC,{direction:"column",maxWidth:"100%",children:r.map((function(e,r){return(0,s.createElement)(ke,(0,k.Z)((0,k.Z)({},e),{},{"data-event":n,getIsActiveItem:t,key:r,level:0,onOpen:void 0,variant:a}))}))})},Ze=function(){var e,n,t=q(),a=t.assembly,o=t.menuItems,c=(0,ce.qY)(),l=(0,r.TH)(),d=Object.keys(null!==(e=null===(n=a.data)||void 0===n?void 0:n.submodules)&&void 0!==e?e:{}).length>0;return(0,s.useEffect)((function(){c.isOpen&&c.onClose()}),[l]),(0,V.jsxs)(i.xu,{bottom:0,display:{lg:"none"},left:0,pos:"fixed",right:0,children:[(0,V.jsx)(se.zx,{bg:"bgPrimary",borderTop:"base",boxShadow:"base",fontSize:"xl",fontWeight:"semibold",h:"3.5rem",onClick:c.onOpen,variant:"unstyled",w:"full",children:(0,V.jsxs)(i.kC,{align:"center",justify:"space-between",px:6,children:["Table of contents",(0,V.jsx)(J.g8,{})]})}),(0,V.jsx)(ge.h_,{children:(0,V.jsxs)(le.dy,(0,k.Z)((0,k.Z)({},c),{},{blockScrollOnMount:!1,placement:"bottom",children:[(0,V.jsx)(le.P1,{}),(0,V.jsxs)(le.sc,{maxH:"60vh",children:[(0,V.jsx)(le.OX,{children:"Table of contents"}),(0,V.jsx)(le.cC,{}),(0,V.jsxs)(le.Ng,{children:[d&&(0,V.jsx)(i.xu,{mb:4,sx:{button:{justifyContent:"initial"}},children:(0,V.jsx)(xe,{})}),(0,V.jsx)(Ce,{items:o})]})]})]}))})]})},Se=t(29370),Te=t(54915),Ee=t.n(Te),Ie=t(5474),Le=t.n(Ie),Oe=t(16580),Ae=t.n(Oe),Pe=t(45618),Be=t(65218),De=t.n(Be),ze=t(45987),Ue=t(28227),Me=t(60185),Ne=t(1250),Re=t(32536),We=["value"],He=(0,ue.Gp)((function(e,n){var t=e.value,r=(0,ze.Z)(e,We),a=(0,ce.VP)(t),o=a.hasCopied,i=a.onCopy;return(0,V.jsx)(se.hU,(0,k.Z)({"aria-label":"Copy Button",color:"blue.500",colorScheme:"brand",h:6,icon:o?(0,V.jsx)(J.nQ,{color:"green.300"}):(0,V.jsx)(J.TI,{}),minW:"auto",ml:1,onClick:i,ref:n,variant:"ghost",w:6},r))}));He.displayName="CopyButton";var Fe,Ge=function(e){var n=e.code,t=e.tokens,r=e.getLineProps,a=e.getTokenProps;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(i.kC,{align:"center",bg:"rgba(0, 124, 253, 0.15)",borderTopRadius:"md",justify:"flex-end",px:2,py:1,children:(0,V.jsx)(He,{value:n})}),(0,V.jsx)(i.xu,{overflowX:"auto",p:2,children:t.map((function(e,n){return(0,V.jsx)("div",(0,k.Z)((0,k.Z)({},r({line:e,key:n})),{},{children:e.map((function(e,n){return(0,V.jsx)(i.xu,(0,k.Z)({as:"span",sx:{wordWrap:"normal"}},a({token:e,key:n})),n)}))}),n)}))})]})},Ke=function(e){var n=e.code,t=e.tokens,r=e.getLineProps,a=e.getTokenProps;return(0,V.jsxs)(i.rj,{p:3,templateColumns:"1fr min-content",w:"full",children:[(0,V.jsx)(i.xu,{m:-3,maxW:"full",overflow:"auto",p:3,children:t.map((function(e,n){return(0,V.jsx)("div",(0,k.Z)((0,k.Z)({},r({line:e,key:n})),{},{children:e.map((function(e,n){return(0,V.jsx)("span",(0,k.Z)({},a({token:e,key:n})),n)}))}),n)}))}),(0,V.jsx)(i.kC,{align:"center",ml:1,children:(0,V.jsx)(He,{value:n})})]})},Ve=["code","language"],_e=function(e){var n=e.code,t=e.language,r=(0,ze.Z)(e,Ve),a=(0,Ue.ff)(Re.Z,Ne.Z);return(0,V.jsx)(Me.ZP,(0,k.Z)((0,k.Z)({},Me.lG),{},{code:n,language:t,theme:a,children:function(e){return(0,V.jsx)(i.xu,(0,k.Z)((0,k.Z)({as:"pre",border:"base",borderRadius:"md",boxShadow:"base",className:e.className,style:e.style},r),{},{children:e.tokens.length>1?(0,V.jsx)(Ge,(0,k.Z)((0,k.Z)({},e),{},{code:n})):(0,V.jsx)(Ke,(0,k.Z)((0,k.Z)({},e),{},{code:n}))}))}}))},qe=function(e){var n=e.inline,t=e.children,r=e.language,a=void 0===r?"typescript":r;if(n)return(0,V.jsx)(i.EK,{border:"base",marginTop:"md",mx:2,px:2,py:0,children:t});var o=s.Children.toArray(t).reduce((function(e,n){return"string"===typeof n?"".concat(e).concat(n):e}),"").trim();return(0,V.jsx)(_e,{code:o,fontSize:"0.9rem",language:a})},Qe=t(58340),Xe=function e(n){return s.Children.toArray(n).reduce((function(n,t){return"string"===typeof t?n+t:"object"===typeof t&&"props"in t?n+e(t.props.children):n}),"").trim()},$e=function(e){var n=e.id,t=e.level,a=e.title,o=(0,r.TH)().search;return(0,V.jsx)(j.O,{_active:{visibility:"initial"},_focus:{visibility:"initial"},alignItems:"center","data-heading-id":"#".concat(n),"data-heading-level":t,"data-heading-title":a,display:"flex",id:n,lineHeight:1,opacity:"hidden",replace:!0,to:"".concat(o,"#").concat(n),visibility:"hidden",children:(0,V.jsx)(J.xP,{boxSize:4})})},Ye=function(e){var n,t,r=e.level,a=e.children,o=["2xl","xl","lg","md","sm","xs"][r-1],c="h".concat(r),s=(new DOMParser).parseFromString(Qe.renderToStaticMarkup(a),"text/html").querySelector("span[data-heading-title][data-heading-id]"),l=null!==(n=null===s||void 0===s?void 0:s.dataset.headingTitle)&&void 0!==n?n:Xe(a),d=null!==(t=null===s||void 0===s?void 0:s.dataset.headingId)&&void 0!==t?t:W(l);return(0,V.jsxs)(i.kC,{_hover:{"> a":{visibility:"initial"}},align:"stretch",borderBottom:"base",justify:"space-between",mb:4,mt:r>=4?"1.5em":4,px:r>=4?2:void 0,py:2,children:[(0,V.jsx)(i.X6,{as:c,color:"textPrimary",level:r,size:o,sx:{"> code":{fontSize:"inherit"}},children:a}),(0,V.jsx)($e,{id:d,level:r,title:l})]})},Je=t(53046),en=t(97005),nn=(0,X.$)("markdown",["container"]),tn=["children","href"],rn={a:function(e){var n=e.children,t=e.href,r=(0,ze.Z)(e,tn),a={color:"link",sx:{"> img + svg":{display:"none"}}};try{if(t&&t.startsWith("http"))if(new URL(t).hostname!==window.location.hostname)return(0,V.jsx)(ne.d,(0,k.Z)((0,k.Z)((0,k.Z)({href:t},a),r),{},{children:n}))}catch(o){}return(0,V.jsx)(j.O,(0,k.Z)((0,k.Z)((0,k.Z)({to:t},a),r),{},{children:n}))},blockquote:function(e){var n=e.children;return(0,V.jsx)(i.xu,{as:"blockquote",borderLeft:"5px solid",borderLeftColor:"borderColor",marginX:"2",px:"2",wordBreak:"break-word",children:n})},caption:en.Rn,code:qe,em:function(e){var n=e.children;return(0,V.jsx)(i.xu,{as:"em",fontStyle:"normal",fontWeight:"bold",children:n})},h1:Ye,h2:Ye,h3:Ye,h4:Ye,h5:Ye,h6:Ye,hr:function(){return(0,V.jsx)(V.Fragment,{})},img:function(e){return(0,V.jsx)(Je.Ee,(0,k.Z)({display:"inline-block"},e))},li:function(e){var n=e.children;return(0,V.jsx)(i.HC,{lineHeight:"tall",marginX:2,sx:{"em:first-of-type":{fontSize:"small"},code:{fontSize:"small"}},children:n})},ol:function(e){var n=e.children;return(0,V.jsx)(i.GS,{children:n})},p:function(e){var n=e.children;return(0,V.jsx)(i.xv,{lineHeight:"1.5",mx:2,my:4,children:n})},pre:function(e){var n=e.children,t=e.lang;return t?(0,V.jsx)(qe,{language:t,children:n}):(0,V.jsx)(i.xu,{as:"pre",children:n})},sup:function(e){var n=e.children,t=void 0,r="";if(Array.isArray(n)){var a=(0,o.Z)(n,1)[0];"string"===typeof a&&(r=a)}return"Required"===r?t="orange.700":"Optional"===r&&(t="green.700"),(0,V.jsx)(i.xu,{as:"sup",color:t,fontSize:"xs",ml:-1,top:-1,children:n})},table:function(e){var n=e.children;return(0,V.jsx)(i.xu,{maxW:"100%",overflowX:"auto",children:(0,V.jsx)(en.iA,{variant:"striped",children:n})})},tbody:en.p3,td:en.Td,tfoot:en.$R,th:en.Th,thead:en.hr,tr:en.Tr,ul:function(e){var n=e.children;return(0,V.jsx)(i.QI,{marginTop:2,padding:0,children:n})}},an=(0,k.Z)({},Se);an.attributes.span=(null!==(Fe=an.attributes.span)&&void 0!==Fe?Fe:[]).concat(["dataHeadingTitle","dataHeadingId"]);var on=[[Le()],[Ae(),an]],cn=[De(),Pe.Z],sn=/^(?:(?:git@)?github\.com:|(?:https?:\/\/)github\.com\/)([^/]+)\/([^/]+)(?:\.git)?$/,ln=function(e){var n=e.children,t=function(e){var n=e.type,t=e.url,r=e.directory;if("git"===n){var a=sn.exec(t);if(null!=a){var i=(0,o.Z)(a,3);return{owner:i[1],repo:i[2],directory:r}}}}(e.repository),r=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"HEAD";return null==t?Ee().uriTransformer:function(r){var a=Ee().uriTransformer(r),i=(0,o.Z)(a,1)[0];if("#"===i||"/"===i)return a;if(a.includes("://"))return a;var c=t.owner,s=t.repo.replace(/\.git$/,""),l=t.directory?"".concat(t.directory,"/"):"";return"https://".concat(e,"/").concat(c,"/").concat(s,"/").concat(n,"/").concat(l).concat(a)}};return(0,V.jsx)(i.xu,{"data-testid":nn.container,px:8,children:(0,V.jsx)(Ee(),{components:rn,rehypePlugins:on,remarkPlugins:cn,transformImageUri:r("raw.githubusercontent.com"),transformLinkUri:r("github.com","blob/HEAD"),children:n})})},dn=function(e){var n=e.children;return(0,V.jsx)(i.xv,{align:"center",fontSize:"xl",fontStyle:"oblique",px:4,wordBreak:"break-word",children:n})},un=function(){var e=q(),n=e.isLoadingDocs,t=e.readme,r=e.assembly.data;return!n&&t&&r?"\n"===t?(0,V.jsx)(dn,{children:"No readme available for this module or submodule"}):(0,V.jsx)(ln,{repository:r.repository,children:t}):null},hn=t(91523),fn=function(){var e=q().language,n=(0,V.jsx)(ne.d,{href:"".concat(te.Sx,"/issues/new"),children:"issue"});return(0,V.jsxs)(dn,{children:["Documentation in ",e," is still not ready for this package. Come back soon. If this issue persists, please let us know by creating an"," ",n,"."]})},pn=function(e){var n=e.rootId,t=(0,r.TH)(),a=t.pathname,o=t.hash,c=t.search,s=q(),l=s.isLoadingDocs,d=s.assembly.data,u=function(){var e=(0,r.UO)().typeId,n=q().apiReference;if(e)return null===n||void 0===n?void 0:n[e]}();if(l)return null;if(!u||!d)return(0,V.jsx)(fn,{});var h=u.title,f=u.content,p="".concat(a).concat(c,"#").concat(o);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(i.X6,{as:"h2",p:8,size:"2xl",children:(0,V.jsx)(hn.OL,{id:n,to:p,children:h})}),(0,V.jsx)(ln,{repository:d.repository,children:f})]})},vn=["children"],mn=function(){var e=q().menuItems,n=(0,r.TH)(),t=n.pathname,a=n.hash,o=(0,s.useMemo)((function(){return e.reduce((function(e,n,t){if(0===t&&(null===n||void 0===n?void 0:n.id)===p){n.children;var r=(0,ze.Z)(n,vn);e.push((0,k.Z)((0,k.Z)({},r),{},{children:[]}))}else e.push(n);return e}),[])}),[e]),i=(0,s.useCallback)((function(e){var n=e.path,r=new URL(null!==n&&void 0!==n?n:"",window.origin);return Boolean(null!==n&&void 0!==n&&n.includes("/".concat(f,"/"))?r.pathname===t:r.hash&&a&&r.hash===a)}),[a,t]);return(0,V.jsx)(Ce,{"data-event":h.SCOPE,getIsActiveItem:i,items:o})},xn=t(84506),gn=function(e){return function(n){var t=n.split(".").slice(-e),r=(0,xn.Z)(t);return{path:r[0],hash:"#"+r.slice(1).join(".")}}},bn={initializer:{header:"Initializer Props",getValues:function(e){var n,t;return null!==(n=null===(t=e.initializer)||void 0===t?void 0:t.parameters)&&void 0!==n?n:[]},getPath:gn(4)},instanceMethods:{header:"Instance Methods",getValues:function(e){return e.instanceMethods},getPath:gn(2)},staticMethods:{header:"Static Methods",getValues:function(e){return e.staticMethods},getPath:gn(2)},properties:{header:"Properties",getValues:function(e){return e.properties},getPath:gn(3)},constants:{header:"Constants",getValues:function(e){return e.constants},getPath:gn(3)},members:{header:"Enum Members",getValues:function(e){return e.members},getPath:gn(2)}},jn=function(){var e,n=(0,r.TH)().pathname,t=(0,r.$B)().path,a=q(),i=a.menuItems,c=a.jsonDocs,l=(0,r.$B)("".concat(t,"/").concat(f,"/:typeId")),d=null===l||void 0===l?void 0:l.params.typeId,u=(0,P.Z)(),h=(0,o.Z)(u,1)[0],v=null!==(e=(0,B.K)().get(m.Tx.SUBMODULE))&&void 0!==e?e:"",x=(0,s.useMemo)((function(){var e;if(!c.data)return{types:[]};var n=null===(e=c.data)||void 0===e?void 0:e.apiReference;return n?{types:[].concat((0,M.Z)(n.classes),(0,M.Z)(n.constructs),(0,M.Z)(n.interfaces),(0,M.Z)(n.structs),(0,M.Z)(n.enums)),metadata:c.data.metadata}:{types:[]}}),[c]),g=x.types,b=x.metadata;return(0,s.useMemo)((function(){if(!function(e){var n=e.split("/");return n[n.length-2]===f}(n)){var e=(0,o.Z)(i,1)[0];return(null===e||void 0===e?void 0:e.id)===p?e.children:[]}var t=g.find((function(e){return e.displayName===d}));return t&&b?function(e,n,t){for(var r=[],a=function(){var a=(0,o.Z)(c[i],2),s=a[0],l=a[1],d=l.header,u=l.getValues,h=l.getPath;if(s in e){var f,p={level:1,id:d,title:d,children:[]},v=u(e).map((function(e){var r=h(e.id),a=r.path,o=r.hash,i="?".concat(m.Tx.LANGUAGE,"=").concat(n);return t&&(i+="&".concat(m.Tx.SUBMODULE,"=").concat(t)),{level:2,id:o,title:e.displayName,path:"".concat(a).concat(i).concat(o),children:[]}}));v.length>0&&((f=p.children).push.apply(f,(0,M.Z)(v)),r.push(p))}},i=0,c=Object.entries(bn);i<c.length;i++)a();return r}(t,h,v):[]}),[h,i,b,n,v,d,g])},yn=function(e){return e.replace("#","").toLowerCase()},wn=function e(n){var t,r=[yn(n.id)];return null===(t=n.children)||void 0===t||t.forEach((function(n){null!==n&&void 0!==n&&n.id&&r.push.apply(r,(0,M.Z)(e(n)))})),r},kn=function(e){return yn(e.getAttribute("data-heading-id"))},Cn=function(e){return new Set(e.map(wn).flat())},Zn={rootMargin:"-15% 0% -15% 0%"},Sn={attributes:!1,childList:!0,subtree:!0},Tn=function(){var e=function(){var e=jn(),n=(0,s.useRef)(Cn(e)),t=(0,s.useState)((0,M.Z)(n.current)[0]),r=(0,o.Z)(t,2),a=r[0],i=r[1],c=(0,s.useMemo)((function(){return new IntersectionObserver((function(e){var n;e.forEach((function(e){e.isIntersecting&&(n=e.target)})),n&&i(kn(n))}),Zn)}),[]);return(0,s.useEffect)((function(){var t=Cn(e);n.current=t;var r=(0,o.Z)(t,1)[0];return i(r),function(){i(void 0)}}),[e]),(0,s.useEffect)((function(){var e=document.getElementById(v);if(e){var t,r=new MutationObserver((function(e){var r;e.length&&(null===(r=t)||void 0===r||r.forEach((function(e){c.unobserve(e)})),(t=document.querySelectorAll("[data-heading-id]")).forEach((function(e){var t=kn(e);n.current.has(t)&&c.observe(e)})))}));return r.observe(e,Sn),function(){r.disconnect()}}}),[c]),a}(),n=jn(),t=(0,r.TH)().hash,a=(0,s.useRef)(!1),i=(0,s.useState)(t),c=(0,o.Z)(i,2),l=c[0],d=c[1];(0,s.useEffect)((function(){d(t),a.current=!1,setTimeout((function(){a.current=!0}),500)}),[t]),(0,s.useEffect)((function(){l&&a.current&&d(void 0)}),[e]);var u=(0,s.useCallback)((function(n){var t=n.path,r=n.id;return l?new URL(null!==t&&void 0!==t?t:"",window.origin).hash===l:yn(r)===e}),[e,l]);return(0,V.jsx)(Ce,{"data-event":h.SCOPE,getIsActiveItem:u,items:n,variant:"sm"})},En=["offset"],In=function(e){var n=e.offset,t=(0,ze.Z)(e,En);return(0,V.jsx)(i.kC,(0,k.Z)({alignSelf:"stretch",as:"nav",direction:"column",display:{base:"none",lg:"flex"},maxHeight:"calc(100vh - ".concat(n,")"),overflow:"hidden auto",position:"sticky"},t))},Ln="4.5rem",On=function(){var e,n=q().assembly.data;return Object.keys(null!==(e=null===n||void 0===n?void 0:n.submodules)&&void 0!==e?e:{}).length>0?(0,V.jsx)(i.kC,{borderBottom:"1px solid",borderColor:"borderColor",justify:"center",py:4,children:(0,V.jsx)(xe,{})}):null},An=function(){var e=(0,r.$B)().path,n=q().markdownDocs,t=(0,r.TH)(),a=t.hash,o=t.pathname,c=t.search;return(0,s.useEffect)((function(){window.requestAnimationFrame((function(){if(a){var e=document.querySelector('[data-heading-id="'.concat(a,'"]'));null===e||void 0===e||e.scrollIntoView(!0)}else window.scrollTo(0,0)}))}),[a,o,n.isLoading]),(0,V.jsxs)(i.rj,{columnGap:4,h:"full",templateColumns:{base:"1fr",lg:"minmax(20rem, 1fr) 3fr minmax(16rem, 0.9fr)"},width:"100%",children:[(0,V.jsxs)(In,{borderRight:"1px solid",borderRightColor:"borderColor",offset:Ln,pl:6,pr:4,top:Ln,children:[(0,V.jsx)(On,{}),(0,V.jsx)(i.xu,{overflowY:"auto",py:4,children:(0,V.jsx)(mn,{})})]}),(0,V.jsx)(i.xu,{h:"max-content",id:v,maxWidth:"100%",overflow:"hidden",py:4,sx:{a:{scrollMarginTop:Ln}},children:(0,V.jsxs)(r.rs,{children:[(0,V.jsx)(r.l_,{exact:!0,from:"".concat(e,"/").concat(f),to:{pathname:e,search:c}}),(0,V.jsx)(r.AW,{exact:!0,path:e,children:(0,V.jsx)(un,{})}),(0,V.jsx)(r.AW,{exact:!0,path:"".concat(e,"/").concat(f,"/:typeId"),children:(0,V.jsx)(pn,{rootId:"apidocs_header"})})]})}),(0,V.jsx)(In,{borderLeft:"1px solid",borderLeftColor:"borderColor",offset:Ln,pl:6,pr:4,top:Ln,children:(0,V.jsx)(i.xu,{overflowY:"auto",py:4,children:(0,V.jsx)(Tn,{})})}),(0,V.jsx)(Ze,{})]})},Pn=t(92213),Bn=t(2148),Dn=function(e){var n=e.targetLanguages,t=e.selectedLanguage,r=e.setSelectedLanguage,a=(0,be.z$)().trackCustomEvent;return(0,V.jsx)(i.Kq,{align:"center","data-testid":"language-bar",direction:"row",spacing:2,children:(0,M.Z)(n).sort((function(e,n){return A.a2.indexOf(e)-A.a2.indexOf(n)})).map((function(e){var n=!A.dX.has(e),o=e===t,i=A.kP[e].icon;return(0,V.jsx)(Bn.N,{language:e,children:(0,V.jsx)(se.hU,{"aria-label":"Select ".concat(e," icon"),bg:"bgSecondary",border:"base",borderColor:o?"brand.500":"borderColor",borderRadius:"lg",boxShadow:"base",colorScheme:"brand",cursor:n?"not-allowed":"pointer","data-testid":"language-".concat(e),disabled:n,icon:(0,V.jsx)(i,{"aria-label":"".concat(e,"-icon"),borderRadius:"sm",height:[4,5,6],width:[4,5,6]}),onClick:function(){o||(a((0,be.Q5)({name:h.LANGUAGE.eventName(e)})),r(e))},p:1,variant:"outline",w:"max-content"})},e)}))})},zn=new Set(A.a2),Un=function(){var e,n=q(),t=n.assembly.data,r=n.language,a=(0,P.Z)({updateSaved:!0,updateUrl:!0}),i=(0,o.Z)(a,2)[1],c=(0,P.Z)({updateUrl:!0}),l=(0,o.Z)(c,2)[1],d=[].concat((0,M.Z)(Object.keys(null!==(e=null===t||void 0===t?void 0:t.targets)&&void 0!==e?e:{})),[A.SQ.TypeScript]),u=d.includes(r);(0,s.useEffect)((function(){u||l(A.SQ.TypeScript)}),[u]);var h={selectedLanguage:u?r:A.SQ.TypeScript,setSelectedLanguage:i,targetLanguages:d.filter((function(e){return zn.has(e)}))};return(0,V.jsx)(Dn,(0,k.Z)({},h))},Mn=t(81070),Nn=t(77231),Rn=t(44717),Wn=t(50535),Hn=["license"],Fn=(0,ue.Gp)((function(e,n){var t=e.license,r=(0,ze.Z)(e,Hn),a=Rn[t].url;return(0,V.jsx)(ne.d,(0,k.Z)((0,k.Z)({href:a,ref:n},r),{},{children:t}))}));Fn.displayName="LicenseLink";var Gn=t(79227),Kn="MMM dd, yyyy 'at' h:mmaaa",Vn=t(56804),_n=t(10297),qn=t(98371),Qn=["openText","closeText","isOpen"],Xn=function(e){var n=e.openText,t=e.closeText,r=e.isOpen,a=(0,ze.Z)(e,Qn);return(0,V.jsx)(se.zx,(0,k.Z)((0,k.Z)({color:"link",colorScheme:"blue",leftIcon:r?(0,V.jsx)(J.g8,{}):(0,V.jsx)(J.v4,{}),variant:"link"},a),{},{children:r?t:n}))},$n=function(e){var n=e.children,t=e.label,r=e.tooltip;return(0,V.jsx)(Mn.u,{hasArrow:!0,isDisabled:!r,label:r,placement:"left",children:(0,V.jsxs)(i.xv,{fontWeight:"bold",children:[t," ",(0,V.jsx)(i.xu,{as:"span",fontWeight:"normal",children:n})]})})},Yn=function(e){var n=e.downloads;return(0,V.jsx)($n,{label:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(i.xu,{as:"span",mr:1,children:(0,V.jsx)(J._8,{})}),n.toLocaleString()]}),tooltip:"Download numbers are periodically sourced from the npm registry",children:"Weekly downloads"})},Jn=function(e){var n=q(),t=(0,_n.V)().data,r=(0,ce.qY)({defaultIsOpen:!0}),a=(0,Vn.E)("packageLinks"),c=n.assembly.data,l=n.metadata.data,d=n.scope?"".concat(n.scope,"/").concat(n.name):n.name,u=(0,qn.JA)(null===l||void 0===l?void 0:l.packageTags),h=(0,o.Z)(u,1)[0],f=function(e){var n=e.assembly,t=e.metadata,r=e.name,a=e.packageLinks,o=e.stats,i=[];if(n||t||o||a){var c,l,d,u,h,f=null===o||void 0===o||null===(c=o.packages)||void 0===c||null===(l=c[r])||void 0===l||null===(d=l.downloads)||void 0===d?void 0:d.npm;void 0!==f&&i.push((0,V.jsx)(Yn,{downloads:f}));var p=null===n||void 0===n?void 0:n.author.name,v=null===n||void 0===n?void 0:n.repository,m=null===n||void 0===n?void 0:n.license;if(p){var x=(0,V.jsx)(j.O,{color:"link",to:(0,w.yc)({query:p}),children:p});i.push((0,V.jsx)($n,{label:"Author",children:x}))}var g=null===t||void 0===t?void 0:t.date;if(g){var b=(0,V.jsx)(Gn.q,{date:new Date(g),fontWeight:"normal",format:Kn});i.push((0,V.jsx)($n,{label:"Published",children:b}))}if(v){var y=(0,w.rM)(v.url);if(y){var k=(0,V.jsx)(ne.d,{href:y.url,children:y.hostname});i.push((0,V.jsx)($n,{label:"Repository",children:k}))}}if(m&&m in Rn){var C=(0,V.jsx)(Fn,{license:m});i.push((0,V.jsx)($n,{label:"License",children:C}))}null!==a&&void 0!==a&&a.length&&a.forEach((function(e){var n,r=e.linkLabel,a=e.configKey,o=e.linkText,c=(null!==(n=null===t||void 0===t?void 0:t.packageLinks)&&void 0!==n?n:{})[a];if(c){var s=(0,V.jsx)(ne.d,{href:c,children:null!==o&&void 0!==o?o:c});i.push((0,V.jsxs)($n,{label:r,children:[r,": ",s]}))}}));var Z=null!==(u=null===t||void 0===t||null===(h=t.links)||void 0===h?void 0:h.npm)&&void 0!==u?u:"https://www.npmjs.com/package/".concat(null===n||void 0===n?void 0:n.name,"/v/").concat(null===n||void 0===n?void 0:n.version);if(Z){var S=(0,V.jsx)(ne.d,{href:Z,children:new URL(Z).hostname});i.push((0,V.jsx)($n,{label:"Registry",children:S}))}}return i.map((function(e,n){return(0,V.jsx)(s.Fragment,{children:e},n)}))}({assembly:c,metadata:l,name:d,packageLinks:a,stats:t});if(!f.length)return null;var p=f.slice(0,2),v=f.slice(2,f.length);return(0,V.jsxs)(i.Kq,(0,k.Z)((0,k.Z)({align:"start",color:"textPrimary",fontSize:".75rem",mt:2,spacing:2},e),{},{children:[h&&(0,V.jsx)(Wn.y,(0,k.Z)({},h)),p,v.length>0&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Nn.UO,{animateOpacity:!0,in:r.isOpen,children:(0,V.jsx)(i.Kq,{spacing:2,children:v})}),(0,V.jsx)(Xn,{closeText:"See fewer details (".concat(p.length,")"),fontSize:"inherit",isOpen:r.isOpen,onClick:r.onToggle,openText:"See more details (".concat(v.length,")")})]})]}))},et=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return n.map((function(e){return'"'.concat(e.map((function(e){return null!==e&&void 0!==e?e:"."})).join(" "),'"')})).join(" ")},nt="heading",tt="install",rt="languages",at="meta",ot=et([nt],[at],[rt],[tt]),it=et([nt,rt,tt],[nt,null,at]),ct=function(e){var n=e.children;return(0,V.jsx)(i.rj,{bg:"bgSecondary",columnGap:{md:6,lg:10},pt:{base:3,lg:6},px:{base:5,md:6,lg:10},rowGap:{base:4,lg:0},templateAreas:{base:ot,lg:it},templateColumns:{base:"1fr",lg:"1fr auto 15rem"},templateRows:{lg:"auto 1fr"},children:n})},st=t(37864),lt=t(77766),dt=t(29988),ut=t(57640),ht=t(10724),ft=t.n(ht),pt=t(59707),vt=function(){var e=q(),n=e.scope,t=e.name,a=e.version,i=e.allVersions,c=e.language,l=n?"".concat(n,"/").concat(t):t,d=(0,pt.A)(),u=(0,r.k6)(),f=u.push,p=u.location,v=d.findByName(l),m=(0,s.useMemo)((function(){var e=v.map((function(e){return e.version})),n=(0,M.Z)(new Set([].concat((0,M.Z)(null!==i&&void 0!==i?i:[]),(0,M.Z)(e),[a])));return n.sort(ft().rcompare),n}),[v,a,i]);return(0,V.jsx)(ut.Ph,{"data-event":h.SELECT_VERSION,"data-testid":$.selectVersionDropdown,fontWeight:"500",onChange:function(e){var n=p.pathname,t=p.hash,r="";if(n.includes("/api/")){var a=n.split("/api/");r=(0,o.Z)(a,2)[1]}var i=[(0,w.Mt)({name:l,version:e.target.value,language:c,api:r}),t].join("");f(i)},size:"sm",value:a,width:"10rem",children:m.map((function(e){return(0,V.jsx)("option",{"data-testid":$.selectVersionItem,"data-value":e,value:e,children:"v".concat(e)},e)}))})},mt=["assembly","name","description","metadata","version"],xt=function(e){var n,t,r=e.assembly,a=e.name,c=e.description,s=e.metadata,l=(e.version,(0,ze.Z)(e,mt)),d=(0,qn.QX)({packageTags:null!==(n=null===s||void 0===s?void 0:s.packageTags)&&void 0!==n?n:[],keywords:null!==(t=null===r||void 0===r?void 0:r.keywords)&&void 0!==t?t:[]}),u=(0,st.eG)(s),f=(0,o.Z)(u,1)[0],p=null!==f&&void 0!==f?f:[],v=(0,o.Z)(p,2),m=v[0],x=v[1],g=1===u.size?h.CDK_BADGE.eventName("".concat(m).concat(void 0!==x?" v".concat(x):"")):void 0;return(0,V.jsxs)(i.Kq,(0,k.Z)((0,k.Z)({lineHeight:"1.5",maxW:"full",overflow:"hidden",spacing:2},l),{},{children:[(0,V.jsxs)(i.kC,{align:"center",wrap:"wrap",children:[(0,V.jsx)(i.X6,{color:"textPrimary",flexShrink:1,fontSize:"1.5rem",isTruncated:!0,mr:4,children:a}),(0,V.jsx)(vt,{})]}),(0,V.jsx)(i.xv,{"data-testid":$.description,fontSize:"1rem",children:c}),(0,V.jsxs)(i.kC,{align:"center",direction:"row",pt:1,sx:{gap:"0.5rem"},wrap:"wrap",children:[(0,V.jsx)(lt.u,{constructFrameworks:u,"data-event":g}),d.map((function(e){var n=e.id,t=e.keyword,r=void 0===t?{}:t,a=r.label,o=r.color;return(0,V.jsx)(dt.X,{"data-event":h.KEYWORD.eventName(a),value:n,variant:o,children:a},n)}))]})]}))},gt=function(e){var n=q(),t=n.language,r=n.assembly.data,a=(0,ce.qY)();if(!r)return null;var o=function(e){var n=e.language,t=e.assembly,r=t.version;if(n===A.SQ.TypeScript){var a=t.name;return"npm install ".concat(a,"@").concat(r)}if(n===A.SQ.Python){var o,i,c=null===(o=t.targets)||void 0===o||null===(i=o.python)||void 0===i?void 0:i.distName;if(!c)return;return"pip install ".concat(c,"==").concat(r)}if(n===A.SQ.Java){var s,l,d,u,h,f,p=null===(s=t.targets)||void 0===s||null===(l=s.java)||void 0===l||null===(d=l.maven)||void 0===d?void 0:d.groupId,v=null===(u=t.targets)||void 0===u||null===(h=u.java)||void 0===h||null===(f=h.maven)||void 0===f?void 0:f.artifactId;if(!p||!v)return;return["// add this to your pom.xml","<dependency>"," <groupId>".concat(p,"</groupId>")," <artifactId>".concat(v,"</artifactId>")," <version>".concat(r,"</version>"),"</dependency>"].join("\n")}if(n===A.SQ.DotNet){var m,x,g=null===(m=t.targets)||void 0===m||null===(x=m.dotnet)||void 0===x?void 0:x.packageId;if(!g)return;return"dotnet add package ".concat(g," --version ").concat(r)}if(n===A.SQ.Go){var b,j,y=null===t||void 0===t||null===(b=t.targets)||void 0===b||null===(j=b.go)||void 0===j?void 0:j.moduleName;if(!y)return;return"go get ".concat(y)}}({language:t,assembly:r});return o&&t?(0,V.jsx)(i.kC,(0,k.Z)((0,k.Z)({align:"start",direction:"column",fontSize:".75rem",w:"full"},e),{},{children:t===A.SQ.Java?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Xn,{closeText:"Hide",fontSize:"inherit",isOpen:a.isOpen,mt:2,onClick:a.onToggle,openText:"Install"}),(0,V.jsx)(i.xu,{maxW:"full",overflow:"hidden",children:(0,V.jsx)(Nn.UO,{in:a.isOpen,children:(0,V.jsx)(_e,{boxShadow:"none",code:o,fontSize:"inherit",language:t,mt:2})})})]}):(0,V.jsx)(_e,{boxShadow:"none",code:o,fontSize:"inherit",language:t,lineHeight:"2",w:"full"})})):null},bt=function(){var e=q(),n=e.assembly,t=e.metadata,r=e.version,a=n.data,o=t.data;return a&&o?(0,V.jsxs)(ct,{children:[(0,V.jsx)(xt,{assembly:a,description:a.description,gridArea:nt,metadata:o,name:a.name,version:r}),(0,V.jsx)(i.kC,{align:"start",gridArea:rt,children:(0,V.jsx)(Un,{})}),(0,V.jsxs)(i.kC,{direction:"column",gridArea:at,children:[(0,V.jsx)(i.iz,{borderBottom:"base",display:{md:"none"},mb:2}),(0,V.jsx)(Jn,{}),(0,V.jsx)(i.iz,{borderBottom:"base",display:{md:"none"},mt:2})]}),(0,V.jsx)(i.kC,{align:"start",gridArea:tt,children:(0,V.jsx)(gt,{})})]}):(0,V.jsx)(Pn.$,{mx:"auto",my:10,size:"xl"})},jt=function(){var e=(0,s.useState)(0),n=(0,o.Z)(e,2),t=n[0],r=n[1],a=q(),l=a.scope,d=a.name,u=l?"".concat(l,"/").concat(d):d,h=encodeURIComponent(u);(0,s.useEffect)((function(){r(0)}),[]);var f=window.location.hostname,p=(0,w.Mt)({name:u}),v="https://".concat(f,"/badge?package=").concat(h),m="https://".concat(f).concat(p),x="[![View on Construct Hub](".concat(v,")](").concat(m,")"),g='<a href="'.concat(m,'"><img src="').concat(v,'" alt="View on Construct Hub"/></a>');return(0,V.jsxs)(i.xu,{bg:"bgPrimary",py:1,width:"100%",children:[(0,V.jsx)(i.xv,{pb:3,children:"Use the snippets below in your Git repositories or elsewhere to add a button that links to this package. The button will automatically update to light mode or dark mode based on whether the user's client has requested a light or dark theme."}),(0,V.jsx)(hn.rU,{to:p,children:(0,V.jsx)(Je.Ee,{src:"/badge-dynamic.svg"})}),(0,V.jsxs)(c.mQ,{index:t,my:3,onChange:r,variant:"line",children:[(0,V.jsxs)(c.td,{borderBottom:"base",px:{base:0,lg:6},children:[(0,V.jsx)(c.OK,{children:"Markdown"}),(0,V.jsx)(c.OK,{children:"HTML"})]}),(0,V.jsxs)(c.nP,{maxW:"full",children:[(0,V.jsx)(c.x4,{children:(0,V.jsx)(_e,{boxShadow:"none",code:x,fontSize:"inherit",language:"markdown",mt:2})}),(0,V.jsx)(c.x4,{children:(0,V.jsx)(_e,{boxShadow:"none",code:g,fontSize:"inherit",language:"markdown",mt:2})})]})]})]})},yt=function(){var e=q(),n=e.pageDescription,t=e.pageTitle,r=(0,s.useState)(0),a=(0,o.Z)(r,2),d=a[0],u=a[1];return(0,s.useEffect)((function(){u(0)}),[t]),(0,V.jsx)(l.T,{meta:{title:t,description:n},pageName:"packageProfile",children:(0,V.jsxs)(i.rj,{bg:"bgPrimary","data-testid":$.page,maxW:"100vw",templateColumns:"1fr",templateRows:"auto 1fr auto",children:[(0,V.jsx)(bt,{}),(0,V.jsxs)(c.mQ,{index:d,onChange:u,variant:"line",children:[(0,V.jsxs)(c.td,{bg:"bgSecondary",borderBottom:"base",px:{base:0,lg:6},children:[(0,V.jsx)(c.OK,{"data-event":h.DOCUMENTATION.TAB,children:"Documentation"}),(0,V.jsx)(c.OK,{"data-event":h.DEPENDENCIES.TAB,"data-testid":$.dependenciesTab,children:"Dependencies"}),(0,V.jsx)(c.OK,{"data-event":h.GITHUB_BADGE.TAB,"data-testid":$.badgeTab,children:"Share"})]}),(0,V.jsxs)(c.nP,{maxW:"full",children:[(0,V.jsx)(c.x4,{p:0,children:(0,V.jsx)(An,{})}),(0,V.jsx)(c.x4,{children:(0,V.jsx)(Y,{})}),(0,V.jsx)(c.x4,{children:(0,V.jsx)(jt,{})})]})]}),(0,V.jsx)(ie,{})]})})},wt=function(){return(0,V.jsx)(Q,{children:(0,V.jsx)(yt,{})})},kt=t(95038),Ct=function(e,n,t){var r=x(n,t),a=function(e,n){var t=e.packages.filter((function(e){return e.name===n}));return t.length>1?t.sort((function(e,n){var t=new Date(e.metadata.date);return new Date(n.metadata.date).getTime()-t.getTime()}))[0]:t[0]}(e,r);if(a){var o=a.version,i="/v/".concat(o);return"".concat("/packages/").concat(r).concat(i)}},Zt=function(){var e=(0,r.UO)(),n=e.name,t=e.scope,o=(0,kt.r)();if(o.isLoading||!o.data)return(0,V.jsx)(i.M5,{minH:"16rem",children:(0,V.jsx)(Pn.$,{size:"xl"})});var c=Ct(o.data,n,t);return c?(0,V.jsx)(r.l_,{to:c}):(0,V.jsx)(a.default,{})},St="[^@\\/]+",Tt="@[^\\/]+",Et=function(){var e=(0,r.$B)().path;return(0,V.jsxs)(r.rs,{children:[(0,V.jsx)(r.AW,{exact:!0,path:"".concat(e,"/:scope(").concat(Tt,")?/:name(").concat(St,")"),children:(0,V.jsx)(Zt,{})}),(0,V.jsx)(r.AW,{path:"".concat(e,"/:scope(").concat(Tt,")?/:name(").concat(St,")/v/:version"),children:(0,V.jsx)(wt,{})}),(0,V.jsx)(r.AW,{path:"*",children:(0,V.jsx)(a.NotFound,{})})]})}}}]);
2
- //# sourceMappingURL=545.a5b3997b.chunk.js.map