sanity-plugin-iframe-pane 5.0.23 → 5.0.24

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.d.ts CHANGED
@@ -5,7 +5,7 @@ type Size = 'desktop' | 'mobile';
5
5
  type SizeProps = { [key in Size]: {
6
6
  width: string | number;
7
7
  height: string | number;
8
- } };
8
+ }; };
9
9
  type UrlResolver = (document: SanityDocument | null, perspective: Pick<ReturnType<typeof usePerspective>, 'selectedPerspectiveName' | 'perspectiveStack'>) => string | Error | undefined | Promise<string | Error | undefined>;
10
10
  interface IframeOptions {
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/Iframe.tsx"],"mappings":";;KAAY,aAAA,SAAsB,SAAS;AAAA,KAE/B,IAAA;AAAA,KAEA,SAAA,aACF,IAAI;EACV,KAAA;EACA,MAAA;AAAA;AAAA,KCqBQ,WAAA,IACV,QAAA,EAAU,cAAA,SACV,WAAA,EAAa,IAAA,CACX,UAAA,QAAkB,cAAA,gEAGR,KAAA,eAAoB,OAAA,UAAiB,KAAA;AAAA,UAIlC,aAAA;EDtC0B;AAAA;AAE3C;ECwCE,GAAA;EACA,GAAA,WAEI,WAAA;ID3CU;AAAA;AAEhB;;IC+CQ,MAAA;ID9CM;;;;;;ICqDN,OAAA,WAAkB,WAAA;;AA9B1B;;;IAmCQ,SAAA;EAAA;EAEN,WAAA,GAAc,aAAA;EACd,cAAA;EACA,MAAA;IACE,MAAA;EAAA;EAEF,UAAA,GAAa,OAAA;IACX,KAAA;IACA,cAAA,EAAgB,2BAAA;IAChB,OAAA;IACA,MAAA;EAAA;AAAA;AAAA,UAMa,WAAA;EACf,QAAA;IACE,SAAA,EAAW,cAAA;IACX,KAAA,EAAO,cAAA;IACP,SAAA,EAAW,cAAA;EAAA;EAEb,OAAA,EAAS,aAAA;AAAA;AAAA,iBAOK,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,KAAA,CAAM,GAAA,CAAI,OAAO"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/Iframe.tsx"],"mappings":";;KAAY,sBAAsB;KAEtB;KAEA,eACT,OAAO;EACN;EACA;;KCqBQ,eACV,UAAU,uBACV,aAAa,KACX,kBAAkB,8EAGR,oBAAoB,iBAAiB;UAIlC;;;;EAIf;EACA,cAEI;;;;;IAME;;;;;;;IAOA,kBAAkB;;;;;IAKlB;;EAEN,cAAc;EACd;EACA;IACE;;EAEF,aAAa;IACX;IACA,gBAAgB;IAChB;IACA;;;UAMa;EACf;IACE,WAAW;IACX,OAAO;IACP,WAAW;;EAEb,SAAS;;iBAOK,OAAO,OAAO,cAAc,MAAM,IAAI"}
package/dist/index.js CHANGED
@@ -222,7 +222,7 @@ function encodeStudioPerspective(studioPerspective) {
222
222
  return Array.isArray(studioPerspective) ? studioPerspective.join(",") : studioPerspective;
223
223
  }
224
224
  function Iframe(props) {
225
- let $ = c(36), { document, options } = props, draft = document.draft || document.published || document.displayed, { defaultSize: t0, reload, attributes, showDisplayUrl: t1, key } = options, defaultSize = t0 === void 0 ? DEFAULT_SIZE : t0, showDisplayUrl = t1 === void 0 ? !0 : t1, basePath = useActiveWorkspace()?.activeWorkspace?.basePath || "/", urlRef = useRef(options.url), t2;
225
+ let $ = c(36), { document, options } = props, draft = document.draft || document.published || document.displayed, { defaultSize: t0, reload, attributes, showDisplayUrl: t1, key } = options, defaultSize = t0 === void 0 ? DEFAULT_SIZE : t0, showDisplayUrl = t1 === void 0 || t1, basePath = useActiveWorkspace()?.activeWorkspace?.basePath || "/", urlRef = useRef(options.url), t2;
226
226
  $[0] !== draft || $[1] !== key ? (t2 = () => ({
227
227
  key,
228
228
  draft
@@ -314,7 +314,7 @@ function Iframe(props) {
314
314
  const IframeInner = memo(function(props) {
315
315
  let $ = c(35), { isResolvingUrl, defaultSize: t0, reload, attributes: t1, showDisplayUrl: t2, draftSnapshot, userId, expiresAt, perspective: t3, _key } = props, defaultSize = t0 === void 0 ? DEFAULT_SIZE : t0, t4;
316
316
  $[0] === t1 ? t4 = $[1] : (t4 = t1 === void 0 ? {} : t1, $[0] = t1, $[1] = t4);
317
- let attributes = t4, showDisplayUrl = t2 === void 0 ? !0 : t2, { selectedPerspectiveName, perspectiveStack } = t3, [iframeSize, setIframeSize] = useState(sizes?.[defaultSize] ? defaultSize : DEFAULT_SIZE), prefersReducedMotion = usePrefersReducedMotion(), t5;
317
+ let attributes = t4, showDisplayUrl = t2 === void 0 || t2, { selectedPerspectiveName, perspectiveStack } = t3, [iframeSize, setIframeSize] = useState(sizes?.[defaultSize] ? defaultSize : DEFAULT_SIZE), prefersReducedMotion = usePrefersReducedMotion(), t5;
318
318
  $[2] !== draftSnapshot || $[3] !== props ? (t5 = () => props.url(draftSnapshot), $[2] = draftSnapshot, $[3] = props, $[4] = t5) : t5 = $[4];
319
319
  let t6;
320
320
  $[5] !== _key || $[6] !== draftSnapshot || $[7] !== expiresAt || $[8] !== perspectiveStack || $[9] !== selectedPerspectiveName || $[10] !== t5 || $[11] !== userId ? (t6 = suspend(t5, [
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getRedirectTo","Text","useMemo","DisplayUrl","props","$","_c","t0","url","truncatedUrl","origin","location","pathname","search","t1","CopyIcon","LaunchIcon","MobileDeviceIcon","RefreshIcon","Box","Button","Card","Flex","Text","Tooltip","useToast","useCallback","useRef","useState","DisplayUrl","IframeSizeKey","SizeProps","sizes","desktop","width","height","mobile","DEFAULT_SIZE","ToolbarProps","url","URL","Error","iframeSize","setIframeSize","size","showUrl","reloading","reloadButton","handleReload","Toolbar","props","$","_c","validUrl","input","push","pushToast","copy","useCopyToClipboard","t0","Symbol","for","position","pointerEvents","opacity","t1","toString","t2","t3","whiteSpace","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","current","value","then","copied","closable","status","title","t20","t21","t22","t23","t24","t25","window","open","undefined","t26","t27","t28","t29","CopiedValue","CopyFn","text","Promise","copiedText","setCopiedText","navigator","clipboard","console","warn","writeText","error","WarningOutlineIcon","createPreviewSecret","definePreviewUrl","Box","Card","Container","Flex","Spinner","Stack","Text","usePrefersReducedMotion","AnimatePresence","motion","MotionConfig","HTMLAttributeReferrerPolicy","memo","Suspense","useCallback","useEffect","useMemo","useRef","useState","useTransition","SanityDocument","useActiveWorkspace","useClient","useCurrentUser","usePerspective","suspend","DEFAULT_SIZE","sizes","Toolbar","IframeSizeKey","UrlResolver","document","perspective","Pick","ReturnType","Error","Promise","IframeOptions","key","url","origin","preview","draftMode","defaultSize","showDisplayUrl","reload","button","attributes","Partial","allow","referrerPolicy","sandbox","onLoad","MotionFlex","create","IframeProps","displayed","draft","published","options","encodeStudioPerspective","studioPerspective","Array","isArray","join","Iframe","props","$","_c","t0","t1","undefined","workspace","basePath","activeWorkspace","urlRef","t2","draftSnapshot","setDraftSnapshot","t3","t4","current","currentUser","t5","Symbol","for","apiVersion","client","expiresAt","setExpiresAt","previewSecretRef","isResolvingUrl","startTransition","perspectiveStack","selectedPerspectiveName","t6","t7","t8","JSON","stringify","t9","id","draft_0","location","urlProp","URL","secret","expiresAt_0","href","getTime","resolvePreviewUrl","previewMode","enable","url_0","previewUrlSecret","previewSearchParam","studioBasePath","studioPreviewPerspective","url_1","t10","t11","timeout","setTimeout","Math","max","Date","now","clearTimeout","t12","t13","t14","t15","IframeInnerProps","Omit","Parameters","userId","_key","IframeInner","iframeSize","setIframeSize","prefersReducedMotion","resolveUUID","loading","setLoading","_reloading","setReloading","reloading","iframe","src","handleReload","duration","height","FrameProps","Required","Frame","ref","handleIframeLoad","position","spinnerVariants","inset","maxHeight","toString","iframeVariants","initial","opacity","animate","exit","desktop","boxShadow","mobile","background","scale","idle","active","Loading","ErrorCard","error","name","message"],"sources":["../src/DisplayUrl.tsx","../src/Toolbar.tsx","../src/Iframe.tsx"],"sourcesContent":["import {getRedirectTo} from '@sanity/preview-url-secret/get-redirect-to'\nimport {Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nexport function DisplayUrl(props: {url: URL}) {\n const truncatedUrl = useMemo(() => {\n const url = getRedirectTo(props.url)\n return `${url.origin === location.origin ? '' : url.origin}${url.pathname}${url.search}`\n }, [props.url])\n\n return (\n <Text size={0} textOverflow=\"ellipsis\">\n {truncatedUrl}\n </Text>\n )\n}\n","import {CopyIcon} from '@sanity/icons/Copy'\nimport {LaunchIcon} from '@sanity/icons/Launch'\nimport {MobileDeviceIcon} from '@sanity/icons/MobileDevice'\nimport {RefreshIcon} from '@sanity/icons/Refresh'\nimport {Box, Button, Card, Flex, Text, Tooltip, useToast} from '@sanity/ui'\nimport {useCallback, useRef, useState} from 'react'\n\nimport {DisplayUrl} from './DisplayUrl'\nimport type {IframeSizeKey, SizeProps} from './types'\n\nexport const sizes: SizeProps = {\n desktop: {\n width: '100%',\n height: '100%',\n },\n mobile: {\n width: 414,\n height: 746,\n },\n}\n\nexport const DEFAULT_SIZE = 'desktop'\n\nexport interface ToolbarProps {\n url: URL | Error | undefined\n iframeSize: IframeSizeKey\n setIframeSize: (size: IframeSizeKey) => void\n showUrl: boolean\n reloading: boolean\n reloadButton: boolean\n handleReload: () => void\n}\nexport function Toolbar(props: ToolbarProps) {\n const {url, iframeSize, setIframeSize, reloading, showUrl, reloadButton, handleReload} = props\n const validUrl = url instanceof URL\n\n const input = useRef<HTMLTextAreaElement>(null)\n const {push: pushToast} = useToast()\n const [, copy] = useCopyToClipboard()\n\n return (\n <>\n <textarea\n aria-hidden\n style={{position: 'absolute', pointerEvents: 'none', opacity: 0}}\n ref={input}\n value={validUrl ? url.toString() : ''}\n readOnly\n tabIndex={-1}\n />\n <Card padding={2} borderBottom>\n <Flex align=\"center\" gap={2}>\n <Flex align=\"center\" gap={1}>\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n {iframeSize === 'mobile' ? 'Exit mobile preview' : 'Preview mobile viewport'}\n </Text>\n }\n padding={2}\n placement=\"bottom-start\"\n >\n <Button\n disabled={!validUrl}\n fontSize={[1]}\n padding={2}\n mode={iframeSize === 'mobile' ? 'default' : 'ghost'}\n icon={MobileDeviceIcon}\n onClick={() => setIframeSize(iframeSize === 'mobile' ? 'desktop' : 'mobile')}\n />\n </Tooltip>\n </Flex>\n <Box flex={1}>{showUrl && validUrl && <DisplayUrl url={url} />}</Box>\n <Flex align=\"center\" gap={1}>\n {reloadButton ? (\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n {reloading ? 'Reloading…' : 'Reload'}\n </Text>\n }\n padding={2}\n >\n <Button\n disabled={!validUrl}\n mode=\"bleed\"\n fontSize={[1]}\n padding={2}\n icon={RefreshIcon}\n loading={reloading}\n aria-label=\"Reload\"\n onClick={() => handleReload()}\n />\n </Tooltip>\n ) : null}\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Copy URL\n </Text>\n }\n padding={2}\n >\n <Button\n mode=\"bleed\"\n disabled={!validUrl}\n fontSize={[1]}\n icon={CopyIcon}\n padding={[2]}\n aria-label=\"Copy URL\"\n onClick={() => {\n if (!input?.current?.value) return\n\n void copy(input.current.value).then((copied) => {\n if (copied) {\n pushToast({\n closable: true,\n status: 'success',\n title: 'The URL is copied to the clipboard',\n })\n } else {\n pushToast({\n closable: true,\n status: 'error',\n title: 'Failed to copy the URL to the clipboard',\n })\n }\n return copied\n })\n }}\n />\n </Tooltip>\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Open URL in a new tab\n </Text>\n }\n padding={2}\n placement=\"bottom-end\"\n >\n <Button\n disabled={!validUrl}\n fontSize={[1]}\n icon={LaunchIcon}\n mode=\"ghost\"\n paddingY={[2]}\n text=\"Open\"\n aria-label=\"Open URL in a new tab\"\n onClick={validUrl ? () => window.open(url.toString()) : undefined}\n />\n </Tooltip>\n </Flex>\n </Flex>\n </Card>\n </>\n )\n}\n\ntype CopiedValue = string | null\n\ntype CopyFn = (text: string) => Promise<boolean>\n\nfunction useCopyToClipboard(): [CopiedValue, CopyFn] {\n const [copiedText, setCopiedText] = useState<CopiedValue>(null)\n\n const copy: CopyFn = useCallback(async (text) => {\n if (!navigator?.clipboard) {\n console.warn('Clipboard not supported')\n return false\n }\n\n // Try to save to clipboard then save it in the state if worked\n try {\n await navigator.clipboard.writeText(text)\n setCopiedText(text)\n return true\n } catch (error) {\n console.warn('Copy failed', error)\n setCopiedText(null)\n return false\n }\n }, [])\n\n return [copiedText, copy]\n}\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {createPreviewSecret} from '@sanity/preview-url-secret/create-secret'\nimport {definePreviewUrl} from '@sanity/preview-url-secret/define-preview-url'\nimport {Box, Card, Container, Flex, Spinner, Stack, Text, usePrefersReducedMotion} from '@sanity/ui'\nimport {AnimatePresence, motion, MotionConfig} from 'motion/react'\nimport type {HTMLAttributeReferrerPolicy} from 'react'\nimport {\n memo,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useTransition,\n} from 'react'\nimport {\n type SanityDocument,\n useActiveWorkspace,\n useClient,\n useCurrentUser,\n usePerspective,\n} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {DEFAULT_SIZE, sizes, Toolbar} from './Toolbar'\nimport type {IframeSizeKey} from './types'\n\nexport type UrlResolver = (\n document: SanityDocument | null,\n perspective: Pick<\n ReturnType<typeof usePerspective>,\n 'selectedPerspectiveName' | 'perspectiveStack'\n >,\n) => string | Error | undefined | Promise<string | Error | undefined>\n\nexport type {IframeSizeKey}\n\nexport interface IframeOptions {\n /**\n * If you have multiple iframe instances side-by-side you need to give each a unique key.\n */\n key?: string\n url:\n | string\n | UrlResolver\n | {\n /**\n * The URL origin of where the preview is hosted, for example `https://example.com`.\n * If it's an embedded Studio then set it to `'same-origin'`.\n */\n origin: 'same-origin' | (string & {})\n /**\n * The route to redirect to after enabling Draft Mode.\n * If you don't have enough data to build the URL, return an `Error` instance to show an error message.\n * @example `return new Error('Missing slug')`\n * To prolong the loading state, return `undefined`\n */\n preview: string | UrlResolver\n /**\n * The route that enables Draft Mode\n * @example '/api/draft'\n */\n draftMode: string\n }\n defaultSize?: IframeSizeKey\n showDisplayUrl?: boolean\n reload?: {\n button?: boolean\n }\n attributes?: Partial<{\n allow: string\n referrerPolicy: HTMLAttributeReferrerPolicy | undefined\n sandbox: string\n onLoad: () => void\n }>\n}\n\nconst MotionFlex = motion.create(Flex)\n\nexport interface IframeProps {\n document: {\n displayed: SanityDocument\n draft: SanityDocument | null\n published: SanityDocument | null\n }\n options: IframeOptions\n}\n\nfunction encodeStudioPerspective(studioPerspective: string[] | string): string {\n return Array.isArray(studioPerspective) ? studioPerspective.join(',') : studioPerspective\n}\n\nexport function Iframe(props: IframeProps): React.JSX.Element {\n const {document, options} = props\n const draft = document.draft || document.published || document.displayed\n\n const {defaultSize = DEFAULT_SIZE, reload, attributes, showDisplayUrl = true, key} = options\n\n const workspace = useActiveWorkspace()\n const basePath = workspace?.activeWorkspace?.basePath || '/'\n const urlRef = useRef(options.url)\n const [draftSnapshot, setDraftSnapshot] = useState(() => ({key, draft}))\n useEffect(() => {\n urlRef.current = options.url\n }, [options.url])\n const currentUser = useCurrentUser()\n const client = useClient({apiVersion: '2023-10-16'})\n const [expiresAt, setExpiresAt] = useState<number | undefined>()\n const previewSecretRef = useRef<string | undefined>(undefined)\n const [isResolvingUrl, startTransition] = useTransition()\n const {perspectiveStack, selectedPerspectiveName} = usePerspective()\n const perspective = useMemo(\n () => ({\n perspectiveStack,\n selectedPerspectiveName,\n }),\n [perspectiveStack, selectedPerspectiveName],\n )\n\n useEffect(() => {\n if (JSON.stringify({key, draft}) !== JSON.stringify(draftSnapshot)) {\n startTransition(() => setDraftSnapshot({key, draft}))\n }\n }, [draft, draftSnapshot, key, startTransition])\n\n const url = useCallback(\n async (draft: SanityDocument | null) => {\n if (typeof location === 'undefined') {\n return undefined\n }\n const urlProp = urlRef.current\n if (typeof urlProp === 'string') {\n return new URL(urlProp, location.origin)\n }\n if (typeof urlProp === 'function') {\n const url = await urlProp(draft, perspective)\n return typeof url === 'string' ? new URL(url, location.origin) : url\n }\n if (typeof urlProp === 'object') {\n const preview =\n typeof urlProp.preview === 'function'\n ? await urlProp.preview(draft, perspective)\n : urlProp.preview\n if (typeof preview !== 'string') {\n return preview\n }\n if (!previewSecretRef.current) {\n const {secret, expiresAt} = await createPreviewSecret(\n client,\n 'sanity-plugin-iframe-pane',\n location.href,\n currentUser?.id,\n )\n previewSecretRef.current = secret\n startTransition(() => setExpiresAt(expiresAt.getTime()))\n }\n\n const resolvePreviewUrl = definePreviewUrl({\n origin: urlProp.origin === 'same-origin' ? location.origin : urlProp.origin,\n preview,\n previewMode: {\n enable: urlProp.draftMode,\n },\n })\n const url = await resolvePreviewUrl({\n client,\n previewUrlSecret: previewSecretRef.current,\n previewSearchParam: null,\n studioBasePath: basePath,\n studioPreviewPerspective: encodeStudioPerspective(perspective.perspectiveStack),\n })\n return new URL(url, location.origin)\n }\n return undefined\n },\n [basePath, client, currentUser?.id, perspective, startTransition],\n )\n useEffect(() => {\n if (expiresAt) {\n const timeout = setTimeout(\n () => {\n startTransition(() => setExpiresAt(undefined))\n previewSecretRef.current = undefined\n },\n Math.max(0, expiresAt - Date.now()),\n )\n return () => clearTimeout(timeout)\n }\n return undefined\n }, [expiresAt])\n\n return (\n <Suspense fallback={<Loading iframeSize=\"desktop\" />}>\n <IframeInner\n key={`${draftSnapshot.key}-${selectedPerspectiveName || 'draft'}`}\n _key={draftSnapshot.key}\n draftSnapshot={draftSnapshot.draft}\n url={url}\n isResolvingUrl={isResolvingUrl}\n attributes={attributes}\n perspective={perspective}\n defaultSize={defaultSize}\n reload={reload}\n showDisplayUrl={showDisplayUrl}\n userId={currentUser?.id}\n />\n </Suspense>\n )\n}\n\nexport interface IframeInnerProps extends Omit<IframeOptions, 'url'> {\n url: (draftSnapshot: SanityDocument | null) => Promise<URL | Error | undefined>\n isResolvingUrl: boolean\n draftSnapshot: SanityDocument | null\n perspective: Parameters<UrlResolver>[1]\n userId?: string\n expiresAt?: number\n _key?: string\n}\nconst IframeInner = memo(function IframeInner(props: IframeInnerProps) {\n const {\n isResolvingUrl,\n defaultSize = DEFAULT_SIZE,\n reload,\n attributes = {},\n showDisplayUrl = true,\n draftSnapshot,\n userId,\n expiresAt,\n perspective: {selectedPerspectiveName, perspectiveStack},\n _key,\n } = props\n const [iframeSize, setIframeSize] = useState(sizes?.[defaultSize] ? defaultSize : DEFAULT_SIZE)\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const url = suspend(\n () => props.url(draftSnapshot),\n [\n // Cache based on a few specific conditions\n 'sanity-plugin-iframe-pane',\n draftSnapshot,\n selectedPerspectiveName,\n perspectiveStack,\n userId,\n expiresAt,\n _key,\n resolveUUID,\n ],\n )\n\n const [loading, setLoading] = useState(true)\n const [_reloading, setReloading] = useState(false)\n const reloading = _reloading || isResolvingUrl\n\n const iframe = useRef<HTMLIFrameElement>(null)\n\n const handleReload = useCallback(() => {\n if (!iframe?.current) {\n return\n }\n\n // Funky way to reload an iframe without CORS issues\n const {src} = iframe.current\n iframe.current.src = src\n\n setReloading(true)\n }, [])\n\n return (\n <MotionConfig transition={prefersReducedMotion ? {duration: 0} : undefined}>\n <Flex direction=\"column\" style={{height: '100%'}}>\n <Toolbar\n url={url}\n iframeSize={iframeSize}\n reloading={reloading}\n setIframeSize={setIframeSize}\n showUrl={showDisplayUrl}\n reloadButton={!!reload?.button}\n handleReload={handleReload}\n />\n {url instanceof Error ? (\n <ErrorCard error={url} />\n ) : (\n <Card tone=\"transparent\" style={{height: '100%'}}>\n <Frame\n ref={iframe}\n loading={loading}\n reloading={reloading}\n iframeSize={iframeSize}\n setReloading={setReloading}\n setLoading={setLoading}\n url={url}\n attributes={attributes}\n />\n </Card>\n )}\n </Flex>\n </MotionConfig>\n )\n})\n\ninterface FrameProps extends Required<Pick<IframeOptions, 'attributes'>> {\n loading: boolean\n reloading: boolean\n setLoading: (loading: boolean) => void\n setReloading: (reloading: boolean) => void\n iframeSize: IframeSizeKey\n url: URL | undefined\n}\nfunction Frame(props: FrameProps & {ref?: React.Ref<HTMLIFrameElement>}) {\n const {\n loading,\n setLoading,\n iframeSize,\n attributes,\n reloading,\n url,\n setReloading,\n ref: iframe,\n } = props\n\n function handleIframeLoad() {\n setLoading(false)\n setReloading(false)\n // Run onLoad from attributes\n if (attributes.onLoad && typeof attributes.onLoad === 'function') {\n attributes.onLoad()\n }\n }\n\n return (\n <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n <AnimatePresence>\n {!url ||\n (loading && (\n <MotionFlex\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={spinnerVariants}\n justify=\"center\"\n align=\"center\"\n style={{inset: '0', position: 'absolute'}}\n >\n <Loading iframeSize={iframeSize} />\n </MotionFlex>\n ))}\n </AnimatePresence>\n {url && (\n <motion.iframe\n ref={iframe}\n title=\"preview\"\n frameBorder=\"0\"\n style={{maxHeight: '100%'}}\n src={url.toString()}\n initial={['background', iframeSize]}\n variants={iframeVariants}\n animate={[\n loading ? 'background' : 'active',\n reloading ? 'reloading' : 'idle',\n iframeSize,\n ]}\n {...attributes}\n onLoad={handleIframeLoad}\n />\n )}\n </Flex>\n )\n}\n\nconst spinnerVariants = {\n initial: {opacity: 1},\n animate: {opacity: [0, 0, 1]},\n exit: {opacity: [1, 0, 0]},\n}\n\nconst iframeVariants = {\n ...sizes,\n desktop: {\n ...sizes.desktop,\n boxShadow: '0 0 0 0px var(--card-shadow-outline-color)',\n },\n mobile: {\n ...sizes.mobile,\n boxShadow: '0 0 0 1px var(--card-shadow-outline-color)',\n },\n background: {\n opacity: 0,\n scale: 1,\n },\n idle: {\n scale: 1,\n },\n reloading: {\n scale: [1, 1, 1, 0.98],\n },\n active: {\n opacity: [0, 0, 1],\n scale: 1,\n },\n}\n\nfunction Loading({iframeSize}: {iframeSize: IframeSizeKey}) {\n return (\n <Flex style={{...sizes[iframeSize]}} justify=\"center\" align=\"center\" direction=\"column\" gap={4}>\n <Spinner muted />\n <Text muted size={1}>\n Loading…\n </Text>\n </Flex>\n )\n}\n\nfunction ErrorCard({error}: {error: Error}) {\n return (\n <Card height=\"fill\">\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Container width={0}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Flex>\n <Box>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n </Box>\n <Stack flex={1} marginLeft={3} gap={3}>\n <Text as=\"h1\" size={1} weight=\"bold\">\n {error.name}\n </Text>\n <Text as=\"p\" muted size={1}>\n {error.message}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Container>\n </Flex>\n </Card>\n )\n}\n\n// https://github.com/pmndrs/suspend-react?tab=readme-ov-file#making-cache-keys-unique\nconst resolveUUID = Symbol()\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["getRedirectTo","Text","useMemo","DisplayUrl","props","$","_c","t0","url","truncatedUrl","origin","location","pathname","search","t1","CopyIcon","LaunchIcon","MobileDeviceIcon","RefreshIcon","Box","Button","Card","Flex","Text","Tooltip","useToast","useCallback","useRef","useState","DisplayUrl","IframeSizeKey","SizeProps","sizes","desktop","width","height","mobile","DEFAULT_SIZE","ToolbarProps","url","URL","Error","iframeSize","setIframeSize","size","showUrl","reloading","reloadButton","handleReload","Toolbar","props","$","_c","validUrl","input","push","pushToast","copy","useCopyToClipboard","t0","Symbol","for","position","pointerEvents","opacity","t1","toString","t2","t3","whiteSpace","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","current","value","then","copied","closable","status","title","t20","t21","t22","t23","t24","t25","window","open","undefined","t26","t27","t28","t29","CopiedValue","CopyFn","text","Promise","copiedText","setCopiedText","navigator","clipboard","console","warn","writeText","error","WarningOutlineIcon","createPreviewSecret","definePreviewUrl","Box","Card","Container","Flex","Spinner","Stack","Text","usePrefersReducedMotion","AnimatePresence","motion","MotionConfig","HTMLAttributeReferrerPolicy","memo","Suspense","useCallback","useEffect","useMemo","useRef","useState","useTransition","SanityDocument","useActiveWorkspace","useClient","useCurrentUser","usePerspective","suspend","DEFAULT_SIZE","sizes","Toolbar","IframeSizeKey","UrlResolver","document","perspective","Pick","ReturnType","Error","Promise","IframeOptions","key","url","origin","preview","draftMode","defaultSize","showDisplayUrl","reload","button","attributes","Partial","allow","referrerPolicy","sandbox","onLoad","MotionFlex","create","IframeProps","displayed","draft","published","options","encodeStudioPerspective","studioPerspective","Array","isArray","join","Iframe","props","$","_c","t0","t1","undefined","workspace","basePath","activeWorkspace","urlRef","t2","draftSnapshot","setDraftSnapshot","t3","t4","current","currentUser","t5","Symbol","for","apiVersion","client","expiresAt","setExpiresAt","previewSecretRef","isResolvingUrl","startTransition","perspectiveStack","selectedPerspectiveName","t6","t7","t8","JSON","stringify","t9","id","draft_0","location","urlProp","URL","secret","expiresAt_0","href","getTime","resolvePreviewUrl","previewMode","enable","url_0","previewUrlSecret","previewSearchParam","studioBasePath","studioPreviewPerspective","url_1","t10","t11","timeout","setTimeout","Math","max","Date","now","clearTimeout","t12","t13","t14","t15","IframeInnerProps","Omit","Parameters","userId","_key","IframeInner","iframeSize","setIframeSize","prefersReducedMotion","resolveUUID","loading","setLoading","_reloading","setReloading","reloading","iframe","src","handleReload","duration","height","FrameProps","Required","Frame","ref","handleIframeLoad","position","spinnerVariants","inset","maxHeight","toString","iframeVariants","initial","opacity","animate","exit","desktop","boxShadow","mobile","background","scale","idle","active","Loading","ErrorCard","error","name","message"],"sources":["../src/DisplayUrl.tsx","../src/Toolbar.tsx","../src/Iframe.tsx"],"sourcesContent":["import {getRedirectTo} from '@sanity/preview-url-secret/get-redirect-to'\nimport {Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nexport function DisplayUrl(props: {url: URL}) {\n const truncatedUrl = useMemo(() => {\n const url = getRedirectTo(props.url)\n return `${url.origin === location.origin ? '' : url.origin}${url.pathname}${url.search}`\n }, [props.url])\n\n return (\n <Text size={0} textOverflow=\"ellipsis\">\n {truncatedUrl}\n </Text>\n )\n}\n","import {CopyIcon} from '@sanity/icons/Copy'\nimport {LaunchIcon} from '@sanity/icons/Launch'\nimport {MobileDeviceIcon} from '@sanity/icons/MobileDevice'\nimport {RefreshIcon} from '@sanity/icons/Refresh'\nimport {Box, Button, Card, Flex, Text, Tooltip, useToast} from '@sanity/ui'\nimport {useCallback, useRef, useState} from 'react'\n\nimport {DisplayUrl} from './DisplayUrl'\nimport type {IframeSizeKey, SizeProps} from './types'\n\nexport const sizes: SizeProps = {\n desktop: {\n width: '100%',\n height: '100%',\n },\n mobile: {\n width: 414,\n height: 746,\n },\n}\n\nexport const DEFAULT_SIZE = 'desktop'\n\nexport interface ToolbarProps {\n url: URL | Error | undefined\n iframeSize: IframeSizeKey\n setIframeSize: (size: IframeSizeKey) => void\n showUrl: boolean\n reloading: boolean\n reloadButton: boolean\n handleReload: () => void\n}\nexport function Toolbar(props: ToolbarProps) {\n const {url, iframeSize, setIframeSize, reloading, showUrl, reloadButton, handleReload} = props\n const validUrl = url instanceof URL\n\n const input = useRef<HTMLTextAreaElement>(null)\n const {push: pushToast} = useToast()\n const [, copy] = useCopyToClipboard()\n\n return (\n <>\n <textarea\n aria-hidden\n style={{position: 'absolute', pointerEvents: 'none', opacity: 0}}\n ref={input}\n value={validUrl ? url.toString() : ''}\n readOnly\n tabIndex={-1}\n />\n <Card padding={2} borderBottom>\n <Flex align=\"center\" gap={2}>\n <Flex align=\"center\" gap={1}>\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n {iframeSize === 'mobile' ? 'Exit mobile preview' : 'Preview mobile viewport'}\n </Text>\n }\n padding={2}\n placement=\"bottom-start\"\n >\n <Button\n disabled={!validUrl}\n fontSize={[1]}\n padding={2}\n mode={iframeSize === 'mobile' ? 'default' : 'ghost'}\n icon={MobileDeviceIcon}\n onClick={() => setIframeSize(iframeSize === 'mobile' ? 'desktop' : 'mobile')}\n />\n </Tooltip>\n </Flex>\n <Box flex={1}>{showUrl && validUrl && <DisplayUrl url={url} />}</Box>\n <Flex align=\"center\" gap={1}>\n {reloadButton ? (\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n {reloading ? 'Reloading…' : 'Reload'}\n </Text>\n }\n padding={2}\n >\n <Button\n disabled={!validUrl}\n mode=\"bleed\"\n fontSize={[1]}\n padding={2}\n icon={RefreshIcon}\n loading={reloading}\n aria-label=\"Reload\"\n onClick={() => handleReload()}\n />\n </Tooltip>\n ) : null}\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Copy URL\n </Text>\n }\n padding={2}\n >\n <Button\n mode=\"bleed\"\n disabled={!validUrl}\n fontSize={[1]}\n icon={CopyIcon}\n padding={[2]}\n aria-label=\"Copy URL\"\n onClick={() => {\n if (!input?.current?.value) return\n\n void copy(input.current.value).then((copied) => {\n if (copied) {\n pushToast({\n closable: true,\n status: 'success',\n title: 'The URL is copied to the clipboard',\n })\n } else {\n pushToast({\n closable: true,\n status: 'error',\n title: 'Failed to copy the URL to the clipboard',\n })\n }\n return copied\n })\n }}\n />\n </Tooltip>\n <Tooltip\n animate\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Open URL in a new tab\n </Text>\n }\n padding={2}\n placement=\"bottom-end\"\n >\n <Button\n disabled={!validUrl}\n fontSize={[1]}\n icon={LaunchIcon}\n mode=\"ghost\"\n paddingY={[2]}\n text=\"Open\"\n aria-label=\"Open URL in a new tab\"\n onClick={validUrl ? () => window.open(url.toString()) : undefined}\n />\n </Tooltip>\n </Flex>\n </Flex>\n </Card>\n </>\n )\n}\n\ntype CopiedValue = string | null\n\ntype CopyFn = (text: string) => Promise<boolean>\n\nfunction useCopyToClipboard(): [CopiedValue, CopyFn] {\n const [copiedText, setCopiedText] = useState<CopiedValue>(null)\n\n const copy: CopyFn = useCallback(async (text) => {\n if (!navigator?.clipboard) {\n console.warn('Clipboard not supported')\n return false\n }\n\n // Try to save to clipboard then save it in the state if worked\n try {\n await navigator.clipboard.writeText(text)\n setCopiedText(text)\n return true\n } catch (error) {\n console.warn('Copy failed', error)\n setCopiedText(null)\n return false\n }\n }, [])\n\n return [copiedText, copy]\n}\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {createPreviewSecret} from '@sanity/preview-url-secret/create-secret'\nimport {definePreviewUrl} from '@sanity/preview-url-secret/define-preview-url'\nimport {Box, Card, Container, Flex, Spinner, Stack, Text, usePrefersReducedMotion} from '@sanity/ui'\nimport {AnimatePresence, motion, MotionConfig} from 'motion/react'\nimport type {HTMLAttributeReferrerPolicy} from 'react'\nimport {\n memo,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useTransition,\n} from 'react'\nimport {\n type SanityDocument,\n useActiveWorkspace,\n useClient,\n useCurrentUser,\n usePerspective,\n} from 'sanity'\nimport {suspend} from 'suspend-react'\n\nimport {DEFAULT_SIZE, sizes, Toolbar} from './Toolbar'\nimport type {IframeSizeKey} from './types'\n\nexport type UrlResolver = (\n document: SanityDocument | null,\n perspective: Pick<\n ReturnType<typeof usePerspective>,\n 'selectedPerspectiveName' | 'perspectiveStack'\n >,\n) => string | Error | undefined | Promise<string | Error | undefined>\n\nexport type {IframeSizeKey}\n\nexport interface IframeOptions {\n /**\n * If you have multiple iframe instances side-by-side you need to give each a unique key.\n */\n key?: string\n url:\n | string\n | UrlResolver\n | {\n /**\n * The URL origin of where the preview is hosted, for example `https://example.com`.\n * If it's an embedded Studio then set it to `'same-origin'`.\n */\n origin: 'same-origin' | (string & {})\n /**\n * The route to redirect to after enabling Draft Mode.\n * If you don't have enough data to build the URL, return an `Error` instance to show an error message.\n * @example `return new Error('Missing slug')`\n * To prolong the loading state, return `undefined`\n */\n preview: string | UrlResolver\n /**\n * The route that enables Draft Mode\n * @example '/api/draft'\n */\n draftMode: string\n }\n defaultSize?: IframeSizeKey\n showDisplayUrl?: boolean\n reload?: {\n button?: boolean\n }\n attributes?: Partial<{\n allow: string\n referrerPolicy: HTMLAttributeReferrerPolicy | undefined\n sandbox: string\n onLoad: () => void\n }>\n}\n\nconst MotionFlex = motion.create(Flex)\n\nexport interface IframeProps {\n document: {\n displayed: SanityDocument\n draft: SanityDocument | null\n published: SanityDocument | null\n }\n options: IframeOptions\n}\n\nfunction encodeStudioPerspective(studioPerspective: string[] | string): string {\n return Array.isArray(studioPerspective) ? studioPerspective.join(',') : studioPerspective\n}\n\nexport function Iframe(props: IframeProps): React.JSX.Element {\n const {document, options} = props\n const draft = document.draft || document.published || document.displayed\n\n const {defaultSize = DEFAULT_SIZE, reload, attributes, showDisplayUrl = true, key} = options\n\n const workspace = useActiveWorkspace()\n const basePath = workspace?.activeWorkspace?.basePath || '/'\n const urlRef = useRef(options.url)\n const [draftSnapshot, setDraftSnapshot] = useState(() => ({key, draft}))\n useEffect(() => {\n urlRef.current = options.url\n }, [options.url])\n const currentUser = useCurrentUser()\n const client = useClient({apiVersion: '2023-10-16'})\n const [expiresAt, setExpiresAt] = useState<number | undefined>()\n const previewSecretRef = useRef<string | undefined>(undefined)\n const [isResolvingUrl, startTransition] = useTransition()\n const {perspectiveStack, selectedPerspectiveName} = usePerspective()\n const perspective = useMemo(\n () => ({\n perspectiveStack,\n selectedPerspectiveName,\n }),\n [perspectiveStack, selectedPerspectiveName],\n )\n\n useEffect(() => {\n if (JSON.stringify({key, draft}) !== JSON.stringify(draftSnapshot)) {\n startTransition(() => setDraftSnapshot({key, draft}))\n }\n }, [draft, draftSnapshot, key, startTransition])\n\n const url = useCallback(\n async (draft: SanityDocument | null) => {\n if (typeof location === 'undefined') {\n return undefined\n }\n const urlProp = urlRef.current\n if (typeof urlProp === 'string') {\n return new URL(urlProp, location.origin)\n }\n if (typeof urlProp === 'function') {\n const url = await urlProp(draft, perspective)\n return typeof url === 'string' ? new URL(url, location.origin) : url\n }\n if (typeof urlProp === 'object') {\n const preview =\n typeof urlProp.preview === 'function'\n ? await urlProp.preview(draft, perspective)\n : urlProp.preview\n if (typeof preview !== 'string') {\n return preview\n }\n if (!previewSecretRef.current) {\n const {secret, expiresAt} = await createPreviewSecret(\n client,\n 'sanity-plugin-iframe-pane',\n location.href,\n currentUser?.id,\n )\n previewSecretRef.current = secret\n startTransition(() => setExpiresAt(expiresAt.getTime()))\n }\n\n const resolvePreviewUrl = definePreviewUrl({\n origin: urlProp.origin === 'same-origin' ? location.origin : urlProp.origin,\n preview,\n previewMode: {\n enable: urlProp.draftMode,\n },\n })\n const url = await resolvePreviewUrl({\n client,\n previewUrlSecret: previewSecretRef.current,\n previewSearchParam: null,\n studioBasePath: basePath,\n studioPreviewPerspective: encodeStudioPerspective(perspective.perspectiveStack),\n })\n return new URL(url, location.origin)\n }\n return undefined\n },\n [basePath, client, currentUser?.id, perspective, startTransition],\n )\n useEffect(() => {\n if (expiresAt) {\n const timeout = setTimeout(\n () => {\n startTransition(() => setExpiresAt(undefined))\n previewSecretRef.current = undefined\n },\n Math.max(0, expiresAt - Date.now()),\n )\n return () => clearTimeout(timeout)\n }\n return undefined\n }, [expiresAt])\n\n return (\n <Suspense fallback={<Loading iframeSize=\"desktop\" />}>\n <IframeInner\n key={`${draftSnapshot.key}-${selectedPerspectiveName || 'draft'}`}\n _key={draftSnapshot.key}\n draftSnapshot={draftSnapshot.draft}\n url={url}\n isResolvingUrl={isResolvingUrl}\n attributes={attributes}\n perspective={perspective}\n defaultSize={defaultSize}\n reload={reload}\n showDisplayUrl={showDisplayUrl}\n userId={currentUser?.id}\n />\n </Suspense>\n )\n}\n\nexport interface IframeInnerProps extends Omit<IframeOptions, 'url'> {\n url: (draftSnapshot: SanityDocument | null) => Promise<URL | Error | undefined>\n isResolvingUrl: boolean\n draftSnapshot: SanityDocument | null\n perspective: Parameters<UrlResolver>[1]\n userId?: string\n expiresAt?: number\n _key?: string\n}\nconst IframeInner = memo(function IframeInner(props: IframeInnerProps) {\n const {\n isResolvingUrl,\n defaultSize = DEFAULT_SIZE,\n reload,\n attributes = {},\n showDisplayUrl = true,\n draftSnapshot,\n userId,\n expiresAt,\n perspective: {selectedPerspectiveName, perspectiveStack},\n _key,\n } = props\n const [iframeSize, setIframeSize] = useState(sizes?.[defaultSize] ? defaultSize : DEFAULT_SIZE)\n\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const url = suspend(\n () => props.url(draftSnapshot),\n [\n // Cache based on a few specific conditions\n 'sanity-plugin-iframe-pane',\n draftSnapshot,\n selectedPerspectiveName,\n perspectiveStack,\n userId,\n expiresAt,\n _key,\n resolveUUID,\n ],\n )\n\n const [loading, setLoading] = useState(true)\n const [_reloading, setReloading] = useState(false)\n const reloading = _reloading || isResolvingUrl\n\n const iframe = useRef<HTMLIFrameElement>(null)\n\n const handleReload = useCallback(() => {\n if (!iframe?.current) {\n return\n }\n\n // Funky way to reload an iframe without CORS issues\n const {src} = iframe.current\n iframe.current.src = src\n\n setReloading(true)\n }, [])\n\n return (\n <MotionConfig transition={prefersReducedMotion ? {duration: 0} : undefined}>\n <Flex direction=\"column\" style={{height: '100%'}}>\n <Toolbar\n url={url}\n iframeSize={iframeSize}\n reloading={reloading}\n setIframeSize={setIframeSize}\n showUrl={showDisplayUrl}\n reloadButton={!!reload?.button}\n handleReload={handleReload}\n />\n {url instanceof Error ? (\n <ErrorCard error={url} />\n ) : (\n <Card tone=\"transparent\" style={{height: '100%'}}>\n <Frame\n ref={iframe}\n loading={loading}\n reloading={reloading}\n iframeSize={iframeSize}\n setReloading={setReloading}\n setLoading={setLoading}\n url={url}\n attributes={attributes}\n />\n </Card>\n )}\n </Flex>\n </MotionConfig>\n )\n})\n\ninterface FrameProps extends Required<Pick<IframeOptions, 'attributes'>> {\n loading: boolean\n reloading: boolean\n setLoading: (loading: boolean) => void\n setReloading: (reloading: boolean) => void\n iframeSize: IframeSizeKey\n url: URL | undefined\n}\nfunction Frame(props: FrameProps & {ref?: React.Ref<HTMLIFrameElement>}) {\n const {\n loading,\n setLoading,\n iframeSize,\n attributes,\n reloading,\n url,\n setReloading,\n ref: iframe,\n } = props\n\n function handleIframeLoad() {\n setLoading(false)\n setReloading(false)\n // Run onLoad from attributes\n if (attributes.onLoad && typeof attributes.onLoad === 'function') {\n attributes.onLoad()\n }\n }\n\n return (\n <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n <AnimatePresence>\n {!url ||\n (loading && (\n <MotionFlex\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={spinnerVariants}\n justify=\"center\"\n align=\"center\"\n style={{inset: '0', position: 'absolute'}}\n >\n <Loading iframeSize={iframeSize} />\n </MotionFlex>\n ))}\n </AnimatePresence>\n {url && (\n <motion.iframe\n ref={iframe}\n title=\"preview\"\n frameBorder=\"0\"\n style={{maxHeight: '100%'}}\n src={url.toString()}\n initial={['background', iframeSize]}\n variants={iframeVariants}\n animate={[\n loading ? 'background' : 'active',\n reloading ? 'reloading' : 'idle',\n iframeSize,\n ]}\n {...attributes}\n onLoad={handleIframeLoad}\n />\n )}\n </Flex>\n )\n}\n\nconst spinnerVariants = {\n initial: {opacity: 1},\n animate: {opacity: [0, 0, 1]},\n exit: {opacity: [1, 0, 0]},\n}\n\nconst iframeVariants = {\n ...sizes,\n desktop: {\n ...sizes.desktop,\n boxShadow: '0 0 0 0px var(--card-shadow-outline-color)',\n },\n mobile: {\n ...sizes.mobile,\n boxShadow: '0 0 0 1px var(--card-shadow-outline-color)',\n },\n background: {\n opacity: 0,\n scale: 1,\n },\n idle: {\n scale: 1,\n },\n reloading: {\n scale: [1, 1, 1, 0.98],\n },\n active: {\n opacity: [0, 0, 1],\n scale: 1,\n },\n}\n\nfunction Loading({iframeSize}: {iframeSize: IframeSizeKey}) {\n return (\n <Flex style={{...sizes[iframeSize]}} justify=\"center\" align=\"center\" direction=\"column\" gap={4}>\n <Spinner muted />\n <Text muted size={1}>\n Loading…\n </Text>\n </Flex>\n )\n}\n\nfunction ErrorCard({error}: {error: Error}) {\n return (\n <Card height=\"fill\">\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Container width={0}>\n <Card padding={4} radius={2} shadow={1} tone=\"caution\">\n <Flex>\n <Box>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n </Box>\n <Stack flex={1} marginLeft={3} gap={3}>\n <Text as=\"h1\" size={1} weight=\"bold\">\n {error.name}\n </Text>\n <Text as=\"p\" muted size={1}>\n {error.message}\n </Text>\n </Stack>\n </Flex>\n </Card>\n </Container>\n </Flex>\n </Card>\n )\n}\n\n// https://github.com/pmndrs/suspend-react?tab=readme-ov-file#making-cache-keys-unique\nconst resolveUUID = Symbol()\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-iframe-pane",
3
- "version": "5.0.23",
3
+ "version": "5.0.24",
4
4
  "description": "Display any URL in a View Pane, along with helpful buttons to Copy the URL or open in a new tab",
5
5
  "keywords": [
6
6
  "sanity",
@@ -29,14 +29,14 @@
29
29
  "dependencies": {
30
30
  "@sanity/icons": "^5.0.0",
31
31
  "@sanity/preview-url-secret": "^4.0.8",
32
- "@sanity/ui": "^3.3.1",
32
+ "@sanity/ui": "^3.3.5",
33
33
  "motion": "^12.42.2",
34
34
  "suspend-react": "^0.1.3"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@sanity/tsconfig": "^2.2.0",
38
- "@sanity/tsdown-config": "^0.11.0",
39
- "@types/node": "^24.13.2",
38
+ "@sanity/tsdown-config": "^0.13.1",
39
+ "@types/node": "^24.13.3",
40
40
  "@types/react": "^19.2.17",
41
41
  "@types/react-dom": "^19.2.3",
42
42
  "babel-plugin-react-compiler": "^1.0.0",
@@ -44,7 +44,7 @@
44
44
  "react-dom": "^19.2.7",
45
45
  "sanity": "^6.3.0",
46
46
  "styled-components": "^6.4.3",
47
- "tsdown": "^0.22.3"
47
+ "tsdown": "^0.22.5"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "react": "^19.2",