sanity-plugin-iframe-pane 5.0.7 → 5.0.9

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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, LaunchIcon, MobileDeviceIcon, RefreshIcon} from '@sanity/icons'\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 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'\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 forwardRef,\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 draftMode: {\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}\nconst Frame = forwardRef(function Frame(\n props: FrameProps,\n iframe: React.ForwardedRef<HTMLIFrameElement>,\n) {\n const {loading, setLoading, iframeSize, attributes, reloading, url, setReloading} = 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\nexport function 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} space={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"],"names":["DisplayUrl","props","$","_c","t0","url","getRedirectTo","truncatedUrl","origin","location","pathname","search","t1","sizes","desktop","width","height","mobile","DEFAULT_SIZE","Toolbar","iframeSize","setIframeSize","reloading","showUrl","reloadButton","handleReload","validUrl","URL","input","useRef","push","pushToast","useToast","copy","useCopyToClipboard","for","position","pointerEvents","opacity","toString","t2","t3","whiteSpace","t4","t5","t6","t7","Symbol","t8","t9","t10","MobileDeviceIcon","t11","t12","t13","t14","RefreshIcon","t15","t16","t17","t18","t19","current","value","then","copied","closable","status","title","t20","CopyIcon","t21","t22","t23","t24","t25","window","open","undefined","t26","LaunchIcon","t27","t28","t29","copiedText","setCopiedText","useState","text","navigator","clipboard","console","warn","writeText","error","MotionFlex","motion","create","Flex","encodeStudioPerspective","studioPerspective","Array","isArray","join","Iframe","document","options","draft","published","displayed","defaultSize","reload","attributes","showDisplayUrl","key","basePath","useActiveWorkspace","activeWorkspace","urlRef","draftSnapshot","setDraftSnapshot","useEffect","currentUser","useCurrentUser","apiVersion","client","useClient","expiresAt","setExpiresAt","previewSecretRef","isResolvingUrl","startTransition","useTransition","perspectiveStack","selectedPerspectiveName","usePerspective","perspective","JSON","stringify","id","draft_0","urlProp","preview","secret","expiresAt_0","createPreviewSecret","href","getTime","url_0","definePreviewUrl","draftMode","enable","previewUrlSecret","previewSearchParam","studioBasePath","studioPreviewPerspective","url_1","timeout","setTimeout","Math","max","Date","now","clearTimeout","IframeInner","memo","userId","_key","prefersReducedMotion","usePrefersReducedMotion","suspend","resolveUUID","loading","setLoading","_reloading","setReloading","iframe","src","duration","button","Error","Frame","forwardRef","onLoad","handleIframeLoad","spinnerVariants","inset","maxHeight","iframeVariants","initial","animate","exit","boxShadow","background","scale","idle","active","Loading","ErrorCard","name","message"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","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, LaunchIcon, MobileDeviceIcon, RefreshIcon} from '@sanity/icons'\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 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'\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 forwardRef,\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 draftMode: {\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}\nconst Frame = forwardRef(function Frame(\n props: FrameProps,\n iframe: React.ForwardedRef<HTMLIFrameElement>,\n) {\n const {loading, setLoading, iframeSize, attributes, reloading, url, setReloading} = 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} space={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"],"names":["DisplayUrl","props","$","_c","t0","url","getRedirectTo","truncatedUrl","origin","location","pathname","search","t1","sizes","desktop","width","height","mobile","DEFAULT_SIZE","Toolbar","iframeSize","setIframeSize","reloading","showUrl","reloadButton","handleReload","validUrl","URL","input","useRef","push","pushToast","useToast","copy","useCopyToClipboard","for","position","pointerEvents","opacity","toString","t2","t3","whiteSpace","t4","t5","t6","t7","Symbol","t8","t9","t10","MobileDeviceIcon","t11","t12","t13","t14","RefreshIcon","t15","t16","t17","t18","t19","current","value","then","copied","closable","status","title","t20","CopyIcon","t21","t22","t23","t24","t25","window","open","undefined","t26","LaunchIcon","t27","t28","t29","copiedText","setCopiedText","useState","text","navigator","clipboard","console","warn","writeText","error","MotionFlex","motion","create","Flex","encodeStudioPerspective","studioPerspective","Array","isArray","join","Iframe","document","options","draft","published","displayed","defaultSize","reload","attributes","showDisplayUrl","key","basePath","useActiveWorkspace","activeWorkspace","urlRef","draftSnapshot","setDraftSnapshot","useEffect","currentUser","useCurrentUser","apiVersion","client","useClient","expiresAt","setExpiresAt","previewSecretRef","isResolvingUrl","startTransition","useTransition","perspectiveStack","selectedPerspectiveName","usePerspective","perspective","JSON","stringify","id","draft_0","urlProp","preview","secret","expiresAt_0","createPreviewSecret","href","getTime","url_0","definePreviewUrl","draftMode","enable","previewUrlSecret","previewSearchParam","studioBasePath","studioPreviewPerspective","url_1","timeout","setTimeout","Math","max","Date","now","clearTimeout","IframeInner","memo","userId","_key","prefersReducedMotion","usePrefersReducedMotion","suspend","resolveUUID","loading","setLoading","_reloading","setReloading","iframe","src","duration","button","Error","Frame","forwardRef","onLoad","handleIframeLoad","spinnerVariants","inset","maxHeight","iframeVariants","initial","animate","exit","boxShadow","background","scale","idle","active","Loading","ErrorCard","name","message"],"mappings":";;;;;;;;;;;AAIO,SAAAA,WAAAC,OAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAAF,IAAA,CAAA,MAAAD,MAAAI,OAESD,KAAAE,cAAcL,MAAKI,GAAI,GAACH,EAAA,CAAA,IAAAD,MAAAI,KAAAH,OAAAE,MAAAA,KAAAF,EAAA,CAAA;AAApC,QAAAG,MAAYD,IADdG,eAEE,GAAUF,IAAGG,WAAYC,SAAQD,SAAvB,KAAsCH,IAAGG,MAAO,GAAGH,IAAGK,QAAS,GAAGL,IAAGM,MAAO;AACzE,MAAAC;AAAA,SAAAV,SAAAK,gBAGbK,yBAAC,MAAA,EAAW,MAAA,GAAgB,cAAA,YACzBL,UAAAA,aAAAA,CACH,GAAOL,OAAAK,cAAAL,OAAAU,MAAAA,KAAAV,EAAA,CAAA,GAFPU;AAEO;ACNJ,MAAMC,QAAmB;AAAA,EAC9BC,SAAS;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,EAAA;AAAA,EAEVC,QAAQ;AAAA,IACNF,OAAO;AAAA,IACPC,QAAQ;AAAA,EAAA;AAEZ,GAEaE,eAAe;AAWrB,SAAAC,QAAAlB,OAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAE;AAAAA,IAAAe;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAyFxB,OACzFyB,WAAiBrB,eAAesB,KAEhCC,QAAcC,OAA4B,IAAI,GAC9C;AAAA,IAAAC,MAAAC;AAAAA,EAAAA,IAA0BC,SAAAA,GAC1B,GAAAC,IAAA,IAAiBC,mBAAAA;AAAoB,MAAA9B;AAAAF,IAAA,CAAA,6BAAAiC,IAAA,2BAAA,KAKxB/B,KAAA;AAAA,IAAAgC,UAAW;AAAA,IAAUC,eAAiB;AAAA,IAAMC,SAAW;AAAA,EAAA,GAAEpC,OAAAE,MAAAA,KAAAF,EAAA,CAAA;AAAA,MAAAU;AAAAV,IAAA,CAAA,MAAAG,OAAAH,SAAAwB,YAEzDd,KAAAc,WAAWrB,IAAGkC,SAAAA,IAAd,IAA8BrC,OAAAG,KAAAH,OAAAwB,UAAAxB,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAA,MAAAsC;AAAAtC,WAAAU,MAHvC4B,KAAA,oBAAA,YAAA,EACS,OAAApC,IACFwB,KAAAA,OACE,OAAAhB,IACP,UAAA,IACU,UAAA,GAAA,CAAE,GACZV,OAAAU,IAAAV,OAAAsC,MAAAA,KAAAtC,EAAA,CAAA;AAAA,MAAAuC;AAAAvC,IAAA,CAAA,6BAAAiC,IAAA,2BAAA,KAO8BM,KAAA;AAAA,IAAAC,YAAa;AAAA,EAAA,GAASxC,OAAAuC,MAAAA,KAAAvC,EAAA,CAAA;AACzC,QAAAyC,KAAAvB,eAAe,WAAf,wBAAA;AAA2E,MAAAwB;AAAA1C,WAAAyC,MAD9EC,yBAAC,MAAA,EAAW,MAAA,GAAU,OAAAH,IACnBE,cACH,GAAOzC,OAAAyC,IAAAzC,OAAA0C,MAAAA,KAAA1C,EAAA,CAAA;AAMG,QAAA2C,MAACnB;AAAQ,MAAAoB;AAAA5C,IAAA,CAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KACTW,KAAA,CAAC,CAAC,GAAC5C,OAAA4C,MAAAA,KAAA5C,EAAA,CAAA;AAEP,QAAA8C,KAAA5B,eAAe,WAAf,YAAA;AAA6C,MAAA6B;AAAA/C,IAAA,EAAA,MAAAkB,cAAAlB,UAAAmB,iBAE1C4B,KAAAA,MAAM5B,cAAcD,eAAe,WAAf,YAAA,QAA8C,GAAClB,QAAAkB,YAAAlB,QAAAmB,eAAAnB,QAAA+C,MAAAA,KAAA/C,EAAA,EAAA;AAAA,MAAAgD;AAAAhD,IAAA,EAAA,MAAA2C,MAAA3C,UAAA8C,MAAA9C,EAAA,EAAA,MAAA+C,MAN9EC,0BAAC,QAAA,EACW,UAAAL,IACA,UAAAC,IACD,SAAA,GACH,MAAAE,IACAG,MAAAA,kBACG,SAAAF,IAAmE,GAC5E/C,QAAA2C,IAAA3C,QAAA8C,IAAA9C,QAAA+C,IAAA/C,QAAAgD,OAAAA,MAAAhD,EAAA,EAAA;AAAA,MAAAkD;AAAAlD,IAAA,EAAA,MAAAgD,OAAAhD,UAAA0C,MAlBNQ,0BAAC,MAAA,EAAW,OAAA,UAAc,KAAA,GACxB,8BAAC,SAAA,EACC,SAAA,IAEE,SAAAR,IAIO,SAAA,GACC,WAAA,gBAEVM,UAAAA,IAAAA,CAQF,GACF,GAAOhD,QAAAgD,KAAAhD,QAAA0C,IAAA1C,QAAAkD,OAAAA,MAAAlD,EAAA,EAAA;AAAA,MAAAmD;AAAAnD,IAAA,EAAA,MAAAqB,WAAArB,UAAAG,OAAAH,EAAA,EAAA,MAAAwB,YACQ2B,MAAA9B,WAAAG,gCAAwB,YAAA,EAAgBrB,IAAAA,CAAG,GAAIH,QAAAqB,SAAArB,QAAAG,KAAAH,QAAAwB,UAAAxB,QAAAmD,OAAAA,MAAAnD,EAAA,EAAA;AAAA,MAAAoD;AAAApD,YAAAmD,OAA9DC,MAAA,oBAAC,KAAA,EAAU,MAAA,GAAID,UAAAA,KAAgD,GAAMnD,QAAAmD,KAAAnD,QAAAoD,OAAAA,MAAApD,EAAA,EAAA;AAAA,MAAAqD;AAAArD,IAAA,EAAA,MAAAuB,gBAAAvB,EAAA,EAAA,MAAAsB,gBAAAtB,EAAA,EAAA,MAAAoB,aAAApB,UAAAwB,YAElE6B,MAAA/B,eACC,oBAAC,SAAA,EACC,SAAA,IAEE,6BAAC,MAAA,EAAW,MAAA,GAAU,OAAA;AAAA,IAAAkB,YAAa;AAAA,EAAA,GAChCpB,UAAAA,YAAA,oBAAA,SAAA,CACH,GAEO,SAAA,GAET,UAAA,oBAAC,QAAA,EACW,UAAA,CAACI,UACN,MAAA,SACK,UAAA,CAAC,CAAC,GACH,SAAA,GACH8B,MAAAA,aACGlC,SAAAA,WACE,cAAA,UACF,SAAA,MAAMG,aAAAA,GAAc,EAAA,CAEjC,IApBD,MAqBOvB,QAAAuB,cAAAvB,QAAAsB,cAAAtB,QAAAoB,WAAApB,QAAAwB,UAAAxB,QAAAqD,OAAAA,MAAArD,EAAA,EAAA;AAAA,MAAAuD;AAAAvD,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAIJsB,MAAA,oBAAC,MAAA,EAAW,MAAA,GAAU,OAAA;AAAA,IAAAf,YAAa;AAAA,EAAA,GAAW,sBAE9C,GAAOxC,QAAAuD,OAAAA,MAAAvD,EAAA,EAAA;AAMG,QAAAwD,OAAChC;AAAQ,MAAAiC;AAAAzD,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KACTwB,MAAA,CAAC,CAAC,GAACzD,QAAAyD,OAAAA,MAAAzD,EAAA,EAAA;AAAA,MAAA0D;AAAA1D,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAEJyB,MAAA,CAAC,CAAC,GAAC1D,QAAA0D,OAAAA,MAAA1D,EAAA,EAAA;AAAA,MAAA2D;AAAA3D,IAAA,EAAA,MAAA+B,QAAA/B,UAAA6B,aAEH8B,MAAAA,MAAA;AACFjC,WAAKkC,SAAgBC,SAErB9B,KAAKL,MAAKkC,QAAQC,KAAM,EAACC,KAAMC,CAAAA,YAEhClC,UADEkC,SACQ;AAAA,MAAAC,UACE;AAAA,MAAIC,QACN;AAAA,MAASC,OACV;AAAA,IAAA,IAGC;AAAA,MAAAF,UACE;AAAA,MAAIC,QACN;AAAA,MAAOC,OACR;AAAA,IAAA,CALR,GAQIH,OACR;AAAA,EAAC,GACH/D,QAAA+B,MAAA/B,QAAA6B,WAAA7B,QAAA2D,OAAAA,MAAA3D,EAAA,EAAA;AAAA,MAAAmE;AAAAnE,IAAA,EAAA,MAAAwD,OAAAxD,UAAA2D,OAnCLQ,MAAA,oBAAC,SAAA,EACC,SAAA,IAEE,SAAAZ,KAIO,SAAA,GAET,8BAAC,QAAA,EACM,MAAA,SACK,UAAAC,KACA,UAAAC,KACJW,MAAAA,UACG,SAAAV,KACE,cAAA,YACF,SAAAC,KAmBR,EAAA,CAEL,GAAU3D,QAAAwD,KAAAxD,QAAA2D,KAAA3D,QAAAmE,OAAAA,MAAAnE,EAAA,EAAA;AAAA,MAAAqE;AAAArE,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAINoC,MAAA,oBAAC,MAAA,EAAW,MAAA,GAAU,OAAA;AAAA,IAAA7B,YAAa;AAAA,EAAA,GAAW,mCAE9C,GAAOxC,QAAAqE,OAAAA,MAAArE,EAAA,EAAA;AAMG,QAAAsE,OAAC9C;AAAQ,MAAA+C;AAAAvE,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KACTsC,MAAA,CAAC,CAAC,GAACvE,QAAAuE,OAAAA,MAAAvE,EAAA,EAAA;AAAA,MAAAwE;AAAAxE,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAGHuC,MAAA,CAAC,CAAC,GAACxE,QAAAwE,OAAAA,MAAAxE,EAAA,EAAA;AAAA,MAAAyE;AAAAzE,IAAA,EAAA,MAAAG,OAAAH,UAAAwB,YAGJiD,MAAAjD,WAAA,MAAiBkD,OAAMC,KAAMxE,IAAGkC,SAAAA,CAAW,IAA3CuC,QAAwD5E,QAAAG,KAAAH,QAAAwB,UAAAxB,QAAAyE,OAAAA,MAAAzE,EAAA,EAAA;AAAA,MAAA6E;AAAA7E,IAAA,EAAA,MAAAsE,OAAAtE,UAAAyE,OAlBrEI,MAAA,oBAAC,SAAA,EACC,SAAA,IAEE,SAAAR,KAIO,SAAA,GACC,WAAA,cAEV,8BAAC,QAAA,EACW,UAAAC,KACA,UAAAC,KACJO,MAAAA,YACD,MAAA,SACK,UAAAN,KACL,MAAA,QACM,cAAA,yBACF,SAAAC,IAAAA,CAAwD,EAAA,CAErE,GAAUzE,QAAAsE,KAAAtE,QAAAyE,KAAAzE,QAAA6E,OAAAA,MAAA7E,EAAA,EAAA;AAAA,MAAA+E;AAAA/E,IAAA,EAAA,MAAAqD,OAAArD,UAAAmE,OAAAnE,EAAA,EAAA,MAAA6E,OAjFZE,MAAA,qBAAC,QAAW,OAAA,UAAc,KAAA,GACvB1B,UAAAA;AAAAA,IAAAA;AAAAA,IAsBDc;AAAAA,IAsCAU;AAAAA,EAAAA,GAqBF,GAAO7E,QAAAqD,KAAArD,QAAAmE,KAAAnE,QAAA6E,KAAA7E,QAAA+E,OAAAA,MAAA/E,EAAA,EAAA;AAAA,MAAAgF;AAAAhF,IAAA,EAAA,MAAAkD,OAAAlD,UAAAoD,OAAApD,EAAA,EAAA,MAAA+E,OA1GXC,0BAAC,MAAA,EAAc,YAAG,cAAA,IAChB,+BAAC,MAAA,EAAW,OAAA,UAAc,KAAA,GACxB9B,UAAAA;AAAAA,IAAAA;AAAAA,IAqBAE;AAAAA,IACA2B;AAAAA,EAAAA,GAmFF,EAAA,CACF,GAAO/E,QAAAkD,KAAAlD,QAAAoD,KAAApD,QAAA+E,KAAA/E,QAAAgF,OAAAA,MAAAhF,EAAA,EAAA;AAAA,MAAAiF;AAAA,SAAAjF,EAAA,EAAA,MAAAsC,MAAAtC,UAAAgF,OApHTC,uCACE3C,UAAAA;AAAAA,IAAAA;AAAAA,IAOA0C;AAAAA,EAAAA,EAAAA,CA4GO,GACNhF,QAAAsC,IAAAtC,QAAAgF,KAAAhF,QAAAiF,OAAAA,MAAAjF,EAAA,EAAA,GArHHiF;AAqHG;AAQP,SAAAjD,qBAAA;AAAA,QAAAhC,IAAAC,EAAA,CAAA,GACE,CAAAiF,YAAAC,aAAA,IAAoCC,SAAsB,IAAI;AAAC,MAAAlF;AAAAF,IAAA,CAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAE9B/B,YAAAmF,SAAA;AAC/B,QAAI,CAACC,WAASC;AACZC,aAAAA,QAAOC,KAAM,yBAAyB,GAC/B;AAIT,QAAA;AACE,aAAA,MAAMH,UAASC,UAAUG,UAAWL,IAAI,GACxCF,cAAcE,IAAI,GACX;AAAA,IAAI,SAAA3E,KAAA;AAEX8E,aAAAA,QAAOC,KAAM,eADNE,GAC0B,GACjCR,cAAc,IAAI,GACX;AAAA,IAAK;AAAA,EACb,GACFnF,OAAAE,MAAAA,KAAAF,EAAA,CAAA;AAhBD,QAAA+B,OAAqB7B;AAgBf,MAAAQ;AAAA,SAAAV,SAAAkF,cAECxE,KAAA,CAACwE,YAAYnD,IAAI,GAAC/B,OAAAkF,YAAAlF,OAAAU,MAAAA,KAAAV,EAAA,CAAA,GAAlBU;AAAkB;ACzG3B,MAAMkF,aAAaC,OAAOC,OAAOC,IAAI;AAWrC,SAASC,wBAAwBC,mBAA8C;AAC7E,SAAOC,MAAMC,QAAQF,iBAAiB,IAAIA,kBAAkBG,KAAK,GAAG,IAAIH;AAC1E;AAEO,SAAAI,OAAAtG,OAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAqG;AAAAA,IAAAC;AAAAA,EAAAA,IAA4BxG,OAC5ByG,QAAcF,SAAQE,SAAUF,SAAQG,aAAcH,SAAQI,WAE9D;AAAA,IAAAC,aAAAzG;AAAAA,IAAA0G;AAAAA,IAAAC;AAAAA,IAAAC,gBAAApG;AAAAA,IAAAqG;AAAAA,EAAAA,IAAqFR,SAA9EI,cAAAzG,OAAA0E,SAAA5D,eAAAd,IAAgD4G,iBAAApG,OAAAkE,SAAA,KAAAlE,IAGvDsG,WADkBC,sBACQC,iBAA2BF,YAApC,KACjBG,SAAexF,OAAO4E,QAAOpG,GAAI;AAAC,MAAAmC;AAAAtC,IAAA,CAAA,MAAAwG,SAAAxG,SAAA+G,OACiBzE,KAAAA,OAAO;AAAA,IAAAyE;AAAAA,IAAAP;AAAAA,EAAAA,IAAaxG,OAAAwG,OAAAxG,OAAA+G,KAAA/G,OAAAsC,MAAAA,KAAAtC,EAAA,CAAA;AAAvE,QAAA,CAAAoH,eAAAC,gBAAA,IAA0CjC,SAAS9C,EAAoB;AAAC,MAAAC,IAAAE;AAAAzC,IAAA,CAAA,MAAAuG,QAAApG,OAC9DoC,KAAAA,MAAA;AACR4E,WAAMvD,UAAW2C,QAAOpG;AAAAA,EAAV,GACbsC,KAAA,CAAC8D,QAAOpG,GAAI,GAACH,EAAA,CAAA,IAAAuG,QAAApG,KAAAH,OAAAuC,IAAAvC,OAAAyC,OAAAF,KAAAvC,EAAA,CAAA,GAAAyC,KAAAzC,EAAA,CAAA,IAFhBsH,UAAU/E,IAEPE,EAAa;AAChB,QAAA8E,cAAoBC,eAAAA;AAAgB,MAAA9E;AAAA1C,IAAA,CAAA,6BAAAiC,IAAA,2BAAA,KACXS,KAAA;AAAA,IAAA+E,YAAa;AAAA,EAAA,GAAazH,OAAA0C,MAAAA,KAAA1C,EAAA,CAAA;AAAnD,QAAA0H,SAAeC,UAAUjF,EAA0B,GACnD,CAAAkF,WAAAC,YAAA,IAAkCzC,SAAAA,GAClC0C,mBAAyBnG,OAA2BiD,MAAS,GAC7D,CAAAmD,gBAAAC,eAAA,IAA0CC,iBAC1C;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAoDC,eAAAA;AAAgB,MAAAzF;AAAA3C,IAAA,CAAA,MAAAkI,oBAAAlI,SAAAmI,2BAE3DxF,KAAA;AAAA,IAAAuF;AAAAA,IAAAC;AAAAA,EAAAA,GAGNnI,OAAAkI,kBAAAlI,OAAAmI,yBAAAnI,OAAA2C,MAAAA,KAAA3C,EAAA,CAAA;AAJH,QAAAqI,cACS1F;AAKR,MAAAC,IAAAE;AAAA9C,IAAA,EAAA,MAAAwG,SAAAxG,UAAAoH,iBAAApH,EAAA,EAAA,MAAA+G,OAESnE,KAAAA,MAAA;AACJ0F,SAAIC,UAAW;AAAA,MAAAxB;AAAAA,MAAAP;AAAAA,IAAAA,CAAY,MAAM8B,KAAIC,UAAWnB,aAAa,KAC/DY,gBAAgB,MAAMX,iBAAiB;AAAA,MAAAN;AAAAA,MAAAP;AAAAA,IAAAA,CAAY,CAAC;AAAA,EACrD,GACA1D,KAAA,CAAC0D,OAAOY,eAAeL,KAAKiB,eAAe,GAAChI,QAAAwG,OAAAxG,QAAAoH,eAAApH,QAAA+G,KAAA/G,QAAA4C,IAAA5C,QAAA8C,OAAAF,KAAA5C,EAAA,EAAA,GAAA8C,KAAA9C,EAAA,EAAA,IAJ/CsH,UAAU1E,IAIPE,EAA4C;AAAC,MAAAC;AAAA/C,IAAA,EAAA,MAAAgH,YAAAhH,UAAA0H,UAAA1H,EAAA,EAAA,MAAAuH,aAAAiB,MAAAxI,UAAAqI,eAG9CtF,YAAA0F,YAAA;AACE,QAAI,OAAOlI,WAAa;AAAW;AAGnC,UAAAmI,UAAgBvB,OAAMvD;AACtB,QAAI,OAAO8E,WAAY;AAAQ,aACtB,IAAIjH,IAAIiH,SAASnI,SAAQD,MAAO;AAEzC,QAAI,OAAOoI,WAAY,YAAU;AAC/B,YAAAvI,MAAY,MAAMuI,QAAQlC,SAAO6B,WAAW;AAAC,aACtC,OAAOlI,OAAQ,WAAf,IAA8BsB,IAAItB,KAAKI,SAAQD,MAAa,IAA5DH;AAAAA,IAA6D;AAEtE,QAAI,OAAOuI,WAAY,UAAQ;AAC7B,YAAAC,UACE,OAAOD,QAAOC,WAAa,aAA3B,MACUD,QAAOC,QAASnC,SAAO6B,WAAW,IACxCK,QAAOC;AACb,UAAI,OAAOA,WAAY;AAAQ,eACtBA;AAET,UAAI,CAACb,iBAAgBlE,SAAQ;AAC3B,cAAA;AAAA,UAAAgF;AAAAA,UAAAhB,WAAAiB;AAAAA,QAAAA,IAA4B,MAAMC,oBAChCpB,QACA,6BACAnH,SAAQwI,MACRxB,aAAWiB,EACb;AACAV,yBAAgBlE,UAAWgF,QAC3BZ,gBAAgB,MAAMH,aAAaD,YAASoB,QAAAA,CAAU,CAAC;AAAA,MAAC;AAU1D,YAAAC,QAAY,MAPcC,iBAAiB;AAAA,QAAA5I,QACjCoI,QAAOpI,WAAY,gBAAgBC,SAAQD,SAAUoI,QAAOpI;AAAAA,QAAOqI;AAAAA,QAAAQ,WAEhE;AAAA,UAAAC,QACDV,QAAOS;AAAAA,QAAAA;AAAAA,MACjB,CACD,EACmC;AAAA,QAAAzB;AAAAA,QAAA2B,kBAEhBvB,iBAAgBlE;AAAAA,QAAQ0F,oBACtB;AAAA,QAAIC,gBACRvC;AAAAA,QAAQwC,0BACExD,wBAAwBqC,YAAWH,gBAAiB;AAAA,MAAA,CAC/E;AAAC,aACK,IAAIzG,IAAItB,OAAKI,SAAQD,MAAO;AAAA,IAAC;AAAA,EACrC,GAEFN,QAAAgH,UAAAhH,QAAA0H,QAAA1H,EAAA,EAAA,IAAAuH,aAAAiB,IAAAxI,QAAAqI,aAAArI,QAAA+C,MAAAA,KAAA/C,EAAA,EAAA;AAjDH,QAAAyJ,QAAY1G;AAmDX,MAAAC,KAAAE;AAAAlD,YAAA4H,aACS5E,MAAAA,MAAA;AACR,QAAI4E,WAAS;AACX,YAAA8B,UAAgBC,WACd,MAAA;AACE3B,wBAAgB,MAAMH,aAAajD,MAAS,CAAC,GAC7CkD,iBAAgBlE,UAAWgB;AAAAA,MAAH,GAE1BgF,KAAIC,IAAK,GAAGjC,YAAYkC,KAAIC,IAAAA,CAAM,CACpC;AAAC,aACM,MAAMC,aAAaN,OAAO;AAAA,IAAC;AAAA,EACnC,GAEAxG,MAAA,CAAC0E,SAAS,GAAC5H,QAAA4H,WAAA5H,QAAAgD,KAAAhD,QAAAkD,QAAAF,MAAAhD,EAAA,EAAA,GAAAkD,MAAAlD,EAAA,EAAA,IAZdsH,UAAUtE,KAYPE,GAAW;AAAC,MAAAC;AAAAnD,IAAA,EAAA,6BAAAiC,IAAA,2BAAA,KAGOkB,0BAAC,WAAmB,YAAA,UAAA,CAAS,GAAGnD,QAAAmD,OAAAA,MAAAnD,EAAA,EAAA;AAE3C,QAAAoD,SAAGgE,cAAaL,GAAI,IAAIoB,2BAAA,OAAkC,IAUvD9E,MAAAkE,aAAWiB;AAAI,MAAAjF;AAAA,SAAAvD,UAAA6G,cAAA7G,EAAA,EAAA,MAAA2G,eAAA3G,EAAA,EAAA,MAAAoH,cAAAZ,SAAAxG,EAAA,EAAA,MAAAoH,cAAAL,OAAA/G,EAAA,EAAA,MAAA+H,kBAAA/H,EAAA,EAAA,MAAAqI,eAAArI,UAAA4G,UAAA5G,EAAA,EAAA,MAAA8G,kBAAA9G,EAAA,EAAA,MAAAoD,OAAApD,UAAAqD,OAAArD,EAAA,EAAA,MAAAyJ,SAZ3BlG,0BAAC,UAAA,EAAmB,UAAAJ,KAClB,UAAA,oBAAC,aAAA,EAEO,MAAAiE,cAAaL,KACJ,eAAAK,cAAaZ,OACvBrG,KAAAA,OACW4H,gBACJlB,YACCwB,aACA1B,aACLC,QACQE,gBACR,QAAAzD,IAAAA,GAVHD,GAUkB,EAAA,CAE3B,GAAWpD,QAAA6G,YAAA7G,QAAA2G,aAAA3G,EAAA,EAAA,IAAAoH,cAAAZ,OAAAxG,EAAA,EAAA,IAAAoH,cAAAL,KAAA/G,QAAA+H,gBAAA/H,QAAAqI,aAAArI,QAAA4G,QAAA5G,QAAA8G,gBAAA9G,QAAAoD,KAAApD,QAAAqD,KAAArD,QAAAyJ,OAAAzJ,QAAAuD,OAAAA,MAAAvD,EAAA,EAAA,GAdXuD;AAcW;AAaf,MAAM0G,cAAcC,KAAK,SAAAnK,OAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACvB;AAAA,IAAA8H;AAAAA,IAAApB,aAAAzG;AAAAA,IAAA0G;AAAAA,IAAAC,YAAAnG;AAAAA,IAAAoG,gBAAAxE;AAAAA,IAAA8E;AAAAA,IAAA+C;AAAAA,IAAAvC;AAAAA,IAAAS,aAAA9F;AAAAA,IAAA6H;AAAAA,EAAAA,IAWIrK,OATF4G,cAAAzG,OAAA0E,SAAA5D,eAAAd;AAA0B,MAAAuC;AAAAzC,WAAAU,MAE1B+B,KAAA/B,OAAAkE,SAAA,CAAA,IAAAlE,IAAeV,OAAAU,IAAAV,OAAAyC,MAAAA,KAAAzC,EAAA,CAAA;AAAf,QAAA6G,aAAApE,IACAqE,iBAAAxE,OAAAsC,SAAA,KAAAtC,IAIa;AAAA,IAAA6F;AAAAA,IAAAD;AAAAA,EAAAA,IAAA3F,IAGf,CAAArB,YAAAC,aAAA,IAAoCiE,SAASzE,QAAQgG,WAAW,IAAnBA,cAAA3F,YAAiD,GAE9FqJ,uBAA6BC,wBAAAA;AAAyB,MAAA5H;AAAA1C,IAAA,CAAA,MAAAoH,iBAAApH,SAAAD,SAGpD2C,KAAAA,MAAM3C,MAAKI,IAAKiH,aAAa,GAACpH,OAAAoH,eAAApH,OAAAD,OAAAC,OAAA0C,MAAAA,KAAA1C,EAAA,CAAA;AAAA,MAAA2C;AAAA3C,IAAA,CAAA,MAAAoK,QAAApK,EAAA,CAAA,MAAAoH,iBAAApH,EAAA,CAAA,MAAA4H,aAAA5H,SAAAkI,oBAAAlI,EAAA,CAAA,MAAAmI,2BAAAnI,EAAA,EAAA,MAAA0C,MAAA1C,EAAA,EAAA,MAAAmK,UADpBxH,KAAA4H,QACV7H,IACA,CAEE,6BACA0E,eACAe,yBACAD,kBACAiC,QACAvC,WACAwC,MACAI,WAAW,CAEf,GAACxK,OAAAoK,MAAApK,OAAAoH,eAAApH,OAAA4H,WAAA5H,OAAAkI,kBAAAlI,OAAAmI,yBAAAnI,QAAA0C,IAAA1C,QAAAmK,QAAAnK,QAAA2C,MAAAA,KAAA3C,EAAA,EAAA;AAbD,QAAAG,MAAYwC,IAeZ,CAAA8H,SAAAC,UAAA,IAA8BtF,SAAS,EAAI,GAC3C,CAAAuF,YAAAC,YAAA,IAAmCxF,SAAS,EAAK,GACjDhE,YAAkBuJ,cAAA5C,gBAElB8C,SAAelJ,OAA0B,IAAI;AAAC,MAAAiB;AAAA5C,IAAA,EAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAEbW,KAAAA,MAAA;AAC/B,QAAI,CAACiI,QAAMjH;AAAS;AAKpB,UAAA;AAAA,MAAAkH;AAAAA,IAAAA,IAAcD,OAAMjH;AACpBiH,WAAMjH,QAAQkH,MAAOA,KAErBF,aAAa,EAAI;AAAA,EAAC,GACnB5K,QAAA4C,MAAAA,KAAA5C,EAAA,EAAA;AAVD,QAAAuB,eAAqBqB;AAUf,MAAAE;AAAA9C,YAAAqK,wBAGsBvH,KAAAuH,uBAAA;AAAA,IAAAU,UAAkC;AAAA,EAAA,IAAlCnG,QAAgD5E,QAAAqK,sBAAArK,QAAA8C,MAAAA,KAAA9C,EAAA,EAAA;AAAA,MAAA+C;AAAA/C,IAAA,EAAA,6BAAAiC,IAAA,2BAAA,KACxCc,KAAA;AAAA,IAAAjC,QAAS;AAAA,EAAA,GAAOd,QAAA+C,MAAAA,KAAA/C,EAAA,EAAA;AAO9B,QAAAgD,MAAA,CAAC,CAAC4D,QAAMoE;AAAQ,MAAA9H;AAAAlD,IAAA,EAAA,MAAAkB,cAAAlB,EAAA,EAAA,MAAAoB,aAAApB,EAAA,EAAA,MAAA8G,kBAAA9G,EAAA,EAAA,MAAAgD,OAAAhD,UAAAG,OANhC+C,0BAAC,SAAA,EACM/C,KACOe,YACDE,WACID,eACN2F,SAAAA,gBACK,cAAA9D,KACAzB,aAAAA,CAAY,GAC1BvB,QAAAkB,YAAAlB,QAAAoB,WAAApB,QAAA8G,gBAAA9G,QAAAgD,KAAAhD,QAAAG,KAAAH,QAAAkD,OAAAA,MAAAlD,EAAA,EAAA;AAAA,MAAAmD;AAAAnD,IAAA,EAAA,MAAA6G,cAAA7G,EAAA,EAAA,MAAAkB,cAAAlB,EAAA,EAAA,MAAAyK,WAAAzK,EAAA,EAAA,MAAAoB,aAAApB,UAAAG,OACDgD,MAAAhD,eAAe8K,QACd,oBAAC,WAAA,EAAiB9K,OAAAA,IAAAA,CAAG,IAErB,oBAAC,MAAA,EAAU,MAAA,eAAqB,OAAA;AAAA,IAAAW,QAAS;AAAA,EAAA,GACvC,UAAA,oBAAC,OAAA,EACM+J,KAAAA,QACIJ,SACErJ,WACCF,YACE0J,cACFF,YACPvK,KACO0G,YAAU,EAAA,CAE1B,GACD7G,QAAA6G,YAAA7G,QAAAkB,YAAAlB,QAAAyK,SAAAzK,QAAAoB,WAAApB,QAAAG,KAAAH,QAAAmD,OAAAA,MAAAnD,EAAA,EAAA;AAAA,MAAAoD;AAAApD,IAAA,EAAA,MAAAkD,OAAAlD,UAAAmD,OAzBHC,MAAA,qBAAC,MAAA,EAAe,WAAA,UAAgB,OAAAL,IAC9BG,UAAAA;AAAAA,IAAAA;AAAAA,IASCC;AAAAA,EAAAA,EAAAA,CAgBH,GAAOnD,QAAAkD,KAAAlD,QAAAmD,KAAAnD,QAAAoD,OAAAA,MAAApD,EAAA,EAAA;AAAA,MAAAqD;AAAA,SAAArD,EAAA,EAAA,MAAAoD,OAAApD,UAAA8C,MA3BTO,MAAA,oBAAC,cAAA,EAAyB,YAAAP,IACxBM,UAAAA,IAAAA,CA2BF,GAAepD,QAAAoD,KAAApD,QAAA8C,IAAA9C,QAAAqD,OAAAA,MAAArD,EAAA,EAAA,GA5BfqD;AA4Be,CAElB,GAUK6H,QAAQC,WAAW,SAAApL,OAAA8K,QAAA;AAAA,QAAA7K,IAAAC,EAAA,EAAA,GAIvB;AAAA,IAAAwK;AAAAA,IAAAC;AAAAA,IAAAxJ;AAAAA,IAAA2F;AAAAA,IAAAzF;AAAAA,IAAAjB;AAAAA,IAAAyK;AAAAA,EAAAA,IAAoF7K;AAAK,MAAAG;AAAAF,IAAA,CAAA,MAAA6G,cAAA7G,SAAA0K,cAAA1K,EAAA,CAAA,MAAA4K,gBAEzF1K,gBAAA;AACEwK,eAAW,EAAK,GAChBE,aAAa,EAAK,GAEd/D,WAAUuE,UAAW,OAAOvE,WAAUuE,UAAY,cACpDvE,WAAUuE,OAAAA;AAAAA,EACX,GACFpL,OAAA6G,YAAA7G,OAAA0K,YAAA1K,OAAA4K,cAAA5K,OAAAE,MAAAA,KAAAF,EAAA,CAAA;AAPD,QAAAqL,mBAAAnL;AAOC,MAAAQ;AAAAV,IAAA,CAAA,6BAAAiC,IAAA,2BAAA,KAG8CvB,KAAA;AAAA,IAAAI,QAAS;AAAA,IAAMoB,UAAY;AAAA,EAAA,GAAWlC,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAA,MAAAsC;AAAAtC,IAAA,CAAA,MAAAkB,cAAAlB,SAAAyK,WAAAzK,EAAA,CAAA,MAAAG,OAE9EmC,KAAA,CAACnC,OACCsK,WACC,oBAAC,YAAA,EACS,SAAA,WACA,SAAA,WACH,MAAA,QACKa,UAAAA,iBACF,SAAA,UACF,OAAA,UACC,OAAA;AAAA,IAAAC,OAAQ;AAAA,IAAGrJ,UAAY;AAAA,EAAA,GAE9B,UAAA,oBAAC,SAAA,EAAoBhB,WAAAA,CAAU,EAAA,CACjC,GACAlB,OAAAkB,YAAAlB,OAAAyK,SAAAzK,OAAAG,KAAAH,OAAAsC,MAAAA,KAAAtC,EAAA,CAAA;AAAA,MAAAuC;AAAAvC,WAAAsC,MAdNC,KAAA,oBAAC,mBACED,UAAAA,GAAAA,CAcH,GAAkBtC,OAAAsC,IAAAtC,QAAAuC,MAAAA,KAAAvC,EAAA,EAAA;AAAA,MAAAyC;AAAAzC,IAAA,EAAA,MAAA6G,cAAA7G,EAAA,EAAA,MAAAqL,oBAAArL,EAAA,EAAA,MAAA6K,UAAA7K,UAAAkB,cAAAlB,EAAA,EAAA,MAAAyK,WAAAzK,EAAA,EAAA,MAAAoB,aAAApB,EAAA,EAAA,MAAAG,OACjBsC,KAAAtC,OACC,qCACO0K,aACC,OAAA,WACM,aAAA,KACL,OAAA;AAAA,IAAAW,WAAY;AAAA,EAAA,GACd,KAAArL,IAAGkC,SAAAA,GACC,SAAA,CAAC,cAAcnB,UAAU,GACxBuK,UAAAA,gBACD,SAAA,CACPhB,UAAA,eAAA,UACArJ,YAAA,cAAA,QACAF,UAAU,GACX,GACG2F,YACIwE,QAAAA,iBAAAA,CAAgB,GAE3BrL,QAAA6G,YAAA7G,QAAAqL,kBAAArL,QAAA6K,QAAA7K,QAAAkB,YAAAlB,QAAAyK,SAAAzK,QAAAoB,WAAApB,QAAAG,KAAAH,QAAAyC,MAAAA,KAAAzC,EAAA,EAAA;AAAA,MAAA0C;AAAA,SAAA1C,EAAA,EAAA,MAAAuC,MAAAvC,UAAAyC,MAlCHC,KAAA,qBAAC,QAAW,OAAA,UAAiB,SAAA,UAAgB,OAAAhC,IAC3C6B,UAAAA;AAAAA,IAAAA;AAAAA,IAgBCE;AAAAA,EAAAA,EAAAA,CAkBH,GAAOzC,QAAAuC,IAAAvC,QAAAyC,IAAAzC,QAAA0C,MAAAA,KAAA1C,EAAA,EAAA,GAnCP0C;AAmCO,CAEV,GAEK4I,kBAAkB;AAAA,EACtBI,SAAS;AAAA,IAACtJ,SAAS;AAAA,EAAA;AAAA,EACnBuJ,SAAS;AAAA,IAACvJ,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,EAAA;AAAA,EAC3BwJ,MAAM;AAAA,IAACxJ,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,EAAA;AAC1B,GAEMqJ,iBAAiB;AAAA,EACrB,GAAG9K;AAAAA,EACHC,SAAS;AAAA,IACP,GAAGD,MAAMC;AAAAA,IACTiL,WAAW;AAAA,EAAA;AAAA,EAEb9K,QAAQ;AAAA,IACN,GAAGJ,MAAMI;AAAAA,IACT8K,WAAW;AAAA,EAAA;AAAA,EAEbC,YAAY;AAAA,IACV1J,SAAS;AAAA,IACT2J,OAAO;AAAA,EAAA;AAAA,EAETC,MAAM;AAAA,IACJD,OAAO;AAAA,EAAA;AAAA,EAET3K,WAAW;AAAA,IACT2K,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAEvBE,QAAQ;AAAA,IACN7J,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB2J,OAAO;AAAA,EAAA;AAEX;AAEA,SAAAG,QAAAhM,IAAA;AAAA,QAAAF,IAAAC,EAAA,CAAA,GAAiB;AAAA,IAAAiB;AAAAA,EAAAA,IAAAhB,IAEIQ,KAAAC,MAAMO,UAAU;AAAC,MAAAoB;AAAAtC,WAAAU,MAArB4B,KAAA;AAAA,IAAA,GAAI5B;AAAAA,EAAAA,GAAkBV,OAAAU,IAAAV,OAAAsC,MAAAA,KAAAtC,EAAA,CAAA;AAAA,MAAAuC,IAAAE;AAAAzC,IAAA,CAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KACjCM,yBAAC,SAAA,EAAQ,OAAA,GAAA,CAAK,GACdE,KAAA,oBAAC,QAAK,OAAA,IAAY,MAAA,GAAG,2BAErB,GAAOzC,OAAAuC,IAAAvC,OAAAyC,OAAAF,KAAAvC,EAAA,CAAA,GAAAyC,KAAAzC,EAAA,CAAA;AAAA,MAAA0C;AAAA,SAAA1C,SAAAsC,MAJTI,0BAAC,MAAA,EAAY,OAAAJ,IAAgC,SAAA,UAAe,OAAA,UAAmB,WAAA,UAAc,KAAA,GAC3FC,UAAAA;AAAAA,IAAAA;AAAAA,IACAE;AAAAA,EAAAA,EAAAA,CAGF,GAAOzC,OAAAsC,IAAAtC,OAAA0C,MAAAA,KAAA1C,EAAA,CAAA,GALP0C;AAKO;AAIX,SAAAyJ,UAAAjM,IAAA;AAAA,QAAAF,IAAAC,EAAA,CAAA,GAAmB;AAAA,IAAA0F;AAAAA,EAAAA,IAAAzF;AAAuB,MAAAQ;AAAAV,IAAA,CAAA,MAAA6C,uBAAAZ,IAAA,2BAAA,KAO5BvB,yBAAC,KAAA,EACC,UAAA,oBAAC,MAAA,EAAW,MAAA,GACV,UAAA,oBAAC,oBAAA,CAAA,CAAkB,EAAA,CACrB,EAAA,CACF,GAAMV,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAAA,MAAAsC;AAAAtC,IAAA,CAAA,MAAA2F,MAAAyG,QAEJ9J,KAAA,oBAAC,MAAA,EAAQ,IAAA,MAAW,MAAA,GAAU,QAAA,QAC3BqD,UAAAA,MAAKyG,KAAAA,CACR,GAAOpM,EAAA,CAAA,IAAA2F,MAAAyG,MAAApM,OAAAsC,MAAAA,KAAAtC,EAAA,CAAA;AAAA,MAAAuC;AAAAvC,IAAA,CAAA,MAAA2F,MAAA0G,WACP9J,KAAA,oBAAC,MAAA,EAAQ,IAAA,KAAI,OAAA,IAAY,MAAA,GACtBoD,UAAAA,MAAK0G,QAAAA,CACR,GAAOrM,EAAA,CAAA,IAAA2F,MAAA0G,SAAArM,OAAAuC,MAAAA,KAAAvC,EAAA,CAAA;AAAA,MAAAyC;AAAA,SAAAzC,EAAA,CAAA,MAAAsC,MAAAtC,SAAAuC,MAhBnBE,KAAA,oBAAC,MAAA,EAAY,QAAA,QACX,UAAA,oBAAC,QAAW,OAAA,UAAgB,QAAA,QAAe,SAAA,UAAkB,YAAU,QAAA,UACrE,8BAAC,WAAA,EAAiB,OAAA,GAChB,UAAA,oBAAC,MAAA,EAAc,SAAA,GAAW,QAAA,GAAW,WAAQ,MAAA,WAC3C,+BAAC,MAAA,EACC/B,UAAAA;AAAAA,IAAAA;AAAAA,yBAKC,OAAA,EAAY,MAAA,GAAe,YAAA,GAAU,OAAA,GACpC4B,UAAAA;AAAAA,MAAAA;AAAAA,MAGAC;AAAAA,IAAAA,EAAAA,CAGF;AAAA,EAAA,GACF,EAAA,CACF,GACF,EAAA,CACF,EAAA,CACF,GAAOvC,OAAAsC,IAAAtC,OAAAuC,IAAAvC,OAAAyC,MAAAA,KAAAzC,EAAA,CAAA,GAtBPyC;AAsBO;AAKX,MAAM+H,cAAc3H,uBAAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-iframe-pane",
3
- "version": "5.0.7",
3
+ "version": "5.0.9",
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",
@@ -30,11 +30,11 @@
30
30
  "@sanity/icons": "^3.7.4",
31
31
  "@sanity/preview-url-secret": "^4.0.3",
32
32
  "@sanity/ui": "^3.1.13",
33
- "motion": "^12.34.3",
33
+ "motion": "^12.35.0",
34
34
  "suspend-react": "0.1.3"
35
35
  },
36
36
  "devDependencies": {
37
- "@sanity/pkg-utils": "^10.4.6",
37
+ "@sanity/pkg-utils": "^10.4.7",
38
38
  "@types/react": "^19.2.14",
39
39
  "@types/react-dom": "^19.2.3",
40
40
  "babel-plugin-react-compiler": "^1.0.0",