sanity-plugin-asset-source-unsplash

7.0.157.0.16
dist/_chunks-es/UnsplashPhotoGallery.js.map
+dist/_chunks-es/UnsplashPhotoGallery.js.mapNew file
+1
Index: package/dist/_chunks-es/UnsplashPhotoGallery.js.map
===================================================================
--- package/dist/_chunks-es/UnsplashPhotoGallery.js.map
+++ package/dist/_chunks-es/UnsplashPhotoGallery.js.map
@@ -0,0 +1,1 @@
+{"version":3,"file":"UnsplashPhotoGallery.js","names":["SanityClient","UnsplashPhoto","fetchDownloadUrl","client","photo","Promise","downloadUrl","links","download_location","replace","url","request","withCredentials","method","Text","Card","getTheme_v2","styled","CreditLineLink","a","CreditLine","theme","v2","sanity","color","fg","bg","UTM_SOURCE","UnsplashCreditLine","t0","$","_c","link","id","userName","T0","t1","url","URL","searchParams","set","toString","t2","t3","t4","_temp","event","stopPropagation","Box","Text","use","Activity","RowsPhotoAlbum","InfiniteScroll","AssetFromSource","AssetSourceComponentProps","SanityClient","fetchDownloadUrl","FetcherResult","UnsplashPhoto","Loader","UnsplashCreditLine","PHOTO_SPACING","PHOTO_PADDING","mapUnsplashToPhotoAlbumPhoto","photo","src","urls","small","width","height","key","id","data","UnsplashAssetSourceGallery","t0","$","_c","client","query","fetcher","scrollContainerRef","onSelect","initialDataPromise","t1","total","t2","t3","t4","t5","current","t6","results","map","t7","index","total_pages","t8","Symbol","for","t9","t10","t11","t12","downloadUrl","description","undefined","asset","kind","value","assetDocumentProps","_type","source","name","url","links","html","creditLine","user","_temp","extras","_temp2","container","style","marginBottom","t13","t14","t15","_","context","username"],"sources":["../../src/datastores/unsplash.ts","../../src/components/UnsplashCreditLine.tsx","../../src/components/UnsplashPhotoGallery.tsx"],"sourcesContent":["import type {SanityClient} from 'sanity'\n\nimport type {UnsplashPhoto} from '../types'\n\nexport async function fetchDownloadUrl(\n  client: SanityClient,\n  photo: UnsplashPhoto,\n): Promise<string> {\n  const downloadUrl = photo.links.download_location.replace(\n    'https://api.unsplash.com',\n    '/addons/unsplash',\n  )\n  const {url} = await client.request<{url: string}>({\n    url: downloadUrl,\n    withCredentials: true,\n    method: 'GET',\n  })\n\n  return url\n}\n","import {Text, Card} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nconst CreditLineLink = styled.a`\n  text-decoration: none;\n  cursor: pointer;\n  &:hover,\n  &:focus {\n    [data-ui='Text'] {\n      text-decoration: underline;\n    }\n  }\n`\n\nconst CreditLine = styled(Card)`\n  ${({theme}) => {\n    const v2 = getTheme_v2({sanity: theme.sanity})\n    return `\n     --creditline-fg: ${v2.color.fg};\n     --creditline-bg: ${v2.color.bg};\n   `\n  }};\n  -webkit-user-drag: none;\n  position: absolute;\n  background-color: var(--creditline-bg);\n  bottom: 0;\n\n  [data-ui='Text'] {\n    color: var(--creditline-fg);\n  }\n`\n\nconst UTM_SOURCE = 'sanity-plugin-asset-source-unsplash'\nexport function UnsplashCreditLine({\n  link,\n  id,\n  userName,\n}: {\n  link: string\n  id: string\n  userName: string\n}) {\n  const url = new URL(link)\n  url.searchParams.set('utm_source', UTM_SOURCE)\n  url.searchParams.set('utm_medium', 'referral')\n\n  return (\n    <CreditLineLink\n      href={url.toString()}\n      target={id}\n      rel=\"noreferrer noopener\"\n      onClick={(event) => event.stopPropagation()}\n    >\n      <CreditLine padding={1} radius={1} margin={1}>\n        <Text size={0} title={`Open image by ${userName} on Unsplash in new window`}>\n          By @{userName}\n        </Text>\n      </CreditLine>\n    </CreditLineLink>\n  )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {use, Activity} from 'react'\n\nimport 'react-photo-album/rows.css'\nimport {RowsPhotoAlbum} from 'react-photo-album'\nimport InfiniteScroll from 'react-photo-album/scroll'\nimport {type AssetFromSource, type AssetSourceComponentProps, type SanityClient} from 'sanity'\n\nimport {fetchDownloadUrl} from '../datastores/unsplash'\nimport type {FetcherResult, UnsplashPhoto} from '../types'\nimport {Loader} from './Loader'\nimport {UnsplashCreditLine} from './UnsplashCreditLine'\n\nconst PHOTO_SPACING = 2\nconst PHOTO_PADDING = 1 // offset the 1px border width\n\nfunction mapUnsplashToPhotoAlbumPhoto(photo: UnsplashPhoto) {\n  return {\n    src: photo.urls.small,\n    width: photo.width,\n    height: photo.height,\n    key: photo.id,\n    data: photo,\n  }\n}\n\nexport default function UnsplashAssetSourceGallery({\n  client,\n  query,\n  fetcher,\n  scrollContainerRef,\n  onSelect,\n  initialDataPromise,\n}: {\n  client: SanityClient\n  query: string\n  fetcher: (query: string, index: number) => Promise<FetcherResult>\n  scrollContainerRef: React.RefObject<HTMLDivElement | null>\n  initialDataPromise: Promise<FetcherResult>\n} & Pick<AssetSourceComponentProps, 'onSelect'>) {\n  const data = use(initialDataPromise)\n\n  return (\n    <>\n      <Activity mode={data.total === 0 ? 'visible' : 'hidden'}>\n        <Box paddingX={2} paddingY={3}>\n          <Text size={1} muted>\n            No results found for \"{query}\"\n          </Text>\n        </Box>\n      </Activity>\n      <Activity mode={data.total === 0 ? 'hidden' : 'visible'}>\n        <InfiniteScroll\n          key={query}\n          scrollContainer={() => scrollContainerRef.current}\n          photos={data.results.map(mapUnsplashToPhotoAlbumPhoto)}\n          fetch={async (index) => {\n            const {results, total_pages} = await fetcher(query, index + 1)\n\n            if (index < total_pages) {\n              return results.map(mapUnsplashToPhotoAlbumPhoto)\n            }\n\n            return null\n          }}\n          loading={<Loader />}\n          finished={\n            query && (\n              <Box paddingX={2} paddingY={3}>\n                <Text size={1} muted>\n                  No more results\n                </Text>\n              </Box>\n            )\n          }\n          onClick={async ({photo: {data: photo}}) => {\n            const downloadUrl = await fetchDownloadUrl(client, photo)\n\n            const description = photo.description || undefined\n            const asset: AssetFromSource = {\n              kind: 'url',\n              value: downloadUrl,\n              // @ts-expect-error TODO: this is a partial assetDocumentProps, update types.\n              assetDocumentProps: {\n                _type: 'sanity.imageAsset',\n                source: {\n                  name: 'unsplash',\n                  id: photo.id,\n                  url: photo.links.html,\n                },\n                description,\n                creditLine: `${photo.user.name} by Unsplash`,\n              },\n            }\n            return onSelect([asset])\n          }}\n        >\n          <RowsPhotoAlbum<ReturnType<typeof mapUnsplashToPhotoAlbumPhoto>>\n            photos={[]}\n            spacing={PHOTO_SPACING}\n            padding={PHOTO_PADDING}\n            targetRowHeight={(width) => {\n              if (width < 300) return 150\n              if (width < 600) return 200\n              return 300\n            }}\n            render={{\n              extras: (_, context) => {\n                return (\n                  <UnsplashCreditLine\n                    id={context.photo.data.id}\n                    link={context.photo.data.links.html}\n                    userName={context.photo.data.user.username}\n                  />\n                )\n              },\n            }}\n            componentsProps={{container: {style: {marginBottom: PHOTO_SPACING}}}}\n          />\n        </InfiniteScroll>\n      </Activity>\n    </>\n  )\n}\n"],"mappings":"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"}
\ No newline at end of file