sanity-plugin-dashboard-widget-vercel
4.0.144.0.15
~
Modified (4 files)
Index: package/dist/index.js
===================================================================
--- package/dist/index.js
+++ package/dist/index.js
@@ -1119,10 +1119,10 @@
targetCreate: assign({ results: ({ context, event }) => (assertEvent(event, "CREATE"), sortByTargetName([...context.results, event.deploymentTarget])) }),
targetDelete: assign({ results: ({ context, event }) => (assertEvent(event, "DELETE"), context.results.filter((target) => target._id !== event.id)) }),
targetUpdate: assign({ results: ({ context, event }) => {
assertEvent(event, "UPDATE");
- let { deploymentTarget } = event, index = context.results.findIndex((target) => target._id === deploymentTarget._id);
- return sortByTargetName(Object.assign([], context.results, { [index]: deploymentTarget }));
+ let { deploymentTarget } = event, index = context.results.findIndex((target) => target._id === deploymentTarget._id), updatedResults = Object.assign([], context.results, { [index]: deploymentTarget });
+ return sortByTargetName(updatedResults);
} })
},
guards: {
hasData: ({ context }) => context?.results?.length > 0, Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "sanity-plugin-dashboard-widget-vercel",
- "version": "4.0.14",
+ "version": "4.0.15",
"description": "View your recent Vercel deployments and manually trigger builds directly from your Sanity dashboard.",
"keywords": [
"dashboard",
"plugin",
@@ -32,39 +32,39 @@
"dependencies": {
"@hookform/resolvers": "^4.1.3",
"@sanity/color": "^3.0.6",
"@sanity/icons": "^5.0.0",
- "@sanity/ui": "^3.3.1",
+ "@sanity/ui": "^3.3.5",
"@sanity/uuid": "^3.0.3",
- "@tanstack/react-query": "^5.101.1",
+ "@tanstack/react-query": "^5.101.2",
"@xstate/react": "^6.1.0",
"object-hash": "3.0.0",
- "react-hook-form": "^7.80.0",
+ "react-hook-form": "^7.81.0",
"react-time-ago": "^7.4.4",
"use-deep-compare-effect": "^1.8.1",
"xstate": "^5.32.4",
"yup": "^0.32.11"
},
"devDependencies": {
"@sanity/tsconfig": "^2.2.0",
- "@sanity/tsdown-config": "^0.11.0",
+ "@sanity/tsdown-config": "^0.13.1",
"@types/object-hash": "^3.0.6",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"babel-plugin-react-compiler": "^1.0.0",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"sanity": "^6.3.0",
"styled-components": "^6.4.3",
- "tsdown": "^0.22.3",
- "@sanity/dashboard": "6.0.8"
+ "tsdown": "^0.22.5",
+ "@sanity/dashboard": "6.0.9"
},
"peerDependencies": {
"react": "^19.2",
"react-dom": "^19.2",
"sanity": "^5 || ^6.0.0-0",
"styled-components": "^6.1",
- "@sanity/dashboard": "^6.0.8"
+ "@sanity/dashboard": "^6.0.9"
},
"engines": {
"node": ">=20.19 <22 || >=22.12"
}, Index: package/dist/index.d.ts.map
===================================================================
--- package/dist/index.d.ts.map
+++ package/dist/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";iBAIgB,YAAA,CAAa,MAAA;EAAS,MAAA,GAAS,YAAA;AAAA,IAAqB,eAAe"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";iBAIgB,aAAa;EAAS,SAAS;IAAqB"}
\ No newline at end of file Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["API_ENDPOINT_DEPLOYMENTS","API_ENDPOINT_ALIASES","API_VERSION","DEBUG_MODE","DEPLOYMENT_TARGET_DOCUMENT_TYPE","VERCEL_STATUS_COLORS","BUILDING","CANCELED","ERROR","READY","QUEUED","WIDGET_NAME","Z_INDEX_DIALOG","Z_INDEX_TOAST_PROVIDER","SanityClient","useClient","API_VERSION","useSanityClient","$","_c","t0","Symbol","for","apiVersion","Sanity","fetcher","deploymentTarget","DeploymentTargetConfig","url","extraParams","URLSearchParams","params","set","projectId","teamId","k","v","entries","append","response","fetch","toString","headers","Authorization","token","ok","Error","json","err","cause","useQuery","hash","API_ENDPOINT_ALIASES","API_ENDPOINT_DEPLOYMENTS","Sanity","Vercel","fetcher","Options","enabled","useDeployments","deploymentTarget","options","$","_c","t0","fetchUrl","deployParams","deployLimit","URLSearchParams","set","String","t1","t2","t3","t4","t5","queryKey","queryFn","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retry","data","deploymentsData","isFetching","deploymentsIsFetching","isSuccess","deploymentsIsSuccess","error","deploymentsError","refetch","aliasParams","Symbol","for","t6","t7","t8","t9","t10","aliasesData","aliasesIsFetching","aliasesIsSuccess","aliasesError","aliases","deploymentsWithAlias","t11","deployments","map","val","alias","find","a","deploymentId","uid","Object","assign","t12","t13","t14","setup","Event","type","refreshMachine","types","events","createMachine","initial","states","idle","on","REFRESH","target","refreshing","ERROR","REFRESHED","refreshed","error","useTheme_v2","useCardColor","$","_c","color","t0","border","assign","setup","fromPromise","Vercel","Context","deployHook","disabled","feedback","label","error","Event","type","DeployActorInput","deployMachine","types","context","events","input","actors","deploy","signal","AbortSignal","Error","res","fetch","method","data","json","ok","errorMessage","message","statusText","err","console","cause","createMachine","id","initial","undefined","states","idle","entry","on","DEPLOY","target","deploying","exit","invoke","src","onDone","onError","actions","event","success","Box","Card","Stack","Text","DEBUG_MODE","Props","name","state","StateDebug","props","$","_c","t0","Symbol","for","backgroundColor","borderRadius","fontSize","fontWeight","lineHeight","right","opacity","pointerEvents","position","textAlign","top","zIndex","t1","t2","value","JSON","stringify","t3","t4","UploadIcon","Box","Button","useToast","useMachine","useEffect","WIDGET_NAME","deployMachine","StateDebug","Props","deployHook","onDeploySuccess","targetName","DeployButton","props","$","_c","t0","input","deployState","deployStateTransition","deployStateInterpreter","toast","t1","matches","isError","t2","isSuccess","t3","type","handleDeploy","t4","t5","context","error","push","closable","description","duration","status","title","t6","t7","subscription","subscribe","state","value","unsubscribe","t8","Symbol","for","position","t9","t10","label","t11","disabled","t12","Box","VERCEL_STATUS_COLORS","Vercel","Props","state","DeploymentState","StatusDot","t0","$","_c","t1","t2","backgroundColor","borderRadius","height","width","Box","Label","ReactNode","Sanity","useCardColor","Props","children","colSpan","header","variant","TableCell","props","$","_c","display","cellWidth","bb0","t0","Symbol","for","border","maxWidth","position","textAlign","width","t1","t2","borderTop","t3","LinkIcon","Box","Flex","Stack","Text","useMemo","ReactTimeAgo","Vercel","StatusDot","TableCell","Props","deployment","DeploymentWithAlias","Deployment","props","$","_c","t0","created","Date","date","commitMessage","meta","githubCommitMessage","commitRef","githubCommitRef","targetUrl","alias","url","t1","Symbol","for","t2","flexShrink","t3","state","t4","textDecoration","t5","t6","t7","t8","trim","toLowerCase","replace","_temp","t9","t10","t11","t12","t13","t14","creator","username","t15","uid","t16","borderRadius","height","width","t17","t18","t","toUpperCase","Box","useCardColor","PlaceholderAvatar","$","_c","border","t0","backgroundColor","borderRadius","height","userSelect","width","Box","Stack","Text","useCardColor","Props","rows","PlaceholderText","props","$","_c","border","t0","backgroundColor","borderRadius","userSelect","width","t1","Array","from","length","_temp","t2","_","index","Flex","PlaceholderAvatar","PlaceholderText","TableCell","DeploymentPlaceholder","$","_c","t0","Symbol","for","t1","t2","t3","t4","Box","Text","useToast","useMachine","useEffect","useRef","useDeepCompareEffect","WIDGET_NAME","useDeployments","refreshMachine","Sanity","useCardColor","DeployButton","Deployment","DeploymentPlaceholder","StateDebug","TableCell","Props","deploymentTarget","DeploymentTargetConfig","Deployments","props","$","_c","refTimeout","refreshState","refreshStateTransition","t0","matches","t1","t2","enabled","deployments","error","isFetching","isSuccess","refetch","toast","t3","isError","t4","current","clearTimeout","setTimeout","cancelRefetch","throwOnError","handleDeploySuccess","t5","t6","Symbol","for","t7","t8","type","t9","t10","t11","push","closable","description","name","duration","status","title","t12","hasFetched","hasDeployments","length","border","t13","position","t14","t15","borderBottom","borderCollapse","display","tableLayout","width","Array","from","deployLimit","_temp","map","_temp2","t16","t17","deployHook","t18","_","index","deployment","uid","EditIcon","Box","Button","Flex","Text","Tooltip","FC","Sanity","Deployments","Props","item","DeploymentTarget","onDialogEdit","deploymentTarget","props","$","_c","t0","deployHook","deployLimit","name","projectId","teamId","token","t1","Symbol","for","position","t2","t3","t4","t5","t6","t7","Stack","Sanity","DeploymentTarget","Props","items","onDialogEdit","deploymentTarget","DeploymentTargets","props","$","_c","t0","map","item","_id","t1","uuid","SanityClient","SanityDocument","assertEvent","assign","fromPromise","setup","DEPLOYMENT_TARGET_DOCUMENT_TYPE","Sanity","Context","client","document","DeploymentTarget","id","formData","Record","message","Event","type","Input","formMachine","types","children","createDocumentActor","updateDocumentActor","deleteDocumentActor","context","events","input","tags","actions","setId","event","setFormData","setMessage","data","details","description","setDocument","output","actors","Required","Pick","Promise","create","_id","_type","patch","set","commit","delete","createMachine","initial","states","idle","on","CREATE","target","UPDATE","DELETE","creating","invoke","src","onDone","onError","created","updating","updated","deleting","deleted","error","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","red","ErrorOutlineIcon","Box","Inline","Text","Tooltip","FC","FieldError","Props","description","error","label","name","errorIconStyle","color","hex","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","message","t2","t3","t4","Box","TextInput","ChangeEventHandler","FocusEventHandler","Ref","FieldError","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","value","onChange","HTMLInputElement","onBlur","ref","FormFieldInputText","props","$","_c","t0","t1","t2","yupResolver","Box","Button","Dialog","Flex","Stack","useToast","useActor","FC","useEffect","useForm","toPromise","yup","useSanityClient","Z_INDEX_DIALOG","formMachine","Sanity","sanitizeFormData","FormFieldInputText","Props","deploymentTarget","DeploymentTarget","onClose","onCreate","onDelete","id","onUpdate","FormData","InferType","formSchema","object","shape","deployHook","string","url","deployLimit","number","positive","integer","min","max","typeError","required","name","projectId","teamId","token","DialogForm","props","$","_c","client","toast","t0","input","formState","formStateTransition","formStateActorRef","t1","hasTag","formUpdating","t2","t3","t4","t5","t6","t7","t8","t9","Symbol","for","t10","defaultValues","mode","resolver","t11","handleSubmit","register","errors","isDirty","isValid","t12","t13","matches","push","status","title","context","message","t14","formData","sanitizedFormData","type","_id","snapshot","getSnapshot","document","onSubmit","t15","handleDelete","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","display","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","valueAsNumber","t44","t45","t46","t47","SanityClient","assign","setup","fromPromise","assertEvent","DEPLOYMENT_TARGET_DOCUMENT_TYPE","Sanity","Context","client","results","DeploymentTarget","Event","type","deploymentTarget","id","Input","sortByTargetName","items","sort","a","b","name","deploymentTargetListMachine","types","children","fetchData","context","events","input","actions","targetCreate","event","targetDelete","filter","target","_id","targetUpdate","index","findIndex","updatedResults","Object","guards","hasData","length","hasNoData","actors","signal","AbortSignal","fetch","catch","error","Error","console","createMachine","initial","states","pending","invoke","src","onDone","output","onError","ready","on","CREATE","DELETE","UPDATE","unknown","always","guard","withData","withoutData","failed","assertEvent","assign","setup","Sanity","Context","editDeploymentTarget","DeploymentTarget","Event","type","deploymentTarget","dialogMachine","types","context","events","actions","setEditDeploymentTarget","event","createMachine","undefined","initial","states","idle","entry","on","CREATE","target","EDIT","edit","CLOSE","create","AddIcon","Box","Button","Card","Flex","Text","ToastProvider","Tooltip","QueryClient","QueryClientProvider","useMachine","useSanityClient","DeploymentTargets","DialogForm","StateDebug","Z_INDEX_TOAST_PROVIDER","deploymentTargetListMachine","dialogMachine","Sanity","queryClient","defaultOptions","queries","gcTime","staleTime","Widget","$","_c","client","t0","input","deploymentTargetListState","deploymentTargetListStateTransition","dialogState","dialogStateTransition","t1","type","handleDialogClose","t2","handleDialogShowCreate","t3","deploymentTarget","handleDialogShowEdit","t4","deploymentTarget_0","handleTargetCreate","t5","id","handleTargetDelete","t6","deploymentTarget_1","handleTargetUpdate","t7","Symbol","for","overflow","t8","t9","t10","t11","t12","matches","t13","ready","t14","context","results","t15","t16","t17","t18","t19","editDeploymentTarget","t20","DashboardWidget","LayoutConfig","Widget","vercelWidget","config","layout","name","component","width"],"sources":["../src/constants.ts","../src/client.ts","../src/utils/fetcher.ts","../src/hooks/useDeployments.ts","../src/machines/refresh.ts","../src/utils/useCardColor.ts","../src/machines/deploy.ts","../src/components/StateDebug/index.tsx","../src/components/DeployButton/index.tsx","../src/components/StatusDot/index.tsx","../src/components/TableCell/index.tsx","../src/components/Deployment/index.tsx","../src/components/PlaceholderAvatar/index.tsx","../src/components/PlaceholderText/index.tsx","../src/components/DeploymentPlaceholder/index.tsx","../src/components/Deployments/index.tsx","../src/components/DeploymentTarget/index.tsx","../src/components/DeploymentTargets/index.tsx","../src/machines/form.ts","../src/utils/sanitizeFormData.ts","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/DialogForm/index.tsx","../src/machines/deploymentTargetList.ts","../src/machines/dialog.ts","../src/app.tsx","../src/index.ts"],"sourcesContent":["// https://vercel.com/docs/platform/limits\nexport const API_ENDPOINT_DEPLOYMENTS = 'https://api.vercel.com/v5/now/deployments'\nexport const API_ENDPOINT_ALIASES = 'https://api.vercel.com/v3/now/aliases'\n\n// Sanity API version\nexport const API_VERSION = '1'\n\nexport const DEBUG_MODE = false\n\nexport const DEPLOYMENT_TARGET_DOCUMENT_TYPE = 'vercel.deploymentTarget'\n\nexport const VERCEL_STATUS_COLORS = {\n BUILDING: '#f5a623',\n CANCELED: '#ff0000',\n ERROR: '#ff0000',\n READY: '#50e3c2',\n QUEUED: '#333',\n}\n\n// Name displayed in toasts\nexport const WIDGET_NAME = 'Vercel (dashboard)'\n\n// NOTE: Manually set plugin z-index values to be higher than Sanity's header search field\n// (which is currently 500202). Also ensure toasts always sit above dialogs.\nexport const Z_INDEX_DIALOG = 600001\nexport const Z_INDEX_TOAST_PROVIDER = 600002\n","import {type SanityClient, useClient} from 'sanity'\n\nimport {API_VERSION} from './constants'\n\nexport function useSanityClient(): SanityClient {\n return useClient({apiVersion: API_VERSION})\n}\n","import {type Sanity} from '../types'\n\nconst fetcher =\n (deploymentTarget: Sanity.DeploymentTargetConfig) =>\n async (url: string, extraParams?: URLSearchParams) => {\n const params = new URLSearchParams()\n params.set('projectId', deploymentTarget.projectId)\n if (deploymentTarget.teamId) {\n params.set('teamId', deploymentTarget.teamId)\n }\n\n if (extraParams) {\n for (const [k, v] of extraParams.entries()) {\n params.append(k, v)\n }\n }\n\n const response = await fetch(`${url}?${params.toString()}`, {\n headers: {\n Authorization: `Bearer ${deploymentTarget.token}`,\n },\n })\n\n // Manually throw on non-OK responses for react-query\n // https://react-query.tanstack.com/guides/query-functions#usage-with-fetch-and-others-clients-that-do-not-throw-by-default\n if (!response.ok) {\n throw new Error('Response not OK')\n }\n\n try {\n return await response.json()\n } catch (err) {\n throw new Error('Unable to parse response as JSON', {cause: err})\n }\n }\n\nexport default fetcher\n","import {useQuery} from '@tanstack/react-query'\nimport hash from 'object-hash'\n\nimport {API_ENDPOINT_ALIASES, API_ENDPOINT_DEPLOYMENTS} from '../constants'\nimport {type Sanity, type Vercel} from '../types'\nimport fetcher from '../utils/fetcher'\n\ntype Options = {\n enabled?: boolean\n}\n\nconst useDeployments = (deploymentTarget: Sanity.DeploymentTargetConfig, options?: Options) => {\n const fetchUrl = fetcher(deploymentTarget)\n\n // Fetch deployments\n const deployParams = new URLSearchParams()\n deployParams.set('limit', String(deploymentTarget?.deployLimit))\n\n const {\n data: deploymentsData,\n isFetching: deploymentsIsFetching,\n isSuccess: deploymentsIsSuccess,\n error: deploymentsError,\n refetch,\n } = useQuery<{deployments: Vercel.Deployment[]}>({\n queryKey: [hash(deploymentTarget)],\n queryFn: () => fetchUrl(API_ENDPOINT_DEPLOYMENTS, deployParams),\n enabled: options?.enabled ?? true,\n refetchInterval: 20000, // ms\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n refetchOnReconnect: 'always',\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n // Fetch aliases (only if deployments have been retrieved)\n const aliasParams = new URLSearchParams()\n aliasParams.set('limit', '20')\n\n const {\n data: aliasesData,\n isFetching: aliasesIsFetching,\n isSuccess: aliasesIsSuccess,\n error: aliasesError,\n } = useQuery<{\n aliases: Vercel.Alias[]\n pagination: {\n count: number\n next?: number\n prev?: number\n }\n }>({\n queryKey: [hash(deploymentTarget), 'aliases'],\n queryFn: () => fetchUrl(API_ENDPOINT_ALIASES, aliasParams),\n enabled: !!deploymentsData,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n const aliases = aliasesData?.aliases\n\n let deploymentsWithAlias: Vercel.DeploymentWithAlias[] | undefined\n\n if (aliases) {\n deploymentsWithAlias = deploymentsData?.deployments?.map((val: Vercel.DeploymentWithAlias) => {\n const alias = aliases.find((a) => a.deploymentId === val.uid)\n return Object.assign(val, {alias: alias?.alias})\n })\n }\n\n return {\n deployments: deploymentsWithAlias,\n error: aliasesError || deploymentsError,\n isFetching: aliasesIsFetching || deploymentsIsFetching,\n isSuccess: aliasesIsSuccess && deploymentsIsSuccess,\n refetch,\n }\n}\n\nexport default useDeployments\n","import {setup} from 'xstate'\n\ntype Event = {type: 'ERROR'} | {type: 'REFRESH'} | {type: 'REFRESHED'} | {type: 'RETRY'}\n\nconst refreshMachine = setup({\n types: {\n events: {} as Event,\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAJQFEAxBgZQAkBtABgF1FQADgHtYuAC64h+fiAAeiAIwAmAGwkuGrkoAsAZhVKlAVm0KAHABoQAT0QBOJSRN27XFXaMmz2twF9fVmhYeISkAE5gAGYRsCFQ1PS0tADytNx8SCDCohJSMvIIPnYkxhpKXGZ22kY6xla2CAq6CiQudgDsRnYqKroVfe3+gRg4BMQkEdFwcXRMrGz0ACLpMtniktKZBUUlRmUVVTXadTaISrqObUY97QodvWa6QyBBo6ETUTHYkLPM9OwrTJrXKbUDbJTFLjtMzmWraOx3doqeqKMyOeHdXp3BTHXTVZ6vELjMBhMJCMK-eaAwQidZ5LaIY6Q6Gw47wxHI04IGEkDFma5NbTtY7ufwBED4IQQOAyQljIirWkg-KIAC0nIa6oJIyJpHIVEVOQ2KsKShRCDsunUGLcHi8PhU2uC8o+U1iBCghrpoLkZ2uTk0XCq7SRRl0Zg19itXHhIZ85lMEaUTre40mX0gXuVDIQnmKRhZKk6PmaVXN2PUaLsZhj2hUOJU-JTupIJLJYSzxpzeacheLXFL2nNrkrfW8SKFnhDYt8QA */\n initial: 'idle',\n states: {\n idle: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n refreshing: {\n on: {\n ERROR: {\n target: 'error',\n },\n REFRESHED: {\n target: 'refreshed',\n },\n },\n },\n refreshed: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n error: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n },\n})\n\nexport default refreshMachine\n","import {useTheme_v2} from '@sanity/ui'\n\nexport function useCardColor(): {border: string} {\n const {color} = useTheme_v2()\n return {border: color.border}\n}\n","import {assign, setup, fromPromise} from 'xstate'\n\nimport {type Vercel} from '../types'\n\ntype Context = {\n deployHook: string\n disabled: boolean\n feedback?: string\n label?: string\n error?: string\n}\n\ntype Event = {type: 'DEPLOY'}\n\ninterface DeployActorInput {\n deployHook: string\n}\n\nexport const deployMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n input: {} as DeployActorInput,\n },\n actors: {\n deploy: fromPromise(async ({input, signal}: {input: DeployActorInput; signal: AbortSignal}) => {\n try {\n if (!input.deployHook) {\n throw new Error('No deployHook URL defined')\n }\n const res = await fetch(input.deployHook, {method: 'POST', signal})\n const data: {error?: Vercel.Error} | null = await res.json()\n if (!res.ok) {\n const errorMessage = data?.error?.message || res.statusText\n throw errorMessage\n }\n } catch (err) {\n if (typeof err === 'string') {\n throw err\n }\n console.error('Unable to deploy with error:', err)\n throw new Error('Please check the developer console for more information', {cause: err})\n }\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QTABwDYHsCeA6AlhOmAMQAiAogAoAyA8gJoDaADALqKiqaz4Au+TADtOIAB6IATCxa4AnADYAHAHYArArUslAZjksNAGhDZEARk3yVmhSxVyHC-QBYAvq+MoMOXF6zZ8ISgSCGEwAiEAN0wAa3C-HwSAoIRA6IBjAEMBYVY2PNFuXhyRJHFENTMzXElFJSUzNTVnWx0FY1MESXVcZzUdM2k1OTUVBoV3TzR-X2mcQOCwACclzCXcDGyAMzWAW1nvPCSF1KjMLJK8grKi-kFS0AkESura5QamlpY2jvMB+QcDkqLH0wxYEw8ICSuFgAFd0uk4LByNR6Mx2IUeHdhKIns1ZN9BtYQVpRnJfl1JM55P1BnY1Ep9CpGpMoXM8MtVksUbRGNcuFiSriKs4CQNurYRgZ7BSGr1ASNupIzEo+kp3JChJgUPAyklMcV7sKEABadomRAmtQAhW2wE6VnQwjEA3Yh7lBDOSQUsxeqyaPoWYbWFSO9kHfwLV1CspPHSSHQ1ZyA1UKJzJlQ+iz+5oKewKWrfNyQ6FwhFI6NG2OINOSXDiypKAxtMyZi1dEE1Qk6L0FpTSUMl8OctaVnHVhC1+uDRvNhStin6XDaHQ9liSXTJiUa1xAA */\n id: 'deploy',\n initial: 'idle',\n context: ({input}) => ({\n disabled: false,\n feedback: undefined,\n label: undefined,\n error: undefined,\n deployHook: input.deployHook,\n }),\n states: {\n idle: {\n entry: assign({\n feedback: () => undefined,\n label: () => 'Deploy',\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n deploying: {\n entry: assign({\n disabled: () => true,\n label: () => 'Deploying',\n }),\n exit: assign({\n disabled: () => false,\n label: () => 'Deploy',\n }),\n invoke: {\n src: 'deploy',\n input: ({context}) => ({deployHook: context.deployHook}),\n onDone: {\n target: 'success',\n },\n onError: {\n target: 'error',\n actions: assign({\n error: ({event}) => {\n if ('error' in event) {\n const {error} = event\n if (typeof error === 'string') {\n return error\n }\n if (error instanceof Error) {\n return error.message\n }\n }\n return 'Unknown error'\n },\n }),\n },\n },\n },\n success: {\n entry: assign({\n feedback: () => 'Successfully started!',\n }),\n exit: assign({\n feedback: () => undefined,\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n error: {\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n },\n})\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {DEBUG_MODE} from '../../constants'\n\ntype Props = {\n name: string\n state: any // TODO: type correctly\n}\n\nconst StateDebug = (props: Props) => {\n const {name, state} = props\n\n if (!DEBUG_MODE) {\n return null\n }\n\n return (\n <Card\n scheme=\"dark\"\n style={{\n backgroundColor: 'rgba(0, 0, 255, 0.9)',\n borderRadius: '3px',\n fontSize: 1,\n fontWeight: 500,\n lineHeight: 'body',\n right: 0,\n opacity: 0.75,\n pointerEvents: 'none',\n position: 'absolute',\n textAlign: 'left',\n top: 0,\n zIndex: 9000,\n }}\n >\n <Box padding={2}>\n <Stack gap={2}>\n <Text size={0}>Name: {name}</Text>\n <Text size={0}>state.value: {JSON.stringify(state.value)}</Text>\n </Stack>\n </Box>\n </Card>\n )\n}\n\nexport default StateDebug\n","import {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect} from 'react'\n\nimport {WIDGET_NAME} from '../../constants'\nimport {deployMachine} from '../../machines/deploy'\nimport StateDebug from '../StateDebug'\n\ntype Props = {\n deployHook: string\n onDeploySuccess?: () => void\n targetName: string\n}\n\nconst DeployButton = (props: Props) => {\n const {deployHook, onDeploySuccess, targetName} = props\n\n const [deployState, deployStateTransition, deployStateInterpreter] = useMachine(deployMachine, {\n input: {deployHook},\n })\n\n const toast = useToast()\n\n const isError = deployState.matches('error')\n const isSuccess = deployState.matches('success')\n\n // Callbacks\n const handleDeploy = () => {\n deployStateTransition({type: 'DEPLOY'})\n }\n\n // Effects\n useEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to queue deploy for ${targetName}: ${deployState.context.error}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n\n if (isSuccess) {\n toast.push({\n closable: true,\n description: `Deploy queued for ${targetName}`,\n duration: 8000,\n status: 'success',\n title: WIDGET_NAME,\n })\n }\n }, [isError, isSuccess, toast, targetName, deployState.context.error])\n\n useEffect(() => {\n const subscription = deployStateInterpreter.subscribe((state) => {\n if (state.value === 'success') {\n if (onDeploySuccess) {\n onDeploySuccess()\n }\n }\n })\n\n return () => subscription.unsubscribe()\n }, [deployStateInterpreter, onDeploySuccess])\n\n return (\n <Box padding={3} style={{position: 'relative'}}>\n <StateDebug name=\"Deploy\" state={deployState} />\n\n <Button\n disabled={deployState.context.disabled}\n fontSize={1}\n icon={UploadIcon}\n mode=\"ghost\"\n onClick={handleDeploy}\n padding={3}\n text={`${deployState.context.label} ${targetName}`}\n tone=\"default\"\n />\n </Box>\n )\n}\n\nexport default DeployButton\n","import {Box} from '@sanity/ui'\n\nimport {VERCEL_STATUS_COLORS} from '../../constants'\nimport {type Vercel} from '../../types'\n\ntype Props = {\n state: Vercel.DeploymentState\n}\n\nconst StatusDot = ({state}: Props) => (\n <Box\n style={{\n backgroundColor: VERCEL_STATUS_COLORS[state],\n borderRadius: '20px',\n height: '9px',\n width: '9px',\n }}\n />\n)\n\nexport default StatusDot\n","import {Box, Label} from '@sanity/ui'\nimport type {ReactNode} from 'react'\n\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n children: ReactNode\n colSpan?: number\n header?: boolean\n variant?: 'age' | 'branch' | 'creator' | 'state'\n}\n\nconst TableCell = (props: Props) => {\n const {children, colSpan, header, variant} = props\n\n let display: Sanity.BoxDisplay | Sanity.BoxDisplay[] = 'table-cell'\n let cellWidth: string = 'auto'\n\n switch (variant) {\n case 'age':\n cellWidth = '50px'\n break\n case 'branch':\n cellWidth = '300px'\n display = ['none', 'none', 'none', 'table-cell']\n break\n case 'creator':\n cellWidth = '80px'\n break\n case 'state':\n cellWidth = '110px'\n display = ['none', 'none', 'none', 'none', 'table-cell']\n break\n default:\n break\n }\n\n const {border} = useCardColor()\n\n if (header) {\n return (\n <Box\n as=\"th\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={2}\n style={{\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n <Label size={0}>{children}</Label>\n </Box>\n )\n }\n return (\n <Box\n as=\"td\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={[2, 2, 3]}\n style={{\n borderTop: `1px solid ${border}`,\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default TableCell\n","import {LinkIcon} from '@sanity/icons/Link'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n// oxlint-disable-next-line import/no-unassigned-import\nimport 'react-time-ago/locale/en'\nimport ReactTimeAgo from 'react-time-ago'\n\nimport {type Vercel} from '../../types'\nimport StatusDot from '../StatusDot'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deployment: Vercel.DeploymentWithAlias\n}\n\nconst Deployment = (props: Props) => {\n const {deployment} = props\n\n const date = useMemo(() => new Date(deployment.created), [deployment.created])\n\n const commitMessage = deployment?.meta?.['githubCommitMessage']\n const commitRef = deployment?.meta?.['githubCommitRef']\n\n const targetUrl = deployment.alias ?? deployment.url\n\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <Flex align=\"center\">\n <Box\n display={['block', 'block', 'block', 'block', 'none']}\n marginRight={3}\n style={{flexShrink: 0}}\n >\n <StatusDot state={deployment.state} />\n </Box>\n\n {targetUrl ? (\n <>\n {/* Alias icon */}\n {deployment.alias && <LinkIcon />}\n\n <Box marginLeft={deployment.alias ? 1 : 0}>\n <Text\n muted={!(deployment.state === 'READY')}\n size={1}\n style={{\n textDecoration:\n deployment.state === 'CANCELED' || deployment.state === 'ERROR'\n ? 'line-through'\n : 'normal',\n }}\n textOverflow=\"ellipsis\"\n >\n {deployment.state === 'READY' ? (\n <a href={`https://${targetUrl}`} rel=\"noopener noreferrer\" target=\"_blank\">\n {targetUrl}\n </a>\n ) : (\n targetUrl\n )}\n </Text>\n </Box>\n </>\n ) : (\n <Text size={1}>Uploading...</Text>\n )}\n </Flex>\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <Flex align=\"center\">\n <StatusDot state={deployment.state} />\n <Box marginLeft={2}>\n <Text size={1}>\n {deployment.state\n .trim()\n .toLowerCase()\n .replace(/^[a-z]/i, (t) => t.toUpperCase())}\n </Text>\n </Box>\n </Flex>\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <Stack gap={2}>\n <Text size={1} textOverflow=\"ellipsis\">\n {commitRef}\n </Text>\n {commitMessage && (\n <Text muted size={1} textOverflow=\"ellipsis\">\n {commitMessage}\n </Text>\n )}\n </Stack>\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <Flex align=\"center\">\n <Text size={1}>\n <ReactTimeAgo date={date} locale=\"en-US\" timeStyle=\"mini\" />\n </Text>\n </Flex>\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex align=\"center\" justify=\"center\">\n <img\n alt={deployment?.creator?.username || 'Deployment creator avatar'}\n draggable={false}\n src={`https://vercel.com/api/www/avatar/${deployment?.creator?.uid}?&s=48`}\n style={{\n borderRadius: '20px',\n height: '20px',\n width: '20px',\n }}\n />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default Deployment\n","import {Box} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\nconst PlaceholderAvatar = () => {\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '20px',\n height: '20px',\n userSelect: 'none',\n width: '20px',\n }}\n />\n )\n}\n\nexport default PlaceholderAvatar\n","import {Box, Stack, Text} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n rows: number\n}\n\nconst PlaceholderText = (props: Props) => {\n const {rows} = props\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '3px',\n userSelect: 'none',\n width: '100%',\n }}\n >\n <Stack gap={2}>\n {Array.from({length: rows}, (_, index) => (\n <Text key={index} size={1}>\n \n </Text>\n ))}\n </Stack>\n </Box>\n )\n}\n\nexport default PlaceholderText\n","import {Flex} from '@sanity/ui'\n\nimport PlaceholderAvatar from '../PlaceholderAvatar'\nimport PlaceholderText from '../PlaceholderText'\nimport TableCell from '../TableCell'\n\nconst DeploymentPlaceholder = () => {\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <PlaceholderText rows={2} />\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex justify=\"center\">\n <PlaceholderAvatar />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default DeploymentPlaceholder\n","import {Box, Text, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect, useRef} from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {WIDGET_NAME} from '../../constants'\nimport useDeployments from '../../hooks/useDeployments'\nimport refreshMachine from '../../machines/refresh'\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\nimport DeployButton from '../DeployButton'\nimport Deployment from '../Deployment'\nimport DeploymentPlaceholder from '../DeploymentPlaceholder'\nimport StateDebug from '../StateDebug'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deploymentTarget: Sanity.DeploymentTargetConfig\n}\n\nconst Deployments = (props: Props) => {\n const {deploymentTarget} = props\n\n // Refs\n const refTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // XState\n const [refreshState, refreshStateTransition] = useMachine(refreshMachine)\n\n // Fetch deployments - disable hook / auto-refetching on error state\n const {deployments, error, isFetching, isSuccess, refetch} = useDeployments(deploymentTarget, {\n enabled: !refreshState.matches('error'),\n })\n\n const toast = useToast()\n const isError = refreshState.matches('error')\n\n const handleDeploySuccess = () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n refTimeout.current = setTimeout(() => {\n void refetch({\n cancelRefetch: true,\n throwOnError: true,\n })\n }, 4000)\n }\n\n useEffect(() => {\n return () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n }\n }, [])\n\n useEffect(() => {\n if (error) {\n refreshStateTransition({type: 'ERROR'})\n }\n\n if (isFetching) {\n refreshStateTransition({type: 'REFRESH'})\n }\n\n if (!isFetching && isSuccess) {\n refreshStateTransition({type: 'REFRESHED'})\n }\n }, [error, isFetching, isSuccess, refreshStateTransition])\n\n useDeepCompareEffect(() => {\n if (!refreshState.matches('refreshing')) {\n refreshStateTransition({type: 'REFRESH'})\n }\n }, [deploymentTarget])\n\n useDeepCompareEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to fetch deployments for ${deploymentTarget.name}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n }, [deploymentTarget, isError])\n\n const hasFetched = typeof deployments !== 'undefined'\n const hasDeployments = deployments && deployments.length > 0\n\n const {border} = useCardColor()\n return (\n <Box marginTop={3} style={{position: 'relative'}}>\n {/* xstate debug */}\n <StateDebug name=\"Refresh\" state={refreshState} />\n\n {!refreshState.matches('error') && (\n <>\n <Box\n as=\"table\"\n style={{\n borderBottom: `1px solid ${border}`,\n borderCollapse: 'collapse',\n display: 'table',\n tableLayout: 'fixed',\n width: '100%',\n }}\n >\n <Box as=\"thead\" style={{display: 'table-header-group'}}>\n <tr>\n {/* Deployment */}\n <TableCell header>Deployment</TableCell>\n\n {/* State */}\n <TableCell header variant=\"state\">\n State\n </TableCell>\n\n {/* Branch */}\n <TableCell header variant=\"branch\">\n Branch\n </TableCell>\n\n {/* Age */}\n <TableCell header variant=\"age\">\n Age\n </TableCell>\n\n {/* Creator */}\n <TableCell header variant=\"creator\">\n Creator\n </TableCell>\n </tr>\n </Box>\n\n <Box as=\"tbody\" style={{display: 'table-row-group'}}>\n {/* Placeholders */}\n {!deployments &&\n Array.from({length: deploymentTarget.deployLimit}, (_, index) => (\n <DeploymentPlaceholder key={index} />\n ))}\n {/* Deployments */}\n {hasDeployments &&\n deployments?.map((deployment) => (\n <Deployment deployment={deployment} key={deployment.uid} />\n ))}\n </Box>\n </Box>\n\n {/* No results */}\n {hasFetched && !hasDeployments && (\n <Box padding={3} style={{width: '100%'}}>\n <Text muted size={1}>\n No deployments found. Don't forget to specify a valid team ID if your project\n belongs to a team.\n </Text>\n </Box>\n )}\n </>\n )}\n\n {/* Error message */}\n {refreshState.matches('error') && (\n <Box padding={3}>\n <Text muted size={1}>\n Unable to fetch recent deployments. Please check your network and deployment settings.\n </Text>\n </Box>\n )}\n\n {/* Deploy button */}\n {!refreshState.matches('error') && deploymentTarget.deployHook && (\n <Box>\n <DeployButton\n deployHook={deploymentTarget.deployHook}\n onDeploySuccess={handleDeploySuccess}\n targetName={deploymentTarget.name}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default Deployments\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Box, Button, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\n\nimport {type Sanity} from '../../types'\nimport Deployments from '../Deployments'\n\ntype Props = {\n item: Sanity.DeploymentTarget\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTarget: FC<Props> = (props: Props) => {\n const {item, onDialogEdit} = props\n\n const deploymentTarget: Sanity.DeploymentTargetConfig = {\n deployHook: item.deployHook,\n deployLimit: item.deployLimit,\n name: item.name,\n projectId: item.projectId,\n teamId: item.teamId,\n token: item.token,\n }\n\n return (\n <Box style={{position: 'relative'}}>\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" marginTop={2} paddingX={3}>\n <Text size={2}>{item.name}</Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Edit deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={EditIcon} mode=\"bleed\" onClick={() => onDialogEdit(item)} />\n </Tooltip>\n </Flex>\n\n {/* Content */}\n <Deployments deploymentTarget={deploymentTarget} />\n </Box>\n )\n}\n\nexport default DeploymentTarget\n","import {Stack} from '@sanity/ui'\n\nimport {type Sanity} from '../../types'\nimport DeploymentTarget from '../DeploymentTarget'\n\ntype Props = {\n items: Sanity.DeploymentTarget[]\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTargets = (props: Props) => {\n const {items, onDialogEdit} = props\n\n return (\n <Stack gap={5}>\n {items?.map((item) => (\n <DeploymentTarget item={item} key={item._id} onDialogEdit={onDialogEdit} />\n ))}\n </Stack>\n )\n}\n\nexport default DeploymentTargets\n","import {uuid} from '@sanity/uuid'\nimport type {SanityClient, SanityDocument} from 'sanity'\nimport {assertEvent, assign, fromPromise, setup} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport type {Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n document?: Sanity.DeploymentTarget\n id?: string\n formData?: Record<string, any>\n message: string\n}\n\ntype Event =\n | {type: 'CREATE'; formData: Record<string, any>}\n | {type: 'UPDATE'; id: string; formData: Record<string, any>}\n | {type: 'DELETE'; id: string}\n\ninterface Input {\n client: SanityClient\n}\n\nexport const formMachine = setup({\n types: {} as {\n children: {\n createDocumentActor: 'create document'\n updateDocumentActor: 'update document'\n deleteDocumentActor: 'delete document'\n }\n context: Context\n events: Event\n input: Input\n tags: 'busy'\n },\n actions: {\n setId: assign({\n id: ({event}) => {\n assertEvent(event, ['UPDATE', 'DELETE'])\n return event.id\n },\n }),\n setFormData: assign({\n formData: ({event}) => {\n assertEvent(event, ['CREATE', 'UPDATE'])\n return event.formData\n },\n }),\n setMessage: assign({\n message: ({event}) => {\n if (\n 'data' in event &&\n event.data &&\n typeof event.data === 'object' &&\n 'details' in event.data &&\n event.data.details &&\n typeof event.data.details === 'object' &&\n 'description' in event.data.details\n ) {\n return event.data.details.description as string\n }\n return 'An error occurred'\n },\n }),\n setDocument: assign({\n document: ({event}) => {\n // @ts-expect-error - fix typings later\n return event.output\n },\n }),\n },\n actors: {\n // The explicit `Promise<SanityDocument>` return types keep the inferred machine\n // type portable for declaration emit (TS2883), by referencing the `SanityDocument`\n // alias imported from `sanity` instead of a deep `@sanity/client` path.\n 'create document': fromPromise(\n ({\n input,\n }: {\n input: Required<Pick<Context, 'client' | 'formData'>>\n }): Promise<SanityDocument> => {\n return input.client.create({\n _id: `vercel.${uuid()}`,\n _type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n ...input.formData,\n })\n },\n ),\n 'update document': fromPromise(\n ({\n input,\n }: {\n input: Required<Pick<Context, 'client' | 'id' | 'formData'>>\n }): Promise<SanityDocument> => {\n return input.client.patch(input.id).set(input.formData).commit()\n },\n ),\n 'delete document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'id'>>}): Promise<SanityDocument> => {\n return input.client.delete(input.id)\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAIwBmAGwkuGjQFYALAE4AHACYdWgwYA0IAJ6IjKgOwkdXFUYVa9h-Ua5KAvv5WaFh4hKTkVNQAqgAKACJsnLwywqISUjLyCMpqmtr6xqbmVrYIBgokWvlGWkpaCgZeKoHBGDgExGSUNPGMADKM7Nx8SCBp4pLSY9m56vm6hiZmljaIOipqdXpcDk1aWiYqBlqtICEd4SSYAE5g6BL4UNQQUmBk+ABuQgDW77f3MRgeJCTAAV1QYHwYmYmDEQhuI1SIkmmRmiGOShIDiUOh0SiaCgUegcDj0pTsjhI5iMewUpPsTSMZwuYS6AIeBGeYBuNwRJAEFAeADMEahrncHsDQRCoTC4QikWMJhlpqBspjsbj8YTiaTyWsEKouNT6noiX5zUpiQEgud2mzSGCBBBOU8Xm8Pt8-iRna6gSDwZDobD4YiUsqUaqshiDFicXiCea9WSKeVKiSVIclEYlIY-BUWQ7Ok6XW7ubz+YKRWLfWWAzLg-Kw0rBFGpjGEJqEzrkyTU4b6ToSHojHos7VXEc6kXQiWSBAwFRHs9XoQvb93ovl9Kg3LQ4qI230h30V241rE7r+wayro1A4dO4VHotA5fPTTnbWfPt2AV9QPJ8jcApCmIoo3OKf4NnuIYKuGozHqiapyLG8bakmRI3mmpjxk0XAuEoXAHI+DgtGc+BCIu8BjD+4TIieaLqogAC0Khpmxs6XF0kRgAxyGdk+aYKLSVR7Fweg6A4IkGFwChcY6EqAly-HRmeY7DnSY5GHGL4qFwRhpjpJpmriDjVMRLgGAp84ckCECqaezEIHoObUuZuwKH4xGPgoRnmCQpmOAcqhmPJ37Flcfrlo5TGoQgY4mgYHkeAS+iqH5hqSc4dSuCo+I6SoSjvjZUX1pAsUodkrlGO51TSd5b46JlZRebVuG7IcjRmA05FtHOVzQSpkaMVVdivs4CibHGxg6biSg4ZsJD2AccaFEVGwOKVXTQRVI0CWeNV1Z5jW+WmujDj4HjmMRnhEttpBAQilWdkdyX1V5RFNS1iAEpU1pHER9JWjogSBEAA */\n context: ({input}) => ({\n client: input.client,\n formData: {},\n message: '',\n }),\n initial: 'idle',\n states: {\n idle: {\n on: {\n CREATE: {\n actions: ['setFormData'],\n target: 'creating',\n },\n UPDATE: {\n actions: ['setId', 'setFormData'],\n target: 'updating',\n },\n DELETE: {\n actions: 'setId',\n target: 'deleting',\n },\n },\n },\n creating: {\n tags: ['busy'],\n invoke: {\n src: 'create document',\n id: 'createDocumentActor',\n input: ({context}) => ({client: context.client, formData: context.formData!}),\n onDone: {actions: 'setDocument', target: 'created'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n created: {type: 'final'},\n updating: {\n tags: ['busy'],\n invoke: {\n src: 'update document',\n id: 'updateDocumentActor',\n input: ({context}) => ({\n client: context.client,\n id: context.id!,\n formData: context.formData!,\n }),\n onDone: {actions: 'setDocument', target: 'updated'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n updated: {type: 'final'},\n deleting: {\n tags: ['busy'],\n invoke: {\n src: 'delete document',\n id: 'deleteDocumentActor',\n input: ({context}) => ({client: context.client, id: context.id!}),\n onDone: {target: 'deleted'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n deleted: {type: 'final'},\n error: {type: 'final'},\n },\n})\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fields\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n return Object.keys(formData).reduce((acc: FormData, key) => {\n const val = formData[key]\n\n // TODO: refactor\n if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n acc[key] = sanitizeFormData(val)\n } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n acc[key] = null\n } else if (typeof val === 'string' && val) {\n acc[key] = formData[key].trim()\n } else {\n acc[key] = formData[key]\n }\n\n return acc\n }, {})\n}\n\nexport default sanitizeFormData\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\ntype Props = {\n description?: string\n error?: FieldError\n label: string\n name: string\n}\n\nconst errorIconStyle = {color: red[500].hex}\n\nconst FormFieldInputLabel: FC<Props> = (props: Props) => {\n const {description, error, label, name} = props\n\n return (\n <Box marginBottom={3}>\n {/* Label */}\n <Inline gap={2}>\n <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n {label}\n </Text>\n\n {/* Error icon + tooltip */}\n {error && (\n <Text size={1}>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n <ErrorOutlineIcon style={{...errorIconStyle, marginRight: '0.1em'}} />\n {error.message}\n </Text>\n </Box>\n }\n fallbackPlacements={['top', 'left']}\n placement=\"right\"\n portal\n >\n <ErrorOutlineIcon style={errorIconStyle} />\n </Tooltip>\n </Text>\n )}\n </Inline>\n\n {/* Description */}\n {description && (\n <Box marginY={3}>\n <Text as=\"p\" muted size={1}>\n {description}\n </Text>\n </Box>\n )}\n </Box>\n )\n}\n\nexport default FormFieldInputLabel\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: FieldError\n label: string\n name: string\n placeholder?: string\n value?: string\n onChange?: ChangeEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n const {description, disabled, error, label, name, placeholder, value, onChange, onBlur, ref} =\n props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n {/* Input */}\n <TextInput\n autoComplete=\"off\"\n autoFocus\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n />\n </Box>\n )\n}\n\nexport default FormFieldInputText\n","import {yupResolver} from '@hookform/resolvers/yup'\nimport {Box, Button, Dialog, Flex, Stack, useToast} from '@sanity/ui'\nimport {useActor} from '@xstate/react'\nimport {type FC, useEffect} from 'react'\nimport {useForm} from 'react-hook-form'\nimport {toPromise} from 'xstate'\nimport * as yup from 'yup'\n\nimport {useSanityClient} from '../../client'\nimport {Z_INDEX_DIALOG} from '../../constants'\nimport {formMachine} from '../../machines/form'\nimport {type Sanity} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport FormFieldInputText from '../FormFieldInputText'\n\ntype Props = {\n deploymentTarget?: Sanity.DeploymentTarget\n onClose: () => void\n onCreate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n onDelete?: (id: string) => void\n onUpdate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\ntype FormData = yup.InferType<typeof formSchema>\n\nconst formSchema = yup.object().shape({\n deployHook: yup.string().url('Deploy hook must be a valid URL'),\n deployLimit: yup\n .number()\n .positive()\n .integer()\n .min(1, 'Deploy limit must no less than 1')\n .max(15, 'Deploy limit must no higher than 15')\n .typeError('Deploy limit must be a number')\n .required('Deploy limit must be a positive integer between 1 and 15'),\n name: yup.string().required('Name cannot be empty'),\n projectId: yup.string().required('Vercel Project ID cannot be empty'),\n teamId: yup.string(),\n token: yup.string().required('Vercel Account Token cannot be empty'),\n})\n\nconst DialogForm: FC<Props> = (props: Props) => {\n const {deploymentTarget, onClose, onCreate, onDelete, onUpdate} = props\n const client = useSanityClient()\n const toast = useToast()\n\n const [formState, formStateTransition, formStateActorRef] = useActor(formMachine, {\n input: {client},\n })\n\n const formUpdating = formState.hasTag('busy')\n\n // react-hook-form v7\n const {\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n } = useForm<FormData>({\n // @ts-expect-error - fix typings later\n defaultValues: {\n deployHook: deploymentTarget?.deployHook || '',\n deployLimit: deploymentTarget?.deployLimit || 5,\n name: deploymentTarget?.name || '',\n projectId: deploymentTarget?.projectId || '',\n teamId: deploymentTarget?.teamId || '',\n token: deploymentTarget?.token || '',\n },\n mode: 'onChange',\n resolver: yupResolver(formSchema),\n })\n\n /**\n * Handle errors and reaching the done state\n */\n useEffect(() => {\n if (formState.matches('error')) {\n toast.push({\n status: 'error',\n title: formState.context.message || 'An error occurred',\n })\n }\n /**\n * If the machine is done it means it reached updated, created, deleted or error state.\n * We don't care which one, we just want to close the dialog\n */\n if (formState.status === 'done') {\n onClose()\n }\n }, [formState, onClose, toast])\n\n // Callbacks\n // - submit react-hook-form\n const onSubmit = async (formData: FormData) => {\n const sanitizedFormData = sanitizeFormData(formData)\n if (deploymentTarget) {\n formStateTransition({type: 'UPDATE', id: deploymentTarget._id, formData: sanitizedFormData})\n } else {\n formStateTransition({type: 'CREATE', formData: sanitizedFormData})\n }\n await toPromise(formStateActorRef)\n const snapshot = formStateActorRef.getSnapshot()\n const {document} = snapshot.context\n if (!document) return\n if (snapshot.matches('created')) {\n onCreate?.(document)\n } else if (snapshot.matches('updated')) {\n onUpdate?.(document)\n }\n }\n\n const handleDelete = async () => {\n if (!deploymentTarget) {\n return\n }\n const id = deploymentTarget._id\n formStateTransition({type: 'DELETE', id})\n await toPromise(formStateActorRef)\n if (formStateActorRef.getSnapshot().matches('deleted')) {\n onDelete?.(id)\n }\n }\n\n return (\n <Dialog\n footer={\n <Box padding={3}>\n <Flex justify={deploymentTarget ? 'space-between' : 'flex-end'}>\n {/* Delete button */}\n {deploymentTarget && (\n <Button\n loading={formState.matches('deleting')}\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n )}\n\n {/* Submit button */}\n <Button\n loading={formState.matches('creating') || formState.matches('updating')}\n disabled={!isDirty || !isValid}\n fontSize={1}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onClick={handleSubmit(onSubmit)}\n text={deploymentTarget ? 'Update and close' : 'Create'}\n tone=\"primary\"\n />\n </Flex>\n </Box>\n }\n header={`${deploymentTarget ? 'Edit' : 'Create'} deployment target`}\n id=\"create\"\n onClose={onClose}\n width={1}\n zOffset={Z_INDEX_DIALOG}\n >\n {/* We reverse direction to ensure that inline links dont autofocus before other form elements */}\n <Box\n as=\"form\"\n padding={4}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Hidden button to enable enter key submissions */}\n <button aria-label=\"Submit\" style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Form fields */}\n <Stack gap={5}>\n {/* Title */}\n <FormFieldInputText\n disabled={formUpdating}\n description=\"Name displayed in this plugin (e.g. production, staging)\"\n error={errors?.name}\n label=\"Name\"\n // @ts-expect-error - fix typings later\n {...register('name')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.token}\n label=\"Vercel Account Token\"\n // @ts-expect-error - fix typings later\n {...register('token')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.projectId}\n label=\"Vercel Project ID\"\n // @ts-expect-error - fix typings later\n {...register('projectId')}\n />\n\n <FormFieldInputText\n description=\"Required only if your project is owned by a team account\"\n disabled={formUpdating}\n error={errors?.teamId}\n label=\"Vercel Team ID (optional)\"\n // @ts-expect-error - fix typings later\n {...register('teamId')}\n />\n\n <FormFieldInputText\n description=\"Enter a valid deploy hook URL to enable manual deploys\"\n disabled={formUpdating}\n error={errors?.deployHook}\n label=\"Vercel Deploy Hook (optional)\"\n // @ts-expect-error - fix typings later\n {...register('deployHook')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.deployLimit}\n label=\"Number of deploys to display\"\n // @ts-expect-error - fix typings later\n {...register('deployLimit', {valueAsNumber: true})}\n />\n </Stack>\n </Box>\n </Dialog>\n )\n}\n\nexport default DialogForm\n","import type {SanityClient} from 'sanity'\nimport {assign, setup, fromPromise, assertEvent} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport {type Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n results: Sanity.DeploymentTarget[] // TODO: type correctly\n}\n\ntype Event =\n | {type: 'CLOSE'}\n | {type: 'CREATE'; deploymentTarget: Sanity.DeploymentTarget}\n | {type: 'DELETE'; id: string}\n | {type: 'FETCH'}\n | {type: 'UPDATE'; deploymentTarget: Sanity.DeploymentTarget}\n\ninterface Input {\n client: SanityClient\n}\n\nconst sortByTargetName = (items: Sanity.DeploymentTarget[]) => {\n return items.sort((a, b) => {\n if (a.name > b.name) {\n return 1\n }\n if (a.name < b.name) {\n return -1\n }\n return 0\n })\n}\n\nexport const deploymentTargetListMachine = setup({\n types: {} as {\n children: {fetchData: 'fetch data'}\n context: Context\n events: Event\n input: Input\n },\n actions: {\n targetCreate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'CREATE')\n return sortByTargetName([...context.results, event.deploymentTarget])\n },\n }),\n targetDelete: assign({\n results: ({context, event}) => {\n assertEvent(event, 'DELETE')\n return context.results.filter((target) => target._id !== event.id)\n },\n }),\n targetUpdate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'UPDATE')\n const {deploymentTarget} = event\n const index = context.results.findIndex((target) => target._id === deploymentTarget._id)\n const updatedResults = Object.assign([], context.results, {\n [index]: deploymentTarget,\n })\n return sortByTargetName(updatedResults)\n },\n }),\n },\n guards: {\n hasData: ({context}) => {\n return context?.results?.length > 0\n },\n hasNoData: ({context}) => {\n return context?.results?.length === 0\n },\n },\n actors: {\n 'fetch data': fromPromise(\n ({input, signal}: {input: {client: SanityClient}; signal: AbortSignal}) => {\n return input.client\n .fetch<Sanity.DeploymentTarget[]>(\n '*[_type == $type] | order(name asc)',\n {\n type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n },\n {signal},\n )\n .catch((error) => {\n if (error instanceof Error && error.name === 'AbortError') {\n return []\n }\n console.error('Failed to fetch deployment targets', error)\n throw error\n })\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOgAcx8ICoBiCAe0JIIDcGBrMEgMzABccAEXT90AbQAMAXUSgyDWLn64mckAA9EAZkkBOEgHYAjAA5DAFgBsFgEwnJAVkMAaEAE9Ep4yUeT-klbGesbaoYaGAL6RbmhYeISkFFQ0tGAATukM6eQANqI82ai8AsKiEjLqCkoqakiaOvpGZpY29sZOrh6IxpYkFo5h2oaOpnqOxraSFtGxGDgExCTpYOgQ7rQAwgBKAKIAggAqu1Ky9dXKqvjqWggWHSS9eoaS9ibao6aObp4IVh8kL56OzGII2PT-WYgOILRLLVbrWhCXYAGV2x1OVUUlzqoFu90kRm8tlM2gsL1eJJ+iEGBj0gVsFm0YWmVkctihMISSxWaw2AFUAApCI4nSrnbG1a71fGSUz9WzBezTFWvb7dO5MkjjMITZykwxjTnzbmkXnrEgAV3wHHwDAA7vhaJiJTUrjces9fFZGc9TLYrGqA9SEM9CcT7sznH5HHpjfFFmaEe4rTa7Y7ncYzvJJe6ZZ7DN7fYaA0GrCHvD4xs4S+yPnGYtCTYn4XySPblNgRGJneKc27cQ0EI4BiQ2T77noAzXyxrTIESGFGd4rP9DONTPHYTzk+3OwxLfxu+he9mQBcpR7h6Px4ylWyIrPfl9bIvJhZJIYA-7zFZoo27QgOB1C5RMsQHaU8UQABaYIQ2gv9G1AuFkmofAoHAnFIKHOwQz0bRtUMcd-j8WwpnuLdTVbdZMMvfMEFsPQQxMeViQmZkLC+f0oiQ5s4XNFNrVtB1sIvPMoIQCIK1BIsmXXWxtFJcZKJbAS934Ltylo8ShysfDHl9PRxjlekrC6Z9BhIBk5MkXpzFBFT+N3DsNIPI8tNdLCr20L0Wmscw5V0e5pMJYwBiI8kwrDRC5gTOEeHQXBckgbTB1uZwQw6RwrEBd9bEcQZYzsRDoiAA */\n context: ({input}) => ({\n client: input.client,\n results: [],\n }),\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'fetch data',\n id: 'fetchData',\n input: ({context}) => ({client: context.client}),\n onDone: {\n actions: assign({results: ({event}) => event.output}),\n target: 'ready',\n },\n onError: {\n target: 'failed',\n },\n },\n },\n ready: {\n initial: 'unknown',\n on: {\n CREATE: {\n actions: 'targetCreate',\n },\n DELETE: {\n actions: 'targetDelete',\n },\n UPDATE: {\n actions: 'targetUpdate',\n },\n },\n states: {\n unknown: {\n always: [\n {target: 'withData', guard: 'hasData'},\n {target: 'withoutData', guard: 'hasNoData'},\n ],\n },\n withData: {\n always: [{target: 'withoutData', guard: 'hasNoData'}],\n },\n withoutData: {\n always: [{target: 'withData', guard: 'hasData'}],\n },\n },\n },\n failed: {\n type: 'final',\n },\n },\n})\n","import {assertEvent, assign, setup} from 'xstate'\n\nimport {type Sanity} from '../types'\n\ntype Context = {\n editDeploymentTarget?: Sanity.DeploymentTarget\n}\n\ntype Event =\n | {type: 'CREATE'}\n | {type: 'CLOSE'}\n | {type: 'EDIT'; deploymentTarget: Sanity.DeploymentTarget}\n\nexport const dialogMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n },\n actions: {\n setEditDeploymentTarget: assign({\n editDeploymentTarget: ({event}) => {\n assertEvent(event, 'EDIT')\n return event.deploymentTarget\n },\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAEwKArCQCcANgAcAdmUbNOhVx0BGLQBoQAT0SmAzApJcXXexoAsW5fbWaFAL4BVmhYeISk5FTUjAAiAJKs3HxIIMKiElIy8ghKqpq6+obGZpY2ivb2zq4e5moeXKZc3kEhGDgExCSQ4nQAMgDyAMqcvDLp4pLSqTn2DSQefn7uyq5aWvZWtgjmTqsuvnU6XMoK9q0goR0RJJgATmDoYjS0gyPJ4yKTWTOIc1wLJZqFZrDZbRBaUwkfZuew6SFcepuILBED4IQQOAyK7hYifDJTbKIAC0GnBCFJFxxnUilDA+O+01AOQ8CnJGxIGn29lMpjUxhcCh0VPauNIPTEDMyTLkiA8PhIxh5Cg8DS8pgM5L5UOalSMah0cP05hFYRptweT3pqQm0qJCHlVSVphVashmvKCDUAN17j0XNMqrUyhRASAA */\n context: {\n editDeploymentTarget: undefined,\n },\n initial: 'idle',\n states: {\n idle: {\n entry: assign({\n editDeploymentTarget: () => undefined,\n }),\n on: {\n CREATE: {\n target: 'create',\n },\n EDIT: {\n actions: 'setEditDeploymentTarget',\n target: 'edit',\n },\n },\n },\n edit: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n create: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n },\n})\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Flex, Text, ToastProvider, Tooltip} from '@sanity/ui'\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query'\nimport {useMachine} from '@xstate/react'\n\nimport {useSanityClient} from './client'\nimport DeploymentTargets from './components/DeploymentTargets'\nimport DialogForm from './components/DialogForm'\nimport StateDebug from './components/StateDebug'\nimport {Z_INDEX_TOAST_PROVIDER} from './constants'\nimport {deploymentTargetListMachine} from './machines/deploymentTargetList'\nimport {dialogMachine} from './machines/dialog'\nimport {type Sanity} from './types'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n gcTime: 0,\n staleTime: 0,\n },\n },\n})\n\nconst Widget = () => {\n const client = useSanityClient()\n\n const [deploymentTargetListState, deploymentTargetListStateTransition] = useMachine(\n deploymentTargetListMachine,\n {input: {client}},\n )\n const [dialogState, dialogStateTransition] = useMachine(dialogMachine)\n\n // Callbacks\n const handleDialogClose = () => {\n dialogStateTransition({type: 'CLOSE'})\n }\n const handleDialogShowCreate = () => {\n dialogStateTransition({type: 'CREATE'})\n }\n const handleDialogShowEdit = (deploymentTarget: Sanity.DeploymentTarget) => {\n dialogStateTransition({type: 'EDIT', deploymentTarget})\n }\n const handleTargetCreate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'CREATE', deploymentTarget})\n }\n const handleTargetDelete = (id: string) => {\n deploymentTargetListStateTransition({type: 'DELETE', id})\n }\n const handleTargetUpdate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'UPDATE', deploymentTarget})\n }\n\n return (\n <ToastProvider zOffset={Z_INDEX_TOAST_PROVIDER}>\n <QueryClientProvider client={queryClient}>\n <Card radius={2} style={{overflow: 'hidden '}}>\n {/* xstate debug */}\n <StateDebug name=\"List\" state={deploymentTargetListState} />\n\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" paddingX={3} paddingY={2}>\n <Text size={5} weight=\"semibold\">\n Vercel deployments\n </Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Create new deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={AddIcon} onClick={handleDialogShowCreate} mode=\"bleed\" />\n </Tooltip>\n </Flex>\n\n <Box>\n {deploymentTargetListState.matches('pending') && (\n <Box paddingX={3} paddingY={4}>\n <Text>Loading...</Text>\n </Box>\n )}\n\n {deploymentTargetListState.matches({ready: 'withoutData'}) && (\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={4}>\n <Text>No deployment targets found.</Text>\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleDialogShowCreate}\n text=\"Create a new target\"\n />\n </Flex>\n )}\n\n {deploymentTargetListState.matches({ready: 'withData'}) && (\n <DeploymentTargets\n items={deploymentTargetListState.context.results}\n onDialogEdit={handleDialogShowEdit}\n />\n )}\n\n {deploymentTargetListState.matches('failed') && (\n <Box paddingX={3} paddingY={4}>\n <Text>\n Failed to retrieve deployment targets. Please check the developer console log for\n more information.\n </Text>\n </Box>\n )}\n </Box>\n </Card>\n\n {/* Dialogs */}\n {dialogState.matches('create') && (\n <DialogForm onClose={handleDialogClose} onCreate={handleTargetCreate} />\n )}\n\n {dialogState.matches('edit') && (\n <DialogForm\n deploymentTarget={dialogState.context.editDeploymentTarget}\n onClose={handleDialogClose}\n onDelete={handleTargetDelete}\n onUpdate={handleTargetUpdate}\n />\n )}\n </QueryClientProvider>\n </ToastProvider>\n )\n}\n\nexport default Widget\n","import type {DashboardWidget, LayoutConfig} from '@sanity/dashboard'\n\nimport Widget from './app'\n\nexport function vercelWidget(config: {layout?: LayoutConfig} = {}): DashboardWidget {\n return {\n name: 'vercel',\n component: Widget,\n layout: config.layout ?? {width: 'full'},\n }\n}\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["API_ENDPOINT_DEPLOYMENTS","API_ENDPOINT_ALIASES","API_VERSION","DEBUG_MODE","DEPLOYMENT_TARGET_DOCUMENT_TYPE","VERCEL_STATUS_COLORS","BUILDING","CANCELED","ERROR","READY","QUEUED","WIDGET_NAME","Z_INDEX_DIALOG","Z_INDEX_TOAST_PROVIDER","SanityClient","useClient","API_VERSION","useSanityClient","$","_c","t0","Symbol","for","apiVersion","Sanity","fetcher","deploymentTarget","DeploymentTargetConfig","url","extraParams","URLSearchParams","params","set","projectId","teamId","k","v","entries","append","response","fetch","toString","headers","Authorization","token","ok","Error","json","err","cause","useQuery","hash","API_ENDPOINT_ALIASES","API_ENDPOINT_DEPLOYMENTS","Sanity","Vercel","fetcher","Options","enabled","useDeployments","deploymentTarget","options","$","_c","t0","fetchUrl","deployParams","deployLimit","URLSearchParams","set","String","t1","t2","t3","t4","t5","queryKey","queryFn","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retry","data","deploymentsData","isFetching","deploymentsIsFetching","isSuccess","deploymentsIsSuccess","error","deploymentsError","refetch","aliasParams","Symbol","for","t6","t7","t8","t9","t10","aliasesData","aliasesIsFetching","aliasesIsSuccess","aliasesError","aliases","deploymentsWithAlias","t11","deployments","map","val","alias","find","a","deploymentId","uid","Object","assign","t12","t13","t14","setup","Event","type","refreshMachine","types","events","createMachine","initial","states","idle","on","REFRESH","target","refreshing","ERROR","REFRESHED","refreshed","error","useTheme_v2","useCardColor","$","_c","color","t0","border","assign","setup","fromPromise","Vercel","Context","deployHook","disabled","feedback","label","error","Event","type","DeployActorInput","deployMachine","types","context","events","input","actors","deploy","signal","AbortSignal","Error","res","fetch","method","data","json","ok","errorMessage","message","statusText","err","console","cause","createMachine","id","initial","undefined","states","idle","entry","on","DEPLOY","target","deploying","exit","invoke","src","onDone","onError","actions","event","success","Box","Card","Stack","Text","DEBUG_MODE","Props","name","state","StateDebug","props","$","_c","t0","Symbol","for","backgroundColor","borderRadius","fontSize","fontWeight","lineHeight","right","opacity","pointerEvents","position","textAlign","top","zIndex","t1","t2","value","JSON","stringify","t3","t4","UploadIcon","Box","Button","useToast","useMachine","useEffect","WIDGET_NAME","deployMachine","StateDebug","Props","deployHook","onDeploySuccess","targetName","DeployButton","props","$","_c","t0","input","deployState","deployStateTransition","deployStateInterpreter","toast","t1","matches","isError","t2","isSuccess","t3","type","handleDeploy","t4","t5","context","error","push","closable","description","duration","status","title","t6","t7","subscription","subscribe","state","value","unsubscribe","t8","Symbol","for","position","t9","t10","label","t11","disabled","t12","Box","VERCEL_STATUS_COLORS","Vercel","Props","state","DeploymentState","StatusDot","t0","$","_c","t1","t2","backgroundColor","borderRadius","height","width","Box","Label","ReactNode","Sanity","useCardColor","Props","children","colSpan","header","variant","TableCell","props","$","_c","display","cellWidth","bb0","t0","Symbol","for","border","maxWidth","position","textAlign","width","t1","t2","borderTop","t3","LinkIcon","Box","Flex","Stack","Text","useMemo","ReactTimeAgo","Vercel","StatusDot","TableCell","Props","deployment","DeploymentWithAlias","Deployment","props","$","_c","t0","created","Date","date","commitMessage","meta","githubCommitMessage","commitRef","githubCommitRef","targetUrl","alias","url","t1","Symbol","for","t2","flexShrink","t3","state","t4","textDecoration","t5","t6","t7","t8","trim","toLowerCase","replace","_temp","t9","t10","t11","t12","t13","t14","creator","username","t15","uid","t16","borderRadius","height","width","t17","t18","t","toUpperCase","Box","useCardColor","PlaceholderAvatar","$","_c","border","t0","backgroundColor","borderRadius","height","userSelect","width","Box","Stack","Text","useCardColor","Props","rows","PlaceholderText","props","$","_c","border","t0","backgroundColor","borderRadius","userSelect","width","t1","Array","from","length","_temp","t2","_","index","Flex","PlaceholderAvatar","PlaceholderText","TableCell","DeploymentPlaceholder","$","_c","t0","Symbol","for","t1","t2","t3","t4","Box","Text","useToast","useMachine","useEffect","useRef","useDeepCompareEffect","WIDGET_NAME","useDeployments","refreshMachine","Sanity","useCardColor","DeployButton","Deployment","DeploymentPlaceholder","StateDebug","TableCell","Props","deploymentTarget","DeploymentTargetConfig","Deployments","props","$","_c","refTimeout","refreshState","refreshStateTransition","t0","matches","t1","t2","enabled","deployments","error","isFetching","isSuccess","refetch","toast","t3","isError","t4","current","clearTimeout","setTimeout","cancelRefetch","throwOnError","handleDeploySuccess","t5","t6","Symbol","for","t7","t8","type","t9","t10","t11","push","closable","description","name","duration","status","title","t12","hasFetched","hasDeployments","length","border","t13","position","t14","t15","borderBottom","borderCollapse","display","tableLayout","width","Array","from","deployLimit","_temp","map","_temp2","t16","t17","deployHook","t18","_","index","deployment","uid","EditIcon","Box","Button","Flex","Text","Tooltip","FC","Sanity","Deployments","Props","item","DeploymentTarget","onDialogEdit","deploymentTarget","props","$","_c","t0","deployHook","deployLimit","name","projectId","teamId","token","t1","Symbol","for","position","t2","t3","t4","t5","t6","t7","Stack","Sanity","DeploymentTarget","Props","items","onDialogEdit","deploymentTarget","DeploymentTargets","props","$","_c","t0","map","item","_id","t1","uuid","SanityClient","SanityDocument","assertEvent","assign","fromPromise","setup","DEPLOYMENT_TARGET_DOCUMENT_TYPE","Sanity","Context","client","document","DeploymentTarget","id","formData","Record","message","Event","type","Input","formMachine","types","children","createDocumentActor","updateDocumentActor","deleteDocumentActor","context","events","input","tags","actions","setId","event","setFormData","setMessage","data","details","description","setDocument","output","actors","Required","Pick","Promise","create","_id","_type","patch","set","commit","delete","createMachine","initial","states","idle","on","CREATE","target","UPDATE","DELETE","creating","invoke","src","onDone","onError","created","updating","updated","deleting","deleted","error","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","red","ErrorOutlineIcon","Box","Inline","Text","Tooltip","FC","FieldError","Props","description","error","label","name","errorIconStyle","color","hex","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","message","t2","t3","t4","Box","TextInput","ChangeEventHandler","FocusEventHandler","Ref","FieldError","FormFieldInputLabel","Props","description","disabled","error","label","name","placeholder","value","onChange","HTMLInputElement","onBlur","ref","FormFieldInputText","props","$","_c","t0","t1","t2","yupResolver","Box","Button","Dialog","Flex","Stack","useToast","useActor","FC","useEffect","useForm","toPromise","yup","useSanityClient","Z_INDEX_DIALOG","formMachine","Sanity","sanitizeFormData","FormFieldInputText","Props","deploymentTarget","DeploymentTarget","onClose","onCreate","onDelete","id","onUpdate","FormData","InferType","formSchema","object","shape","deployHook","string","url","deployLimit","number","positive","integer","min","max","typeError","required","name","projectId","teamId","token","DialogForm","props","$","_c","client","toast","t0","input","formState","formStateTransition","formStateActorRef","t1","hasTag","formUpdating","t2","t3","t4","t5","t6","t7","t8","t9","Symbol","for","t10","defaultValues","mode","resolver","t11","handleSubmit","register","errors","isDirty","isValid","t12","t13","matches","push","status","title","context","message","t14","formData","sanitizedFormData","type","_id","snapshot","getSnapshot","document","onSubmit","t15","handleDelete","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","display","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","valueAsNumber","t44","t45","t46","t47","SanityClient","assign","setup","fromPromise","assertEvent","DEPLOYMENT_TARGET_DOCUMENT_TYPE","Sanity","Context","client","results","DeploymentTarget","Event","type","deploymentTarget","id","Input","sortByTargetName","items","sort","a","b","name","deploymentTargetListMachine","types","children","fetchData","context","events","input","actions","targetCreate","event","targetDelete","filter","target","_id","targetUpdate","index","findIndex","updatedResults","Object","guards","hasData","length","hasNoData","actors","signal","AbortSignal","fetch","catch","error","Error","console","createMachine","initial","states","pending","invoke","src","onDone","output","onError","ready","on","CREATE","DELETE","UPDATE","unknown","always","guard","withData","withoutData","failed","assertEvent","assign","setup","Sanity","Context","editDeploymentTarget","DeploymentTarget","Event","type","deploymentTarget","dialogMachine","types","context","events","actions","setEditDeploymentTarget","event","createMachine","undefined","initial","states","idle","entry","on","CREATE","target","EDIT","edit","CLOSE","create","AddIcon","Box","Button","Card","Flex","Text","ToastProvider","Tooltip","QueryClient","QueryClientProvider","useMachine","useSanityClient","DeploymentTargets","DialogForm","StateDebug","Z_INDEX_TOAST_PROVIDER","deploymentTargetListMachine","dialogMachine","Sanity","queryClient","defaultOptions","queries","gcTime","staleTime","Widget","$","_c","client","t0","input","deploymentTargetListState","deploymentTargetListStateTransition","dialogState","dialogStateTransition","t1","type","handleDialogClose","t2","handleDialogShowCreate","t3","deploymentTarget","handleDialogShowEdit","t4","deploymentTarget_0","handleTargetCreate","t5","id","handleTargetDelete","t6","deploymentTarget_1","handleTargetUpdate","t7","Symbol","for","overflow","t8","t9","t10","t11","t12","matches","t13","ready","t14","context","results","t15","t16","t17","t18","t19","editDeploymentTarget","t20","DashboardWidget","LayoutConfig","Widget","vercelWidget","config","layout","name","component","width"],"sources":["../src/constants.ts","../src/client.ts","../src/utils/fetcher.ts","../src/hooks/useDeployments.ts","../src/machines/refresh.ts","../src/utils/useCardColor.ts","../src/machines/deploy.ts","../src/components/StateDebug/index.tsx","../src/components/DeployButton/index.tsx","../src/components/StatusDot/index.tsx","../src/components/TableCell/index.tsx","../src/components/Deployment/index.tsx","../src/components/PlaceholderAvatar/index.tsx","../src/components/PlaceholderText/index.tsx","../src/components/DeploymentPlaceholder/index.tsx","../src/components/Deployments/index.tsx","../src/components/DeploymentTarget/index.tsx","../src/components/DeploymentTargets/index.tsx","../src/machines/form.ts","../src/utils/sanitizeFormData.ts","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/DialogForm/index.tsx","../src/machines/deploymentTargetList.ts","../src/machines/dialog.ts","../src/app.tsx","../src/index.ts"],"sourcesContent":["// https://vercel.com/docs/platform/limits\nexport const API_ENDPOINT_DEPLOYMENTS = 'https://api.vercel.com/v5/now/deployments'\nexport const API_ENDPOINT_ALIASES = 'https://api.vercel.com/v3/now/aliases'\n\n// Sanity API version\nexport const API_VERSION = '1'\n\nexport const DEBUG_MODE = false\n\nexport const DEPLOYMENT_TARGET_DOCUMENT_TYPE = 'vercel.deploymentTarget'\n\nexport const VERCEL_STATUS_COLORS = {\n BUILDING: '#f5a623',\n CANCELED: '#ff0000',\n ERROR: '#ff0000',\n READY: '#50e3c2',\n QUEUED: '#333',\n}\n\n// Name displayed in toasts\nexport const WIDGET_NAME = 'Vercel (dashboard)'\n\n// NOTE: Manually set plugin z-index values to be higher than Sanity's header search field\n// (which is currently 500202). Also ensure toasts always sit above dialogs.\nexport const Z_INDEX_DIALOG = 600001\nexport const Z_INDEX_TOAST_PROVIDER = 600002\n","import {type SanityClient, useClient} from 'sanity'\n\nimport {API_VERSION} from './constants'\n\nexport function useSanityClient(): SanityClient {\n return useClient({apiVersion: API_VERSION})\n}\n","import {type Sanity} from '../types'\n\nconst fetcher =\n (deploymentTarget: Sanity.DeploymentTargetConfig) =>\n async (url: string, extraParams?: URLSearchParams) => {\n const params = new URLSearchParams()\n params.set('projectId', deploymentTarget.projectId)\n if (deploymentTarget.teamId) {\n params.set('teamId', deploymentTarget.teamId)\n }\n\n if (extraParams) {\n for (const [k, v] of extraParams.entries()) {\n params.append(k, v)\n }\n }\n\n const response = await fetch(`${url}?${params.toString()}`, {\n headers: {\n Authorization: `Bearer ${deploymentTarget.token}`,\n },\n })\n\n // Manually throw on non-OK responses for react-query\n // https://react-query.tanstack.com/guides/query-functions#usage-with-fetch-and-others-clients-that-do-not-throw-by-default\n if (!response.ok) {\n throw new Error('Response not OK')\n }\n\n try {\n return await response.json()\n } catch (err) {\n throw new Error('Unable to parse response as JSON', {cause: err})\n }\n }\n\nexport default fetcher\n","import {useQuery} from '@tanstack/react-query'\nimport hash from 'object-hash'\n\nimport {API_ENDPOINT_ALIASES, API_ENDPOINT_DEPLOYMENTS} from '../constants'\nimport {type Sanity, type Vercel} from '../types'\nimport fetcher from '../utils/fetcher'\n\ntype Options = {\n enabled?: boolean\n}\n\nconst useDeployments = (deploymentTarget: Sanity.DeploymentTargetConfig, options?: Options) => {\n const fetchUrl = fetcher(deploymentTarget)\n\n // Fetch deployments\n const deployParams = new URLSearchParams()\n deployParams.set('limit', String(deploymentTarget?.deployLimit))\n\n const {\n data: deploymentsData,\n isFetching: deploymentsIsFetching,\n isSuccess: deploymentsIsSuccess,\n error: deploymentsError,\n refetch,\n } = useQuery<{deployments: Vercel.Deployment[]}>({\n queryKey: [hash(deploymentTarget)],\n queryFn: () => fetchUrl(API_ENDPOINT_DEPLOYMENTS, deployParams),\n enabled: options?.enabled ?? true,\n refetchInterval: 20000, // ms\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n refetchOnReconnect: 'always',\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n // Fetch aliases (only if deployments have been retrieved)\n const aliasParams = new URLSearchParams()\n aliasParams.set('limit', '20')\n\n const {\n data: aliasesData,\n isFetching: aliasesIsFetching,\n isSuccess: aliasesIsSuccess,\n error: aliasesError,\n } = useQuery<{\n aliases: Vercel.Alias[]\n pagination: {\n count: number\n next?: number\n prev?: number\n }\n }>({\n queryKey: [hash(deploymentTarget), 'aliases'],\n queryFn: () => fetchUrl(API_ENDPOINT_ALIASES, aliasParams),\n enabled: !!deploymentsData,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n const aliases = aliasesData?.aliases\n\n let deploymentsWithAlias: Vercel.DeploymentWithAlias[] | undefined\n\n if (aliases) {\n deploymentsWithAlias = deploymentsData?.deployments?.map((val: Vercel.DeploymentWithAlias) => {\n const alias = aliases.find((a) => a.deploymentId === val.uid)\n return Object.assign(val, {alias: alias?.alias})\n })\n }\n\n return {\n deployments: deploymentsWithAlias,\n error: aliasesError || deploymentsError,\n isFetching: aliasesIsFetching || deploymentsIsFetching,\n isSuccess: aliasesIsSuccess && deploymentsIsSuccess,\n refetch,\n }\n}\n\nexport default useDeployments\n","import {setup} from 'xstate'\n\ntype Event = {type: 'ERROR'} | {type: 'REFRESH'} | {type: 'REFRESHED'} | {type: 'RETRY'}\n\nconst refreshMachine = setup({\n types: {\n events: {} as Event,\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAJQFEAxBgZQAkBtABgF1FQADgHtYuAC64h+fiAAeiAIwAmAGwkuGrkoAsAZhVKlAVm0KAHABoQAT0QBOJSRN27XFXaMmz2twF9fVmhYeISkAE5gAGYRsCFQ1PS0tADytNx8SCDCohJSMvIIPnYkxhpKXGZ22kY6xla2CAq6CiQudgDsRnYqKroVfe3+gRg4BMQkEdFwcXRMrGz0ACLpMtniktKZBUUlRmUVVTXadTaISrqObUY97QodvWa6QyBBo6ETUTHYkLPM9OwrTJrXKbUDbJTFLjtMzmWraOx3doqeqKMyOeHdXp3BTHXTVZ6vELjMBhMJCMK-eaAwQidZ5LaIY6Q6Gw47wxHI04IGEkDFma5NbTtY7ufwBED4IQQOAyQljIirWkg-KIAC0nIa6oJIyJpHIVEVOQ2KsKShRCDsunUGLcHi8PhU2uC8o+U1iBCghrpoLkZ2uTk0XCq7SRRl0Zg19itXHhIZ85lMEaUTre40mX0gXuVDIQnmKRhZKk6PmaVXN2PUaLsZhj2hUOJU-JTupIJLJYSzxpzeacheLXFL2nNrkrfW8SKFnhDYt8QA */\n initial: 'idle',\n states: {\n idle: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n refreshing: {\n on: {\n ERROR: {\n target: 'error',\n },\n REFRESHED: {\n target: 'refreshed',\n },\n },\n },\n refreshed: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n error: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n },\n})\n\nexport default refreshMachine\n","import {useTheme_v2} from '@sanity/ui'\n\nexport function useCardColor(): {border: string} {\n const {color} = useTheme_v2()\n return {border: color.border}\n}\n","import {assign, setup, fromPromise} from 'xstate'\n\nimport {type Vercel} from '../types'\n\ntype Context = {\n deployHook: string\n disabled: boolean\n feedback?: string\n label?: string\n error?: string\n}\n\ntype Event = {type: 'DEPLOY'}\n\ninterface DeployActorInput {\n deployHook: string\n}\n\nexport const deployMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n input: {} as DeployActorInput,\n },\n actors: {\n deploy: fromPromise(async ({input, signal}: {input: DeployActorInput; signal: AbortSignal}) => {\n try {\n if (!input.deployHook) {\n throw new Error('No deployHook URL defined')\n }\n const res = await fetch(input.deployHook, {method: 'POST', signal})\n const data: {error?: Vercel.Error} | null = await res.json()\n if (!res.ok) {\n const errorMessage = data?.error?.message || res.statusText\n throw errorMessage\n }\n } catch (err) {\n if (typeof err === 'string') {\n throw err\n }\n console.error('Unable to deploy with error:', err)\n throw new Error('Please check the developer console for more information', {cause: err})\n }\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QTABwDYHsCeA6AlhOmAMQAiAogAoAyA8gJoDaADALqKiqaz4Au+TADtOIAB6IATCxa4AnADYAHAHYArArUslAZjksNAGhDZEARk3yVmhSxVyHC-QBYAvq+MoMOXF6zZ8ISgSCGEwAiEAN0wAa3C-HwSAoIRA6IBjAEMBYVY2PNFuXhyRJHFENTMzXElFJSUzNTVnWx0FY1MESXVcZzUdM2k1OTUVBoV3TzR-X2mcQOCwACclzCXcDGyAMzWAW1nvPCSF1KjMLJK8grKi-kFS0AkESura5QamlpY2jvMB+QcDkqLH0wxYEw8ICSuFgAFd0uk4LByNR6Mx2IUeHdhKIns1ZN9BtYQVpRnJfl1JM55P1BnY1Ep9CpGpMoXM8MtVksUbRGNcuFiSriKs4CQNurYRgZ7BSGr1ASNupIzEo+kp3JChJgUPAyklMcV7sKEABadomRAmtQAhW2wE6VnQwjEA3Yh7lBDOSQUsxeqyaPoWYbWFSO9kHfwLV1CspPHSSHQ1ZyA1UKJzJlQ+iz+5oKewKWrfNyQ6FwhFI6NG2OINOSXDiypKAxtMyZi1dEE1Qk6L0FpTSUMl8OctaVnHVhC1+uDRvNhStin6XDaHQ9liSXTJiUa1xAA */\n id: 'deploy',\n initial: 'idle',\n context: ({input}) => ({\n disabled: false,\n feedback: undefined,\n label: undefined,\n error: undefined,\n deployHook: input.deployHook,\n }),\n states: {\n idle: {\n entry: assign({\n feedback: () => undefined,\n label: () => 'Deploy',\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n deploying: {\n entry: assign({\n disabled: () => true,\n label: () => 'Deploying',\n }),\n exit: assign({\n disabled: () => false,\n label: () => 'Deploy',\n }),\n invoke: {\n src: 'deploy',\n input: ({context}) => ({deployHook: context.deployHook}),\n onDone: {\n target: 'success',\n },\n onError: {\n target: 'error',\n actions: assign({\n error: ({event}) => {\n if ('error' in event) {\n const {error} = event\n if (typeof error === 'string') {\n return error\n }\n if (error instanceof Error) {\n return error.message\n }\n }\n return 'Unknown error'\n },\n }),\n },\n },\n },\n success: {\n entry: assign({\n feedback: () => 'Successfully started!',\n }),\n exit: assign({\n feedback: () => undefined,\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n error: {\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n },\n})\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {DEBUG_MODE} from '../../constants'\n\ntype Props = {\n name: string\n state: any // TODO: type correctly\n}\n\nconst StateDebug = (props: Props) => {\n const {name, state} = props\n\n if (!DEBUG_MODE) {\n return null\n }\n\n return (\n <Card\n scheme=\"dark\"\n style={{\n backgroundColor: 'rgba(0, 0, 255, 0.9)',\n borderRadius: '3px',\n fontSize: 1,\n fontWeight: 500,\n lineHeight: 'body',\n right: 0,\n opacity: 0.75,\n pointerEvents: 'none',\n position: 'absolute',\n textAlign: 'left',\n top: 0,\n zIndex: 9000,\n }}\n >\n <Box padding={2}>\n <Stack gap={2}>\n <Text size={0}>Name: {name}</Text>\n <Text size={0}>state.value: {JSON.stringify(state.value)}</Text>\n </Stack>\n </Box>\n </Card>\n )\n}\n\nexport default StateDebug\n","import {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect} from 'react'\n\nimport {WIDGET_NAME} from '../../constants'\nimport {deployMachine} from '../../machines/deploy'\nimport StateDebug from '../StateDebug'\n\ntype Props = {\n deployHook: string\n onDeploySuccess?: () => void\n targetName: string\n}\n\nconst DeployButton = (props: Props) => {\n const {deployHook, onDeploySuccess, targetName} = props\n\n const [deployState, deployStateTransition, deployStateInterpreter] = useMachine(deployMachine, {\n input: {deployHook},\n })\n\n const toast = useToast()\n\n const isError = deployState.matches('error')\n const isSuccess = deployState.matches('success')\n\n // Callbacks\n const handleDeploy = () => {\n deployStateTransition({type: 'DEPLOY'})\n }\n\n // Effects\n useEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to queue deploy for ${targetName}: ${deployState.context.error}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n\n if (isSuccess) {\n toast.push({\n closable: true,\n description: `Deploy queued for ${targetName}`,\n duration: 8000,\n status: 'success',\n title: WIDGET_NAME,\n })\n }\n }, [isError, isSuccess, toast, targetName, deployState.context.error])\n\n useEffect(() => {\n const subscription = deployStateInterpreter.subscribe((state) => {\n if (state.value === 'success') {\n if (onDeploySuccess) {\n onDeploySuccess()\n }\n }\n })\n\n return () => subscription.unsubscribe()\n }, [deployStateInterpreter, onDeploySuccess])\n\n return (\n <Box padding={3} style={{position: 'relative'}}>\n <StateDebug name=\"Deploy\" state={deployState} />\n\n <Button\n disabled={deployState.context.disabled}\n fontSize={1}\n icon={UploadIcon}\n mode=\"ghost\"\n onClick={handleDeploy}\n padding={3}\n text={`${deployState.context.label} ${targetName}`}\n tone=\"default\"\n />\n </Box>\n )\n}\n\nexport default DeployButton\n","import {Box} from '@sanity/ui'\n\nimport {VERCEL_STATUS_COLORS} from '../../constants'\nimport {type Vercel} from '../../types'\n\ntype Props = {\n state: Vercel.DeploymentState\n}\n\nconst StatusDot = ({state}: Props) => (\n <Box\n style={{\n backgroundColor: VERCEL_STATUS_COLORS[state],\n borderRadius: '20px',\n height: '9px',\n width: '9px',\n }}\n />\n)\n\nexport default StatusDot\n","import {Box, Label} from '@sanity/ui'\nimport type {ReactNode} from 'react'\n\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n children: ReactNode\n colSpan?: number\n header?: boolean\n variant?: 'age' | 'branch' | 'creator' | 'state'\n}\n\nconst TableCell = (props: Props) => {\n const {children, colSpan, header, variant} = props\n\n let display: Sanity.BoxDisplay | Sanity.BoxDisplay[] = 'table-cell'\n let cellWidth: string = 'auto'\n\n switch (variant) {\n case 'age':\n cellWidth = '50px'\n break\n case 'branch':\n cellWidth = '300px'\n display = ['none', 'none', 'none', 'table-cell']\n break\n case 'creator':\n cellWidth = '80px'\n break\n case 'state':\n cellWidth = '110px'\n display = ['none', 'none', 'none', 'none', 'table-cell']\n break\n default:\n break\n }\n\n const {border} = useCardColor()\n\n if (header) {\n return (\n <Box\n as=\"th\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={2}\n style={{\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n <Label size={0}>{children}</Label>\n </Box>\n )\n }\n return (\n <Box\n as=\"td\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={[2, 2, 3]}\n style={{\n borderTop: `1px solid ${border}`,\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default TableCell\n","import {LinkIcon} from '@sanity/icons/Link'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n// oxlint-disable-next-line import/no-unassigned-import\nimport 'react-time-ago/locale/en'\nimport ReactTimeAgo from 'react-time-ago'\n\nimport {type Vercel} from '../../types'\nimport StatusDot from '../StatusDot'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deployment: Vercel.DeploymentWithAlias\n}\n\nconst Deployment = (props: Props) => {\n const {deployment} = props\n\n const date = useMemo(() => new Date(deployment.created), [deployment.created])\n\n const commitMessage = deployment?.meta?.['githubCommitMessage']\n const commitRef = deployment?.meta?.['githubCommitRef']\n\n const targetUrl = deployment.alias ?? deployment.url\n\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <Flex align=\"center\">\n <Box\n display={['block', 'block', 'block', 'block', 'none']}\n marginRight={3}\n style={{flexShrink: 0}}\n >\n <StatusDot state={deployment.state} />\n </Box>\n\n {targetUrl ? (\n <>\n {/* Alias icon */}\n {deployment.alias && <LinkIcon />}\n\n <Box marginLeft={deployment.alias ? 1 : 0}>\n <Text\n muted={!(deployment.state === 'READY')}\n size={1}\n style={{\n textDecoration:\n deployment.state === 'CANCELED' || deployment.state === 'ERROR'\n ? 'line-through'\n : 'normal',\n }}\n textOverflow=\"ellipsis\"\n >\n {deployment.state === 'READY' ? (\n <a href={`https://${targetUrl}`} rel=\"noopener noreferrer\" target=\"_blank\">\n {targetUrl}\n </a>\n ) : (\n targetUrl\n )}\n </Text>\n </Box>\n </>\n ) : (\n <Text size={1}>Uploading...</Text>\n )}\n </Flex>\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <Flex align=\"center\">\n <StatusDot state={deployment.state} />\n <Box marginLeft={2}>\n <Text size={1}>\n {deployment.state\n .trim()\n .toLowerCase()\n .replace(/^[a-z]/i, (t) => t.toUpperCase())}\n </Text>\n </Box>\n </Flex>\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <Stack gap={2}>\n <Text size={1} textOverflow=\"ellipsis\">\n {commitRef}\n </Text>\n {commitMessage && (\n <Text muted size={1} textOverflow=\"ellipsis\">\n {commitMessage}\n </Text>\n )}\n </Stack>\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <Flex align=\"center\">\n <Text size={1}>\n <ReactTimeAgo date={date} locale=\"en-US\" timeStyle=\"mini\" />\n </Text>\n </Flex>\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex align=\"center\" justify=\"center\">\n <img\n alt={deployment?.creator?.username || 'Deployment creator avatar'}\n draggable={false}\n src={`https://vercel.com/api/www/avatar/${deployment?.creator?.uid}?&s=48`}\n style={{\n borderRadius: '20px',\n height: '20px',\n width: '20px',\n }}\n />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default Deployment\n","import {Box} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\nconst PlaceholderAvatar = () => {\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '20px',\n height: '20px',\n userSelect: 'none',\n width: '20px',\n }}\n />\n )\n}\n\nexport default PlaceholderAvatar\n","import {Box, Stack, Text} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n rows: number\n}\n\nconst PlaceholderText = (props: Props) => {\n const {rows} = props\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '3px',\n userSelect: 'none',\n width: '100%',\n }}\n >\n <Stack gap={2}>\n {Array.from({length: rows}, (_, index) => (\n <Text key={index} size={1}>\n \n </Text>\n ))}\n </Stack>\n </Box>\n )\n}\n\nexport default PlaceholderText\n","import {Flex} from '@sanity/ui'\n\nimport PlaceholderAvatar from '../PlaceholderAvatar'\nimport PlaceholderText from '../PlaceholderText'\nimport TableCell from '../TableCell'\n\nconst DeploymentPlaceholder = () => {\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <PlaceholderText rows={2} />\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex justify=\"center\">\n <PlaceholderAvatar />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default DeploymentPlaceholder\n","import {Box, Text, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect, useRef} from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {WIDGET_NAME} from '../../constants'\nimport useDeployments from '../../hooks/useDeployments'\nimport refreshMachine from '../../machines/refresh'\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\nimport DeployButton from '../DeployButton'\nimport Deployment from '../Deployment'\nimport DeploymentPlaceholder from '../DeploymentPlaceholder'\nimport StateDebug from '../StateDebug'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deploymentTarget: Sanity.DeploymentTargetConfig\n}\n\nconst Deployments = (props: Props) => {\n const {deploymentTarget} = props\n\n // Refs\n const refTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // XState\n const [refreshState, refreshStateTransition] = useMachine(refreshMachine)\n\n // Fetch deployments - disable hook / auto-refetching on error state\n const {deployments, error, isFetching, isSuccess, refetch} = useDeployments(deploymentTarget, {\n enabled: !refreshState.matches('error'),\n })\n\n const toast = useToast()\n const isError = refreshState.matches('error')\n\n const handleDeploySuccess = () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n refTimeout.current = setTimeout(() => {\n void refetch({\n cancelRefetch: true,\n throwOnError: true,\n })\n }, 4000)\n }\n\n useEffect(() => {\n return () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n }\n }, [])\n\n useEffect(() => {\n if (error) {\n refreshStateTransition({type: 'ERROR'})\n }\n\n if (isFetching) {\n refreshStateTransition({type: 'REFRESH'})\n }\n\n if (!isFetching && isSuccess) {\n refreshStateTransition({type: 'REFRESHED'})\n }\n }, [error, isFetching, isSuccess, refreshStateTransition])\n\n useDeepCompareEffect(() => {\n if (!refreshState.matches('refreshing')) {\n refreshStateTransition({type: 'REFRESH'})\n }\n }, [deploymentTarget])\n\n useDeepCompareEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to fetch deployments for ${deploymentTarget.name}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n }, [deploymentTarget, isError])\n\n const hasFetched = typeof deployments !== 'undefined'\n const hasDeployments = deployments && deployments.length > 0\n\n const {border} = useCardColor()\n return (\n <Box marginTop={3} style={{position: 'relative'}}>\n {/* xstate debug */}\n <StateDebug name=\"Refresh\" state={refreshState} />\n\n {!refreshState.matches('error') && (\n <>\n <Box\n as=\"table\"\n style={{\n borderBottom: `1px solid ${border}`,\n borderCollapse: 'collapse',\n display: 'table',\n tableLayout: 'fixed',\n width: '100%',\n }}\n >\n <Box as=\"thead\" style={{display: 'table-header-group'}}>\n <tr>\n {/* Deployment */}\n <TableCell header>Deployment</TableCell>\n\n {/* State */}\n <TableCell header variant=\"state\">\n State\n </TableCell>\n\n {/* Branch */}\n <TableCell header variant=\"branch\">\n Branch\n </TableCell>\n\n {/* Age */}\n <TableCell header variant=\"age\">\n Age\n </TableCell>\n\n {/* Creator */}\n <TableCell header variant=\"creator\">\n Creator\n </TableCell>\n </tr>\n </Box>\n\n <Box as=\"tbody\" style={{display: 'table-row-group'}}>\n {/* Placeholders */}\n {!deployments &&\n Array.from({length: deploymentTarget.deployLimit}, (_, index) => (\n <DeploymentPlaceholder key={index} />\n ))}\n {/* Deployments */}\n {hasDeployments &&\n deployments?.map((deployment) => (\n <Deployment deployment={deployment} key={deployment.uid} />\n ))}\n </Box>\n </Box>\n\n {/* No results */}\n {hasFetched && !hasDeployments && (\n <Box padding={3} style={{width: '100%'}}>\n <Text muted size={1}>\n No deployments found. Don't forget to specify a valid team ID if your project\n belongs to a team.\n </Text>\n </Box>\n )}\n </>\n )}\n\n {/* Error message */}\n {refreshState.matches('error') && (\n <Box padding={3}>\n <Text muted size={1}>\n Unable to fetch recent deployments. Please check your network and deployment settings.\n </Text>\n </Box>\n )}\n\n {/* Deploy button */}\n {!refreshState.matches('error') && deploymentTarget.deployHook && (\n <Box>\n <DeployButton\n deployHook={deploymentTarget.deployHook}\n onDeploySuccess={handleDeploySuccess}\n targetName={deploymentTarget.name}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default Deployments\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Box, Button, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\n\nimport {type Sanity} from '../../types'\nimport Deployments from '../Deployments'\n\ntype Props = {\n item: Sanity.DeploymentTarget\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTarget: FC<Props> = (props: Props) => {\n const {item, onDialogEdit} = props\n\n const deploymentTarget: Sanity.DeploymentTargetConfig = {\n deployHook: item.deployHook,\n deployLimit: item.deployLimit,\n name: item.name,\n projectId: item.projectId,\n teamId: item.teamId,\n token: item.token,\n }\n\n return (\n <Box style={{position: 'relative'}}>\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" marginTop={2} paddingX={3}>\n <Text size={2}>{item.name}</Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Edit deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={EditIcon} mode=\"bleed\" onClick={() => onDialogEdit(item)} />\n </Tooltip>\n </Flex>\n\n {/* Content */}\n <Deployments deploymentTarget={deploymentTarget} />\n </Box>\n )\n}\n\nexport default DeploymentTarget\n","import {Stack} from '@sanity/ui'\n\nimport {type Sanity} from '../../types'\nimport DeploymentTarget from '../DeploymentTarget'\n\ntype Props = {\n items: Sanity.DeploymentTarget[]\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTargets = (props: Props) => {\n const {items, onDialogEdit} = props\n\n return (\n <Stack gap={5}>\n {items?.map((item) => (\n <DeploymentTarget item={item} key={item._id} onDialogEdit={onDialogEdit} />\n ))}\n </Stack>\n )\n}\n\nexport default DeploymentTargets\n","import {uuid} from '@sanity/uuid'\nimport type {SanityClient, SanityDocument} from 'sanity'\nimport {assertEvent, assign, fromPromise, setup} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport type {Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n document?: Sanity.DeploymentTarget\n id?: string\n formData?: Record<string, any>\n message: string\n}\n\ntype Event =\n | {type: 'CREATE'; formData: Record<string, any>}\n | {type: 'UPDATE'; id: string; formData: Record<string, any>}\n | {type: 'DELETE'; id: string}\n\ninterface Input {\n client: SanityClient\n}\n\nexport const formMachine = setup({\n types: {} as {\n children: {\n createDocumentActor: 'create document'\n updateDocumentActor: 'update document'\n deleteDocumentActor: 'delete document'\n }\n context: Context\n events: Event\n input: Input\n tags: 'busy'\n },\n actions: {\n setId: assign({\n id: ({event}) => {\n assertEvent(event, ['UPDATE', 'DELETE'])\n return event.id\n },\n }),\n setFormData: assign({\n formData: ({event}) => {\n assertEvent(event, ['CREATE', 'UPDATE'])\n return event.formData\n },\n }),\n setMessage: assign({\n message: ({event}) => {\n if (\n 'data' in event &&\n event.data &&\n typeof event.data === 'object' &&\n 'details' in event.data &&\n event.data.details &&\n typeof event.data.details === 'object' &&\n 'description' in event.data.details\n ) {\n return event.data.details.description as string\n }\n return 'An error occurred'\n },\n }),\n setDocument: assign({\n document: ({event}) => {\n // @ts-expect-error - fix typings later\n return event.output\n },\n }),\n },\n actors: {\n // The explicit `Promise<SanityDocument>` return types keep the inferred machine\n // type portable for declaration emit (TS2883), by referencing the `SanityDocument`\n // alias imported from `sanity` instead of a deep `@sanity/client` path.\n 'create document': fromPromise(\n ({\n input,\n }: {\n input: Required<Pick<Context, 'client' | 'formData'>>\n }): Promise<SanityDocument> => {\n return input.client.create({\n _id: `vercel.${uuid()}`,\n _type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n ...input.formData,\n })\n },\n ),\n 'update document': fromPromise(\n ({\n input,\n }: {\n input: Required<Pick<Context, 'client' | 'id' | 'formData'>>\n }): Promise<SanityDocument> => {\n return input.client.patch(input.id).set(input.formData).commit()\n },\n ),\n 'delete document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'id'>>}): Promise<SanityDocument> => {\n return input.client.delete(input.id)\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAIwBmAGwkuGjQFYALAE4AHACYdWgwYA0IAJ6IjKgOwkdXFUYVa9h-Ua5KAvv5WaFh4hKTkVNQAqgAKACJsnLwywqISUjLyCMpqmtr6xqbmVrYIBgokWvlGWkpaCgZeKoHBGDgExGSUNPGMADKM7Nx8SCBp4pLSY9m56vm6hiZmljaIOipqdXpcDk1aWiYqBlqtICEd4SSYAE5g6BL4UNQQUmBk+ABuQgDW77f3MRgeJCTAAV1QYHwYmYmDEQhuI1SIkmmRmiGOShIDiUOh0SiaCgUegcDj0pTsjhI5iMewUpPsTSMZwuYS6AIeBGeYBuNwRJAEFAeADMEahrncHsDQRCoTC4QikWMJhlpqBspjsbj8YTiaTyWsEKouNT6noiX5zUpiQEgud2mzSGCBBBOU8Xm8Pt8-iRna6gSDwZDobD4YiUsqUaqshiDFicXiCea9WSKeVKiSVIclEYlIY-BUWQ7Ok6XW7ubz+YKRWLfWWAzLg-Kw0rBFGpjGEJqEzrkyTU4b6ToSHojHos7VXEc6kXQiWSBAwFRHs9XoQvb93ovl9Kg3LQ4qI230h30V241rE7r+wayro1A4dO4VHotA5fPTTnbWfPt2AV9QPJ8jcApCmIoo3OKf4NnuIYKuGozHqiapyLG8bakmRI3mmpjxk0XAuEoXAHI+DgtGc+BCIu8BjD+4TIieaLqogAC0Khpmxs6XF0kRgAxyGdk+aYKLSVR7Fweg6A4IkGFwChcY6EqAly-HRmeY7DnSY5GHGL4qFwRhpjpJpmriDjVMRLgGAp84ckCECqaezEIHoObUuZuwKH4xGPgoRnmCQpmOAcqhmPJ37Flcfrlo5TGoQgY4mgYHkeAS+iqH5hqSc4dSuCo+I6SoSjvjZUX1pAsUodkrlGO51TSd5b46JlZRebVuG7IcjRmA05FtHOVzQSpkaMVVdivs4CibHGxg6biSg4ZsJD2AccaFEVGwOKVXTQRVI0CWeNV1Z5jW+WmujDj4HjmMRnhEttpBAQilWdkdyX1V5RFNS1iAEpU1pHER9JWjogSBEAA */\n context: ({input}) => ({\n client: input.client,\n formData: {},\n message: '',\n }),\n initial: 'idle',\n states: {\n idle: {\n on: {\n CREATE: {\n actions: ['setFormData'],\n target: 'creating',\n },\n UPDATE: {\n actions: ['setId', 'setFormData'],\n target: 'updating',\n },\n DELETE: {\n actions: 'setId',\n target: 'deleting',\n },\n },\n },\n creating: {\n tags: ['busy'],\n invoke: {\n src: 'create document',\n id: 'createDocumentActor',\n input: ({context}) => ({client: context.client, formData: context.formData!}),\n onDone: {actions: 'setDocument', target: 'created'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n created: {type: 'final'},\n updating: {\n tags: ['busy'],\n invoke: {\n src: 'update document',\n id: 'updateDocumentActor',\n input: ({context}) => ({\n client: context.client,\n id: context.id!,\n formData: context.formData!,\n }),\n onDone: {actions: 'setDocument', target: 'updated'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n updated: {type: 'final'},\n deleting: {\n tags: ['busy'],\n invoke: {\n src: 'delete document',\n id: 'deleteDocumentActor',\n input: ({context}) => ({client: context.client, id: context.id!}),\n onDone: {target: 'deleted'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n deleted: {type: 'final'},\n error: {type: 'final'},\n },\n})\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fields\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n return Object.keys(formData).reduce((acc: FormData, key) => {\n const val = formData[key]\n\n // TODO: refactor\n if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n acc[key] = sanitizeFormData(val)\n } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n acc[key] = null\n } else if (typeof val === 'string' && val) {\n acc[key] = formData[key].trim()\n } else {\n acc[key] = formData[key]\n }\n\n return acc\n }, {})\n}\n\nexport default sanitizeFormData\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\ntype Props = {\n description?: string\n error?: FieldError\n label: string\n name: string\n}\n\nconst errorIconStyle = {color: red[500].hex}\n\nconst FormFieldInputLabel: FC<Props> = (props: Props) => {\n const {description, error, label, name} = props\n\n return (\n <Box marginBottom={3}>\n {/* Label */}\n <Inline gap={2}>\n <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n {label}\n </Text>\n\n {/* Error icon + tooltip */}\n {error && (\n <Text size={1}>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n <ErrorOutlineIcon style={{...errorIconStyle, marginRight: '0.1em'}} />\n {error.message}\n </Text>\n </Box>\n }\n fallbackPlacements={['top', 'left']}\n placement=\"right\"\n portal\n >\n <ErrorOutlineIcon style={errorIconStyle} />\n </Tooltip>\n </Text>\n )}\n </Inline>\n\n {/* Description */}\n {description && (\n <Box marginY={3}>\n <Text as=\"p\" muted size={1}>\n {description}\n </Text>\n </Box>\n )}\n </Box>\n )\n}\n\nexport default FormFieldInputLabel\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: FieldError\n label: string\n name: string\n placeholder?: string\n value?: string\n onChange?: ChangeEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n const {description, disabled, error, label, name, placeholder, value, onChange, onBlur, ref} =\n props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n {/* Input */}\n <TextInput\n autoComplete=\"off\"\n autoFocus\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n />\n </Box>\n )\n}\n\nexport default FormFieldInputText\n","import {yupResolver} from '@hookform/resolvers/yup'\nimport {Box, Button, Dialog, Flex, Stack, useToast} from '@sanity/ui'\nimport {useActor} from '@xstate/react'\nimport {type FC, useEffect} from 'react'\nimport {useForm} from 'react-hook-form'\nimport {toPromise} from 'xstate'\nimport * as yup from 'yup'\n\nimport {useSanityClient} from '../../client'\nimport {Z_INDEX_DIALOG} from '../../constants'\nimport {formMachine} from '../../machines/form'\nimport {type Sanity} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport FormFieldInputText from '../FormFieldInputText'\n\ntype Props = {\n deploymentTarget?: Sanity.DeploymentTarget\n onClose: () => void\n onCreate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n onDelete?: (id: string) => void\n onUpdate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\ntype FormData = yup.InferType<typeof formSchema>\n\nconst formSchema = yup.object().shape({\n deployHook: yup.string().url('Deploy hook must be a valid URL'),\n deployLimit: yup\n .number()\n .positive()\n .integer()\n .min(1, 'Deploy limit must no less than 1')\n .max(15, 'Deploy limit must no higher than 15')\n .typeError('Deploy limit must be a number')\n .required('Deploy limit must be a positive integer between 1 and 15'),\n name: yup.string().required('Name cannot be empty'),\n projectId: yup.string().required('Vercel Project ID cannot be empty'),\n teamId: yup.string(),\n token: yup.string().required('Vercel Account Token cannot be empty'),\n})\n\nconst DialogForm: FC<Props> = (props: Props) => {\n const {deploymentTarget, onClose, onCreate, onDelete, onUpdate} = props\n const client = useSanityClient()\n const toast = useToast()\n\n const [formState, formStateTransition, formStateActorRef] = useActor(formMachine, {\n input: {client},\n })\n\n const formUpdating = formState.hasTag('busy')\n\n // react-hook-form v7\n const {\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n } = useForm<FormData>({\n // @ts-expect-error - fix typings later\n defaultValues: {\n deployHook: deploymentTarget?.deployHook || '',\n deployLimit: deploymentTarget?.deployLimit || 5,\n name: deploymentTarget?.name || '',\n projectId: deploymentTarget?.projectId || '',\n teamId: deploymentTarget?.teamId || '',\n token: deploymentTarget?.token || '',\n },\n mode: 'onChange',\n resolver: yupResolver(formSchema),\n })\n\n /**\n * Handle errors and reaching the done state\n */\n useEffect(() => {\n if (formState.matches('error')) {\n toast.push({\n status: 'error',\n title: formState.context.message || 'An error occurred',\n })\n }\n /**\n * If the machine is done it means it reached updated, created, deleted or error state.\n * We don't care which one, we just want to close the dialog\n */\n if (formState.status === 'done') {\n onClose()\n }\n }, [formState, onClose, toast])\n\n // Callbacks\n // - submit react-hook-form\n const onSubmit = async (formData: FormData) => {\n const sanitizedFormData = sanitizeFormData(formData)\n if (deploymentTarget) {\n formStateTransition({type: 'UPDATE', id: deploymentTarget._id, formData: sanitizedFormData})\n } else {\n formStateTransition({type: 'CREATE', formData: sanitizedFormData})\n }\n await toPromise(formStateActorRef)\n const snapshot = formStateActorRef.getSnapshot()\n const {document} = snapshot.context\n if (!document) return\n if (snapshot.matches('created')) {\n onCreate?.(document)\n } else if (snapshot.matches('updated')) {\n onUpdate?.(document)\n }\n }\n\n const handleDelete = async () => {\n if (!deploymentTarget) {\n return\n }\n const id = deploymentTarget._id\n formStateTransition({type: 'DELETE', id})\n await toPromise(formStateActorRef)\n if (formStateActorRef.getSnapshot().matches('deleted')) {\n onDelete?.(id)\n }\n }\n\n return (\n <Dialog\n footer={\n <Box padding={3}>\n <Flex justify={deploymentTarget ? 'space-between' : 'flex-end'}>\n {/* Delete button */}\n {deploymentTarget && (\n <Button\n loading={formState.matches('deleting')}\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n )}\n\n {/* Submit button */}\n <Button\n loading={formState.matches('creating') || formState.matches('updating')}\n disabled={!isDirty || !isValid}\n fontSize={1}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onClick={handleSubmit(onSubmit)}\n text={deploymentTarget ? 'Update and close' : 'Create'}\n tone=\"primary\"\n />\n </Flex>\n </Box>\n }\n header={`${deploymentTarget ? 'Edit' : 'Create'} deployment target`}\n id=\"create\"\n onClose={onClose}\n width={1}\n zOffset={Z_INDEX_DIALOG}\n >\n {/* We reverse direction to ensure that inline links dont autofocus before other form elements */}\n <Box\n as=\"form\"\n padding={4}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Hidden button to enable enter key submissions */}\n <button aria-label=\"Submit\" style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Form fields */}\n <Stack gap={5}>\n {/* Title */}\n <FormFieldInputText\n disabled={formUpdating}\n description=\"Name displayed in this plugin (e.g. production, staging)\"\n error={errors?.name}\n label=\"Name\"\n // @ts-expect-error - fix typings later\n {...register('name')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.token}\n label=\"Vercel Account Token\"\n // @ts-expect-error - fix typings later\n {...register('token')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.projectId}\n label=\"Vercel Project ID\"\n // @ts-expect-error - fix typings later\n {...register('projectId')}\n />\n\n <FormFieldInputText\n description=\"Required only if your project is owned by a team account\"\n disabled={formUpdating}\n error={errors?.teamId}\n label=\"Vercel Team ID (optional)\"\n // @ts-expect-error - fix typings later\n {...register('teamId')}\n />\n\n <FormFieldInputText\n description=\"Enter a valid deploy hook URL to enable manual deploys\"\n disabled={formUpdating}\n error={errors?.deployHook}\n label=\"Vercel Deploy Hook (optional)\"\n // @ts-expect-error - fix typings later\n {...register('deployHook')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.deployLimit}\n label=\"Number of deploys to display\"\n // @ts-expect-error - fix typings later\n {...register('deployLimit', {valueAsNumber: true})}\n />\n </Stack>\n </Box>\n </Dialog>\n )\n}\n\nexport default DialogForm\n","import type {SanityClient} from 'sanity'\nimport {assign, setup, fromPromise, assertEvent} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport {type Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n results: Sanity.DeploymentTarget[] // TODO: type correctly\n}\n\ntype Event =\n | {type: 'CLOSE'}\n | {type: 'CREATE'; deploymentTarget: Sanity.DeploymentTarget}\n | {type: 'DELETE'; id: string}\n | {type: 'FETCH'}\n | {type: 'UPDATE'; deploymentTarget: Sanity.DeploymentTarget}\n\ninterface Input {\n client: SanityClient\n}\n\nconst sortByTargetName = (items: Sanity.DeploymentTarget[]) => {\n return items.sort((a, b) => {\n if (a.name > b.name) {\n return 1\n }\n if (a.name < b.name) {\n return -1\n }\n return 0\n })\n}\n\nexport const deploymentTargetListMachine = setup({\n types: {} as {\n children: {fetchData: 'fetch data'}\n context: Context\n events: Event\n input: Input\n },\n actions: {\n targetCreate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'CREATE')\n return sortByTargetName([...context.results, event.deploymentTarget])\n },\n }),\n targetDelete: assign({\n results: ({context, event}) => {\n assertEvent(event, 'DELETE')\n return context.results.filter((target) => target._id !== event.id)\n },\n }),\n targetUpdate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'UPDATE')\n const {deploymentTarget} = event\n const index = context.results.findIndex((target) => target._id === deploymentTarget._id)\n const updatedResults = Object.assign([], context.results, {\n [index]: deploymentTarget,\n })\n return sortByTargetName(updatedResults)\n },\n }),\n },\n guards: {\n hasData: ({context}) => {\n return context?.results?.length > 0\n },\n hasNoData: ({context}) => {\n return context?.results?.length === 0\n },\n },\n actors: {\n 'fetch data': fromPromise(\n ({input, signal}: {input: {client: SanityClient}; signal: AbortSignal}) => {\n return input.client\n .fetch<Sanity.DeploymentTarget[]>(\n '*[_type == $type] | order(name asc)',\n {\n type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n },\n {signal},\n )\n .catch((error) => {\n if (error instanceof Error && error.name === 'AbortError') {\n return []\n }\n console.error('Failed to fetch deployment targets', error)\n throw error\n })\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOgAcx8ICoBiCAe0JIIDcGBrMEgMzABccAEXT90AbQAMAXUSgyDWLn64mckAA9EAZkkBOEgHYAjAA5DAFgBsFgEwnJAVkMAaEAE9Ep4yUeT-klbGesbaoYaGAL6RbmhYeISkFFQ0tGAATukM6eQANqI82ai8AsKiEjLqCkoqakiaOvpGZpY29sZOrh6IxpYkFo5h2oaOpnqOxraSFtGxGDgExCTpYOgQ7rQAwgBKAKIAggAqu1Ky9dXKqvjqWggWHSS9eoaS9ibao6aObp4IVh8kL56OzGII2PT-WYgOILRLLVbrWhCXYAGV2x1OVUUlzqoFu90kRm8tlM2gsL1eJJ+iEGBj0gVsFm0YWmVkctihMISSxWaw2AFUAApCI4nSrnbG1a71fGSUz9WzBezTFWvb7dO5MkjjMITZykwxjTnzbmkXnrEgAV3wHHwDAA7vhaJiJTUrjces9fFZGc9TLYrGqA9SEM9CcT7sznH5HHpjfFFmaEe4rTa7Y7ncYzvJJe6ZZ7DN7fYaA0GrCHvD4xs4S+yPnGYtCTYn4XySPblNgRGJneKc27cQ0EI4BiQ2T77noAzXyxrTIESGFGd4rP9DONTPHYTzk+3OwxLfxu+he9mQBcpR7h6Px4ylWyIrPfl9bIvJhZJIYA-7zFZoo27QgOB1C5RMsQHaU8UQABaYIQ2gv9G1AuFkmofAoHAnFIKHOwQz0bRtUMcd-j8WwpnuLdTVbdZMMvfMEFsPQQxMeViQmZkLC+f0oiQ5s4XNFNrVtB1sIvPMoIQCIK1BIsmXXWxtFJcZKJbAS934Ltylo8ShysfDHl9PRxjlekrC6Z9BhIBk5MkXpzFBFT+N3DsNIPI8tNdLCr20L0Wmscw5V0e5pMJYwBiI8kwrDRC5gTOEeHQXBckgbTB1uZwQw6RwrEBd9bEcQZYzsRDoiAA */\n context: ({input}) => ({\n client: input.client,\n results: [],\n }),\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'fetch data',\n id: 'fetchData',\n input: ({context}) => ({client: context.client}),\n onDone: {\n actions: assign({results: ({event}) => event.output}),\n target: 'ready',\n },\n onError: {\n target: 'failed',\n },\n },\n },\n ready: {\n initial: 'unknown',\n on: {\n CREATE: {\n actions: 'targetCreate',\n },\n DELETE: {\n actions: 'targetDelete',\n },\n UPDATE: {\n actions: 'targetUpdate',\n },\n },\n states: {\n unknown: {\n always: [\n {target: 'withData', guard: 'hasData'},\n {target: 'withoutData', guard: 'hasNoData'},\n ],\n },\n withData: {\n always: [{target: 'withoutData', guard: 'hasNoData'}],\n },\n withoutData: {\n always: [{target: 'withData', guard: 'hasData'}],\n },\n },\n },\n failed: {\n type: 'final',\n },\n },\n})\n","import {assertEvent, assign, setup} from 'xstate'\n\nimport {type Sanity} from '../types'\n\ntype Context = {\n editDeploymentTarget?: Sanity.DeploymentTarget\n}\n\ntype Event =\n | {type: 'CREATE'}\n | {type: 'CLOSE'}\n | {type: 'EDIT'; deploymentTarget: Sanity.DeploymentTarget}\n\nexport const dialogMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n },\n actions: {\n setEditDeploymentTarget: assign({\n editDeploymentTarget: ({event}) => {\n assertEvent(event, 'EDIT')\n return event.deploymentTarget\n },\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAEwKArCQCcANgAcAdmUbNOhVx0BGLQBoQAT0SmAzApJcXXexoAsW5fbWaFAL4BVmhYeISk5FTUjAAiAJKs3HxIIMKiElIy8ghKqpq6+obGZpY2ivb2zq4e5moeXKZc3kEhGDgExCSQ4nQAMgDyAMqcvDLp4pLSqTn2DSQefn7uyq5aWvZWtgjmTqsuvnU6XMoK9q0goR0RJJgATmDoYjS0gyPJ4yKTWTOIc1wLJZqFZrDZbRBaUwkfZuew6SFcepuILBED4IQQOAyK7hYifDJTbKIAC0GnBCFJFxxnUilDA+O+01AOQ8CnJGxIGn29lMpjUxhcCh0VPauNIPTEDMyTLkiA8PhIxh5Cg8DS8pgM5L5UOalSMah0cP05hFYRptweT3pqQm0qJCHlVSVphVashmvKCDUAN17j0XNMqrUyhRASAA */\n context: {\n editDeploymentTarget: undefined,\n },\n initial: 'idle',\n states: {\n idle: {\n entry: assign({\n editDeploymentTarget: () => undefined,\n }),\n on: {\n CREATE: {\n target: 'create',\n },\n EDIT: {\n actions: 'setEditDeploymentTarget',\n target: 'edit',\n },\n },\n },\n edit: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n create: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n },\n})\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Box, Button, Card, Flex, Text, ToastProvider, Tooltip} from '@sanity/ui'\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query'\nimport {useMachine} from '@xstate/react'\n\nimport {useSanityClient} from './client'\nimport DeploymentTargets from './components/DeploymentTargets'\nimport DialogForm from './components/DialogForm'\nimport StateDebug from './components/StateDebug'\nimport {Z_INDEX_TOAST_PROVIDER} from './constants'\nimport {deploymentTargetListMachine} from './machines/deploymentTargetList'\nimport {dialogMachine} from './machines/dialog'\nimport {type Sanity} from './types'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n gcTime: 0,\n staleTime: 0,\n },\n },\n})\n\nconst Widget = () => {\n const client = useSanityClient()\n\n const [deploymentTargetListState, deploymentTargetListStateTransition] = useMachine(\n deploymentTargetListMachine,\n {input: {client}},\n )\n const [dialogState, dialogStateTransition] = useMachine(dialogMachine)\n\n // Callbacks\n const handleDialogClose = () => {\n dialogStateTransition({type: 'CLOSE'})\n }\n const handleDialogShowCreate = () => {\n dialogStateTransition({type: 'CREATE'})\n }\n const handleDialogShowEdit = (deploymentTarget: Sanity.DeploymentTarget) => {\n dialogStateTransition({type: 'EDIT', deploymentTarget})\n }\n const handleTargetCreate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'CREATE', deploymentTarget})\n }\n const handleTargetDelete = (id: string) => {\n deploymentTargetListStateTransition({type: 'DELETE', id})\n }\n const handleTargetUpdate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'UPDATE', deploymentTarget})\n }\n\n return (\n <ToastProvider zOffset={Z_INDEX_TOAST_PROVIDER}>\n <QueryClientProvider client={queryClient}>\n <Card radius={2} style={{overflow: 'hidden '}}>\n {/* xstate debug */}\n <StateDebug name=\"List\" state={deploymentTargetListState} />\n\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" paddingX={3} paddingY={2}>\n <Text size={5} weight=\"semibold\">\n Vercel deployments\n </Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Create new deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={AddIcon} onClick={handleDialogShowCreate} mode=\"bleed\" />\n </Tooltip>\n </Flex>\n\n <Box>\n {deploymentTargetListState.matches('pending') && (\n <Box paddingX={3} paddingY={4}>\n <Text>Loading...</Text>\n </Box>\n )}\n\n {deploymentTargetListState.matches({ready: 'withoutData'}) && (\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={4}>\n <Text>No deployment targets found.</Text>\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleDialogShowCreate}\n text=\"Create a new target\"\n />\n </Flex>\n )}\n\n {deploymentTargetListState.matches({ready: 'withData'}) && (\n <DeploymentTargets\n items={deploymentTargetListState.context.results}\n onDialogEdit={handleDialogShowEdit}\n />\n )}\n\n {deploymentTargetListState.matches('failed') && (\n <Box paddingX={3} paddingY={4}>\n <Text>\n Failed to retrieve deployment targets. Please check the developer console log for\n more information.\n </Text>\n </Box>\n )}\n </Box>\n </Card>\n\n {/* Dialogs */}\n {dialogState.matches('create') && (\n <DialogForm onClose={handleDialogClose} onCreate={handleTargetCreate} />\n )}\n\n {dialogState.matches('edit') && (\n <DialogForm\n deploymentTarget={dialogState.context.editDeploymentTarget}\n onClose={handleDialogClose}\n onDelete={handleTargetDelete}\n onUpdate={handleTargetUpdate}\n />\n )}\n </QueryClientProvider>\n </ToastProvider>\n )\n}\n\nexport default Widget\n","import type {DashboardWidget, LayoutConfig} from '@sanity/dashboard'\n\nimport Widget from './app'\n\nexport function vercelWidget(config: {layout?: LayoutConfig} = {}): DashboardWidget {\n return {\n name: 'vercel',\n component: Widget,\n layout: config.layout ?? {width: 'full'},\n }\n}\n"],"mappings":"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"}
\ No newline at end of file