@ndla/image-search 11.0.122-alpha.0 → 11.0.124-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/ImageMeta.mjs CHANGED
@@ -11,8 +11,7 @@ const ImageMeta = ({ contentType, fileSize, imageDimensions, locale }) => {
11
11
  const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : "";
12
12
  return /* @__PURE__ */ jsx(Text, { children: `${contentType} - ${prettySize}${dimensions}` });
13
13
  };
14
- var ImageMeta_default = ImageMeta;
15
14
 
16
15
  //#endregion
17
- export { ImageMeta_default as default };
16
+ export { ImageMeta };
18
17
  //# sourceMappingURL=ImageMeta.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageMeta.mjs","names":[],"sources":["../src/ImageMeta.tsx"],"sourcesContent":["/**\n * Copyright (c) 2022-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useMemo } from \"react\";\nimport { Text } from \"@ndla/primitives\";\nimport type { IImageDimensionsDTO } from \"@ndla/types-backend/image-api\";\nimport { humanFileSize } from \"@ndla/util\";\n\ninterface Props {\n contentType: string;\n fileSize: number;\n imageDimensions?: IImageDimensionsDTO;\n locale: string;\n}\n\nconst ImageMeta = ({ contentType, fileSize, imageDimensions, locale }: Props) => {\n const prettySize = useMemo(() => {\n return humanFileSize(fileSize, locale);\n }, [fileSize, locale]);\n\n const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : \"\";\n return <Text>{`${contentType} - ${prettySize}${dimensions}`}</Text>;\n};\n\nexport default ImageMeta;\n"],"mappings":";;;;;;AAoBA,MAAM,aAAa,EAAE,aAAa,UAAU,iBAAiB,aAAoB;CAC/E,MAAM,aAAa,cAAc;AAC/B,SAAO,cAAc,UAAU,OAAO;IACrC,CAAC,UAAU,OAAO,CAAC;CAEtB,MAAM,aAAa,kBAAkB,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,OAAO,OAAO;AAClG,QAAO,oBAAC,kBAAM,GAAG,YAAY,KAAK,aAAa,eAAoB;;AAGrE,wBAAe"}
1
+ {"version":3,"file":"ImageMeta.mjs","names":[],"sources":["../src/ImageMeta.tsx"],"sourcesContent":["/**\n * Copyright (c) 2022-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useMemo } from \"react\";\nimport { Text } from \"@ndla/primitives\";\nimport type { IImageDimensionsDTO } from \"@ndla/types-backend/image-api\";\nimport { humanFileSize } from \"@ndla/util\";\n\ninterface Props {\n contentType: string;\n fileSize: number;\n imageDimensions?: IImageDimensionsDTO;\n locale: string;\n}\n\nexport const ImageMeta = ({ contentType, fileSize, imageDimensions, locale }: Props) => {\n const prettySize = useMemo(() => {\n return humanFileSize(fileSize, locale);\n }, [fileSize, locale]);\n\n const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : \"\";\n return <Text>{`${contentType} - ${prettySize}${dimensions}`}</Text>;\n};\n"],"mappings":";;;;;;AAoBA,MAAa,aAAa,EAAE,aAAa,UAAU,iBAAiB,aAAoB;CACtF,MAAM,aAAa,cAAc;AAC/B,SAAO,cAAc,UAAU,OAAO;IACrC,CAAC,UAAU,OAAO,CAAC;CAEtB,MAAM,aAAa,kBAAkB,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,OAAO,OAAO;AAClG,QAAO,oBAAC,kBAAM,GAAG,YAAY,KAAK,aAAa,eAAoB"}
@@ -1,4 +1,4 @@
1
- import ImageSearchResult from "./ImageSearchResult.mjs";
1
+ import { ImageSearchResult } from "./ImageSearchResult.mjs";
2
2
  import { useEffect, useState } from "react";
3
3
  import { Button, IconButton, Input, PaginationContext, PaginationEllipsis, PaginationItem, PaginationNextTrigger, PaginationPrevTrigger, PaginationRoot, Text } from "@ndla/primitives";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -154,8 +154,7 @@ const ImageSearch = ({ onImageSelect, searchImages: search, onError, locale, noR
154
154
  })
155
155
  ] });
156
156
  };
157
- var ImageSearch_default = ImageSearch;
158
157
 
159
158
  //#endregion
160
- export { ImageSearch_default as default };
159
+ export { ImageSearch };
161
160
  //# sourceMappingURL=ImageSearch.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSearch.mjs","names":["queryObject","image","page"],"sources":["../src/ImageSearch.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { type ChangeEvent, type ReactNode, type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ArrowLeftShortLine, ArrowRightShortLine, SearchLine } from \"@ndla/icons\";\nimport {\n Button,\n IconButton,\n Input,\n PaginationContext,\n PaginationEllipsis,\n PaginationItem,\n PaginationNextTrigger,\n PaginationPrevTrigger,\n PaginationRoot,\n Text,\n type PaginationRootProps,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO, ISearchResultV3DTO, ISearchParamsDTO } from \"@ndla/types-backend/image-api\";\nimport ImageSearchResult from \"./ImageSearchResult\";\n\nconst ImageSearchWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"small\",\n },\n});\n\nconst StyledSearchResults = styled(\"div\", {\n base: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gridGap: \"xsmall\",\n gridAutoFlow: \"dense\",\n },\n});\n\nconst InputWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xsmall\",\n },\n});\n\nconst StyledPaginationRoot = styled(PaginationRoot, {\n base: {\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledButton = styled(Button, {\n base: {\n tabletWideDown: {\n paddingInline: \"xsmall\",\n \"& span\": {\n display: \"none\",\n },\n },\n },\n});\n\nconst StyledPaginationItem = styled(PaginationItem, {\n base: {\n tabletWideDown: {\n \"&:nth-child(2)\": {\n display: \"none\",\n },\n \"&:nth-last-child(2)\": {\n display: \"none\",\n },\n },\n },\n});\n\nexport interface PreviewTranslations {\n creatorsLabel: string;\n license: string;\n caption: string;\n altText: string;\n modelRelease: string;\n tags: string;\n close: string;\n checkboxLabel?: string;\n missingTitleFallback?: string;\n useImageTitle: string;\n}\n\nexport interface ImageSearchTranslations {\n searchPlaceholder: string;\n searchButtonTitle: string;\n imagePreview: PreviewTranslations;\n paginationTranslations: PaginationRootProps[\"translations\"];\n}\n\nexport interface ImageSearchProps {\n onImageSelect: (image: IImageMetaInformationV3DTO) => void;\n searchImages: (query: string | undefined, page: number | undefined) => Promise<ISearchResultV3DTO>;\n onError?: (err: any) => void;\n locale: string;\n noResults?: ReactNode;\n checkboxAction?: (image: IImageMetaInformationV3DTO) => void;\n showCheckbox?: boolean;\n translations: ImageSearchTranslations;\n}\n\nconst ImageSearch = ({\n onImageSelect,\n searchImages: search,\n onError,\n locale,\n noResults,\n checkboxAction,\n showCheckbox,\n translations,\n}: ImageSearchProps) => {\n const [queryObject, setQueryObject] = useState<ISearchParamsDTO>({\n query: undefined,\n page: 1,\n pageSize: 16,\n });\n const [selectedImage, setSelectedImage] = useState<IImageMetaInformationV3DTO | undefined>();\n const [searching, setSearching] = useState<boolean>(false);\n const [searchResult, setSearchResult] = useState<ISearchResultV3DTO | undefined>();\n\n const { page } = queryObject;\n const noResultsFound = !searching && searchResult?.results.length === 0;\n\n const onSelectImage = (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => {\n setSelectedImage(undefined);\n if (!image) return;\n onImageSelect(image);\n if (saveAsMetaImage) {\n checkboxAction?.(image);\n }\n };\n\n const searchImages = (queryObject: ISearchParamsDTO) => {\n setSearching(true);\n search(queryObject.query, queryObject.page)\n .then((result) => {\n setQueryObject({\n query: queryObject.query,\n pageSize: result.pageSize,\n page: queryObject.page,\n });\n setSearchResult(result);\n setSearching(false);\n })\n .catch((err) => {\n onError?.(err);\n setSearching(false);\n });\n };\n\n const handleQueryChange = ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n setQueryObject((prevState) => ({\n ...prevState,\n query: value,\n }));\n };\n\n const onEnter = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\n if (e.key === \"Enter\") {\n searchImages(queryObject);\n }\n };\n\n useEffect(() => {\n searchImages(queryObject);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ImageSearchWrapper>\n <InputWrapper role=\"search\">\n <Input\n type=\"search\"\n placeholder={translations.searchPlaceholder}\n value={queryObject?.query ?? \"\"}\n onChange={handleQueryChange}\n onKeyDown={onEnter}\n />\n <IconButton\n variant=\"primary\"\n aria-label={translations.searchButtonTitle}\n title={translations.searchButtonTitle}\n onKeyDown={onEnter}\n onClick={() => searchImages(queryObject)}\n >\n <SearchLine />\n </IconButton>\n </InputWrapper>\n {!!noResultsFound && noResults}\n <StyledSearchResults>\n {searchResult?.results.map((image) => (\n <ImageSearchResult\n key={image.id}\n image={image}\n onImageClick={(image) => setSelectedImage(image)}\n selectedImage={selectedImage}\n onSelectImage={onSelectImage}\n showCheckbox={!!showCheckbox}\n translations={translations.imagePreview}\n locale={locale}\n />\n ))}\n </StyledSearchResults>\n <StyledPaginationRoot\n page={page ?? 1}\n onPageChange={(details) => searchImages({ ...queryObject, page: details.page })}\n translations={translations.paginationTranslations}\n count={searchResult?.totalCount ?? 0}\n pageSize={searchResult?.pageSize}\n hidden={noResultsFound}\n >\n <PaginationPrevTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.prevTriggerLabel}\n title={translations.paginationTranslations?.prevTriggerLabel}\n >\n <ArrowLeftShortLine />\n <span>{translations.paginationTranslations?.prevTriggerLabel}</span>\n </StyledButton>\n </PaginationPrevTrigger>\n <PaginationContext>\n {(pagination) =>\n pagination.pages.map((page, index, full) => {\n // Hide last page to not trigger RESULT_WINDOW_TOO_LARGE error\n if (index === full.length - 1) return null;\n return page.type === \"page\" ? (\n <StyledPaginationItem key={index} {...page} asChild>\n <Button variant={page.value === pagination.page ? \"primary\" : \"tertiary\"}>{page.value}</Button>\n </StyledPaginationItem>\n ) : (\n <PaginationEllipsis key={index} index={index} asChild>\n <Text asChild consumeCss>\n <div>&#8230;</div>\n </Text>\n </PaginationEllipsis>\n );\n })\n }\n </PaginationContext>\n <PaginationNextTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.nextTriggerLabel}\n title={translations.paginationTranslations?.nextTriggerLabel}\n >\n <span>{translations.paginationTranslations?.nextTriggerLabel}</span>\n <ArrowRightShortLine />\n </StyledButton>\n </PaginationNextTrigger>\n </StyledPaginationRoot>\n </ImageSearchWrapper>\n );\n};\n\nexport default ImageSearch;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ImageSearch.mjs","names":["queryObject","image","page"],"sources":["../src/ImageSearch.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { type ChangeEvent, type ReactNode, type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ArrowLeftShortLine, ArrowRightShortLine, SearchLine } from \"@ndla/icons\";\nimport {\n Button,\n IconButton,\n Input,\n PaginationContext,\n PaginationEllipsis,\n PaginationItem,\n PaginationNextTrigger,\n PaginationPrevTrigger,\n PaginationRoot,\n Text,\n type PaginationRootProps,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO, ISearchResultV3DTO, ISearchParamsDTO } from \"@ndla/types-backend/image-api\";\nimport { ImageSearchResult } from \"./ImageSearchResult\";\n\nconst ImageSearchWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"small\",\n },\n});\n\nconst StyledSearchResults = styled(\"div\", {\n base: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gridGap: \"xsmall\",\n gridAutoFlow: \"dense\",\n },\n});\n\nconst InputWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xsmall\",\n },\n});\n\nconst StyledPaginationRoot = styled(PaginationRoot, {\n base: {\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledButton = styled(Button, {\n base: {\n tabletWideDown: {\n paddingInline: \"xsmall\",\n \"& span\": {\n display: \"none\",\n },\n },\n },\n});\n\nconst StyledPaginationItem = styled(PaginationItem, {\n base: {\n tabletWideDown: {\n \"&:nth-child(2)\": {\n display: \"none\",\n },\n \"&:nth-last-child(2)\": {\n display: \"none\",\n },\n },\n },\n});\n\nexport interface PreviewTranslations {\n creatorsLabel: string;\n license: string;\n caption: string;\n altText: string;\n modelRelease: string;\n tags: string;\n close: string;\n checkboxLabel?: string;\n missingTitleFallback?: string;\n useImageTitle: string;\n}\n\nexport interface ImageSearchTranslations {\n searchPlaceholder: string;\n searchButtonTitle: string;\n imagePreview: PreviewTranslations;\n paginationTranslations: PaginationRootProps[\"translations\"];\n}\n\nexport interface ImageSearchProps {\n onImageSelect: (image: IImageMetaInformationV3DTO) => void;\n searchImages: (query: string | undefined, page: number | undefined) => Promise<ISearchResultV3DTO>;\n onError?: (err: any) => void;\n locale: string;\n noResults?: ReactNode;\n checkboxAction?: (image: IImageMetaInformationV3DTO) => void;\n showCheckbox?: boolean;\n translations: ImageSearchTranslations;\n}\n\nexport const ImageSearch = ({\n onImageSelect,\n searchImages: search,\n onError,\n locale,\n noResults,\n checkboxAction,\n showCheckbox,\n translations,\n}: ImageSearchProps) => {\n const [queryObject, setQueryObject] = useState<ISearchParamsDTO>({\n query: undefined,\n page: 1,\n pageSize: 16,\n });\n const [selectedImage, setSelectedImage] = useState<IImageMetaInformationV3DTO | undefined>();\n const [searching, setSearching] = useState<boolean>(false);\n const [searchResult, setSearchResult] = useState<ISearchResultV3DTO | undefined>();\n\n const { page } = queryObject;\n const noResultsFound = !searching && searchResult?.results.length === 0;\n\n const onSelectImage = (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => {\n setSelectedImage(undefined);\n if (!image) return;\n onImageSelect(image);\n if (saveAsMetaImage) {\n checkboxAction?.(image);\n }\n };\n\n const searchImages = (queryObject: ISearchParamsDTO) => {\n setSearching(true);\n search(queryObject.query, queryObject.page)\n .then((result) => {\n setQueryObject({\n query: queryObject.query,\n pageSize: result.pageSize,\n page: queryObject.page,\n });\n setSearchResult(result);\n setSearching(false);\n })\n .catch((err) => {\n onError?.(err);\n setSearching(false);\n });\n };\n\n const handleQueryChange = ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n setQueryObject((prevState) => ({\n ...prevState,\n query: value,\n }));\n };\n\n const onEnter = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\n if (e.key === \"Enter\") {\n searchImages(queryObject);\n }\n };\n\n useEffect(() => {\n searchImages(queryObject);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ImageSearchWrapper>\n <InputWrapper role=\"search\">\n <Input\n type=\"search\"\n placeholder={translations.searchPlaceholder}\n value={queryObject?.query ?? \"\"}\n onChange={handleQueryChange}\n onKeyDown={onEnter}\n />\n <IconButton\n variant=\"primary\"\n aria-label={translations.searchButtonTitle}\n title={translations.searchButtonTitle}\n onKeyDown={onEnter}\n onClick={() => searchImages(queryObject)}\n >\n <SearchLine />\n </IconButton>\n </InputWrapper>\n {!!noResultsFound && noResults}\n <StyledSearchResults>\n {searchResult?.results.map((image) => (\n <ImageSearchResult\n key={image.id}\n image={image}\n onImageClick={(image) => setSelectedImage(image)}\n selectedImage={selectedImage}\n onSelectImage={onSelectImage}\n showCheckbox={!!showCheckbox}\n translations={translations.imagePreview}\n locale={locale}\n />\n ))}\n </StyledSearchResults>\n <StyledPaginationRoot\n page={page ?? 1}\n onPageChange={(details) => searchImages({ ...queryObject, page: details.page })}\n translations={translations.paginationTranslations}\n count={searchResult?.totalCount ?? 0}\n pageSize={searchResult?.pageSize}\n hidden={noResultsFound}\n >\n <PaginationPrevTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.prevTriggerLabel}\n title={translations.paginationTranslations?.prevTriggerLabel}\n >\n <ArrowLeftShortLine />\n <span>{translations.paginationTranslations?.prevTriggerLabel}</span>\n </StyledButton>\n </PaginationPrevTrigger>\n <PaginationContext>\n {(pagination) =>\n pagination.pages.map((page, index, full) => {\n // Hide last page to not trigger RESULT_WINDOW_TOO_LARGE error\n if (index === full.length - 1) return null;\n return page.type === \"page\" ? (\n <StyledPaginationItem key={index} {...page} asChild>\n <Button variant={page.value === pagination.page ? \"primary\" : \"tertiary\"}>{page.value}</Button>\n </StyledPaginationItem>\n ) : (\n <PaginationEllipsis key={index} index={index} asChild>\n <Text asChild consumeCss>\n <div>&#8230;</div>\n </Text>\n </PaginationEllipsis>\n );\n })\n }\n </PaginationContext>\n <PaginationNextTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.nextTriggerLabel}\n title={translations.paginationTranslations?.nextTriggerLabel}\n >\n <span>{translations.paginationTranslations?.nextTriggerLabel}</span>\n <ArrowRightShortLine />\n </StyledButton>\n </PaginationNextTrigger>\n </StyledPaginationRoot>\n </ImageSearchWrapper>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { getPreviewSrcSets } from "./util/imageUtil.mjs";
2
- import PreviewImage_default from "./PreviewImage.mjs";
2
+ import { PreviewImage } from "./PreviewImage.mjs";
3
3
  import { Button, Image, Text } from "@ndla/primitives";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { styled } from "@ndla/styled-system/jsx";
@@ -16,7 +16,7 @@ const StyledImage = styled(Image, { base: {
16
16
  height: "100%"
17
17
  } });
18
18
  const StyledText = styled(Text, { base: { lineClamp: "3" } });
19
- function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale }) {
19
+ const ImageSearchResult = ({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale }) => {
20
20
  const isSelectedImage = selectedImage?.id === image.id;
21
21
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(StyledButton, {
22
22
  variant: isSelectedImage ? "secondary" : "tertiary",
@@ -35,7 +35,7 @@ function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage,
35
35
  consumeCss: true,
36
36
  children: /* @__PURE__ */ jsx("span", { children: image.title.title.trim() ? image.title.title : translations.missingTitleFallback ?? `ID: ${image.id}` })
37
37
  })]
38
- }), isSelectedImage ? /* @__PURE__ */ jsx(PreviewImage_default, {
38
+ }), isSelectedImage ? /* @__PURE__ */ jsx(PreviewImage, {
39
39
  id: `image-preview-${image.id}`,
40
40
  image: selectedImage,
41
41
  onSelectImage,
@@ -43,8 +43,8 @@ function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage,
43
43
  showCheckbox,
44
44
  locale
45
45
  }) : null] });
46
- }
46
+ };
47
47
 
48
48
  //#endregion
49
- export { ImageSearchResult as default };
49
+ export { ImageSearchResult };
50
50
  //# sourceMappingURL=ImageSearchResult.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSearchResult.mjs","names":["PreviewImage"],"sources":["../src/ImageSearchResult.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { Text, Image, Button } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport PreviewImage from \"./PreviewImage\";\nimport { getPreviewSrcSets } from \"./util/imageUtil\";\n\nconst StyledButton = styled(Button, {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n borderColor: \"stroke.subtle\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"135px\",\n width: \"100%\",\n height: \"100%\",\n },\n});\n\nconst StyledText = styled(Text, {\n base: {\n lineClamp: \"3\",\n },\n});\n\ninterface Props {\n image: IImageMetaInformationV3DTO;\n onImageClick: (image: IImageMetaInformationV3DTO) => void;\n selectedImage?: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport default function ImageSearchResult({\n image,\n onImageClick,\n selectedImage,\n onSelectImage,\n showCheckbox,\n translations,\n locale,\n}: Props) {\n const isSelectedImage = selectedImage?.id === image.id;\n return (\n <>\n <StyledButton\n variant={isSelectedImage ? \"secondary\" : \"tertiary\"}\n data-testid=\"select-image-from-list\"\n onClick={() => onImageClick(image)}\n aria-expanded={isSelectedImage}\n aria-controls={`image-preview-${image.id}`}\n >\n <StyledImage\n alt=\"\"\n srcSet={getPreviewSrcSets(image.image.imageUrl)}\n src={image.image.imageUrl}\n variant=\"rounded\"\n />\n <StyledText textStyle=\"label.medium\" asChild consumeCss>\n <span>\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </span>\n </StyledText>\n </StyledButton>\n {isSelectedImage ? (\n <PreviewImage\n id={`image-preview-${image.id}`}\n image={selectedImage}\n onSelectImage={onSelectImage}\n translations={translations}\n showCheckbox={showCheckbox}\n locale={locale}\n />\n ) : null}\n </>\n );\n}\n"],"mappings":";;;;;;;AAeA,MAAM,eAAe,OAAO,QAAQ,EAClC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,aAAa;CACd,EACF,CAAC;AAEF,MAAM,cAAc,OAAO,OAAO,EAChC,MAAM;CACJ,WAAW;CACX,OAAO;CACP,QAAQ;CACT,EACF,CAAC;AAEF,MAAM,aAAa,OAAO,MAAM,EAC9B,MAAM,EACJ,WAAW,KACZ,EACF,CAAC;AAYF,SAAwB,kBAAkB,EACxC,OACA,cACA,eACA,eACA,cACA,cACA,UACQ;CACR,MAAM,kBAAkB,eAAe,OAAO,MAAM;AACpD,QACE,4CACE,qBAAC;EACC,SAAS,kBAAkB,cAAc;EACzC,eAAY;EACZ,eAAe,aAAa,MAAM;EAClC,iBAAe;EACf,iBAAe,iBAAiB,MAAM;aAEtC,oBAAC;GACC,KAAI;GACJ,QAAQ,kBAAkB,MAAM,MAAM,SAAS;GAC/C,KAAK,MAAM,MAAM;GACjB,SAAQ;IACR,EACF,oBAAC;GAAW,WAAU;GAAe;GAAQ;aAC3C,oBAAC,oBACE,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,QAAS,aAAa,wBAAwB,OAAO,MAAM,OAC9F;IACI;GACA,EACd,kBACC,oBAACA;EACC,IAAI,iBAAiB,MAAM;EAC3B,OAAO;EACQ;EACD;EACA;EACN;GACR,GACA,QACH"}
1
+ {"version":3,"file":"ImageSearchResult.mjs","names":[],"sources":["../src/ImageSearchResult.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { Text, Image, Button } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { PreviewImage } from \"./PreviewImage\";\nimport { getPreviewSrcSets } from \"./util/imageUtil\";\n\nconst StyledButton = styled(Button, {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n borderColor: \"stroke.subtle\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"135px\",\n width: \"100%\",\n height: \"100%\",\n },\n});\n\nconst StyledText = styled(Text, {\n base: {\n lineClamp: \"3\",\n },\n});\n\ninterface Props {\n image: IImageMetaInformationV3DTO;\n onImageClick: (image: IImageMetaInformationV3DTO) => void;\n selectedImage?: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport const ImageSearchResult = ({\n image,\n onImageClick,\n selectedImage,\n onSelectImage,\n showCheckbox,\n translations,\n locale,\n}: Props) => {\n const isSelectedImage = selectedImage?.id === image.id;\n return (\n <>\n <StyledButton\n variant={isSelectedImage ? \"secondary\" : \"tertiary\"}\n data-testid=\"select-image-from-list\"\n onClick={() => onImageClick(image)}\n aria-expanded={isSelectedImage}\n aria-controls={`image-preview-${image.id}`}\n >\n <StyledImage\n alt=\"\"\n srcSet={getPreviewSrcSets(image.image.imageUrl)}\n src={image.image.imageUrl}\n variant=\"rounded\"\n />\n <StyledText textStyle=\"label.medium\" asChild consumeCss>\n <span>\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </span>\n </StyledText>\n </StyledButton>\n {isSelectedImage ? (\n <PreviewImage\n id={`image-preview-${image.id}`}\n image={selectedImage}\n onSelectImage={onSelectImage}\n translations={translations}\n showCheckbox={showCheckbox}\n locale={locale}\n />\n ) : null}\n </>\n );\n};\n"],"mappings":";;;;;;;AAeA,MAAM,eAAe,OAAO,QAAQ,EAClC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,aAAa;CACd,EACF,CAAC;AAEF,MAAM,cAAc,OAAO,OAAO,EAChC,MAAM;CACJ,WAAW;CACX,OAAO;CACP,QAAQ;CACT,EACF,CAAC;AAEF,MAAM,aAAa,OAAO,MAAM,EAC9B,MAAM,EACJ,WAAW,KACZ,EACF,CAAC;AAYF,MAAa,qBAAqB,EAChC,OACA,cACA,eACA,eACA,cACA,cACA,aACW;CACX,MAAM,kBAAkB,eAAe,OAAO,MAAM;AACpD,QACE,4CACE,qBAAC;EACC,SAAS,kBAAkB,cAAc;EACzC,eAAY;EACZ,eAAe,aAAa,MAAM;EAClC,iBAAe;EACf,iBAAe,iBAAiB,MAAM;aAEtC,oBAAC;GACC,KAAI;GACJ,QAAQ,kBAAkB,MAAM,MAAM,SAAS;GAC/C,KAAK,MAAM,MAAM;GACjB,SAAQ;IACR,EACF,oBAAC;GAAW,WAAU;GAAe;GAAQ;aAC3C,oBAAC,oBACE,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,QAAS,aAAa,wBAAwB,OAAO,MAAM,OAC9F;IACI;GACA,EACd,kBACC,oBAAC;EACC,IAAI,iBAAiB,MAAM;EAC3B,OAAO;EACQ;EACD;EACA;EACN;GACR,GACA,QACH"}
@@ -1,4 +1,4 @@
1
- import ImageMeta_default from "./ImageMeta.mjs";
1
+ import { ImageMeta } from "./ImageMeta.mjs";
2
2
  import { getSrcSets } from "./util/imageUtil.mjs";
3
3
  import { useState } from "react";
4
4
  import { Button, CheckboxControl, CheckboxHiddenInput, CheckboxIndicator, CheckboxLabel, CheckboxRoot, FieldRoot, IconButton, Image, Text } from "@ndla/primitives";
@@ -87,7 +87,7 @@ const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, lo
87
87
  image.alttext.alttext
88
88
  ] }),
89
89
  !!image.modelRelease.trim() && /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsx("b", { children: `${translations.modelRelease}: ` }), getModelReleaseValue(image.modelRelease, locale)] }),
90
- /* @__PURE__ */ jsx(ImageMeta_default, {
90
+ /* @__PURE__ */ jsx(ImageMeta, {
91
91
  contentType: image.image.contentType,
92
92
  fileSize: image.image.size,
93
93
  imageDimensions: image.image.dimensions,
@@ -118,8 +118,7 @@ const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, lo
118
118
  }) })] })] })]
119
119
  });
120
120
  };
121
- var PreviewImage_default = PreviewImage;
122
121
 
123
122
  //#endregion
124
- export { PreviewImage_default as default };
123
+ export { PreviewImage };
125
124
  //# sourceMappingURL=PreviewImage.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewImage.mjs","names":["ImageMeta"],"sources":["../src/PreviewImage.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useState } from \"react\";\nimport { CloseLine, HashTag, CheckLine } from \"@ndla/icons\";\nimport { getModelReleaseValue } from \"@ndla/licenses\";\nimport {\n Button,\n CheckboxControl,\n CheckboxHiddenInput,\n CheckboxIndicator,\n CheckboxLabel,\n CheckboxRoot,\n Text,\n Image,\n IconButton,\n FieldRoot,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport ImageMeta from \"./ImageMeta\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { getSrcSets } from \"./util/imageUtil\";\n\nconst ImageContainer = styled(\"div\", {\n base: {\n flexShrink: \"0\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"surface.xsmall\",\n },\n});\n\nconst StyledImageMetadata = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"xxsmall\",\n },\n});\n\nconst HashTagWrapper = styled(\"ul\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst HashTagGroup = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledTagItem = styled(\"li\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nconst StyledPreview = styled(\"div\", {\n base: {\n display: \"flex\",\n gridColumn: \"1 / -1\",\n borderColor: \"stroke.default\",\n border: \"1px solid\",\n borderRadius: \"xsmall\",\n gap: \"small\",\n padding: \"small\",\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n },\n});\n\nconst StyledTopRow = styled(\"div\", {\n base: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"2\",\n },\n});\n\nconst ActionsWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"small\",\n marginBlockEnd: \"medium\",\n },\n});\n\nconst StyledFieldRoot = styled(FieldRoot, {\n base: { alignSelf: \"center\" },\n});\n\ninterface Props {\n id: string;\n image: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nconst PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => {\n const [saveAsMetaImage, setSaveAsMetaImage] = useState(false);\n\n return (\n <StyledPreview id={id}>\n <ImageContainer>\n <StyledImage\n alt=\"\"\n srcSet={getSrcSets(image.image.imageUrl)}\n sizes=\"(min-width: 800px) 360px, (min-width: 400px) 300px, 100vw\"\n src={image.image.imageUrl}\n aria-label={image.title.title}\n variant=\"rounded\"\n />\n </ImageContainer>\n <ContentWrapper>\n <StyledImageMetadata>\n <StyledTopRow>\n <Text textStyle=\"title.medium\">\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </Text>\n <IconButton\n variant=\"tertiary\"\n onClick={() => onSelectImage(undefined)}\n aria-label={translations.close}\n title={translations.close}\n >\n <CloseLine />\n </IconButton>\n </StyledTopRow>\n {!!image.copyright.creators.length && (\n <Text>\n <b>{`${translations.creatorsLabel}: `}</b>\n {image.copyright.creators.map((creator) => creator.name).join(\", \")}\n </Text>\n )}\n {!!image.copyright.license.description?.trim() && (\n <Text>\n <b>{`${translations.license}: `}</b>\n {image.copyright.license.description}\n </Text>\n )}\n {!!image.caption.caption.trim() && (\n <Text>\n <b>{`${translations.caption}: `}</b>\n {image.caption.caption}\n </Text>\n )}\n {!!image.alttext.alttext.trim() && (\n <Text>\n <b>{`${translations.altText}:`}</b> {image.alttext.alttext}\n </Text>\n )}\n {!!image.modelRelease.trim() && (\n <Text>\n <b>{`${translations.modelRelease}: `}</b>\n {getModelReleaseValue(image.modelRelease, locale)}\n </Text>\n )}\n <ImageMeta\n contentType={image.image.contentType}\n fileSize={image.image.size}\n imageDimensions={image.image.dimensions}\n locale={locale}\n />\n {!!image.tags.tags.length && (\n <HashTagGroup>\n <Text id=\"tags-title\">\n <b>{`${translations.tags}: `}</b>\n </Text>\n <HashTagWrapper aria-describedby=\"tags-title\">\n {image.tags.tags.map((tag) => (\n <StyledTagItem key={tag}>\n <HashTag size=\"small\" />\n {tag}\n </StyledTagItem>\n ))}\n </HashTagWrapper>\n </HashTagGroup>\n )}\n </StyledImageMetadata>\n <ActionsWrapper>\n <Button data-testid=\"use-image\" onClick={() => onSelectImage(image, saveAsMetaImage)}>\n {translations.useImageTitle}\n </Button>\n {!!showCheckbox && (\n <StyledFieldRoot>\n <CheckboxRoot checked={saveAsMetaImage} onCheckedChange={() => setSaveAsMetaImage((prev) => !prev)}>\n <CheckboxControl>\n <CheckboxIndicator asChild>\n <CheckLine />\n </CheckboxIndicator>\n </CheckboxControl>\n <CheckboxLabel>{translations.checkboxLabel}</CheckboxLabel>\n <CheckboxHiddenInput />\n </CheckboxRoot>\n </StyledFieldRoot>\n )}\n </ActionsWrapper>\n </ContentWrapper>\n </StyledPreview>\n );\n};\n\nexport default PreviewImage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewImage.mjs","names":[],"sources":["../src/PreviewImage.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useState } from \"react\";\nimport { CloseLine, HashTag, CheckLine } from \"@ndla/icons\";\nimport { getModelReleaseValue } from \"@ndla/licenses\";\nimport {\n Button,\n CheckboxControl,\n CheckboxHiddenInput,\n CheckboxIndicator,\n CheckboxLabel,\n CheckboxRoot,\n Text,\n Image,\n IconButton,\n FieldRoot,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport { ImageMeta } from \"./ImageMeta\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { getSrcSets } from \"./util/imageUtil\";\n\nconst ImageContainer = styled(\"div\", {\n base: {\n flexShrink: \"0\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"surface.xsmall\",\n },\n});\n\nconst StyledImageMetadata = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"xxsmall\",\n },\n});\n\nconst HashTagWrapper = styled(\"ul\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst HashTagGroup = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledTagItem = styled(\"li\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nconst StyledPreview = styled(\"div\", {\n base: {\n display: \"flex\",\n gridColumn: \"1 / -1\",\n borderColor: \"stroke.default\",\n border: \"1px solid\",\n borderRadius: \"xsmall\",\n gap: \"small\",\n padding: \"small\",\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n },\n});\n\nconst StyledTopRow = styled(\"div\", {\n base: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"2\",\n },\n});\n\nconst ActionsWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"small\",\n marginBlockEnd: \"medium\",\n },\n});\n\nconst StyledFieldRoot = styled(FieldRoot, {\n base: { alignSelf: \"center\" },\n});\n\ninterface Props {\n id: string;\n image: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => {\n const [saveAsMetaImage, setSaveAsMetaImage] = useState(false);\n\n return (\n <StyledPreview id={id}>\n <ImageContainer>\n <StyledImage\n alt=\"\"\n srcSet={getSrcSets(image.image.imageUrl)}\n sizes=\"(min-width: 800px) 360px, (min-width: 400px) 300px, 100vw\"\n src={image.image.imageUrl}\n aria-label={image.title.title}\n variant=\"rounded\"\n />\n </ImageContainer>\n <ContentWrapper>\n <StyledImageMetadata>\n <StyledTopRow>\n <Text textStyle=\"title.medium\">\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </Text>\n <IconButton\n variant=\"tertiary\"\n onClick={() => onSelectImage(undefined)}\n aria-label={translations.close}\n title={translations.close}\n >\n <CloseLine />\n </IconButton>\n </StyledTopRow>\n {!!image.copyright.creators.length && (\n <Text>\n <b>{`${translations.creatorsLabel}: `}</b>\n {image.copyright.creators.map((creator) => creator.name).join(\", \")}\n </Text>\n )}\n {!!image.copyright.license.description?.trim() && (\n <Text>\n <b>{`${translations.license}: `}</b>\n {image.copyright.license.description}\n </Text>\n )}\n {!!image.caption.caption.trim() && (\n <Text>\n <b>{`${translations.caption}: `}</b>\n {image.caption.caption}\n </Text>\n )}\n {!!image.alttext.alttext.trim() && (\n <Text>\n <b>{`${translations.altText}:`}</b> {image.alttext.alttext}\n </Text>\n )}\n {!!image.modelRelease.trim() && (\n <Text>\n <b>{`${translations.modelRelease}: `}</b>\n {getModelReleaseValue(image.modelRelease, locale)}\n </Text>\n )}\n <ImageMeta\n contentType={image.image.contentType}\n fileSize={image.image.size}\n imageDimensions={image.image.dimensions}\n locale={locale}\n />\n {!!image.tags.tags.length && (\n <HashTagGroup>\n <Text id=\"tags-title\">\n <b>{`${translations.tags}: `}</b>\n </Text>\n <HashTagWrapper aria-describedby=\"tags-title\">\n {image.tags.tags.map((tag) => (\n <StyledTagItem key={tag}>\n <HashTag size=\"small\" />\n {tag}\n </StyledTagItem>\n ))}\n </HashTagWrapper>\n </HashTagGroup>\n )}\n </StyledImageMetadata>\n <ActionsWrapper>\n <Button data-testid=\"use-image\" onClick={() => onSelectImage(image, saveAsMetaImage)}>\n {translations.useImageTitle}\n </Button>\n {!!showCheckbox && (\n <StyledFieldRoot>\n <CheckboxRoot checked={saveAsMetaImage} onCheckedChange={() => setSaveAsMetaImage((prev) => !prev)}>\n <CheckboxControl>\n <CheckboxIndicator asChild>\n <CheckLine />\n </CheckboxIndicator>\n </CheckboxControl>\n <CheckboxLabel>{translations.checkboxLabel}</CheckboxLabel>\n <CheckboxHiddenInput />\n </CheckboxRoot>\n </StyledFieldRoot>\n )}\n </ActionsWrapper>\n </ContentWrapper>\n </StyledPreview>\n );\n};\n"],"mappings":";;;;;;;;;;AA6BA,MAAM,iBAAiB,OAAO,OAAO,EACnC,MAAM,EACJ,YAAY,KACb,EACF,CAAC;AAEF,MAAM,cAAc,OAAO,OAAO,EAChC,MAAM,EACJ,WAAW,kBACZ,EACF,CAAC;AAEF,MAAM,sBAAsB,OAAO,OAAO,EACxC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACN,EACF,CAAC;AAEF,MAAM,iBAAiB,OAAO,MAAM,EAClC,MAAM;CACJ,SAAS;CACT,KAAK;CACL,UAAU;CACX,EACF,CAAC;AAEF,MAAM,eAAe,OAAO,OAAO,EACjC,MAAM;CACJ,SAAS;CACT,KAAK;CACL,UAAU;CACX,EACF,CAAC;AAEF,MAAM,gBAAgB,OAAO,MAAM,EACjC,MAAM;CACJ,SAAS;CACT,YAAY;CACb,EACF,CAAC;AAEF,MAAM,gBAAgB,OAAO,OAAO,EAClC,MAAM;CACJ,SAAS;CACT,YAAY;CACZ,aAAa;CACb,QAAQ;CACR,cAAc;CACd,KAAK;CACL,SAAS;CACT,UAAU;CACV,UAAU;CACX,EACF,CAAC;AAEF,MAAM,eAAe,OAAO,OAAO,EACjC,MAAM;CACJ,SAAS;CACT,gBAAgB;CACjB,EACF,CAAC;AAEF,MAAM,iBAAiB,OAAO,OAAO,EACnC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACL,MAAM;CACP,EACF,CAAC;AAEF,MAAM,iBAAiB,OAAO,OAAO,EACnC,MAAM;CACJ,SAAS;CACT,KAAK;CACL,gBAAgB;CACjB,EACF,CAAC;AAEF,MAAM,kBAAkB,OAAO,WAAW,EACxC,MAAM,EAAE,WAAW,UAAU,EAC9B,CAAC;AAWF,MAAa,gBAAgB,EAAE,IAAI,OAAO,eAAe,cAAc,cAAc,aAAoB;CACvG,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,MAAM;AAE7D,QACE,qBAAC;EAAkB;aACjB,oBAAC,4BACC,oBAAC;GACC,KAAI;GACJ,QAAQ,WAAW,MAAM,MAAM,SAAS;GACxC,OAAM;GACN,KAAK,MAAM,MAAM;GACjB,cAAY,MAAM,MAAM;GACxB,SAAQ;IACR,GACa,EACjB,qBAAC,6BACC,qBAAC;GACC,qBAAC,2BACC,oBAAC;IAAK,WAAU;cACb,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,QAAS,aAAa,wBAAwB,OAAO,MAAM;KAC9F,EACP,oBAAC;IACC,SAAQ;IACR,eAAe,cAAc,OAAU;IACvC,cAAY,aAAa;IACzB,OAAO,aAAa;cAEpB,oBAAC,cAAY;KACF,IACA;GACd,CAAC,CAAC,MAAM,UAAU,SAAS,UAC1B,qBAAC,mBACC,oBAAC,iBAAG,GAAG,aAAa,cAAc,MAAQ,EACzC,MAAM,UAAU,SAAS,KAAK,YAAY,QAAQ,KAAK,CAAC,KAAK,KAAK,IAC9D;GAER,CAAC,CAAC,MAAM,UAAU,QAAQ,aAAa,MAAM,IAC5C,qBAAC,mBACC,oBAAC,iBAAG,GAAG,aAAa,QAAQ,MAAQ,EACnC,MAAM,UAAU,QAAQ,eACpB;GAER,CAAC,CAAC,MAAM,QAAQ,QAAQ,MAAM,IAC7B,qBAAC,mBACC,oBAAC,iBAAG,GAAG,aAAa,QAAQ,MAAQ,EACnC,MAAM,QAAQ,WACV;GAER,CAAC,CAAC,MAAM,QAAQ,QAAQ,MAAM,IAC7B,qBAAC;IACC,oBAAC,iBAAG,GAAG,aAAa,QAAQ,KAAO;;IAAE,MAAM,QAAQ;OAC9C;GAER,CAAC,CAAC,MAAM,aAAa,MAAM,IAC1B,qBAAC,mBACC,oBAAC,iBAAG,GAAG,aAAa,aAAa,MAAQ,EACxC,qBAAqB,MAAM,cAAc,OAAO,IAC5C;GAET,oBAAC;IACC,aAAa,MAAM,MAAM;IACzB,UAAU,MAAM,MAAM;IACtB,iBAAiB,MAAM,MAAM;IACrB;KACR;GACD,CAAC,CAAC,MAAM,KAAK,KAAK,UACjB,qBAAC,2BACC,oBAAC;IAAK,IAAG;cACP,oBAAC,iBAAG,GAAG,aAAa,KAAK,MAAQ;KAC5B,EACP,oBAAC;IAAe,oBAAiB;cAC9B,MAAM,KAAK,KAAK,KAAK,QACpB,qBAAC,4BACC,oBAAC,WAAQ,MAAK,UAAU,EACvB,QAFiB,IAGJ,CAChB;KACa,IACJ;MAEG,EACtB,qBAAC,6BACC,oBAAC;GAAO,eAAY;GAAY,eAAe,cAAc,OAAO,gBAAgB;aACjF,aAAa;IACP,EACR,CAAC,CAAC,gBACD,oBAAC,6BACC,qBAAC;GAAa,SAAS;GAAiB,uBAAuB,oBAAoB,SAAS,CAAC,KAAK;;IAChG,oBAAC,6BACC,oBAAC;KAAkB;eACjB,oBAAC,cAAY;MACK,GACJ;IAClB,oBAAC,2BAAe,aAAa,gBAA8B;IAC3D,oBAAC,wBAAsB;;IACV,GACC,IAEL,IACF;GACH"}
package/es/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import ImageMeta_default from "./ImageMeta.mjs";
2
- import ImageSearch_default from "./ImageSearch.mjs";
1
+ import { ImageMeta } from "./ImageMeta.mjs";
2
+ import { ImageSearch } from "./ImageSearch.mjs";
3
3
 
4
- export { ImageMeta_default as ImageMeta, ImageSearch_default as ImageSearch };
4
+ export { ImageMeta, ImageSearch };
@@ -12,5 +12,5 @@ interface Props {
12
12
  imageDimensions?: IImageDimensionsDTO;
13
13
  locale: string;
14
14
  }
15
- declare const ImageMeta: ({ contentType, fileSize, imageDimensions, locale }: Props) => import("react/jsx-runtime").JSX.Element;
16
- export default ImageMeta;
15
+ export declare const ImageMeta: ({ contentType, fileSize, imageDimensions, locale }: Props) => import("react/jsx-runtime").JSX.Element;
16
+ export {};
package/lib/ImageMeta.js CHANGED
@@ -16,8 +16,7 @@ const ImageMeta = ({ contentType, fileSize, imageDimensions, locale }) => {
16
16
  const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : "";
17
17
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__ndla_primitives.Text, { children: `${contentType} - ${prettySize}${dimensions}` });
18
18
  };
19
- var ImageMeta_default = ImageMeta;
20
19
 
21
20
  //#endregion
22
- exports.default = ImageMeta_default;
21
+ exports.ImageMeta = ImageMeta;
23
22
  //# sourceMappingURL=ImageMeta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageMeta.js","names":["Text"],"sources":["../src/ImageMeta.tsx"],"sourcesContent":["/**\n * Copyright (c) 2022-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useMemo } from \"react\";\nimport { Text } from \"@ndla/primitives\";\nimport type { IImageDimensionsDTO } from \"@ndla/types-backend/image-api\";\nimport { humanFileSize } from \"@ndla/util\";\n\ninterface Props {\n contentType: string;\n fileSize: number;\n imageDimensions?: IImageDimensionsDTO;\n locale: string;\n}\n\nconst ImageMeta = ({ contentType, fileSize, imageDimensions, locale }: Props) => {\n const prettySize = useMemo(() => {\n return humanFileSize(fileSize, locale);\n }, [fileSize, locale]);\n\n const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : \"\";\n return <Text>{`${contentType} - ${prettySize}${dimensions}`}</Text>;\n};\n\nexport default ImageMeta;\n"],"mappings":";;;;;;;;;;;AAoBA,MAAM,aAAa,EAAE,aAAa,UAAU,iBAAiB,aAAoB;CAC/E,MAAM,sCAA2B;AAC/B,wCAAqB,UAAU,OAAO;IACrC,CAAC,UAAU,OAAO,CAAC;CAEtB,MAAM,aAAa,kBAAkB,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,OAAO,OAAO;AAClG,QAAO,2CAACA,oCAAM,GAAG,YAAY,KAAK,aAAa,eAAoB;;AAGrE,wBAAe"}
1
+ {"version":3,"file":"ImageMeta.js","names":["Text"],"sources":["../src/ImageMeta.tsx"],"sourcesContent":["/**\n * Copyright (c) 2022-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useMemo } from \"react\";\nimport { Text } from \"@ndla/primitives\";\nimport type { IImageDimensionsDTO } from \"@ndla/types-backend/image-api\";\nimport { humanFileSize } from \"@ndla/util\";\n\ninterface Props {\n contentType: string;\n fileSize: number;\n imageDimensions?: IImageDimensionsDTO;\n locale: string;\n}\n\nexport const ImageMeta = ({ contentType, fileSize, imageDimensions, locale }: Props) => {\n const prettySize = useMemo(() => {\n return humanFileSize(fileSize, locale);\n }, [fileSize, locale]);\n\n const dimensions = imageDimensions ? ` - ${imageDimensions.width}x${imageDimensions.height} px` : \"\";\n return <Text>{`${contentType} - ${prettySize}${dimensions}`}</Text>;\n};\n"],"mappings":";;;;;;;;;;;AAoBA,MAAa,aAAa,EAAE,aAAa,UAAU,iBAAiB,aAAoB;CACtF,MAAM,sCAA2B;AAC/B,wCAAqB,UAAU,OAAO;IACrC,CAAC,UAAU,OAAO,CAAC;CAEtB,MAAM,aAAa,kBAAkB,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,OAAO,OAAO;AAClG,QAAO,2CAACA,oCAAM,GAAG,YAAY,KAAK,aAAa,eAAoB"}
@@ -36,5 +36,4 @@ export interface ImageSearchProps {
36
36
  showCheckbox?: boolean;
37
37
  translations: ImageSearchTranslations;
38
38
  }
39
- declare const ImageSearch: ({ onImageSelect, searchImages: search, onError, locale, noResults, checkboxAction, showCheckbox, translations, }: ImageSearchProps) => import("react/jsx-runtime").JSX.Element;
40
- export default ImageSearch;
39
+ export declare const ImageSearch: ({ onImageSelect, searchImages: search, onError, locale, noResults, checkboxAction, showCheckbox, translations, }: ImageSearchProps) => import("react/jsx-runtime").JSX.Element;
@@ -99,7 +99,7 @@ const ImageSearch = ({ onImageSelect, searchImages: search, onError, locale, noR
99
99
  })]
100
100
  }),
101
101
  !!noResultsFound && noResults,
102
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledSearchResults, { children: searchResult?.results.map((image) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ImageSearchResult.default, {
102
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledSearchResults, { children: searchResult?.results.map((image) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ImageSearchResult.ImageSearchResult, {
103
103
  image,
104
104
  onImageClick: (image$1) => setSelectedImage(image$1),
105
105
  selectedImage,
@@ -160,8 +160,7 @@ const ImageSearch = ({ onImageSelect, searchImages: search, onError, locale, noR
160
160
  })
161
161
  ] });
162
162
  };
163
- var ImageSearch_default = ImageSearch;
164
163
 
165
164
  //#endregion
166
- exports.default = ImageSearch_default;
165
+ exports.ImageSearch = ImageSearch;
167
166
  //# sourceMappingURL=ImageSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSearch.js","names":["PaginationRoot","Button","PaginationItem","queryObject","Input","IconButton","SearchLine","ImageSearchResult","image","PaginationPrevTrigger","ArrowLeftShortLine","PaginationContext","page","PaginationEllipsis","Text","PaginationNextTrigger","ArrowRightShortLine"],"sources":["../src/ImageSearch.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { type ChangeEvent, type ReactNode, type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ArrowLeftShortLine, ArrowRightShortLine, SearchLine } from \"@ndla/icons\";\nimport {\n Button,\n IconButton,\n Input,\n PaginationContext,\n PaginationEllipsis,\n PaginationItem,\n PaginationNextTrigger,\n PaginationPrevTrigger,\n PaginationRoot,\n Text,\n type PaginationRootProps,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO, ISearchResultV3DTO, ISearchParamsDTO } from \"@ndla/types-backend/image-api\";\nimport ImageSearchResult from \"./ImageSearchResult\";\n\nconst ImageSearchWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"small\",\n },\n});\n\nconst StyledSearchResults = styled(\"div\", {\n base: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gridGap: \"xsmall\",\n gridAutoFlow: \"dense\",\n },\n});\n\nconst InputWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xsmall\",\n },\n});\n\nconst StyledPaginationRoot = styled(PaginationRoot, {\n base: {\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledButton = styled(Button, {\n base: {\n tabletWideDown: {\n paddingInline: \"xsmall\",\n \"& span\": {\n display: \"none\",\n },\n },\n },\n});\n\nconst StyledPaginationItem = styled(PaginationItem, {\n base: {\n tabletWideDown: {\n \"&:nth-child(2)\": {\n display: \"none\",\n },\n \"&:nth-last-child(2)\": {\n display: \"none\",\n },\n },\n },\n});\n\nexport interface PreviewTranslations {\n creatorsLabel: string;\n license: string;\n caption: string;\n altText: string;\n modelRelease: string;\n tags: string;\n close: string;\n checkboxLabel?: string;\n missingTitleFallback?: string;\n useImageTitle: string;\n}\n\nexport interface ImageSearchTranslations {\n searchPlaceholder: string;\n searchButtonTitle: string;\n imagePreview: PreviewTranslations;\n paginationTranslations: PaginationRootProps[\"translations\"];\n}\n\nexport interface ImageSearchProps {\n onImageSelect: (image: IImageMetaInformationV3DTO) => void;\n searchImages: (query: string | undefined, page: number | undefined) => Promise<ISearchResultV3DTO>;\n onError?: (err: any) => void;\n locale: string;\n noResults?: ReactNode;\n checkboxAction?: (image: IImageMetaInformationV3DTO) => void;\n showCheckbox?: boolean;\n translations: ImageSearchTranslations;\n}\n\nconst ImageSearch = ({\n onImageSelect,\n searchImages: search,\n onError,\n locale,\n noResults,\n checkboxAction,\n showCheckbox,\n translations,\n}: ImageSearchProps) => {\n const [queryObject, setQueryObject] = useState<ISearchParamsDTO>({\n query: undefined,\n page: 1,\n pageSize: 16,\n });\n const [selectedImage, setSelectedImage] = useState<IImageMetaInformationV3DTO | undefined>();\n const [searching, setSearching] = useState<boolean>(false);\n const [searchResult, setSearchResult] = useState<ISearchResultV3DTO | undefined>();\n\n const { page } = queryObject;\n const noResultsFound = !searching && searchResult?.results.length === 0;\n\n const onSelectImage = (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => {\n setSelectedImage(undefined);\n if (!image) return;\n onImageSelect(image);\n if (saveAsMetaImage) {\n checkboxAction?.(image);\n }\n };\n\n const searchImages = (queryObject: ISearchParamsDTO) => {\n setSearching(true);\n search(queryObject.query, queryObject.page)\n .then((result) => {\n setQueryObject({\n query: queryObject.query,\n pageSize: result.pageSize,\n page: queryObject.page,\n });\n setSearchResult(result);\n setSearching(false);\n })\n .catch((err) => {\n onError?.(err);\n setSearching(false);\n });\n };\n\n const handleQueryChange = ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n setQueryObject((prevState) => ({\n ...prevState,\n query: value,\n }));\n };\n\n const onEnter = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\n if (e.key === \"Enter\") {\n searchImages(queryObject);\n }\n };\n\n useEffect(() => {\n searchImages(queryObject);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ImageSearchWrapper>\n <InputWrapper role=\"search\">\n <Input\n type=\"search\"\n placeholder={translations.searchPlaceholder}\n value={queryObject?.query ?? \"\"}\n onChange={handleQueryChange}\n onKeyDown={onEnter}\n />\n <IconButton\n variant=\"primary\"\n aria-label={translations.searchButtonTitle}\n title={translations.searchButtonTitle}\n onKeyDown={onEnter}\n onClick={() => searchImages(queryObject)}\n >\n <SearchLine />\n </IconButton>\n </InputWrapper>\n {!!noResultsFound && noResults}\n <StyledSearchResults>\n {searchResult?.results.map((image) => (\n <ImageSearchResult\n key={image.id}\n image={image}\n onImageClick={(image) => setSelectedImage(image)}\n selectedImage={selectedImage}\n onSelectImage={onSelectImage}\n showCheckbox={!!showCheckbox}\n translations={translations.imagePreview}\n locale={locale}\n />\n ))}\n </StyledSearchResults>\n <StyledPaginationRoot\n page={page ?? 1}\n onPageChange={(details) => searchImages({ ...queryObject, page: details.page })}\n translations={translations.paginationTranslations}\n count={searchResult?.totalCount ?? 0}\n pageSize={searchResult?.pageSize}\n hidden={noResultsFound}\n >\n <PaginationPrevTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.prevTriggerLabel}\n title={translations.paginationTranslations?.prevTriggerLabel}\n >\n <ArrowLeftShortLine />\n <span>{translations.paginationTranslations?.prevTriggerLabel}</span>\n </StyledButton>\n </PaginationPrevTrigger>\n <PaginationContext>\n {(pagination) =>\n pagination.pages.map((page, index, full) => {\n // Hide last page to not trigger RESULT_WINDOW_TOO_LARGE error\n if (index === full.length - 1) return null;\n return page.type === \"page\" ? (\n <StyledPaginationItem key={index} {...page} asChild>\n <Button variant={page.value === pagination.page ? \"primary\" : \"tertiary\"}>{page.value}</Button>\n </StyledPaginationItem>\n ) : (\n <PaginationEllipsis key={index} index={index} asChild>\n <Text asChild consumeCss>\n <div>&#8230;</div>\n </Text>\n </PaginationEllipsis>\n );\n })\n }\n </PaginationContext>\n <PaginationNextTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.nextTriggerLabel}\n title={translations.paginationTranslations?.nextTriggerLabel}\n >\n <span>{translations.paginationTranslations?.nextTriggerLabel}</span>\n <ArrowRightShortLine />\n </StyledButton>\n </PaginationNextTrigger>\n </StyledPaginationRoot>\n </ImageSearchWrapper>\n );\n};\n\nexport default ImageSearch;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ImageSearch.js","names":["PaginationRoot","Button","PaginationItem","queryObject","Input","IconButton","SearchLine","ImageSearchResult","image","PaginationPrevTrigger","ArrowLeftShortLine","PaginationContext","page","PaginationEllipsis","Text","PaginationNextTrigger","ArrowRightShortLine"],"sources":["../src/ImageSearch.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { type ChangeEvent, type ReactNode, type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ArrowLeftShortLine, ArrowRightShortLine, SearchLine } from \"@ndla/icons\";\nimport {\n Button,\n IconButton,\n Input,\n PaginationContext,\n PaginationEllipsis,\n PaginationItem,\n PaginationNextTrigger,\n PaginationPrevTrigger,\n PaginationRoot,\n Text,\n type PaginationRootProps,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO, ISearchResultV3DTO, ISearchParamsDTO } from \"@ndla/types-backend/image-api\";\nimport { ImageSearchResult } from \"./ImageSearchResult\";\n\nconst ImageSearchWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"small\",\n },\n});\n\nconst StyledSearchResults = styled(\"div\", {\n base: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(200px, 1fr))\",\n gridGap: \"xsmall\",\n gridAutoFlow: \"dense\",\n },\n});\n\nconst InputWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xsmall\",\n },\n});\n\nconst StyledPaginationRoot = styled(PaginationRoot, {\n base: {\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledButton = styled(Button, {\n base: {\n tabletWideDown: {\n paddingInline: \"xsmall\",\n \"& span\": {\n display: \"none\",\n },\n },\n },\n});\n\nconst StyledPaginationItem = styled(PaginationItem, {\n base: {\n tabletWideDown: {\n \"&:nth-child(2)\": {\n display: \"none\",\n },\n \"&:nth-last-child(2)\": {\n display: \"none\",\n },\n },\n },\n});\n\nexport interface PreviewTranslations {\n creatorsLabel: string;\n license: string;\n caption: string;\n altText: string;\n modelRelease: string;\n tags: string;\n close: string;\n checkboxLabel?: string;\n missingTitleFallback?: string;\n useImageTitle: string;\n}\n\nexport interface ImageSearchTranslations {\n searchPlaceholder: string;\n searchButtonTitle: string;\n imagePreview: PreviewTranslations;\n paginationTranslations: PaginationRootProps[\"translations\"];\n}\n\nexport interface ImageSearchProps {\n onImageSelect: (image: IImageMetaInformationV3DTO) => void;\n searchImages: (query: string | undefined, page: number | undefined) => Promise<ISearchResultV3DTO>;\n onError?: (err: any) => void;\n locale: string;\n noResults?: ReactNode;\n checkboxAction?: (image: IImageMetaInformationV3DTO) => void;\n showCheckbox?: boolean;\n translations: ImageSearchTranslations;\n}\n\nexport const ImageSearch = ({\n onImageSelect,\n searchImages: search,\n onError,\n locale,\n noResults,\n checkboxAction,\n showCheckbox,\n translations,\n}: ImageSearchProps) => {\n const [queryObject, setQueryObject] = useState<ISearchParamsDTO>({\n query: undefined,\n page: 1,\n pageSize: 16,\n });\n const [selectedImage, setSelectedImage] = useState<IImageMetaInformationV3DTO | undefined>();\n const [searching, setSearching] = useState<boolean>(false);\n const [searchResult, setSearchResult] = useState<ISearchResultV3DTO | undefined>();\n\n const { page } = queryObject;\n const noResultsFound = !searching && searchResult?.results.length === 0;\n\n const onSelectImage = (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => {\n setSelectedImage(undefined);\n if (!image) return;\n onImageSelect(image);\n if (saveAsMetaImage) {\n checkboxAction?.(image);\n }\n };\n\n const searchImages = (queryObject: ISearchParamsDTO) => {\n setSearching(true);\n search(queryObject.query, queryObject.page)\n .then((result) => {\n setQueryObject({\n query: queryObject.query,\n pageSize: result.pageSize,\n page: queryObject.page,\n });\n setSearchResult(result);\n setSearching(false);\n })\n .catch((err) => {\n onError?.(err);\n setSearching(false);\n });\n };\n\n const handleQueryChange = ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n setQueryObject((prevState) => ({\n ...prevState,\n query: value,\n }));\n };\n\n const onEnter = (e: KeyboardEvent<HTMLInputElement | HTMLButtonElement>) => {\n if (e.key === \"Enter\") {\n searchImages(queryObject);\n }\n };\n\n useEffect(() => {\n searchImages(queryObject);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <ImageSearchWrapper>\n <InputWrapper role=\"search\">\n <Input\n type=\"search\"\n placeholder={translations.searchPlaceholder}\n value={queryObject?.query ?? \"\"}\n onChange={handleQueryChange}\n onKeyDown={onEnter}\n />\n <IconButton\n variant=\"primary\"\n aria-label={translations.searchButtonTitle}\n title={translations.searchButtonTitle}\n onKeyDown={onEnter}\n onClick={() => searchImages(queryObject)}\n >\n <SearchLine />\n </IconButton>\n </InputWrapper>\n {!!noResultsFound && noResults}\n <StyledSearchResults>\n {searchResult?.results.map((image) => (\n <ImageSearchResult\n key={image.id}\n image={image}\n onImageClick={(image) => setSelectedImage(image)}\n selectedImage={selectedImage}\n onSelectImage={onSelectImage}\n showCheckbox={!!showCheckbox}\n translations={translations.imagePreview}\n locale={locale}\n />\n ))}\n </StyledSearchResults>\n <StyledPaginationRoot\n page={page ?? 1}\n onPageChange={(details) => searchImages({ ...queryObject, page: details.page })}\n translations={translations.paginationTranslations}\n count={searchResult?.totalCount ?? 0}\n pageSize={searchResult?.pageSize}\n hidden={noResultsFound}\n >\n <PaginationPrevTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.prevTriggerLabel}\n title={translations.paginationTranslations?.prevTriggerLabel}\n >\n <ArrowLeftShortLine />\n <span>{translations.paginationTranslations?.prevTriggerLabel}</span>\n </StyledButton>\n </PaginationPrevTrigger>\n <PaginationContext>\n {(pagination) =>\n pagination.pages.map((page, index, full) => {\n // Hide last page to not trigger RESULT_WINDOW_TOO_LARGE error\n if (index === full.length - 1) return null;\n return page.type === \"page\" ? (\n <StyledPaginationItem key={index} {...page} asChild>\n <Button variant={page.value === pagination.page ? \"primary\" : \"tertiary\"}>{page.value}</Button>\n </StyledPaginationItem>\n ) : (\n <PaginationEllipsis key={index} index={index} asChild>\n <Text asChild consumeCss>\n <div>&#8230;</div>\n </Text>\n </PaginationEllipsis>\n );\n })\n }\n </PaginationContext>\n <PaginationNextTrigger asChild>\n <StyledButton\n variant=\"tertiary\"\n aria-label={translations.paginationTranslations?.nextTriggerLabel}\n title={translations.paginationTranslations?.nextTriggerLabel}\n >\n <span>{translations.paginationTranslations?.nextTriggerLabel}</span>\n <ArrowRightShortLine />\n </StyledButton>\n </PaginationNextTrigger>\n </StyledPaginationRoot>\n </ImageSearchWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAM,0DAA4B,OAAO,EACvC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACN,EACF,CAAC;AAEF,MAAM,2DAA6B,OAAO,EACxC,MAAM;CACJ,SAAS;CACT,qBAAqB;CACrB,SAAS;CACT,cAAc;CACf,EACF,CAAC;AAEF,MAAM,oDAAsB,OAAO,EACjC,MAAM;CACJ,SAAS;CACT,KAAK;CACN,EACF,CAAC;AAEF,MAAM,4DAA8BA,kCAAgB,EAClD,MAAM,EACJ,UAAU,QACX,EACF,CAAC;AAEF,MAAM,oDAAsBC,0BAAQ,EAClC,MAAM,EACJ,gBAAgB;CACd,eAAe;CACf,UAAU,EACR,SAAS,QACV;CACF,EACF,EACF,CAAC;AAEF,MAAM,4DAA8BC,kCAAgB,EAClD,MAAM,EACJ,gBAAgB;CACd,kBAAkB,EAChB,SAAS,QACV;CACD,uBAAuB,EACrB,SAAS,QACV;CACF,EACF,EACF,CAAC;AAiCF,MAAa,eAAe,EAC1B,eACA,cAAc,QACd,SACA,QACA,WACA,gBACA,cACA,mBACsB;CACtB,MAAM,CAAC,aAAa,sCAA6C;EAC/D,OAAO;EACP,MAAM;EACN,UAAU;EACX,CAAC;CACF,MAAM,CAAC,eAAe,yCAAsE;CAC5F,MAAM,CAAC,WAAW,oCAAkC,MAAM;CAC1D,MAAM,CAAC,cAAc,wCAA6D;CAElF,MAAM,EAAE,SAAS;CACjB,MAAM,iBAAiB,CAAC,aAAa,cAAc,QAAQ,WAAW;CAEtE,MAAM,iBAAiB,OAA+C,oBAA8B;AAClG,mBAAiB,OAAU;AAC3B,MAAI,CAAC,MAAO;AACZ,gBAAc,MAAM;AACpB,MAAI,gBACF,kBAAiB,MAAM;;CAI3B,MAAM,gBAAgB,kBAAkC;AACtD,eAAa,KAAK;AAClB,SAAOC,cAAY,OAAOA,cAAY,KAAK,CACxC,MAAM,WAAW;AAChB,kBAAe;IACb,OAAOA,cAAY;IACnB,UAAU,OAAO;IACjB,MAAMA,cAAY;IACnB,CAAC;AACF,mBAAgB,OAAO;AACvB,gBAAa,MAAM;IACnB,CACD,OAAO,QAAQ;AACd,aAAU,IAAI;AACd,gBAAa,MAAM;IACnB;;CAGN,MAAM,qBAAqB,EAAE,QAAQ,EAAE,cAA6C;AAClF,kBAAgB,eAAe;GAC7B,GAAG;GACH,OAAO;GACR,EAAE;;CAGL,MAAM,WAAW,MAA2D;AAC1E,MAAI,EAAE,QAAQ,QACZ,cAAa,YAAY;;AAI7B,4BAAgB;AACd,eAAa,YAAY;IAExB,EAAE,CAAC;AAEN,QACE,4CAAC;EACC,4CAAC;GAAa,MAAK;cACjB,2CAACC;IACC,MAAK;IACL,aAAa,aAAa;IAC1B,OAAO,aAAa,SAAS;IAC7B,UAAU;IACV,WAAW;KACX,EACF,2CAACC;IACC,SAAQ;IACR,cAAY,aAAa;IACzB,OAAO,aAAa;IACpB,WAAW;IACX,eAAe,aAAa,YAAY;cAExC,2CAACC,4BAAa;KACH;IACA;EACd,CAAC,CAAC,kBAAkB;EACrB,2CAAC,iCACE,cAAc,QAAQ,KAAK,UAC1B,2CAACC;GAEQ;GACP,eAAe,YAAU,iBAAiBC,QAAM;GACjC;GACA;GACf,cAAc,CAAC,CAAC;GAChB,cAAc,aAAa;GACnB;KAPH,MAAM,GAQX,CACF,GACkB;EACtB,4CAAC;GACC,MAAM,QAAQ;GACd,eAAe,YAAY,aAAa;IAAE,GAAG;IAAa,MAAM,QAAQ;IAAM,CAAC;GAC/E,cAAc,aAAa;GAC3B,OAAO,cAAc,cAAc;GACnC,UAAU,cAAc;GACxB,QAAQ;;IAER,2CAACC;KAAsB;eACrB,4CAAC;MACC,SAAQ;MACR,cAAY,aAAa,wBAAwB;MACjD,OAAO,aAAa,wBAAwB;iBAE5C,2CAACC,oCAAqB,EACtB,2CAAC,oBAAM,aAAa,wBAAwB,mBAAwB;OACvD;MACO;IACxB,2CAACC,kDACG,eACA,WAAW,MAAM,KAAK,QAAM,OAAO,SAAS;AAE1C,SAAI,UAAU,KAAK,SAAS,EAAG,QAAO;AACtC,YAAOC,OAAK,SAAS,SACnB,2CAAC;MAAiC,GAAIA;MAAM;gBAC1C,2CAACX;OAAO,SAASW,OAAK,UAAU,WAAW,OAAO,YAAY;iBAAaA,OAAK;QAAe;QADtE,MAEJ,GAEvB,2CAACC;MAAsC;MAAO;gBAC5C,2CAACC;OAAK;OAAQ;iBACZ,2CAAC,mBAAI,MAAa;QACb;QAHgB,MAIJ;MAEvB,GAEc;IACpB,2CAACC;KAAsB;eACrB,4CAAC;MACC,SAAQ;MACR,cAAY,aAAa,wBAAwB;MACjD,OAAO,aAAa,wBAAwB;iBAE5C,2CAAC,oBAAM,aAAa,wBAAwB,mBAAwB,EACpE,2CAACC,qCAAsB;OACV;MACO;;IACH;KACJ"}
@@ -16,5 +16,5 @@ interface Props {
16
16
  translations: PreviewTranslations;
17
17
  locale: string;
18
18
  }
19
- export default function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale, }: Props): import("react/jsx-runtime").JSX.Element;
19
+ export declare const ImageSearchResult: ({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale, }: Props) => import("react/jsx-runtime").JSX.Element;
20
20
  export {};
@@ -20,7 +20,7 @@ const StyledImage = (0, __ndla_styled_system_jsx.styled)(__ndla_primitives.Image
20
20
  height: "100%"
21
21
  } });
22
22
  const StyledText = (0, __ndla_styled_system_jsx.styled)(__ndla_primitives.Text, { base: { lineClamp: "3" } });
23
- function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale }) {
23
+ const ImageSearchResult = ({ image, onImageClick, selectedImage, onSelectImage, showCheckbox, translations, locale }) => {
24
24
  const isSelectedImage = selectedImage?.id === image.id;
25
25
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(StyledButton, {
26
26
  variant: isSelectedImage ? "secondary" : "tertiary",
@@ -39,7 +39,7 @@ function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage,
39
39
  consumeCss: true,
40
40
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: image.title.title.trim() ? image.title.title : translations.missingTitleFallback ?? `ID: ${image.id}` })
41
41
  })]
42
- }), isSelectedImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PreviewImage.default, {
42
+ }), isSelectedImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PreviewImage.PreviewImage, {
43
43
  id: `image-preview-${image.id}`,
44
44
  image: selectedImage,
45
45
  onSelectImage,
@@ -47,8 +47,8 @@ function ImageSearchResult({ image, onImageClick, selectedImage, onSelectImage,
47
47
  showCheckbox,
48
48
  locale
49
49
  }) : null] });
50
- }
50
+ };
51
51
 
52
52
  //#endregion
53
- exports.default = ImageSearchResult;
53
+ exports.ImageSearchResult = ImageSearchResult;
54
54
  //# sourceMappingURL=ImageSearchResult.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSearchResult.js","names":["Button","Image","Text","getPreviewSrcSets","PreviewImage"],"sources":["../src/ImageSearchResult.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { Text, Image, Button } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport PreviewImage from \"./PreviewImage\";\nimport { getPreviewSrcSets } from \"./util/imageUtil\";\n\nconst StyledButton = styled(Button, {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n borderColor: \"stroke.subtle\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"135px\",\n width: \"100%\",\n height: \"100%\",\n },\n});\n\nconst StyledText = styled(Text, {\n base: {\n lineClamp: \"3\",\n },\n});\n\ninterface Props {\n image: IImageMetaInformationV3DTO;\n onImageClick: (image: IImageMetaInformationV3DTO) => void;\n selectedImage?: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport default function ImageSearchResult({\n image,\n onImageClick,\n selectedImage,\n onSelectImage,\n showCheckbox,\n translations,\n locale,\n}: Props) {\n const isSelectedImage = selectedImage?.id === image.id;\n return (\n <>\n <StyledButton\n variant={isSelectedImage ? \"secondary\" : \"tertiary\"}\n data-testid=\"select-image-from-list\"\n onClick={() => onImageClick(image)}\n aria-expanded={isSelectedImage}\n aria-controls={`image-preview-${image.id}`}\n >\n <StyledImage\n alt=\"\"\n srcSet={getPreviewSrcSets(image.image.imageUrl)}\n src={image.image.imageUrl}\n variant=\"rounded\"\n />\n <StyledText textStyle=\"label.medium\" asChild consumeCss>\n <span>\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </span>\n </StyledText>\n </StyledButton>\n {isSelectedImage ? (\n <PreviewImage\n id={`image-preview-${image.id}`}\n image={selectedImage}\n onSelectImage={onSelectImage}\n translations={translations}\n showCheckbox={showCheckbox}\n locale={locale}\n />\n ) : null}\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;AAeA,MAAM,oDAAsBA,0BAAQ,EAClC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,aAAa;CACd,EACF,CAAC;AAEF,MAAM,mDAAqBC,yBAAO,EAChC,MAAM;CACJ,WAAW;CACX,OAAO;CACP,QAAQ;CACT,EACF,CAAC;AAEF,MAAM,kDAAoBC,wBAAM,EAC9B,MAAM,EACJ,WAAW,KACZ,EACF,CAAC;AAYF,SAAwB,kBAAkB,EACxC,OACA,cACA,eACA,eACA,cACA,cACA,UACQ;CACR,MAAM,kBAAkB,eAAe,OAAO,MAAM;AACpD,QACE,qFACE,4CAAC;EACC,SAAS,kBAAkB,cAAc;EACzC,eAAY;EACZ,eAAe,aAAa,MAAM;EAClC,iBAAe;EACf,iBAAe,iBAAiB,MAAM;aAEtC,2CAAC;GACC,KAAI;GACJ,QAAQC,oCAAkB,MAAM,MAAM,SAAS;GAC/C,KAAK,MAAM,MAAM;GACjB,SAAQ;IACR,EACF,2CAAC;GAAW,WAAU;GAAe;GAAQ;aAC3C,2CAAC,oBACE,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,QAAS,aAAa,wBAAwB,OAAO,MAAM,OAC9F;IACI;GACA,EACd,kBACC,2CAACC;EACC,IAAI,iBAAiB,MAAM;EAC3B,OAAO;EACQ;EACD;EACA;EACN;GACR,GACA,QACH"}
1
+ {"version":3,"file":"ImageSearchResult.js","names":["Button","Image","Text","getPreviewSrcSets","PreviewImage"],"sources":["../src/ImageSearchResult.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { Text, Image, Button } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { PreviewImage } from \"./PreviewImage\";\nimport { getPreviewSrcSets } from \"./util/imageUtil\";\n\nconst StyledButton = styled(Button, {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n borderColor: \"stroke.subtle\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"135px\",\n width: \"100%\",\n height: \"100%\",\n },\n});\n\nconst StyledText = styled(Text, {\n base: {\n lineClamp: \"3\",\n },\n});\n\ninterface Props {\n image: IImageMetaInformationV3DTO;\n onImageClick: (image: IImageMetaInformationV3DTO) => void;\n selectedImage?: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport const ImageSearchResult = ({\n image,\n onImageClick,\n selectedImage,\n onSelectImage,\n showCheckbox,\n translations,\n locale,\n}: Props) => {\n const isSelectedImage = selectedImage?.id === image.id;\n return (\n <>\n <StyledButton\n variant={isSelectedImage ? \"secondary\" : \"tertiary\"}\n data-testid=\"select-image-from-list\"\n onClick={() => onImageClick(image)}\n aria-expanded={isSelectedImage}\n aria-controls={`image-preview-${image.id}`}\n >\n <StyledImage\n alt=\"\"\n srcSet={getPreviewSrcSets(image.image.imageUrl)}\n src={image.image.imageUrl}\n variant=\"rounded\"\n />\n <StyledText textStyle=\"label.medium\" asChild consumeCss>\n <span>\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </span>\n </StyledText>\n </StyledButton>\n {isSelectedImage ? (\n <PreviewImage\n id={`image-preview-${image.id}`}\n image={selectedImage}\n onSelectImage={onSelectImage}\n translations={translations}\n showCheckbox={showCheckbox}\n locale={locale}\n />\n ) : null}\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;AAeA,MAAM,oDAAsBA,0BAAQ,EAClC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,aAAa;CACd,EACF,CAAC;AAEF,MAAM,mDAAqBC,yBAAO,EAChC,MAAM;CACJ,WAAW;CACX,OAAO;CACP,QAAQ;CACT,EACF,CAAC;AAEF,MAAM,kDAAoBC,wBAAM,EAC9B,MAAM,EACJ,WAAW,KACZ,EACF,CAAC;AAYF,MAAa,qBAAqB,EAChC,OACA,cACA,eACA,eACA,cACA,cACA,aACW;CACX,MAAM,kBAAkB,eAAe,OAAO,MAAM;AACpD,QACE,qFACE,4CAAC;EACC,SAAS,kBAAkB,cAAc;EACzC,eAAY;EACZ,eAAe,aAAa,MAAM;EAClC,iBAAe;EACf,iBAAe,iBAAiB,MAAM;aAEtC,2CAAC;GACC,KAAI;GACJ,QAAQC,oCAAkB,MAAM,MAAM,SAAS;GAC/C,KAAK,MAAM,MAAM;GACjB,SAAQ;IACR,EACF,2CAAC;GAAW,WAAU;GAAe;GAAQ;aAC3C,2CAAC,oBACE,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,QAAS,aAAa,wBAAwB,OAAO,MAAM,OAC9F;IACI;GACA,EACd,kBACC,2CAACC;EACC,IAAI,iBAAiB,MAAM;EAC3B,OAAO;EACQ;EACD;EACA;EACN;GACR,GACA,QACH"}
@@ -15,5 +15,5 @@ interface Props {
15
15
  translations: PreviewTranslations;
16
16
  locale: string;
17
17
  }
18
- declare const PreviewImage: ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => import("react/jsx-runtime").JSX.Element;
19
- export default PreviewImage;
18
+ export declare const PreviewImage: ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -94,7 +94,7 @@ const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, lo
94
94
  image.alttext.alttext
95
95
  ] }),
96
96
  !!image.modelRelease.trim() && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(__ndla_primitives.Text, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: `${translations.modelRelease}: ` }), (0, __ndla_licenses.getModelReleaseValue)(image.modelRelease, locale)] }),
97
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ImageMeta.default, {
97
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ImageMeta.ImageMeta, {
98
98
  contentType: image.image.contentType,
99
99
  fileSize: image.image.size,
100
100
  imageDimensions: image.image.dimensions,
@@ -125,8 +125,7 @@ const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, lo
125
125
  }) })] })] })]
126
126
  });
127
127
  };
128
- var PreviewImage_default = PreviewImage;
129
128
 
130
129
  //#endregion
131
- exports.default = PreviewImage_default;
130
+ exports.PreviewImage = PreviewImage;
132
131
  //# sourceMappingURL=PreviewImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewImage.js","names":["Image","FieldRoot","getSrcSets","Text","IconButton","CloseLine","ImageMeta","HashTag","Button","CheckboxRoot","CheckboxControl","CheckboxIndicator","CheckLine","CheckboxLabel","CheckboxHiddenInput"],"sources":["../src/PreviewImage.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useState } from \"react\";\nimport { CloseLine, HashTag, CheckLine } from \"@ndla/icons\";\nimport { getModelReleaseValue } from \"@ndla/licenses\";\nimport {\n Button,\n CheckboxControl,\n CheckboxHiddenInput,\n CheckboxIndicator,\n CheckboxLabel,\n CheckboxRoot,\n Text,\n Image,\n IconButton,\n FieldRoot,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport ImageMeta from \"./ImageMeta\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { getSrcSets } from \"./util/imageUtil\";\n\nconst ImageContainer = styled(\"div\", {\n base: {\n flexShrink: \"0\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"surface.xsmall\",\n },\n});\n\nconst StyledImageMetadata = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"xxsmall\",\n },\n});\n\nconst HashTagWrapper = styled(\"ul\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst HashTagGroup = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledTagItem = styled(\"li\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nconst StyledPreview = styled(\"div\", {\n base: {\n display: \"flex\",\n gridColumn: \"1 / -1\",\n borderColor: \"stroke.default\",\n border: \"1px solid\",\n borderRadius: \"xsmall\",\n gap: \"small\",\n padding: \"small\",\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n },\n});\n\nconst StyledTopRow = styled(\"div\", {\n base: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"2\",\n },\n});\n\nconst ActionsWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"small\",\n marginBlockEnd: \"medium\",\n },\n});\n\nconst StyledFieldRoot = styled(FieldRoot, {\n base: { alignSelf: \"center\" },\n});\n\ninterface Props {\n id: string;\n image: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nconst PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => {\n const [saveAsMetaImage, setSaveAsMetaImage] = useState(false);\n\n return (\n <StyledPreview id={id}>\n <ImageContainer>\n <StyledImage\n alt=\"\"\n srcSet={getSrcSets(image.image.imageUrl)}\n sizes=\"(min-width: 800px) 360px, (min-width: 400px) 300px, 100vw\"\n src={image.image.imageUrl}\n aria-label={image.title.title}\n variant=\"rounded\"\n />\n </ImageContainer>\n <ContentWrapper>\n <StyledImageMetadata>\n <StyledTopRow>\n <Text textStyle=\"title.medium\">\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </Text>\n <IconButton\n variant=\"tertiary\"\n onClick={() => onSelectImage(undefined)}\n aria-label={translations.close}\n title={translations.close}\n >\n <CloseLine />\n </IconButton>\n </StyledTopRow>\n {!!image.copyright.creators.length && (\n <Text>\n <b>{`${translations.creatorsLabel}: `}</b>\n {image.copyright.creators.map((creator) => creator.name).join(\", \")}\n </Text>\n )}\n {!!image.copyright.license.description?.trim() && (\n <Text>\n <b>{`${translations.license}: `}</b>\n {image.copyright.license.description}\n </Text>\n )}\n {!!image.caption.caption.trim() && (\n <Text>\n <b>{`${translations.caption}: `}</b>\n {image.caption.caption}\n </Text>\n )}\n {!!image.alttext.alttext.trim() && (\n <Text>\n <b>{`${translations.altText}:`}</b> {image.alttext.alttext}\n </Text>\n )}\n {!!image.modelRelease.trim() && (\n <Text>\n <b>{`${translations.modelRelease}: `}</b>\n {getModelReleaseValue(image.modelRelease, locale)}\n </Text>\n )}\n <ImageMeta\n contentType={image.image.contentType}\n fileSize={image.image.size}\n imageDimensions={image.image.dimensions}\n locale={locale}\n />\n {!!image.tags.tags.length && (\n <HashTagGroup>\n <Text id=\"tags-title\">\n <b>{`${translations.tags}: `}</b>\n </Text>\n <HashTagWrapper aria-describedby=\"tags-title\">\n {image.tags.tags.map((tag) => (\n <StyledTagItem key={tag}>\n <HashTag size=\"small\" />\n {tag}\n </StyledTagItem>\n ))}\n </HashTagWrapper>\n </HashTagGroup>\n )}\n </StyledImageMetadata>\n <ActionsWrapper>\n <Button data-testid=\"use-image\" onClick={() => onSelectImage(image, saveAsMetaImage)}>\n {translations.useImageTitle}\n </Button>\n {!!showCheckbox && (\n <StyledFieldRoot>\n <CheckboxRoot checked={saveAsMetaImage} onCheckedChange={() => setSaveAsMetaImage((prev) => !prev)}>\n <CheckboxControl>\n <CheckboxIndicator asChild>\n <CheckLine />\n </CheckboxIndicator>\n </CheckboxControl>\n <CheckboxLabel>{translations.checkboxLabel}</CheckboxLabel>\n <CheckboxHiddenInput />\n </CheckboxRoot>\n </StyledFieldRoot>\n )}\n </ActionsWrapper>\n </ContentWrapper>\n </StyledPreview>\n );\n};\n\nexport default PreviewImage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewImage.js","names":["Image","FieldRoot","getSrcSets","Text","IconButton","CloseLine","ImageMeta","HashTag","Button","CheckboxRoot","CheckboxControl","CheckboxIndicator","CheckLine","CheckboxLabel","CheckboxHiddenInput"],"sources":["../src/PreviewImage.tsx"],"sourcesContent":["/**\n * Copyright (c) 2017-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useState } from \"react\";\nimport { CloseLine, HashTag, CheckLine } from \"@ndla/icons\";\nimport { getModelReleaseValue } from \"@ndla/licenses\";\nimport {\n Button,\n CheckboxControl,\n CheckboxHiddenInput,\n CheckboxIndicator,\n CheckboxLabel,\n CheckboxRoot,\n Text,\n Image,\n IconButton,\n FieldRoot,\n} from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { IImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport { ImageMeta } from \"./ImageMeta\";\nimport type { PreviewTranslations } from \"./ImageSearch\";\nimport { getSrcSets } from \"./util/imageUtil\";\n\nconst ImageContainer = styled(\"div\", {\n base: {\n flexShrink: \"0\",\n },\n});\n\nconst StyledImage = styled(Image, {\n base: {\n maxHeight: \"surface.xsmall\",\n },\n});\n\nconst StyledImageMetadata = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"xxsmall\",\n },\n});\n\nconst HashTagWrapper = styled(\"ul\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst HashTagGroup = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n flexWrap: \"wrap\",\n },\n});\n\nconst StyledTagItem = styled(\"li\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nconst StyledPreview = styled(\"div\", {\n base: {\n display: \"flex\",\n gridColumn: \"1 / -1\",\n borderColor: \"stroke.default\",\n border: \"1px solid\",\n borderRadius: \"xsmall\",\n gap: \"small\",\n padding: \"small\",\n flexWrap: \"wrap\",\n overflow: \"hidden\",\n },\n});\n\nconst StyledTopRow = styled(\"div\", {\n base: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"2\",\n },\n});\n\nconst ActionsWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"small\",\n marginBlockEnd: \"medium\",\n },\n});\n\nconst StyledFieldRoot = styled(FieldRoot, {\n base: { alignSelf: \"center\" },\n});\n\ninterface Props {\n id: string;\n image: IImageMetaInformationV3DTO;\n onSelectImage: (image: IImageMetaInformationV3DTO | undefined, saveAsMetaImage?: boolean) => void;\n showCheckbox: boolean;\n translations: PreviewTranslations;\n locale: string;\n}\n\nexport const PreviewImage = ({ id, image, onSelectImage, showCheckbox, translations, locale }: Props) => {\n const [saveAsMetaImage, setSaveAsMetaImage] = useState(false);\n\n return (\n <StyledPreview id={id}>\n <ImageContainer>\n <StyledImage\n alt=\"\"\n srcSet={getSrcSets(image.image.imageUrl)}\n sizes=\"(min-width: 800px) 360px, (min-width: 400px) 300px, 100vw\"\n src={image.image.imageUrl}\n aria-label={image.title.title}\n variant=\"rounded\"\n />\n </ImageContainer>\n <ContentWrapper>\n <StyledImageMetadata>\n <StyledTopRow>\n <Text textStyle=\"title.medium\">\n {image.title.title.trim() ? image.title.title : (translations.missingTitleFallback ?? `ID: ${image.id}`)}\n </Text>\n <IconButton\n variant=\"tertiary\"\n onClick={() => onSelectImage(undefined)}\n aria-label={translations.close}\n title={translations.close}\n >\n <CloseLine />\n </IconButton>\n </StyledTopRow>\n {!!image.copyright.creators.length && (\n <Text>\n <b>{`${translations.creatorsLabel}: `}</b>\n {image.copyright.creators.map((creator) => creator.name).join(\", \")}\n </Text>\n )}\n {!!image.copyright.license.description?.trim() && (\n <Text>\n <b>{`${translations.license}: `}</b>\n {image.copyright.license.description}\n </Text>\n )}\n {!!image.caption.caption.trim() && (\n <Text>\n <b>{`${translations.caption}: `}</b>\n {image.caption.caption}\n </Text>\n )}\n {!!image.alttext.alttext.trim() && (\n <Text>\n <b>{`${translations.altText}:`}</b> {image.alttext.alttext}\n </Text>\n )}\n {!!image.modelRelease.trim() && (\n <Text>\n <b>{`${translations.modelRelease}: `}</b>\n {getModelReleaseValue(image.modelRelease, locale)}\n </Text>\n )}\n <ImageMeta\n contentType={image.image.contentType}\n fileSize={image.image.size}\n imageDimensions={image.image.dimensions}\n locale={locale}\n />\n {!!image.tags.tags.length && (\n <HashTagGroup>\n <Text id=\"tags-title\">\n <b>{`${translations.tags}: `}</b>\n </Text>\n <HashTagWrapper aria-describedby=\"tags-title\">\n {image.tags.tags.map((tag) => (\n <StyledTagItem key={tag}>\n <HashTag size=\"small\" />\n {tag}\n </StyledTagItem>\n ))}\n </HashTagWrapper>\n </HashTagGroup>\n )}\n </StyledImageMetadata>\n <ActionsWrapper>\n <Button data-testid=\"use-image\" onClick={() => onSelectImage(image, saveAsMetaImage)}>\n {translations.useImageTitle}\n </Button>\n {!!showCheckbox && (\n <StyledFieldRoot>\n <CheckboxRoot checked={saveAsMetaImage} onCheckedChange={() => setSaveAsMetaImage((prev) => !prev)}>\n <CheckboxControl>\n <CheckboxIndicator asChild>\n <CheckLine />\n </CheckboxIndicator>\n </CheckboxControl>\n <CheckboxLabel>{translations.checkboxLabel}</CheckboxLabel>\n <CheckboxHiddenInput />\n </CheckboxRoot>\n </StyledFieldRoot>\n )}\n </ActionsWrapper>\n </ContentWrapper>\n </StyledPreview>\n );\n};\n"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -5,6 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- export { default as ImageMeta } from "./ImageMeta";
9
- export { default as ImageSearch } from "./ImageSearch";
8
+ export { ImageMeta } from "./ImageMeta";
9
+ export { ImageSearch } from "./ImageSearch";
10
10
  export type { ImageSearchProps } from "./ImageSearch";
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const require_ImageMeta = require('./ImageMeta.js');
2
2
  const require_ImageSearch = require('./ImageSearch.js');
3
3
 
4
- exports.ImageMeta = require_ImageMeta.default;
5
- exports.ImageSearch = require_ImageSearch.default;
4
+ exports.ImageMeta = require_ImageMeta.ImageMeta;
5
+ exports.ImageSearch = require_ImageSearch.ImageSearch;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ndla/image-search",
3
3
  "type": "module",
4
- "version": "11.0.122-alpha.0",
4
+ "version": "11.0.124-alpha.0",
5
5
  "description": "A simple library for searching images from NDLA",
6
6
  "license": "GPL-3.0",
7
7
  "exports": {
@@ -30,14 +30,14 @@
30
30
  "es"
31
31
  ],
32
32
  "dependencies": {
33
- "@ndla/icons": "^8.0.69-alpha.0",
33
+ "@ndla/icons": "^8.0.70-alpha.0",
34
34
  "@ndla/licenses": "^10.0.2-alpha.0",
35
- "@ndla/primitives": "^1.0.104-alpha.0",
35
+ "@ndla/primitives": "^1.0.106-alpha.0",
36
36
  "@ndla/styled-system": "^0.0.41",
37
- "@ndla/util": "^5.0.12-alpha.0"
37
+ "@ndla/util": "^5.0.14-alpha.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@ndla/preset-panda": "^0.0.62",
40
+ "@ndla/preset-panda": "^0.0.63",
41
41
  "@ndla/types-backend": "^1.0.50",
42
42
  "@pandacss/dev": "^1.3.1"
43
43
  },
@@ -48,5 +48,5 @@
48
48
  "publishConfig": {
49
49
  "access": "public"
50
50
  },
51
- "gitHead": "abc99971f82554e1a757f468d60e70f384af028a"
51
+ "gitHead": "791c43b6a37887e9de7cbc734991ede5b5522656"
52
52
  }