sanity-plugin-shopify-assets 2.0.2 → 2.0.3

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/dist/index.js CHANGED
@@ -8,12 +8,13 @@ import prettyMilliseconds from "pretty-ms";
8
8
  import { styled } from "styled-components";
9
9
  import { useRef, useEffect, useState } from "react";
10
10
  import videojs from "video.js";
11
- import { LaunchIcon, ErrorOutlineIcon } from "@sanity/icons";
11
+ import { ErrorOutlineIcon } from "@sanity/icons/ErrorOutline";
12
12
  import InfiniteScroll from "react-infinite-scroll-component";
13
13
  import { PhotoAlbum } from "react-photo-album";
14
14
  import { concat, defer, BehaviorSubject } from "rxjs";
15
15
  import axios from "axios";
16
16
  import { withLatestFrom, debounceTime, distinctUntilChanged, switchMap, map } from "rxjs/operators";
17
+ import { LaunchIcon } from "@sanity/icons/Launch";
17
18
  const shopifyAssetMetadataSchema = defineType({
18
19
  type: "object",
19
20
  name: "shopify.assetMetadata",
@@ -79,13 +80,13 @@ const shopifyAssetMetadataSchema = defineType({
79
80
  let t6;
80
81
  $[5] !== t5 ? (t6 = /* @__PURE__ */ jsx(Text, { size: 1, children: t5 }), $[5] = t5, $[6] = t6) : t6 = $[6];
81
82
  let t7;
82
- return $[7] !== t3 || $[8] !== t6 ? (t7 = /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", height: "fill", width: "fill", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
83
+ return $[7] !== t3 || $[8] !== t6 ? (t7 = /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", height: "fill", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
83
84
  t3,
84
85
  t6
85
86
  ] }) }), $[7] = t3, $[8] = t6, $[9] = t7) : t7 = $[9], t7;
86
87
  }
87
88
  let t1;
88
- return $[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t1 = /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", height: "fill", width: "fill", children: /* @__PURE__ */ jsx("div", { children: "(no image)" }) }), $[10] = t1) : t1 = $[10], t1;
89
+ return $[10] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t1 = /* @__PURE__ */ jsx(Flex, { justify: "center", align: "center", height: "fill", children: /* @__PURE__ */ jsx("div", { children: "(no image)" }) }), $[10] = t1) : t1 = $[10], t1;
89
90
  }, AssetDiff = (t0) => {
90
91
  const $ = c(3), {
91
92
  diff,
@@ -440,7 +441,7 @@ function ShopifyAssetPicker(props) {
440
441
  let t9;
441
442
  $[16] !== onChange || $[17] !== onClose || $[18] !== schemaType.name || $[19] !== value?._key ? (t9 = (file) => {
442
443
  file._key = value?._key, file._type = schemaType.name, onChange(PatchEvent.from([set(file)])), onClose();
443
- }, $[16] = onChange, $[17] = onClose, $[18] = schemaType.name, $[19] = value?._key, $[20] = t9) : t9 = $[20];
444
+ }, $[16] = onChange, $[17] = onClose, $[18] = schemaType.name, $[19] = value?._key, $[20] = t9) : t9 = $[20], value?._key;
444
445
  const handleSelect = t9;
445
446
  let t10;
446
447
  $[21] !== handleSelect ? (t10 = (fileProps) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/schema/shopifyAssetMetadataSchema.ts","../src/schema/shopifyAssetPreviewSchema.ts","../src/components/AssetDiff.tsx","../src/components/File.styled.tsx","../src/components/VideoPlayer.tsx","../src/components/AssetPreview.tsx","../src/datastores/shopify.ts","../src/components/DialogHeader.tsx","../src/utils/helpers.ts","../src/components/File.tsx","../src/components/ShopifyAssetInput.styled.tsx","../src/components/ShopifyAssetPicker.tsx","../src/components/ShopifyIcon.tsx","../src/components/ShopifyAssetInput.tsx","../src/schema/shopifyAssetSchema.ts","../src/index.ts"],"sourcesContent":["import {defineField, defineType} from 'sanity'\n\nexport const shopifyAssetMetadataSchema = defineType({\n type: 'object',\n name: 'shopify.assetMetadata',\n title: 'Asset metadata',\n fields: [\n defineField({\n type: 'string',\n name: 'alt',\n title: 'Alternative text',\n }),\n defineField({\n type: 'number',\n name: 'duration',\n title: 'Duration',\n }),\n defineField({\n type: 'number',\n name: 'fileSize',\n title: 'File size',\n }),\n defineField({\n type: 'number',\n name: 'height',\n title: 'Height',\n }),\n defineField({\n type: 'number',\n name: 'width',\n title: 'Width',\n }),\n ],\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const shopifyAssetPreviewSchema = defineType({\n type: 'object',\n name: 'shopify.assetPreview',\n title: 'Asset preview',\n fields: [\n defineField({\n type: 'number',\n name: 'height',\n title: 'Height',\n }),\n defineField({\n type: 'number',\n name: 'width',\n title: 'Width',\n }),\n defineField({\n type: 'url',\n name: 'url',\n title: 'URL',\n }),\n ],\n})\n","import {Flex, Stack, Text} from '@sanity/ui'\nimport {DiffFromTo} from 'sanity'\n\nimport type {Asset} from '../types'\n\ntype Props = {\n value: Asset | undefined\n}\n\nconst ShopifyAssetDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n if (value?.preview?.url) {\n return (\n <Flex justify=\"center\" align=\"center\" height=\"fill\" width=\"fill\">\n <Stack gap={2}>\n <img\n alt=\"preview\"\n src={value?.preview?.url}\n style={{\n objectFit: 'contain',\n margin: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n }}\n />\n <Text size={1}>{value.type.charAt(0).toUpperCase() + value.type.slice(1)}</Text>\n </Stack>\n </Flex>\n )\n }\n\n return (\n <Flex justify=\"center\" align=\"center\" height=\"fill\" width=\"fill\">\n <div>(no image)</div>\n </Flex>\n )\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={ShopifyAssetDiffPreview}\n layout={'grid'}\n />\n )\n}\n\nexport default AssetDiff\n","import {Card} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nexport const Root = styled.div`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n background-color: ${v2.color.muted.bg};\n border: 1px solid ${v2.color.border};\n `\n }};\n overflow: hidden;\n background-origin: content-box;\n background-repeat: no-repeat;\n background-clip: border-box;\n background-size: cover;\n position: relative;\n outline: none !important;\n box-sizing: content-box;\n user-drag: none;\n\n &:hover {\n opacity: 0.85;\n }\n\n &:focus,\n &:active {\n border: 1px solid var(--input-border-color-focus);\n box-shadow: inset 0 0 0 3px var(--input-border-color-focus);\n }\n`\n\nexport const InfoLine = styled(Card)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n --infoline-fg: ${v2.color.fg};\n --infoline-bg: ${v2.color.bg};\n `\n }};\n user-drag: none;\n position: absolute;\n background-color: var(--infoline-bg);\n top: 0;\n left: 0;\n max-width: 65%;\n overflow-wrap: break-word;\n\n [data-ui='Text'] {\n color: var(--infoline-fg);\n }\n`\n\nexport const DurationLine = styled(Card)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n --durationline-fg: ${v2.color.bg};\n --durationline-bg: ${v2.color.fg};\n `\n }};\n user-drag: none;\n position: absolute;\n background-color: var(--durationline-bg);\n top: 0;\n right: 0;\n\n [data-ui='Text'] {\n color: var(--durationline-fg);\n }\n`\n","import {type CSSProperties, type MouseEvent, useCallback, useEffect, useRef} from 'react'\nimport videojs, {type VideoJsPlayer} from 'video.js'\n\ntype PlayerKind = 'player' | 'diff'\n\ninterface VideoProps {\n src: string\n kind: PlayerKind\n}\n\nconst VideoPlayer = ({src, kind}: VideoProps) => {\n const videoNode = useRef<HTMLVideoElement>(null)\n const player = useRef<VideoJsPlayer | undefined>(undefined)\n\n useEffect(() => {\n player.current = videojs(videoNode.current ?? '', {\n sources: [{src}],\n controls: true,\n })\n\n player.current.src({src})\n }, [src])\n\n const stopPropagation = useCallback((event: MouseEvent) => {\n event.stopPropagation()\n }, [])\n\n const className: Record<PlayerKind, string> = {\n player: 'video-js vjs-16-9 vjs-big-play-centered',\n diff: 'video-js vjs-layout-tiny vjs-fluid',\n }\n\n const style: CSSProperties = {position: 'relative'}\n\n return (\n <div>\n <link href=\"https://vjs.zencdn.net/7.8.4/video-js.css\" rel=\"stylesheet\" />\n <div data-vjs-player>\n {/* Shopify assets do not provide caption tracks */}\n {/* oxlint-disable-next-line jsx-a11y/media-has-caption */}\n <video\n aria-label=\"Video preview\"\n onClick={stopPropagation}\n style={kind === 'diff' ? style : {}}\n className={className[kind]}\n ref={videoNode}\n />\n </div>\n </div>\n )\n}\n\nexport default VideoPlayer\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport prettyBytes from 'pretty-bytes'\nimport prettyMilliseconds from 'pretty-ms'\nimport {styled} from 'styled-components'\n\nimport type {Asset} from '../types'\nimport {DurationLine, InfoLine} from './File.styled'\nimport VideoPlayer from './VideoPlayer'\n\ninterface ComponentProps {\n value: Asset | undefined\n}\n\nconst StyledBox = styled(Box)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n background-color: ${v2.color.muted.bg};\n border: 1px solid ${v2.color.border};\n `\n }};\n display: flex;\n justify-content: center;\n position: relative;\n`\n\nconst RenderAsset = ({value, url}: {value: Asset; url: string}) => {\n switch (value.type) {\n case 'video':\n return <VideoPlayer src={url} kind=\"player\" />\n default:\n return (\n <Flex justify=\"center\">\n <img\n alt=\"preview\"\n src={value?.preview?.url}\n style={{\n maxWidth: '100%',\n height: 'auto',\n display: 'block',\n maxHeight: '30vh',\n }}\n />\n </Flex>\n )\n }\n}\n\nconst AssetPreview = ({value}: ComponentProps) => {\n const url = value && value.url\n\n if (!value || !url) {\n return null\n }\n\n const {filename, meta} = value\n const {fileSize, duration} = meta\n\n return (\n <StyledBox marginBottom={2}>\n <RenderAsset value={value} url={url} />\n <InfoLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Select ${filename}`}>\n {filename} {fileSize && `(${prettyBytes(fileSize)})`}\n </Text>\n </InfoLine>\n {duration && (\n <DurationLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Video duration: ${filename}`}>\n {prettyMilliseconds(duration, {colonNotation: true, secondsDecimalDigits: 0})}\n </Text>\n </DurationLine>\n )}\n </StyledBox>\n )\n}\n\nexport default AssetPreview\n","import axios from 'axios'\nimport {BehaviorSubject, Observable, concat, defer} from 'rxjs'\nimport {debounceTime, distinctUntilChanged, map, switchMap, withLatestFrom} from 'rxjs/operators'\n\ntype SearchSubject = BehaviorSubject<string>\ntype CursorSubject = BehaviorSubject<any>\n\ninterface fetchProps {\n projectId: string\n dataset: string\n shop: string\n query: SearchSubject\n cursor: CursorSubject\n resultsPerPage: number\n token?: string\n}\n\ninterface searchProps extends Omit<fetchProps, 'query' | 'cursor'> {\n query: string\n cursor: string\n}\ninterface listProps extends Omit<fetchProps, 'query' | 'cursor'> {\n cursor: string\n}\n\nconst fetchSearch = (props: searchProps): Observable<any> => {\n const {projectId, dataset, shop, query, cursor, resultsPerPage, token} = props\n\n return defer(() => {\n return axios.get(\n `https://${projectId}.api.sanity.io/v1/shopify/assets/${dataset}?shop=${shop}&query=${encodeURIComponent(\n query,\n )}${cursor && `&cursor=${cursor}`}&limit=${resultsPerPage}`,\n {\n withCredentials: true,\n method: 'GET',\n headers: token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {},\n },\n )\n }).pipe(map((result) => result.data))\n}\n\nconst fetchList = (props: listProps): Observable<any> => {\n const {projectId, dataset, shop, cursor, resultsPerPage, token} = props\n\n return defer(() =>\n axios.get(\n `https://${projectId}.api.sanity.io/v1/shopify/assets/${dataset}?shop=${shop}${\n cursor && `&cursor=${cursor}`\n }&limit=${resultsPerPage}`,\n {\n withCredentials: true,\n method: 'GET',\n headers: token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {},\n },\n ),\n ).pipe(map((result) => result.data))\n}\n\nexport const search = (props: fetchProps): Observable<any> => {\n const {projectId, dataset, shop, query, cursor, resultsPerPage, token} = props\n\n return concat(\n query.pipe(\n withLatestFrom(cursor),\n debounceTime(500),\n distinctUntilChanged(),\n switchMap(([q, c]) => {\n if (q) {\n return fetchSearch({\n projectId,\n dataset,\n shop,\n query: q,\n cursor: c,\n resultsPerPage,\n token,\n }).pipe(distinctUntilChanged())\n }\n return fetchList({projectId, dataset, shop, cursor: c, resultsPerPage, token})\n }),\n ),\n )\n}\n","import {LaunchIcon} from '@sanity/icons'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {useCallback} from 'react'\n\ninterface Props {\n title: string\n shopifyDomain: string\n}\n\nconst DialogHeader = (props: Props) => {\n const {title, shopifyDomain} = props\n\n const handleOpenInNewTab = useCallback(() => {\n window.open(`https://${shopifyDomain}/admin/content/files`, '_blank')\n }, [shopifyDomain])\n\n return (\n <Flex align=\"center\">\n {title}\n {/*\n HACK: Sanity UI will attempt to focus the first 'focusable' descendant of any dialog.\n Typically this is fine, but since our first focusable element is a button with a tooltip, this\n default behaviour causes the tooltip to appear whenever the dialog is opened, which we don't want!\n\n To get around this, we include a pseudo-hidden input to ensure our tooltip-enabled button remains\n unfocused on initial mount.\n */}\n <input\n aria-hidden=\"true\"\n aria-label=\"Focus trap\"\n style={{opacity: 0}}\n tabIndex={-1}\n type=\"button\"\n />\n <Box style={{position: 'absolute', right: '-1.5em'}}>\n <Box className=\"button-large\">\n <Button\n fontSize={1}\n icon={LaunchIcon}\n mode=\"bleed\"\n onClick={handleOpenInNewTab}\n text=\"Add New\"\n />\n </Box>\n </Box>\n </Flex>\n )\n}\n\nexport default DialogHeader\n","export const extractName = (name: string): string => name?.split('/')?.pop()?.split('?')[0] ?? ''\n","import {Text} from '@sanity/ui'\nimport prettyBytes from 'pretty-bytes'\nimport prettyMilliseconds from 'pretty-ms'\nimport {useCallback, useRef} from 'react'\n\nimport type {Asset, ShopifyFile} from '../types'\nimport {extractName} from '../utils/helpers'\nimport {DurationLine, InfoLine, Root} from './File.styled'\n\ntype Props = {\n data: ShopifyFile\n width: number\n height: number\n onClick: (file: Asset) => void\n}\n\nexport default function File(props: Props) {\n const {onClick, data, width, height} = props\n const rootElm = useRef<HTMLDivElement>(null)\n\n const {preview, meta} = data\n const filename = extractName(data.url)\n\n const handleClick = useCallback(() => {\n onClick({...data, filename})\n }, [onClick, data, filename])\n\n return (\n <Root\n ref={rootElm}\n title={filename}\n tabIndex={0}\n style={{\n width: `${width}px`,\n height: `${height}px`,\n backgroundImage: `url(\"${preview?.url}\")`,\n }}\n onClick={handleClick}\n >\n <InfoLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Select ${filename}`}>\n {filename} {meta.fileSize && `(${prettyBytes(meta.fileSize)})`}\n </Text>\n </InfoLine>\n {meta.duration && (\n <DurationLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Video duration: ${filename}`}>\n {prettyMilliseconds(meta.duration, {colonNotation: true, secondsDecimalDigits: 0})}\n </Text>\n </DurationLine>\n )}\n </Root>\n )\n}\n","import {Stack} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Search = styled(Stack)`\n position: sticky;\n top: 0;\n z-index: 1;\n`\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Card, Dialog, Flex, Inline, Spinner, Stack, Text, TextInput} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useEffect, useMemo, useState} from 'react'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport {PhotoAlbum} from 'react-photo-album'\nimport {BehaviorSubject, type Subscription} from 'rxjs'\nimport {type ObjectInputProps, PatchEvent, set, useClient, useDataset, useProjectId} from 'sanity'\n\nimport {search} from '../datastores/shopify'\nimport type {Asset, PageInfo, ShopifyAPIResponse, ShopifyFile} from '../types'\nimport DialogHeader from './DialogHeader'\nimport File from './File'\nimport {Search} from './ShopifyAssetInput.styled'\n\nconst RESULTS_PER_PAGE = 42\nconst PHOTO_SPACING = 2\nconst PHOTO_PADDING = 1\n\nexport interface AssetPickerProps extends ObjectInputProps<Asset> {\n shopifyDomain: string\n isOpen: boolean\n onClose: () => void\n}\n\nexport default function ShopifyAssetPicker(props: AssetPickerProps) {\n const {isOpen, onClose, shopifyDomain, onChange, schemaType, value} = props\n const projectId = useProjectId()\n const dataset = useDataset()\n const client = useClient({apiVersion: '2021-06-07'})\n const token = client.config().token\n\n const [apiError, setApiError] = useState('')\n const [query, setQuery] = useState('')\n const [searchResults, setSearchResults] = useState<ShopifyFile[]>([])\n const [pageInfo, setPageInfo] = useState<PageInfo>()\n const [isLoading, setIsLoading] = useState(true)\n\n const error = shopifyDomain\n ? apiError\n : 'Please configure your Shopify domain in the plugin config'\n\n const searchSubject$ = useMemo(() => new BehaviorSubject(''), [])\n const cursorSubject$ = useMemo(() => new BehaviorSubject(''), [])\n\n useEffect(() => {\n const searchSubscription: Subscription = search({\n projectId,\n dataset,\n shop: shopifyDomain,\n query: searchSubject$,\n cursor: cursorSubject$,\n resultsPerPage: RESULTS_PER_PAGE,\n token,\n }).subscribe({\n next: (results: ShopifyAPIResponse) => {\n setSearchResults((prevResults) => [...prevResults, ...results.assets])\n setPageInfo(results.pageInfo)\n setIsLoading(false)\n },\n error: (err) => {\n setApiError(\n `${\n err.response?.data?.message || err.message || 'An error occurred'\n } - check plugin configuration`,\n )\n },\n })\n\n return () => searchSubscription.unsubscribe()\n }, [searchSubject$, cursorSubject$, shopifyDomain, projectId, dataset, token])\n\n const handleSearchTermChanged = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newQuery = event.currentTarget.value\n setQuery(newQuery)\n setSearchResults([])\n setPageInfo(undefined)\n setIsLoading(true)\n\n cursorSubject$.next('')\n searchSubject$.next(newQuery)\n },\n [cursorSubject$, searchSubject$],\n )\n\n const handleScollerLoadMore = useCallback(() => {\n setIsLoading(true)\n if (pageInfo) cursorSubject$.next(pageInfo.cursor)\n searchSubject$.next(query)\n }, [cursorSubject$, pageInfo, searchSubject$, query])\n\n const handleSelect = useCallback(\n (file: Asset) => {\n file._key = value?._key\n file._type = schemaType.name\n onChange(PatchEvent.from([set(file)]))\n onClose()\n },\n [onChange, onClose, schemaType.name, value?._key],\n )\n\n const renderFile = useCallback(\n (fileProps: any) => {\n const {photo, layout} = fileProps\n return (\n <File\n onClick={handleSelect}\n data={photo.data}\n width={layout.width}\n height={layout.height}\n />\n )\n },\n [handleSelect],\n )\n\n const handleWidth = useCallback((width: number) => {\n if (width < 300) return 150\n else if (width < 600) return 200\n return 300\n }, [])\n\n return (\n <Dialog\n id=\"shopify-asset-source\"\n header={<DialogHeader title=\"Shopify Assets\" shopifyDomain={shopifyDomain} />}\n onClose={onClose}\n open={isOpen}\n width={4}\n >\n <Stack gap={3} padding={4}>\n {error ? (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={3}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1}>{error}</Text>\n </Inline>\n </Flex>\n </Card>\n ) : (\n <>\n <Card>\n <Search gap={3}>\n <Text size={1} weight=\"semibold\">\n Search Shopify for assets\n </Text>\n <TextInput\n label=\"Search Images\"\n placeholder=\"filename.jpg\"\n value={query}\n onChange={handleSearchTermChanged}\n />\n </Search>\n </Card>\n {!isLoading && searchResults.length === 0 && (\n <Text size={1} muted>\n No results found\n </Text>\n )}\n <InfiniteScroll\n dataLength={searchResults.length} // This is important field to render the next data\n next={handleScollerLoadMore}\n hasMore={pageInfo ? pageInfo?.hasNextPage : true}\n scrollThreshold={0.99}\n height=\"60vh\"\n loader={\n <Flex align=\"center\" justify=\"center\" padding={3}>\n <Spinner muted />\n </Flex>\n }\n endMessage={\n <Flex align=\"center\" justify=\"center\" padding={3}>\n <Text size={1} muted>\n No more results\n </Text>\n </Flex>\n }\n >\n {searchResults && (\n <PhotoAlbum\n layout=\"rows\"\n spacing={PHOTO_SPACING}\n padding={PHOTO_PADDING}\n targetRowHeight={handleWidth}\n photos={searchResults.map((file: ShopifyFile) => ({\n src: file?.preview?.url,\n width: file?.preview?.width || 2048,\n height: file?.preview?.height || 2048,\n key: file.id,\n data: file,\n }))}\n renderPhoto={renderFile}\n componentsProps={{\n containerProps: {style: {marginBottom: `${PHOTO_SPACING}px`}},\n }}\n />\n )}\n </InfiniteScroll>\n </>\n )}\n </Stack>\n </Dialog>\n )\n}\n","const ShopifyIcon = () => {\n return (\n <svg width=\"18\" height=\"20\" viewBox=\"0 0 18 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3269 3.85113C15.3132 3.75015 15.2258 3.69411 15.1531 3.688C15.081 3.6819 13.6693 3.66026 13.6693 3.66026C13.6693 3.66026 12.4887 2.50392 12.3722 2.38628C12.2555 2.26865 12.0277 2.30417 11.9392 2.3308C11.9381 2.33135 11.7175 2.40016 11.3461 2.51612C11.2839 2.31304 11.1927 2.06335 11.0622 1.81255C10.6419 1.00356 10.0263 0.575752 9.2825 0.574642C9.28142 0.574642 9.28092 0.574642 9.27975 0.574642C9.22808 0.574642 9.17692 0.579636 9.12517 0.584074C9.10317 0.557441 9.08117 0.531362 9.05808 0.505838C8.73408 0.156272 8.31869 -0.0140727 7.82082 0.000908712C6.86027 0.0286521 5.90357 0.72834 5.12787 1.97124C4.58212 2.84572 4.16677 3.94435 4.04904 4.79497C2.94601 5.13953 2.17471 5.38035 2.15766 5.3859C1.60091 5.56235 1.58331 5.57955 1.51069 6.10889C1.45677 6.50895 0 17.8704 0 17.8704L12.2082 20L17.4994 18.6733C17.4994 18.6733 15.3407 3.95212 15.3269 3.85113ZM10.7349 2.707C10.4537 2.79467 10.1342 2.89454 9.78758 3.00274C9.78042 2.51224 9.72267 1.82975 9.496 1.23992C10.2249 1.3792 10.5836 2.21095 10.7349 2.707ZM9.14883 3.20249C8.509 3.40225 7.81091 3.62031 7.11058 3.83892C7.30753 3.0782 7.68107 2.32081 8.13989 1.8242C8.31044 1.63943 8.54917 1.43358 8.832 1.31594C9.09767 1.87525 9.15542 2.66705 9.14883 3.20249ZM7.84007 0.645665C8.06562 0.640671 8.25542 0.690609 8.41775 0.798253C8.15805 0.9342 7.90718 1.12951 7.67172 1.38419C7.06162 2.04448 6.594 3.06932 6.4075 4.0581C5.826 4.23954 5.25715 4.41766 4.73342 4.58078C5.06405 3.02438 6.35743 0.688944 7.84007 0.645665Z\"\n fill=\"#95BF47\"\n />\n <path\n d=\"M9.276 6.43238L8.66142 8.75117C8.66142 8.75117 7.97598 8.43658 7.16342 8.48817C5.97181 8.56417 5.95916 9.32217 5.97126 9.51242C6.03618 10.5495 8.74125 10.7759 8.89308 13.2051C9.01242 15.1161 7.88796 16.4233 6.26779 16.5265C4.32303 16.6502 3.25246 15.4933 3.25246 15.4933L3.66452 13.7256C3.66452 13.7256 4.74224 14.5457 5.60487 14.4907C6.16821 14.4547 6.36957 13.9924 6.34921 13.6657C6.26448 12.3128 4.06172 12.3927 3.92253 10.17C3.80536 8.29951 5.02337 6.40408 7.71081 6.23318C8.74617 6.16604 9.276 6.43238 9.276 6.43238Z\"\n fill=\"white\"\n />\n <path\n d=\"M15.1536 3.68853C15.0815 3.68243 13.6698 3.66078 13.6698 3.66078C13.6698 3.66078 12.4893 2.50444 12.3726 2.38681C12.3292 2.34298 12.2703 2.32023 12.2087 2.31079L12.2093 19.9994L17.4999 18.6733C17.4999 18.6733 15.3412 3.95264 15.3274 3.85166C15.3137 3.75068 15.2257 3.69463 15.1536 3.68853Z\"\n fill=\"#5E8E3E\"\n />\n </svg>\n )\n}\n\nexport default ShopifyIcon\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Grid, Inline, Stack, Text} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectInputProps, PatchEvent, unset} from 'sanity'\n\nimport type {Asset} from '../types'\nimport AssetPreview from './AssetPreview'\nimport ShopifyAssetPicker from './ShopifyAssetPicker'\nimport ShopifyIcon from './ShopifyIcon'\n\nexport default function ShopifyAssetInput(props: ObjectInputProps<Asset>) {\n const {onChange, readOnly, value, schemaType} = props\n const {options} = schemaType\n const {shopifyDomain} = options\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n const onOpen = useCallback(() => {\n setDialogOpen(true)\n }, [setDialogOpen])\n\n const onClose = useCallback(() => {\n setDialogOpen(false)\n }, [setDialogOpen])\n\n if (!shopifyDomain) {\n return (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={3}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1}>\n You need to configure your *.myshopify.com domain in the plugin / field options to\n enable Shopify Assets.\n </Text>\n </Inline>\n </Flex>\n </Card>\n )\n }\n\n return (\n <>\n {dialogOpen && (\n <ShopifyAssetPicker\n {...props}\n shopifyDomain={shopifyDomain}\n isOpen={dialogOpen}\n onClose={onClose}\n value={value}\n />\n )}\n <Stack>\n <AssetPreview value={value} />\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n icon={ShopifyIcon}\n title=\"Select an asset\"\n onClick={onOpen}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n </>\n )\n}\n","import {defineField, defineType} from 'sanity'\n\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport ShopifyAssetInput from '../components/ShopifyAssetInput'\n\ninterface ObjectConfig {\n shopifyDomain: string\n}\n\ndeclare module 'sanity' {\n interface ObjectOptions {\n shopifyDomain?: string\n }\n}\n\nexport const shopifyAssetSchema = (config: ObjectConfig) => {\n const {shopifyDomain} = config\n\n return defineType({\n type: 'object',\n name: 'shopify.asset',\n title: 'Shopify Asset',\n options: {\n shopifyDomain,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'filename',\n title: 'Filename',\n }),\n defineField({\n type: 'string',\n name: 'id',\n title: 'ID',\n }),\n defineField({\n type: 'shopify.assetMetadata',\n name: 'meta',\n title: 'Metadata',\n }),\n defineField({\n type: 'shopify.assetPreview',\n name: 'preview',\n title: 'Preview',\n }),\n defineField({\n type: 'string',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'url',\n name: 'url',\n title: 'URL',\n }),\n ],\n ...({\n components: {\n input: ShopifyAssetInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}),\n preview: {\n select: {\n meta: 'meta',\n preview: 'preview',\n url: 'url',\n filename: 'filename',\n type: 'type',\n },\n prepare({url, meta, preview, filename, type}) {\n return {\n title: filename,\n subtitle: type,\n value: {\n url,\n meta,\n preview,\n filename,\n },\n }\n },\n },\n })\n}\n","import {definePlugin, type ObjectDefinition} from 'sanity'\n\nimport {shopifyAssetMetadataSchema} from './schema/shopifyAssetMetadataSchema'\nimport {shopifyAssetPreviewSchema} from './schema/shopifyAssetPreviewSchema'\nimport {shopifyAssetSchema} from './schema/shopifyAssetSchema'\nimport type {PluginConfig} from './types'\n\nexport * from './types'\n\n// enables autocompletion and validation of document options\ndeclare module 'sanity' {\n export namespace Schema {\n // here we type up our custom schema definition\n // options are optional on fields: the plugin-level config provides the default domain\n export type ShopifyAssetTypeDef = Omit<ObjectDefinition, 'type' | 'fields'> & {\n type: 'shopify.asset'\n options?: {\n shopifyDomain?: string\n }\n }\n // Adds 'extension-type' as an intrinsic type\n export interface IntrinsicTypeDefinition {\n 'shopify.asset': ShopifyAssetTypeDef\n }\n }\n}\n\nexport const shopifyAssets = definePlugin<PluginConfig>((config) => {\n return {\n name: 'shopify-asset-schema',\n schema: {\n types: [shopifyAssetPreviewSchema, shopifyAssetMetadataSchema, shopifyAssetSchema(config)],\n },\n }\n})\n"],"names":["shopifyAssetMetadataSchema","defineType","type","name","title","fields","defineField","shopifyAssetPreviewSchema","ShopifyAssetDiffPreview","t0","$","_c","value","preview","url","t1","t2","for","objectFit","margin","maxWidth","maxHeight","t3","t4","charAt","toUpperCase","t5","slice","t6","t7","Symbol","AssetDiff","diff","schemaType","Root","styled","div","withConfig","displayName","componentId","theme","v2","getTheme_v2","sanity","color","muted","bg","border","InfoLine","Card","fg","DurationLine","VideoPlayer","src","kind","videoNode","useRef","player","undefined","current","videojs","sources","controls","useEffect","stopPropagation","_temp","className","position","style","t8","event","StyledBox","Box","RenderAsset","height","display","AssetPreview","filename","meta","fileSize","duration","prettyBytes","prettyMilliseconds","colonNotation","secondsDecimalDigits","fetchSearch","props","projectId","dataset","shop","query","cursor","resultsPerPage","token","defer","axios","get","encodeURIComponent","withCredentials","method","headers","Authorization","pipe","map","result","data","fetchList","search","concat","withLatestFrom","debounceTime","distinctUntilChanged","switchMap","q","c","DialogHeader","shopifyDomain","window","open","handleOpenInNewTab","opacity","right","LaunchIcon","extractName","split","pop","File","onClick","width","rootElm","handleClick","backgroundImage","t9","t10","Search","Stack","RESULTS_PER_PAGE","PHOTO_SPACING","PHOTO_PADDING","ShopifyAssetPicker","isOpen","onClose","onChange","useProjectId","useDataset","apiVersion","client","useClient","config","apiError","setApiError","useState","setQuery","searchResults","setSearchResults","pageInfo","setPageInfo","isLoading","setIsLoading","error","BehaviorSubject","searchSubject$","cursorSubject$","searchSubscription","subscribe","next","results","prevResults","assets","err","response","message","unsubscribe","newQuery","currentTarget","handleSearchTermChanged","handleScollerLoadMore","_key","file","_type","PatchEvent","from","set","handleSelect","fileProps","photo","layout","renderFile","handleWidth","t11","t12","length","hasNextPage","_temp2","containerProps","marginBottom","t13","file_0","key","id","ShopifyIcon","ShopifyAssetInput","readOnly","options","dialogOpen","setDialogOpen","unset","removeValue","onOpen","gridTemplateColumns","shopifyAssetSchema","components","input","select","prepare","subtitle","shopifyAssets","definePlugin","schema","types"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/schema/shopifyAssetMetadataSchema.ts","../src/schema/shopifyAssetPreviewSchema.ts","../src/components/AssetDiff.tsx","../src/components/File.styled.tsx","../src/components/VideoPlayer.tsx","../src/components/AssetPreview.tsx","../src/datastores/shopify.ts","../src/components/DialogHeader.tsx","../src/utils/helpers.ts","../src/components/File.tsx","../src/components/ShopifyAssetInput.styled.tsx","../src/components/ShopifyAssetPicker.tsx","../src/components/ShopifyIcon.tsx","../src/components/ShopifyAssetInput.tsx","../src/schema/shopifyAssetSchema.ts","../src/index.ts"],"sourcesContent":["import {defineField, defineType} from 'sanity'\n\nexport const shopifyAssetMetadataSchema = defineType({\n type: 'object',\n name: 'shopify.assetMetadata',\n title: 'Asset metadata',\n fields: [\n defineField({\n type: 'string',\n name: 'alt',\n title: 'Alternative text',\n }),\n defineField({\n type: 'number',\n name: 'duration',\n title: 'Duration',\n }),\n defineField({\n type: 'number',\n name: 'fileSize',\n title: 'File size',\n }),\n defineField({\n type: 'number',\n name: 'height',\n title: 'Height',\n }),\n defineField({\n type: 'number',\n name: 'width',\n title: 'Width',\n }),\n ],\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const shopifyAssetPreviewSchema = defineType({\n type: 'object',\n name: 'shopify.assetPreview',\n title: 'Asset preview',\n fields: [\n defineField({\n type: 'number',\n name: 'height',\n title: 'Height',\n }),\n defineField({\n type: 'number',\n name: 'width',\n title: 'Width',\n }),\n defineField({\n type: 'url',\n name: 'url',\n title: 'URL',\n }),\n ],\n})\n","import {Flex, Stack, Text} from '@sanity/ui'\nimport {DiffFromTo} from 'sanity'\n\nimport type {Asset} from '../types'\n\ntype Props = {\n value: Asset | undefined\n}\n\nconst ShopifyAssetDiffPreview = ({value}: Props) => {\n if (!value) {\n return null\n }\n\n if (value?.preview?.url) {\n return (\n <Flex justify=\"center\" align=\"center\" height=\"fill\">\n <Stack gap={2}>\n <img\n alt=\"preview\"\n src={value?.preview?.url}\n style={{\n objectFit: 'contain',\n margin: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n }}\n />\n <Text size={1}>{value.type.charAt(0).toUpperCase() + value.type.slice(1)}</Text>\n </Stack>\n </Flex>\n )\n }\n\n return (\n <Flex justify=\"center\" align=\"center\" height=\"fill\">\n <div>(no image)</div>\n </Flex>\n )\n}\n\ntype DiffProps = {\n diff: any\n schemaType: any\n}\n\nconst AssetDiff = ({diff, schemaType}: DiffProps) => {\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={ShopifyAssetDiffPreview}\n layout={'grid'}\n />\n )\n}\n\nexport default AssetDiff\n","import {Card} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {styled} from 'styled-components'\n\nexport const Root = styled.div`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n background-color: ${v2.color.muted.bg};\n border: 1px solid ${v2.color.border};\n `\n }};\n overflow: hidden;\n background-origin: content-box;\n background-repeat: no-repeat;\n background-clip: border-box;\n background-size: cover;\n position: relative;\n outline: none !important;\n box-sizing: content-box;\n user-drag: none;\n\n &:hover {\n opacity: 0.85;\n }\n\n &:focus,\n &:active {\n border: 1px solid var(--input-border-color-focus);\n box-shadow: inset 0 0 0 3px var(--input-border-color-focus);\n }\n`\n\nexport const InfoLine = styled(Card)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n --infoline-fg: ${v2.color.fg};\n --infoline-bg: ${v2.color.bg};\n `\n }};\n user-drag: none;\n position: absolute;\n background-color: var(--infoline-bg);\n top: 0;\n left: 0;\n max-width: 65%;\n overflow-wrap: break-word;\n\n [data-ui='Text'] {\n color: var(--infoline-fg);\n }\n`\n\nexport const DurationLine = styled(Card)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n --durationline-fg: ${v2.color.bg};\n --durationline-bg: ${v2.color.fg};\n `\n }};\n user-drag: none;\n position: absolute;\n background-color: var(--durationline-bg);\n top: 0;\n right: 0;\n\n [data-ui='Text'] {\n color: var(--durationline-fg);\n }\n`\n","import {type CSSProperties, type MouseEvent, useCallback, useEffect, useRef} from 'react'\nimport videojs, {type VideoJsPlayer} from 'video.js'\n\ntype PlayerKind = 'player' | 'diff'\n\ninterface VideoProps {\n src: string\n kind: PlayerKind\n}\n\nconst VideoPlayer = ({src, kind}: VideoProps) => {\n const videoNode = useRef<HTMLVideoElement>(null)\n const player = useRef<VideoJsPlayer | undefined>(undefined)\n\n useEffect(() => {\n player.current = videojs(videoNode.current ?? '', {\n sources: [{src}],\n controls: true,\n })\n\n player.current.src({src})\n }, [src])\n\n const stopPropagation = useCallback((event: MouseEvent) => {\n event.stopPropagation()\n }, [])\n\n const className: Record<PlayerKind, string> = {\n player: 'video-js vjs-16-9 vjs-big-play-centered',\n diff: 'video-js vjs-layout-tiny vjs-fluid',\n }\n\n const style: CSSProperties = {position: 'relative'}\n\n return (\n <div>\n <link href=\"https://vjs.zencdn.net/7.8.4/video-js.css\" rel=\"stylesheet\" />\n <div data-vjs-player>\n {/* Shopify assets do not provide caption tracks */}\n {/* oxlint-disable-next-line jsx-a11y/media-has-caption */}\n <video\n aria-label=\"Video preview\"\n onClick={stopPropagation}\n style={kind === 'diff' ? style : {}}\n className={className[kind]}\n ref={videoNode}\n />\n </div>\n </div>\n )\n}\n\nexport default VideoPlayer\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport prettyBytes from 'pretty-bytes'\nimport prettyMilliseconds from 'pretty-ms'\nimport {styled} from 'styled-components'\n\nimport type {Asset} from '../types'\nimport {DurationLine, InfoLine} from './File.styled'\nimport VideoPlayer from './VideoPlayer'\n\ninterface ComponentProps {\n value: Asset | undefined\n}\n\nconst StyledBox = styled(Box)`\n ${({theme}) => {\n const v2 = getTheme_v2({sanity: theme.sanity})\n return `\n background-color: ${v2.color.muted.bg};\n border: 1px solid ${v2.color.border};\n `\n }};\n display: flex;\n justify-content: center;\n position: relative;\n`\n\nconst RenderAsset = ({value, url}: {value: Asset; url: string}) => {\n switch (value.type) {\n case 'video':\n return <VideoPlayer src={url} kind=\"player\" />\n default:\n return (\n <Flex justify=\"center\">\n <img\n alt=\"preview\"\n src={value?.preview?.url}\n style={{\n maxWidth: '100%',\n height: 'auto',\n display: 'block',\n maxHeight: '30vh',\n }}\n />\n </Flex>\n )\n }\n}\n\nconst AssetPreview = ({value}: ComponentProps) => {\n const url = value && value.url\n\n if (!value || !url) {\n return null\n }\n\n const {filename, meta} = value\n const {fileSize, duration} = meta\n\n return (\n <StyledBox marginBottom={2}>\n <RenderAsset value={value} url={url} />\n <InfoLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Select ${filename}`}>\n {filename} {fileSize && `(${prettyBytes(fileSize)})`}\n </Text>\n </InfoLine>\n {duration && (\n <DurationLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Video duration: ${filename}`}>\n {prettyMilliseconds(duration, {colonNotation: true, secondsDecimalDigits: 0})}\n </Text>\n </DurationLine>\n )}\n </StyledBox>\n )\n}\n\nexport default AssetPreview\n","import axios from 'axios'\nimport {BehaviorSubject, Observable, concat, defer} from 'rxjs'\nimport {debounceTime, distinctUntilChanged, map, switchMap, withLatestFrom} from 'rxjs/operators'\n\ntype SearchSubject = BehaviorSubject<string>\ntype CursorSubject = BehaviorSubject<any>\n\ninterface fetchProps {\n projectId: string\n dataset: string\n shop: string\n query: SearchSubject\n cursor: CursorSubject\n resultsPerPage: number\n token?: string\n}\n\ninterface searchProps extends Omit<fetchProps, 'query' | 'cursor'> {\n query: string\n cursor: string\n}\ninterface listProps extends Omit<fetchProps, 'query' | 'cursor'> {\n cursor: string\n}\n\nconst fetchSearch = (props: searchProps): Observable<any> => {\n const {projectId, dataset, shop, query, cursor, resultsPerPage, token} = props\n\n return defer(() => {\n return axios.get(\n `https://${projectId}.api.sanity.io/v1/shopify/assets/${dataset}?shop=${shop}&query=${encodeURIComponent(\n query,\n )}${cursor && `&cursor=${cursor}`}&limit=${resultsPerPage}`,\n {\n withCredentials: true,\n method: 'GET',\n headers: token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {},\n },\n )\n }).pipe(map((result) => result.data))\n}\n\nconst fetchList = (props: listProps): Observable<any> => {\n const {projectId, dataset, shop, cursor, resultsPerPage, token} = props\n\n return defer(() =>\n axios.get(\n `https://${projectId}.api.sanity.io/v1/shopify/assets/${dataset}?shop=${shop}${\n cursor && `&cursor=${cursor}`\n }&limit=${resultsPerPage}`,\n {\n withCredentials: true,\n method: 'GET',\n headers: token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {},\n },\n ),\n ).pipe(map((result) => result.data))\n}\n\nexport const search = (props: fetchProps): Observable<any> => {\n const {projectId, dataset, shop, query, cursor, resultsPerPage, token} = props\n\n return concat(\n query.pipe(\n withLatestFrom(cursor),\n debounceTime(500),\n distinctUntilChanged(),\n switchMap(([q, c]) => {\n if (q) {\n return fetchSearch({\n projectId,\n dataset,\n shop,\n query: q,\n cursor: c,\n resultsPerPage,\n token,\n }).pipe(distinctUntilChanged())\n }\n return fetchList({projectId, dataset, shop, cursor: c, resultsPerPage, token})\n }),\n ),\n )\n}\n","import {LaunchIcon} from '@sanity/icons/Launch'\nimport {Box, Button, Flex} from '@sanity/ui'\nimport {useCallback} from 'react'\n\ninterface Props {\n title: string\n shopifyDomain: string\n}\n\nconst DialogHeader = (props: Props) => {\n const {title, shopifyDomain} = props\n\n const handleOpenInNewTab = useCallback(() => {\n window.open(`https://${shopifyDomain}/admin/content/files`, '_blank')\n }, [shopifyDomain])\n\n return (\n <Flex align=\"center\">\n {title}\n {/*\n HACK: Sanity UI will attempt to focus the first 'focusable' descendant of any dialog.\n Typically this is fine, but since our first focusable element is a button with a tooltip, this\n default behaviour causes the tooltip to appear whenever the dialog is opened, which we don't want!\n\n To get around this, we include a pseudo-hidden input to ensure our tooltip-enabled button remains\n unfocused on initial mount.\n */}\n <input\n aria-hidden=\"true\"\n aria-label=\"Focus trap\"\n style={{opacity: 0}}\n tabIndex={-1}\n type=\"button\"\n />\n <Box style={{position: 'absolute', right: '-1.5em'}}>\n <Box className=\"button-large\">\n <Button\n fontSize={1}\n icon={LaunchIcon}\n mode=\"bleed\"\n onClick={handleOpenInNewTab}\n text=\"Add New\"\n />\n </Box>\n </Box>\n </Flex>\n )\n}\n\nexport default DialogHeader\n","export const extractName = (name: string): string => name?.split('/')?.pop()?.split('?')[0] ?? ''\n","import {Text} from '@sanity/ui'\nimport prettyBytes from 'pretty-bytes'\nimport prettyMilliseconds from 'pretty-ms'\nimport {useCallback, useRef} from 'react'\n\nimport type {Asset, ShopifyFile} from '../types'\nimport {extractName} from '../utils/helpers'\nimport {DurationLine, InfoLine, Root} from './File.styled'\n\ntype Props = {\n data: ShopifyFile\n width: number\n height: number\n onClick: (file: Asset) => void\n}\n\nexport default function File(props: Props) {\n const {onClick, data, width, height} = props\n const rootElm = useRef<HTMLDivElement>(null)\n\n const {preview, meta} = data\n const filename = extractName(data.url)\n\n const handleClick = useCallback(() => {\n onClick({...data, filename})\n }, [onClick, data, filename])\n\n return (\n <Root\n ref={rootElm}\n title={filename}\n tabIndex={0}\n style={{\n width: `${width}px`,\n height: `${height}px`,\n backgroundImage: `url(\"${preview?.url}\")`,\n }}\n onClick={handleClick}\n >\n <InfoLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Select ${filename}`}>\n {filename} {meta.fileSize && `(${prettyBytes(meta.fileSize)})`}\n </Text>\n </InfoLine>\n {meta.duration && (\n <DurationLine padding={2} radius={2} margin={2}>\n <Text size={1} title={`Video duration: ${filename}`}>\n {prettyMilliseconds(meta.duration, {colonNotation: true, secondsDecimalDigits: 0})}\n </Text>\n </DurationLine>\n )}\n </Root>\n )\n}\n","import {Stack} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Search = styled(Stack)`\n position: sticky;\n top: 0;\n z-index: 1;\n`\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Card, Dialog, Flex, Inline, Spinner, Stack, Text, TextInput} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useEffect, useMemo, useState} from 'react'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport {PhotoAlbum} from 'react-photo-album'\nimport {BehaviorSubject, type Subscription} from 'rxjs'\nimport {type ObjectInputProps, PatchEvent, set, useClient, useDataset, useProjectId} from 'sanity'\n\nimport {search} from '../datastores/shopify'\nimport type {Asset, PageInfo, ShopifyAPIResponse, ShopifyFile} from '../types'\nimport DialogHeader from './DialogHeader'\nimport File from './File'\nimport {Search} from './ShopifyAssetInput.styled'\n\nconst RESULTS_PER_PAGE = 42\nconst PHOTO_SPACING = 2\nconst PHOTO_PADDING = 1\n\nexport interface AssetPickerProps extends ObjectInputProps<Asset> {\n shopifyDomain: string\n isOpen: boolean\n onClose: () => void\n}\n\nexport default function ShopifyAssetPicker(props: AssetPickerProps) {\n const {isOpen, onClose, shopifyDomain, onChange, schemaType, value} = props\n const projectId = useProjectId()\n const dataset = useDataset()\n const client = useClient({apiVersion: '2021-06-07'})\n const token = client.config().token\n\n const [apiError, setApiError] = useState('')\n const [query, setQuery] = useState('')\n const [searchResults, setSearchResults] = useState<ShopifyFile[]>([])\n const [pageInfo, setPageInfo] = useState<PageInfo>()\n const [isLoading, setIsLoading] = useState(true)\n\n const error = shopifyDomain\n ? apiError\n : 'Please configure your Shopify domain in the plugin config'\n\n const searchSubject$ = useMemo(() => new BehaviorSubject(''), [])\n const cursorSubject$ = useMemo(() => new BehaviorSubject(''), [])\n\n useEffect(() => {\n const searchSubscription: Subscription = search({\n projectId,\n dataset,\n shop: shopifyDomain,\n query: searchSubject$,\n cursor: cursorSubject$,\n resultsPerPage: RESULTS_PER_PAGE,\n token,\n }).subscribe({\n next: (results: ShopifyAPIResponse) => {\n setSearchResults((prevResults) => [...prevResults, ...results.assets])\n setPageInfo(results.pageInfo)\n setIsLoading(false)\n },\n error: (err) => {\n setApiError(\n `${\n err.response?.data?.message || err.message || 'An error occurred'\n } - check plugin configuration`,\n )\n },\n })\n\n return () => searchSubscription.unsubscribe()\n }, [searchSubject$, cursorSubject$, shopifyDomain, projectId, dataset, token])\n\n const handleSearchTermChanged = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const newQuery = event.currentTarget.value\n setQuery(newQuery)\n setSearchResults([])\n setPageInfo(undefined)\n setIsLoading(true)\n\n cursorSubject$.next('')\n searchSubject$.next(newQuery)\n },\n [cursorSubject$, searchSubject$],\n )\n\n const handleScollerLoadMore = useCallback(() => {\n setIsLoading(true)\n if (pageInfo) cursorSubject$.next(pageInfo.cursor)\n searchSubject$.next(query)\n }, [cursorSubject$, pageInfo, searchSubject$, query])\n\n const handleSelect = useCallback(\n (file: Asset) => {\n file._key = value?._key\n file._type = schemaType.name\n onChange(PatchEvent.from([set(file)]))\n onClose()\n },\n [onChange, onClose, schemaType.name, value?._key],\n )\n\n const renderFile = useCallback(\n (fileProps: any) => {\n const {photo, layout} = fileProps\n return (\n <File\n onClick={handleSelect}\n data={photo.data}\n width={layout.width}\n height={layout.height}\n />\n )\n },\n [handleSelect],\n )\n\n const handleWidth = useCallback((width: number) => {\n if (width < 300) return 150\n else if (width < 600) return 200\n return 300\n }, [])\n\n return (\n <Dialog\n id=\"shopify-asset-source\"\n header={<DialogHeader title=\"Shopify Assets\" shopifyDomain={shopifyDomain} />}\n onClose={onClose}\n open={isOpen}\n width={4}\n >\n <Stack gap={3} padding={4}>\n {error ? (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={3}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1}>{error}</Text>\n </Inline>\n </Flex>\n </Card>\n ) : (\n <>\n <Card>\n <Search gap={3}>\n <Text size={1} weight=\"semibold\">\n Search Shopify for assets\n </Text>\n <TextInput\n label=\"Search Images\"\n placeholder=\"filename.jpg\"\n value={query}\n onChange={handleSearchTermChanged}\n />\n </Search>\n </Card>\n {!isLoading && searchResults.length === 0 && (\n <Text size={1} muted>\n No results found\n </Text>\n )}\n <InfiniteScroll\n dataLength={searchResults.length} // This is important field to render the next data\n next={handleScollerLoadMore}\n hasMore={pageInfo ? pageInfo?.hasNextPage : true}\n scrollThreshold={0.99}\n height=\"60vh\"\n loader={\n <Flex align=\"center\" justify=\"center\" padding={3}>\n <Spinner muted />\n </Flex>\n }\n endMessage={\n <Flex align=\"center\" justify=\"center\" padding={3}>\n <Text size={1} muted>\n No more results\n </Text>\n </Flex>\n }\n >\n {searchResults && (\n <PhotoAlbum\n layout=\"rows\"\n spacing={PHOTO_SPACING}\n padding={PHOTO_PADDING}\n targetRowHeight={handleWidth}\n photos={searchResults.map((file: ShopifyFile) => ({\n src: file?.preview?.url,\n width: file?.preview?.width || 2048,\n height: file?.preview?.height || 2048,\n key: file.id,\n data: file,\n }))}\n renderPhoto={renderFile}\n componentsProps={{\n containerProps: {style: {marginBottom: `${PHOTO_SPACING}px`}},\n }}\n />\n )}\n </InfiniteScroll>\n </>\n )}\n </Stack>\n </Dialog>\n )\n}\n","const ShopifyIcon = () => {\n return (\n <svg width=\"18\" height=\"20\" viewBox=\"0 0 18 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3269 3.85113C15.3132 3.75015 15.2258 3.69411 15.1531 3.688C15.081 3.6819 13.6693 3.66026 13.6693 3.66026C13.6693 3.66026 12.4887 2.50392 12.3722 2.38628C12.2555 2.26865 12.0277 2.30417 11.9392 2.3308C11.9381 2.33135 11.7175 2.40016 11.3461 2.51612C11.2839 2.31304 11.1927 2.06335 11.0622 1.81255C10.6419 1.00356 10.0263 0.575752 9.2825 0.574642C9.28142 0.574642 9.28092 0.574642 9.27975 0.574642C9.22808 0.574642 9.17692 0.579636 9.12517 0.584074C9.10317 0.557441 9.08117 0.531362 9.05808 0.505838C8.73408 0.156272 8.31869 -0.0140727 7.82082 0.000908712C6.86027 0.0286521 5.90357 0.72834 5.12787 1.97124C4.58212 2.84572 4.16677 3.94435 4.04904 4.79497C2.94601 5.13953 2.17471 5.38035 2.15766 5.3859C1.60091 5.56235 1.58331 5.57955 1.51069 6.10889C1.45677 6.50895 0 17.8704 0 17.8704L12.2082 20L17.4994 18.6733C17.4994 18.6733 15.3407 3.95212 15.3269 3.85113ZM10.7349 2.707C10.4537 2.79467 10.1342 2.89454 9.78758 3.00274C9.78042 2.51224 9.72267 1.82975 9.496 1.23992C10.2249 1.3792 10.5836 2.21095 10.7349 2.707ZM9.14883 3.20249C8.509 3.40225 7.81091 3.62031 7.11058 3.83892C7.30753 3.0782 7.68107 2.32081 8.13989 1.8242C8.31044 1.63943 8.54917 1.43358 8.832 1.31594C9.09767 1.87525 9.15542 2.66705 9.14883 3.20249ZM7.84007 0.645665C8.06562 0.640671 8.25542 0.690609 8.41775 0.798253C8.15805 0.9342 7.90718 1.12951 7.67172 1.38419C7.06162 2.04448 6.594 3.06932 6.4075 4.0581C5.826 4.23954 5.25715 4.41766 4.73342 4.58078C5.06405 3.02438 6.35743 0.688944 7.84007 0.645665Z\"\n fill=\"#95BF47\"\n />\n <path\n d=\"M9.276 6.43238L8.66142 8.75117C8.66142 8.75117 7.97598 8.43658 7.16342 8.48817C5.97181 8.56417 5.95916 9.32217 5.97126 9.51242C6.03618 10.5495 8.74125 10.7759 8.89308 13.2051C9.01242 15.1161 7.88796 16.4233 6.26779 16.5265C4.32303 16.6502 3.25246 15.4933 3.25246 15.4933L3.66452 13.7256C3.66452 13.7256 4.74224 14.5457 5.60487 14.4907C6.16821 14.4547 6.36957 13.9924 6.34921 13.6657C6.26448 12.3128 4.06172 12.3927 3.92253 10.17C3.80536 8.29951 5.02337 6.40408 7.71081 6.23318C8.74617 6.16604 9.276 6.43238 9.276 6.43238Z\"\n fill=\"white\"\n />\n <path\n d=\"M15.1536 3.68853C15.0815 3.68243 13.6698 3.66078 13.6698 3.66078C13.6698 3.66078 12.4893 2.50444 12.3726 2.38681C12.3292 2.34298 12.2703 2.32023 12.2087 2.31079L12.2093 19.9994L17.4999 18.6733C17.4999 18.6733 15.3412 3.95264 15.3274 3.85166C15.3137 3.75068 15.2257 3.69463 15.1536 3.68853Z\"\n fill=\"#5E8E3E\"\n />\n </svg>\n )\n}\n\nexport default ShopifyIcon\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Button, Card, Flex, Grid, Inline, Stack, Text} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {type ObjectInputProps, PatchEvent, unset} from 'sanity'\n\nimport type {Asset} from '../types'\nimport AssetPreview from './AssetPreview'\nimport ShopifyAssetPicker from './ShopifyAssetPicker'\nimport ShopifyIcon from './ShopifyIcon'\n\nexport default function ShopifyAssetInput(props: ObjectInputProps<Asset>) {\n const {onChange, readOnly, value, schemaType} = props\n const {options} = schemaType\n const {shopifyDomain} = options\n\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const removeValue = useCallback(() => {\n onChange(PatchEvent.from([unset()]))\n }, [onChange])\n\n const onOpen = useCallback(() => {\n setDialogOpen(true)\n }, [setDialogOpen])\n\n const onClose = useCallback(() => {\n setDialogOpen(false)\n }, [setDialogOpen])\n\n if (!shopifyDomain) {\n return (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={3}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1}>\n You need to configure your *.myshopify.com domain in the plugin / field options to\n enable Shopify Assets.\n </Text>\n </Inline>\n </Flex>\n </Card>\n )\n }\n\n return (\n <>\n {dialogOpen && (\n <ShopifyAssetPicker\n {...props}\n shopifyDomain={shopifyDomain}\n isOpen={dialogOpen}\n onClose={onClose}\n value={value}\n />\n )}\n <Stack>\n <AssetPreview value={value} />\n\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(auto-fit, minmax(100px, 1fr))'}}>\n <Button\n disabled={readOnly}\n mode=\"ghost\"\n icon={ShopifyIcon}\n title=\"Select an asset\"\n onClick={onOpen}\n text=\"Select…\"\n />\n <Button\n disabled={readOnly || !value}\n tone=\"critical\"\n mode=\"ghost\"\n title=\"Remove asset\"\n text=\"Remove\"\n onClick={removeValue}\n />\n </Grid>\n </Stack>\n </>\n )\n}\n","import {defineField, defineType} from 'sanity'\n\nimport AssetDiff from '../components/AssetDiff'\nimport AssetPreview from '../components/AssetPreview'\nimport ShopifyAssetInput from '../components/ShopifyAssetInput'\n\ninterface ObjectConfig {\n shopifyDomain: string\n}\n\ndeclare module 'sanity' {\n interface ObjectOptions {\n shopifyDomain?: string\n }\n}\n\nexport const shopifyAssetSchema = (config: ObjectConfig) => {\n const {shopifyDomain} = config\n\n return defineType({\n type: 'object',\n name: 'shopify.asset',\n title: 'Shopify Asset',\n options: {\n shopifyDomain,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'filename',\n title: 'Filename',\n }),\n defineField({\n type: 'string',\n name: 'id',\n title: 'ID',\n }),\n defineField({\n type: 'shopify.assetMetadata',\n name: 'meta',\n title: 'Metadata',\n }),\n defineField({\n type: 'shopify.assetPreview',\n name: 'preview',\n title: 'Preview',\n }),\n defineField({\n type: 'string',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'url',\n name: 'url',\n title: 'URL',\n }),\n ],\n ...({\n components: {\n input: ShopifyAssetInput,\n diff: AssetDiff,\n preview: AssetPreview,\n },\n } as {}),\n preview: {\n select: {\n meta: 'meta',\n preview: 'preview',\n url: 'url',\n filename: 'filename',\n type: 'type',\n },\n prepare({url, meta, preview, filename, type}) {\n return {\n title: filename,\n subtitle: type,\n value: {\n url,\n meta,\n preview,\n filename,\n },\n }\n },\n },\n })\n}\n","import {definePlugin, type ObjectDefinition} from 'sanity'\n\nimport {shopifyAssetMetadataSchema} from './schema/shopifyAssetMetadataSchema'\nimport {shopifyAssetPreviewSchema} from './schema/shopifyAssetPreviewSchema'\nimport {shopifyAssetSchema} from './schema/shopifyAssetSchema'\nimport type {PluginConfig} from './types'\n\nexport * from './types'\n\n// enables autocompletion and validation of document options\ndeclare module 'sanity' {\n export namespace Schema {\n // here we type up our custom schema definition\n // options are optional on fields: the plugin-level config provides the default domain\n export type ShopifyAssetTypeDef = Omit<ObjectDefinition, 'type' | 'fields'> & {\n type: 'shopify.asset'\n options?: {\n shopifyDomain?: string\n }\n }\n // Adds 'extension-type' as an intrinsic type\n export interface IntrinsicTypeDefinition {\n 'shopify.asset': ShopifyAssetTypeDef\n }\n }\n}\n\nexport const shopifyAssets = definePlugin<PluginConfig>((config) => {\n return {\n name: 'shopify-asset-schema',\n schema: {\n types: [shopifyAssetPreviewSchema, shopifyAssetMetadataSchema, shopifyAssetSchema(config)],\n },\n }\n})\n"],"names":["shopifyAssetMetadataSchema","defineType","type","name","title","fields","defineField","shopifyAssetPreviewSchema","ShopifyAssetDiffPreview","t0","$","_c","value","preview","url","t1","t2","for","objectFit","margin","maxWidth","maxHeight","t3","t4","charAt","toUpperCase","t5","slice","t6","t7","Symbol","AssetDiff","diff","schemaType","Root","styled","div","withConfig","displayName","componentId","theme","v2","getTheme_v2","sanity","color","muted","bg","border","InfoLine","Card","fg","DurationLine","VideoPlayer","src","kind","videoNode","useRef","player","undefined","current","videojs","sources","controls","useEffect","stopPropagation","_temp","className","position","style","t8","event","StyledBox","Box","RenderAsset","height","display","AssetPreview","filename","meta","fileSize","duration","prettyBytes","prettyMilliseconds","colonNotation","secondsDecimalDigits","fetchSearch","props","projectId","dataset","shop","query","cursor","resultsPerPage","token","defer","axios","get","encodeURIComponent","withCredentials","method","headers","Authorization","pipe","map","result","data","fetchList","search","concat","withLatestFrom","debounceTime","distinctUntilChanged","switchMap","q","c","DialogHeader","shopifyDomain","window","open","handleOpenInNewTab","opacity","right","LaunchIcon","extractName","split","pop","File","onClick","width","rootElm","handleClick","backgroundImage","t9","t10","Search","Stack","RESULTS_PER_PAGE","PHOTO_SPACING","PHOTO_PADDING","ShopifyAssetPicker","isOpen","onClose","onChange","useProjectId","useDataset","apiVersion","client","useClient","config","apiError","setApiError","useState","setQuery","searchResults","setSearchResults","pageInfo","setPageInfo","isLoading","setIsLoading","error","BehaviorSubject","searchSubject$","cursorSubject$","searchSubscription","subscribe","next","results","prevResults","assets","err","response","message","unsubscribe","newQuery","currentTarget","handleSearchTermChanged","handleScollerLoadMore","_key","file","_type","PatchEvent","from","set","handleSelect","fileProps","photo","layout","renderFile","handleWidth","t11","t12","length","hasNextPage","_temp2","containerProps","marginBottom","t13","file_0","key","id","ShopifyIcon","ShopifyAssetInput","readOnly","options","dialogOpen","setDialogOpen","unset","removeValue","onOpen","gridTemplateColumns","shopifyAssetSchema","components","input","select","prepare","subtitle","shopifyAssets","definePlugin","schema","types"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-shopify-assets",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Choose assets from your Shopify store in your Sanity Studio",
5
5
  "keywords": [
6
6
  "assets",
@@ -31,8 +31,8 @@
31
31
  "./package.json": "./package.json"
32
32
  },
33
33
  "dependencies": {
34
- "@sanity/icons": "^3.7.4",
35
- "@sanity/ui": "^3.2.0",
34
+ "@sanity/icons": "^4.1.0",
35
+ "@sanity/ui": "^3.3.0",
36
36
  "axios": "^1.18.1",
37
37
  "pretty-bytes": "^6.1.1",
38
38
  "pretty-ms": "^8.0.0",
@@ -42,7 +42,7 @@
42
42
  "video.js": "^7.21.7"
43
43
  },
44
44
  "devDependencies": {
45
- "@sanity/pkg-utils": "^10.8.0",
45
+ "@sanity/pkg-utils": "^10.8.2",
46
46
  "@types/react": "^19.2.17",
47
47
  "@types/react-dom": "^19.2.3",
48
48
  "@types/video.js": "^7.3.58",
@@ -50,7 +50,7 @@
50
50
  "babel-plugin-styled-components": "^2.3.0",
51
51
  "react": "^19.2.7",
52
52
  "react-dom": "^19.2.7",
53
- "sanity": "^6.2.0",
53
+ "sanity": "^6.3.0",
54
54
  "styled-components": "^6.4.3",
55
55
  "@repo/package.config": "0.0.0",
56
56
  "@repo/tsconfig": "0.0.0"