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            &nbsp;\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            &nbsp;\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