sanity-plugin-workflow

3.0.293.0.30
dist/index.js.map
~dist/index.js.mapModified
+1−1
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":["defineStates","WorkflowConfig","API_VERSION","DEFAULT_CONFIG","Required","schemaTypes","states","id","title","color","roles","transitions","requireAssignment","useMemo","useListeningQuery","API_VERSION","KeyedMetadata","Metadata","useWorkflowMetadata","ids","$","_c","t0","t1","Symbol","for","apiVersion","t2","params","options","data","_rawData","loading","error","rawData","t3","bb0","length","t4","acc","item","documentId","keyedMetadata","useCallback","useContext","useMemo","useState","createContext","LayoutProps","DEFAULT_CONFIG","useWorkflowMetadata","KeyedMetadata","WorkflowConfig","WorkflowContextValue","Required","data","loading","error","ids","addId","id","removeId","WorkflowContext","useWorkflowContext","$","_c","current","t0","t1","metadata","WorkflowProviderProps","WorkflowProvider","props","Symbol","for","setIds","includes","t2","id_0","current_0","filter","i","t3","schemaTypes","states","contextValue","t4","renderDefault","t5","arraysContainMatchingString","one","two","some","item","includes","ArrowLeftIcon","ArrowRightIcon","useToast","DocumentActionDescription","useCurrentUser","useValidationStatus","DocumentActionProps","useClient","useWorkflowContext","API_VERSION","arraysContainMatchingString","State","useUpdateWorkflow","t0","actionState","$","_c","id","type","user","t1","Symbol","for","apiVersion","client","toast","currentUser","metadata","loading","error","states","t2","state","s","currentState","find","t3","assignees","t4","t5","undefined","validation","isValidating","hasValidationErrors","requireValidation","length","_temp","console","t6","documentId","newState","patch","set","commit","then","push","status","title","catch","err","onHandle","currentStateIndex","findIndex","s_0","actionStateIndex","s_1","direction","DirectionIcon","directionLabel","t7","roles","map","_temp2","userRoleCanUpdateState","actionStateIsAValidTransition","transitions","includes","t8","requireAssignment","userAssignmentCanUpdateState","t9","Boolean","t10","t11","icon","disabled","label","r","name","v","level","defineUpdateWorkflow","props","useToast","useCallback","useClient","UserSelectMenu","API_VERSION","User","UserAssignmentProps","userList","assignees","documentId","UserAssignment","props","$","_c","t0","Symbol","for","apiVersion","client","toast","t1","userId","user","find","u","id","push","status","title","patch","setIfMissing","insert","commit","then","displayName","catch","err","console","error","description","addAssignee","t2","userId_0","user_0","u_0","unset","err_0","removeAssignee","t3","err_1","clearAssignees","t4","maxHeight","t5","t6","UsersIcon","useState","DocumentActionDescription","DocumentActionProps","useProjectUsers","UserAssignment","useWorkflowContext","API_VERSION","useAssignWorkflow","t0","$","_c","id","metadata","loading","error","isDialogOpen","setDialogOpen","t1","Symbol","for","apiVersion","userList","console","t2","Boolean","t3","t4","type","onClose","content","assignees","length","t5","t6","icon","disabled","label","title","dialog","onHandle","SplitVerticalIcon","useToast","LexoRank","useCallback","useState","DocumentActionDescription","DocumentActionProps","useClient","useWorkflowContext","API_VERSION","useBeginWorkflow","t0","$","_c","id","draft","metadata","loading","error","states","t1","Symbol","for","apiVersion","client","toast","beginning","setBeginning","complete","setComplete","console","t2","title","lowestOrderFirstState","fetch","state","createIfNotExists","_id","_type","documentId","orderRank","parse","genNext","toString","min","push","status","description","handle","t3","Boolean","t4","t5","icon","disabled","label","onHandle","CheckmarkIcon","ToastContextValue","useToast","useCallback","DocumentActionDescription","DocumentActionProps","SanityClient","useClient","useWorkflowContext","API_VERSION","handleDeleteMetadata","client","toast","id","delete","push","status","title","error","console","useCompleteWorkflow","t0","$","_c","metadata","loading","states","t1","Symbol","for","apiVersion","t2","handle","t3","t4","s","state","find","isLastState","length","Boolean","t5","t6","t7","icon","disabled","label","onHandle","tone","DocumentBadgeDescription","DocumentBadgeProps","useCurrentUser","useProjectUsers","useWorkflowContext","API_VERSION","useAssigneesBadge","t0","$","_c","id","documentId","currentUser","metadata","loading","error","t1","Symbol","for","apiVersion","userList","console","assignees","length","t2","label","hasMe","some","assignee","assigneesCount","t3","t4","user","includes","assigneeUsers","filter","map","_temp","join","title","color","user_0","displayName","DocumentBadgeDescription","DocumentBadgeProps","useWorkflowContext","useStateBadge","t0","$","_c","id","documentId","metadata","loading","error","states","t1","state","t2","s","find","console","color","t3","title","label","useEffect","ObjectInputProps","getPublishedId","useWorkflowContext","WorkflowSignal","props","$","_c","t0","value","_id","documentId","addId","removeId","t1","t2","t3","renderDefault","EditIcon","Button","useRouter","EditButtonProps","id","type","disabled","EditButton","props","$","_c","t0","undefined","navigateIntent","t1","t2","Flex","Card","Spinner","Preview","SanityDocument","StringInputProps","useSchema","useListeningQuery","Feedback","EditButton","Field","props","$","_c","schema","t0","String","value","t1","t2","params","id","draftId","data","_data","loading","error","t3","Symbol","for","_type","get","schemaType","t4","t5","_id","t6","Card","FunctionComponent","ArrayOfPrimitivesInputProps","useFormValue","useProjectUsers","API_VERSION","UserAssignment","UserAssignmentInput","props","$","_c","t0","Symbol","for","documentId","t1","apiVersion","userList","t2","value","Array","isArray","length","map","_temp","stringValue","t3","String","t4","item","LexoRank","initialRank","lastRankValue","lastRank","parse","min","nextRank","genNext","value","defineField","defineType","Field","UserAssignmentInput","API_VERSION","initialRank","State","states","type","name","title","liveEdit","fields","description","readOnly","options","list","length","map","state","value","id","layout","components","input","initialValue","_","getClient","lastDocOrderRank","apiVersion","fetch","order","of","SanityDocumentWithMetadata","filterItemsAndSort","items","stateId","selectedUsers","selectedSchemaTypes","filter","item","_id","_metadata","state","length","assignees","some","assignee","includes","_type","sort","a","b","aOrderRank","orderRank","bOrderRank","localeCompare","DraggableLocation","useToast","useCallback","useEffect","useState","useClient","useListeningQuery","API_VERSION","SanityDocumentWithMetadata","State","QUERY","WorkflowDocuments","workflowData","data","loading","error","operations","move","draggedId","destination","states","newOrder","Promise","_id","_type","documentId","state","useWorkflowDocuments","schemaTypes","$","_c","toast","t0","Symbol","for","apiVersion","client","t1","t2","t3","params","initialValue","_data","t4","localDocuments","setLocalDocuments","t5","t6","t7","currentLocalData","newLocalDocuments","map","item","_metadata","droppableId","orderRank","optimistic","newStateId","newState","find","s","id","document","d","push","title","status","_rev","patch","ifRevisionId","set","commit","then","res","catch","err","description","message","t8","t9","t10","Box","Flex","Text","useMemo","useCurrentUser","UserAvatar","User","AvatarGroupProps","users","max","AvatarGroup","props","$","_c","currentUser","t0","undefined","len","length","t1","id","find","u","t2","t3","u_0","filter","slice","me","visibleUsers","t4","t5","map","_temp","t6","t7","user","marginRight","AddIcon","Button","Grid","Popover","useClickOutsideEvent","useCallback","useRef","useState","User","AvatarGroup","UserAssignment","UserDisplayProps","userList","assignees","documentId","disabled","UserDisplay","props","$","_c","t0","undefined","buttonRef","popoverRef","isOpen","setIsOpen","t1","Symbol","for","close","t2","open","t3","current","t4","t5","length","filter","u","includes","id","t6","CheckmarkIcon","Box","Button","Text","Tooltip","useToast","useCallback","useClient","handleDeleteMetadata","API_VERSION","CompleteButtonProps","documentId","disabled","CompleteButton","props","$","_c","t0","undefined","t1","Symbol","for","apiVersion","client","toast","t2","event","id","currentTarget","value","handleComplete","t3","t4","useRelativeTime","TimeAgoProps","time","Date","TimeAgo","t0","$","_c","timeAgo","t1","EditIcon","Box","Text","Tooltip","TextWithTone","PreviewValue","SanityDocument","TimeAgo","DraftStatus","props","$","_c","document","updatedAt","_updatedAt","t0","t1","t2","t3","Symbol","for","t4","t5","PublishIcon","Box","Text","Tooltip","TextWithTone","PreviewValue","SanityDocument","TimeAgo","PublishedStatus","props","$","_c","document","updatedAt","_updatedAt","t0","t1","t2","t3","Symbol","for","t4","t5","useEffect","ValidationMarker","useValidationStatus","ValidateProps","documentId","type","onChange","validation","isValidating","Validate","props","$","_c","t0","t1","undefined","t2","t3","ErrorOutlineIcon","WarningOutlineIcon","Box","Text","Tooltip","TextWithTone","ValidationMarker","ValidationStatusProps","validation","ValidationStatus","props","$","_c","t0","t1","undefined","length","t2","some","_temp","hasError","t3","t4","t5","t6","t7","t8","item","level","DragHandleIcon","Box","Card","CardTone","Flex","Stack","useTheme","getTheme_v2","useCallback","useEffect","useMemo","useState","SchemaType","ValidationMarker","useSchema","Preview","SanityDocumentWithMetadata","State","User","UserDisplay","CompleteButton","DraftStatus","PublishedStatus","EditButton","Validate","ValidationStatus","DocumentCardProps","isDragDisabled","isPatching","userRoleCanDrop","isDragging","item","states","toggleInvalidDocumentId","documentId","action","userList","DocumentCard","props","$","_c","t0","_metadata","assignees","t1","t2","undefined","schema","t3","state","t4","s","id","find","theme","isDarkMode","sanity","color","_dark","defaultCardTone","requireValidation","t5","Symbol","for","t6","isValidating","validation","optimisticValidation","setOptimisticValidation","t7","updates","handleValidation","t8","bb0","tone","length","some","_temp","cardTone","t10","t9","_temp2","t11","_temp3","hasError","isLastState","t12","_type","t13","t14","pointerEvents","t15","get","t16","t17","t18","flexShrink","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","_id","t30","t31","t32","t33","t34","t35","t36","v_1","v","level","v_0","Draggable","DraggableStyle","useVirtualizer","VirtualItem","CSSProperties","useCallback","useMemo","useRef","CurrentUser","UserExtended","filterItemsAndSort","SanityDocumentWithMetadata","State","DocumentCard","DocumentListProps","data","invalidDocumentIds","patchingIds","selectedSchemaTypes","selectedUserIds","state","states","toggleInvalidDocumentId","documentId","action","user","userList","userRoleCanDrop","getStyle","draggableStyle","virtualItem","transform","start","draggableTransformY","parseInt","split","position","top","left","width","height","size","DocumentList","props","dataFiltered","length","id","parentRef","virtualizer","count","getScrollElement","current","getItemKey","index","_metadata","estimateSize","overscan","measureElement","element","Element","getBoundingClientRect","overflow","overflowAnchor","scrollBehavior","paddingTop","getTotalSize","getVirtualItems","map","item","assignees","isInvalid","includes","meInAssignees","isDragDisabled","requireAssignment","key","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","style","isDragging","ResetIcon","UserIcon","Button","Card","Flex","Menu","MenuButton","useCallback","useCurrentUser","UserAvatar","useSchema","UserExtended","UserSelectMenu","FiltersProps","uniqueAssignedUsers","selectedUserIds","schemaTypes","selectedSchemaTypes","toggleSelectedUser","userId","resetSelectedUsers","toggleSelectedSchemaType","schemaType","Filters","props","$","_c","t0","undefined","currentUser","schema","t1","id","includes","onAdd","t2","id_0","onRemove","t3","onClear","length","meInUniqueAssignees","find","u","t4","u_0","uniqueAssigneesNotMe","filter","T0","t5","t6","t7","t8","Symbol","for","overflowX","T1","t9","T2","t10","t11","t12","t13","addMe","removeMe","clear","portal","height","map","user","t14","t15","typeName","get","title","icon","t16","t17","Box","Text","Tooltip","StatusProps","text","icon","React","ComponentType","Status","props","$","_c","Icon","t0","t1","t2","InfoOutlineIcon","UserIcon","Badge","BadgeTone","Box","Card","Flex","Text","styled","State","Status","StyledStickyCard","StateTitleProps","state","requireAssignment","userRoleCanDrop","isDropDisabled","draggingFrom","documentCount","StateTitle","props","$","_c","tone","isSource","id","t0","title","t1","t2","t3","t4","t5","LexoRank","generateMiddleValue","ranks","some","rank","firstUndefined","findIndex","firstDefinedAfter","index","firstDefinedBefore","findLastIndex","Error","beforeRank","afterRank","between","middle","Math","floor","generateMultipleOrderRanks","count","start","end","Array","rankStart","min","genNext","rankEnd","max","genPrev","i","sort","a","b","toString","localeCompare","Card","Grid","AnimatePresence","motion","PropsWithChildren","styled","StyledFloatingCard","FloatingCard","t0","$","_c","children","t1","Array","isArray","some","Boolean","childrenHaveValues","t2","opacity","t3","Button","useToast","LexoRank","useCallback","useMemo","useClient","UserExtended","API_VERSION","generateMultipleOrderRanks","SanityDocumentWithMetadata","State","FloatingCard","VerifyProps","data","userList","states","Verify","props","$","_c","t0","Symbol","for","apiVersion","client","toast","t1","length","reduce","acc","cur","documentId","state","_metadata","stateExists","find","s","id","push","documentsWithoutValidMetadataIds","t2","acc_0","cur_0","documentId_0","assignees","allAssigneesExist","every","a","u","documentsWithInvalidUserIds","t3","_temp","documentsWithoutOrderIds","t4","acc_2","cur_2","documentId_2","orderRank","orderRank_0","filter","d","documentsWithDuplicatedOrderIds","t5","ids","title","status","tx","item","documentId_3","patch","set","transaction","commit","correctDocuments","t6","ids_0","tx_0","item_0","documentId_4","assignees_0","d_0","_id","validAssignees","a_0","u_0","removeUsersFromDocuments","t7","ids_1","firstOrder","secondOrder","slice","map","_temp2","minLexo","parse","undefined","maxLexo","ranks","tx_1","index","toString","addOrderToDocuments","t8","ids_2","ranks_0","tx_2","index_0","resetOrderOfAllDocuments","t9","_temp3","_temp4","orphanedMetadataDocumentIds","t10","tx_3","forEach","delete","handleOrphans","t11","t12","t13","t14","_temp5","t15","t16","doc_1","String","doc","doc_0","d_1","acc_1","cur_1","documentId_1","DragDropContext","DraggableChildrenFn","DragStart","Droppable","DropResult","Box","Card","Container","Flex","Grid","Spinner","useTheme","useToast","getTheme_v2","LexoRank","useCallback","useMemo","useState","Tool","useCurrentUser","Feedback","useProjectUsers","API_VERSION","arraysContainMatchingString","filterItemsAndSort","useWorkflowDocuments","State","WorkflowConfig","DocumentCard","DocumentList","Filters","StateTitle","Verify","WorkflowToolProps","tool","WorkflowTool","props","$","_c","t0","options","schemaTypes","t1","states","t2","t3","undefined","t4","theme","isDarkMode","sanity","color","_dark","defaultCardTone","toast","t5","Symbol","for","apiVersion","userList","user","userRoleNames","roles","length","map","_temp","workflowData","operations","t6","patchingIds","setPatchingIds","data","loading","error","move","t7","undroppableStates","setUndroppableStates","draggingFrom","setDraggingFrom","t8","start","draggableId","source","droppableId","currentStateId","document","find","item","_metadata","documentId","state","s","id","undroppableStateIds","statesThatRequireAssignmentIds","filter","_temp2","_temp3","documentAssignees","assignees","userIsAssignedToDocument","includes","push","statesThatCannotBeTransitionedToIds","transitions","s_2","_temp4","undroppableExceptSelf","handleDragStart","t9","result","draggableId_0","source_0","destination","index","destinationStateItems","item_0","destinationStateIndex","findIndex","s_4","globalStateMinimumRank","orderRank","globalStateMaximumRank","newOrder","min","toString","genNext","firstItemOrderRank","shift","parse","genPrev","between","lastItemOrderRank","pop","max","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","status","title","ids","id_0","handleDragEnd","t10","uniqueUserIds","reduce","_temp5","u","uniqueAssignedUsers","t11","_temp6","selectedUserIds","setSelectedUserIds","t12","userId","prev","u_1","toggleSelectedUser","t13","resetSelectedUsers","selectedSchemaTypes","setSelectedSchemaTypes","t14","schemaType","prev_0","u_2","toggleSelectedSchemaType","t15","invalidDocumentIds","setInvalidDocumentIds","t16","docId","action","prev_1","id_1","toggleInvalidDocumentId","t17","provided","snapshot","rubric","item_2","doc","draggableProps","dragHandleProps","innerRef","isDragging","Clone","t18","T0","t19","t20","t21","t22","T1","T2","t23","t24","t25","state_0","stateIndex","userRoleCanDrop","isDropDisabled","requireAssignment","provided_0","snapshot_0","isDraggingOver","t26","t27","t28","u_0","acc","item_1","newAssignees","a","s_3","s_1","s_0","r","name","SplitVerticalIcon","Tool","WorkflowTool","WorkflowConfig","WorkflowToolConfig","options","workflowTool","name","title","component","icon","definePlugin","isObjectInputProps","Plugin","defineUpdateWorkflow","useAssignWorkflow","useBeginWorkflow","useCompleteWorkflow","useAssigneesBadge","useStateBadge","WorkflowProvider","WorkflowSignal","DEFAULT_CONFIG","metadata","workflowTool","WorkflowConfig","workflow","config","schemaTypes","states","length","Error","useUpdateActions","map","state","name","schema","types","studio","components","layout","props","form","input","id","includes","schemaType","renderDefault","document","actions","prev","context","badges","documentId","tools"],"sources":["../src/types/index.ts","../src/constants/index.ts","../src/hooks/useWorkflowMetadata.tsx","../src/components/WorkflowContext.tsx","../src/helpers/arraysContainMatchingString.ts","../src/actions/defineUpdateWorkflow.tsx","../src/components/UserAssignment.tsx","../src/actions/useAssignWorkflow.tsx","../src/actions/useBeginWorkflow.tsx","../src/actions/useCompleteWorkflow.tsx","../src/badges/useAssigneesBadge.tsx","../src/badges/useStateBadge.tsx","../src/components/WorkflowSignal.tsx","../src/components/DocumentCard/EditButton.tsx","../src/components/DocumentCard/Field.tsx","../src/components/UserAssignmentInput.tsx","../src/helpers/initialRank.ts","../src/schema/workflow/workflow.metadata.ts","../src/helpers/filterItemsAndSort.ts","../src/hooks/useWorkflowDocuments.tsx","../src/components/DocumentCard/AvatarGroup.tsx","../src/components/UserDisplay.tsx","../src/components/DocumentCard/CompleteButton.tsx","../src/components/DocumentCard/core/TimeAgo.tsx","../src/components/DocumentCard/core/DraftStatus.tsx","../src/components/DocumentCard/core/PublishedStatus.tsx","../src/components/DocumentCard/Validate.tsx","../src/components/DocumentCard/ValidationStatus.tsx","../src/components/DocumentCard/index.tsx","../src/components/DocumentList.tsx","../src/components/Filters.tsx","../src/components/StateTitle/Status.tsx","../src/components/StateTitle/index.tsx","../src/helpers/generateMultipleOrderRanks.ts","../src/components/FloatingCard.tsx","../src/components/Verify.tsx","../src/components/WorkflowTool.tsx","../src/tools/index.ts","../src/plugin.tsx"],"sourcesContent":["import type {SanityDocumentLike} from 'sanity'\n\nexport type State = {\n  id: string\n  transitions: string[]\n  title: string\n  roles?: string[]\n  requireAssignment?: boolean\n  requireValidation?: boolean\n  // From document badges\n  color?: 'primary' | 'success' | 'warning' | 'danger'\n}\n\nexport type StateCheck<Id, States> = {\n  id: Id\n  // Transitions is an array of State ids\n  transitions?: States extends {id: infer Id2}[] ? Id2[] : never\n} & State\n\nexport type WorkflowConfig = {\n  schemaTypes: string[]\n  states?: State[]\n}\n\nexport function defineStates<Id extends string, States extends StateCheck<Id, States>[]>(\n  states: States,\n): States {\n  return states\n}\n\nexport type User = {\n  createdAt: string\n  displayName: string\n  email: string\n  familyName: string\n  givenName: string\n  id: string\n  imageUrl: string\n  isCurrentUser: boolean\n  middleName: string\n  projectId: string\n  provider: string\n  sanityUserId: string\n  updatedAt: string\n}\n\nexport type Metadata = SanityDocumentLike & {\n  _rev: string\n  assignees: string[]\n  documentId: string\n  state: string\n  orderRank: string\n}\n\nexport type KeyedMetadata = {[key: string]: Metadata}\n\nexport type SanityDocumentWithMetadata = {\n  _metadata: Metadata\n  _id: string\n  _type: string\n  _rev: string\n  _updatedAt: string\n}\n","import {defineStates, type WorkflowConfig} from '../types'\n\nexport const API_VERSION = `2023-01-01`\n\nexport const DEFAULT_CONFIG: Required<WorkflowConfig> = {\n  schemaTypes: [],\n  states: defineStates([\n    {\n      id: 'inReview',\n      title: 'In review',\n      color: 'primary',\n      roles: ['editor', 'administrator'],\n      transitions: ['changesRequested', 'approved'],\n    },\n    {\n      id: 'changesRequested',\n      title: 'Changes requested',\n      color: 'warning',\n      roles: ['editor', 'administrator'],\n      transitions: ['approved'],\n    },\n    {\n      id: 'approved',\n      title: 'Approved',\n      color: 'success',\n      roles: ['administrator'],\n      transitions: ['changesRequested'],\n      requireAssignment: true,\n    },\n  ]),\n}\n","import {useMemo} from 'react'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {KeyedMetadata, Metadata} from '../types'\n\n/**\n * Takes the published ID of documents and return the metadata for those documents.\n *\n * @param ids Source document published IDs\n */\nexport function useWorkflowMetadata(ids: string[]): {\n  data: KeyedMetadata\n  loading: boolean\n  error: unknown\n} {\n  const {\n    data: _rawData,\n    loading,\n    error,\n  } = useListeningQuery<Metadata[]>(\n    `*[_type == \"workflow.metadata\" && documentId in $ids]{\n      _id,\n      _type,\n      _rev,\n      assignees,\n      documentId,\n      state,\n      orderRank\n    }`,\n    {\n      params: {ids},\n      options: {apiVersion: API_VERSION},\n    },\n  )\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const rawData = _rawData as Metadata[]\n\n  const keyedMetadata = useMemo(() => {\n    if (!rawData || rawData.length === 0) return {}\n\n    const acc: KeyedMetadata = {}\n    for (const item of rawData) {\n      acc[item.documentId] = item\n    }\n    return acc\n  }, [rawData])\n\n  return {data: keyedMetadata, loading, error}\n}\n","import {useCallback, useContext, useMemo, useState, createContext} from 'react'\nimport type {LayoutProps} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport type {KeyedMetadata, WorkflowConfig} from '../types'\n\nexport type WorkflowContextValue = Required<WorkflowConfig> & {\n  data: KeyedMetadata\n  loading: boolean\n  error: unknown\n  ids: string[]\n  addId: (id: string) => void\n  removeId: (id: string) => void\n}\n\nconst WorkflowContext = createContext<WorkflowContextValue>({\n  data: {},\n  loading: false,\n  error: false,\n  ids: [],\n  addId: () => null,\n  removeId: () => null,\n  ...DEFAULT_CONFIG,\n})\n\nexport function useWorkflowContext(id?: string) {\n  const current = useContext(WorkflowContext)\n\n  return {...current, metadata: id ? current.data[id] : null}\n}\n\ntype WorkflowProviderProps = LayoutProps & Required<WorkflowConfig>\n\n/**\n * This Provider wraps the Studio and provides the workflow context to document actions and badges.\n * This is so individual actions and badges do not need to all register their own listeners.\n * Instead, each document \"signals\" its ID up to the provider, which then registers a single listener\n * This is performed inside of a component loaded at the root level of the Document Form\n */\nexport function WorkflowProvider(props: WorkflowProviderProps) {\n  const [ids, setIds] = useState<string[]>([])\n  const addId = useCallback(\n    (id: string) => setIds((current) => (current.includes(id) ? current : [...current, id])),\n    [],\n  )\n  const removeId = useCallback(\n    (id: string) => setIds((current) => current.filter((i) => i !== id)),\n    [],\n  )\n  const {data, loading, error} = useWorkflowMetadata(ids)\n\n  const contextValue = useMemo(\n    () => ({\n      data,\n      loading,\n      error,\n      ids,\n      addId,\n      removeId,\n      states: props.states,\n      schemaTypes: props.schemaTypes,\n    }),\n    [data, loading, error, ids, addId, removeId, props.states, props.schemaTypes],\n  )\n\n  return (\n    <WorkflowContext.Provider value={contextValue}>\n      {props.renderDefault(props)}\n    </WorkflowContext.Provider>\n  )\n}\n","export function arraysContainMatchingString(one: string[], two: string[]): boolean {\n  return one.some((item) => two.includes(item))\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {useToast} from '@sanity/ui'\nimport {\n  type DocumentActionDescription,\n  useCurrentUser,\n  useValidationStatus,\n  type DocumentActionProps,\n  useClient,\n} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport type {State} from '../types'\n\nfunction useUpdateWorkflow(\n  {id, type}: DocumentActionProps,\n  actionState: State,\n): DocumentActionDescription | null {\n  const user = useCurrentUser()\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n  const currentUser = useCurrentUser()\n\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const currentState = states.find((s) => s.id === metadata?.state)\n  const {assignees = []} = metadata ?? {}\n\n  // TODO: Shouldn't the document action props contain this?\n  const {validation, isValidating} = useValidationStatus(id, type, false)\n  const hasValidationErrors =\n    currentState?.requireValidation &&\n    !isValidating &&\n    validation?.length > 0 &&\n    validation.find((v) => v.level === 'error')\n\n  if (error) {\n    console.error(error)\n  }\n\n  const onHandle = (documentId: string, newState: State) => {\n    client\n      .patch(`workflow-metadata.${documentId}`)\n      .set({state: newState.id})\n      .commit()\n      .then(() => {\n        toast.push({\n          status: 'success',\n          title: `Document state now \"${newState.title}\"`,\n        })\n        return undefined\n      })\n      .catch((err) => {\n        console.error(err)\n        toast.push({\n          status: 'error',\n          title: `Document state update failed`,\n        })\n      })\n  }\n\n  // Remove button if:\n  // Document is not in Workflow OR\n  // The current State is the same as this actions State\n  if (!metadata || (currentState && currentState.id === actionState.id)) {\n    return null\n  }\n\n  const currentStateIndex = states.findIndex((s) => s.id === currentState?.id)\n  const actionStateIndex = states.findIndex((s) => s.id === actionState.id)\n  const direction = actionStateIndex > currentStateIndex ? 'promote' : 'demote'\n  const DirectionIcon = direction === 'promote' ? ArrowRightIcon : ArrowLeftIcon\n  const directionLabel = direction === 'promote' ? 'Promote' : 'Demote'\n\n  const userRoleCanUpdateState =\n    user?.roles?.length && actionState?.roles?.length\n      ? // If the Action state is limited to specific roles\n        // check that the current user has one of those roles\n        arraysContainMatchingString(\n          user.roles.map((r) => r.name),\n          actionState.roles,\n        )\n      : // No roles specified on the next state, so anyone can update\n        actionState?.roles?.length !== 0\n\n  const actionStateIsAValidTransition =\n    currentState?.id && currentState?.transitions?.length\n      ? // If the Current State limits transitions to specific States\n        // Check that the Action State is in Current State's transitions array\n        currentState.transitions.includes(actionState.id)\n      : // Otherwise this isn't a problem\n        true\n\n  const userAssignmentCanUpdateState = actionState.requireAssignment\n    ? // If the Action State requires assigned users\n      // Check the current user ID is in the assignees array\n      currentUser && assignees?.length && assignees.includes(currentUser.id)\n    : // Otherwise this isn't a problem\n      true\n\n  let title = `${directionLabel} State to \"${actionState.title}\"`\n\n  if (!userRoleCanUpdateState) {\n    title = `Your User role cannot ${directionLabel} State to \"${actionState.title}\"`\n  } else if (!actionStateIsAValidTransition) {\n    title = `You cannot ${directionLabel} State to \"${actionState.title}\" from \"${currentState?.title}\"`\n  } else if (!userAssignmentCanUpdateState) {\n    title = `You must be assigned to the document to ${directionLabel} State to \"${actionState.title}\"`\n  } else if (currentState?.requireValidation && isValidating) {\n    title = `Document is validating, cannot ${directionLabel} State to \"${actionState.title}\"`\n  } else if (hasValidationErrors) {\n    title = `Document has validation errors, cannot ${directionLabel} State to \"${actionState.title}\"`\n  }\n\n  return {\n    icon: DirectionIcon,\n    disabled:\n      loading ||\n      Boolean(error) ||\n      (currentState?.requireValidation && isValidating) ||\n      Boolean(hasValidationErrors) ||\n      !currentState ||\n      !userRoleCanUpdateState ||\n      !actionStateIsAValidTransition ||\n      !userAssignmentCanUpdateState,\n    title,\n    label: actionState.title,\n    onHandle: () => onHandle(id, actionState),\n  }\n}\n\n// @TODO memoize this call, so the defined useUpdateWorkflow can persist if actionState is the same\nexport function defineUpdateWorkflow(\n  actionState: State,\n): (props: DocumentActionProps) => DocumentActionDescription | null {\n  return (props: DocumentActionProps) => useUpdateWorkflow(props, actionState)\n}\n","import {useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useClient} from 'sanity'\nimport {UserSelectMenu} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {User} from '../types'\n\ntype UserAssignmentProps = {\n  userList: User[]\n  assignees: string[]\n  documentId: string\n}\n\nexport default function UserAssignment(props: UserAssignmentProps) {\n  const {assignees, userList, documentId} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  const addAssignee = useCallback(\n    (userId: string) => {\n      const user = userList.find((u) => u.id === userId)\n\n      if (!userId || !user) {\n        return toast.push({\n          status: 'error',\n          title: 'Could not find User',\n        })\n      }\n\n      return client\n        .patch(`workflow-metadata.${documentId}`)\n        .setIfMissing({assignees: []})\n        .insert(`after`, `assignees[-1]`, [userId])\n        .commit()\n        .then(() => {\n          return toast.push({\n            title: `Added ${user.displayName} to assignees`,\n            status: 'success',\n          })\n        })\n        .catch((err) => {\n          console.error(err)\n\n          return toast.push({\n            title: `Failed to add assignee`,\n            description: userId,\n            status: 'error',\n          })\n        })\n    },\n    [documentId, client, toast, userList],\n  )\n\n  const removeAssignee = useCallback(\n    (userId: string) => {\n      const user = userList.find((u) => u.id === userId)\n\n      if (!userId || !user) {\n        return toast.push({\n          status: 'error',\n          title: 'Could not find User',\n        })\n      }\n\n      return client\n        .patch(`workflow-metadata.${documentId}`)\n        .unset([`assignees[@ == \"${userId}\"]`])\n        .commit()\n        .then(() => {\n          return toast.push({\n            title: `Removed ${user.displayName} from assignees`,\n            status: 'success',\n          })\n        })\n        .catch((err) => {\n          console.error(err)\n\n          return toast.push({\n            title: `Failed to remove assignee`,\n            description: documentId,\n            status: 'error',\n          })\n        })\n    },\n    [client, toast, documentId, userList],\n  )\n\n  const clearAssignees = useCallback(() => {\n    return client\n      .patch(`workflow-metadata.${documentId}`)\n      .unset([`assignees`])\n      .commit()\n      .then(() => {\n        return toast.push({\n          title: `Cleared assignees`,\n          status: 'success',\n        })\n      })\n      .catch((err) => {\n        console.error(err)\n\n        return toast.push({\n          title: `Failed to clear assignees`,\n          description: documentId,\n          status: 'error',\n        })\n      })\n  }, [client, toast, documentId])\n\n  return (\n    <UserSelectMenu\n      style={{maxHeight: 300}}\n      value={assignees || []}\n      userList={userList}\n      onAdd={addAssignee}\n      onClear={clearAssignees}\n      onRemove={removeAssignee}\n    />\n  )\n}\n","import {UsersIcon} from '@sanity/icons/Users'\nimport {useState} from 'react'\nimport type {DocumentActionDescription, DocumentActionProps} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useAssignWorkflow({id}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error} = useWorkflowContext(id)\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  if (error) {\n    console.error(error)\n  }\n\n  if (!metadata) {\n    return null\n  }\n\n  return {\n    icon: UsersIcon,\n    disabled: !metadata || loading || Boolean(error),\n    label: `Assign`,\n    title: metadata ? null : `Document is not in Workflow`,\n    dialog: isDialogOpen && {\n      type: 'popover',\n      onClose: () => {\n        setDialogOpen(false)\n      },\n      content: (\n        <UserAssignment\n          userList={userList}\n          assignees={metadata?.assignees?.length > 0 ? metadata.assignees : []}\n          documentId={id}\n        />\n      ),\n    },\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n  }\n}\n","import {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useState} from 'react'\nimport {type DocumentActionDescription, type DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useBeginWorkflow({\n  id,\n  draft,\n}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n  const [beginning, setBeginning] = useState(false)\n  const [complete, setComplete] = useState(false)\n\n  if (error) {\n    console.error(error)\n  }\n\n  const handle = useCallback(async () => {\n    setBeginning(true)\n    const lowestOrderFirstState = await client.fetch(\n      /* groq */ `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n      {state: states?.[0]?.id},\n    )\n    await client.createIfNotExists({\n      _id: `workflow-metadata.${id}`,\n      _type: `workflow.metadata`,\n      documentId: id,\n      state: states?.[0]?.id,\n      orderRank: lowestOrderFirstState\n        ? LexoRank.parse(lowestOrderFirstState).genNext().toString()\n        : LexoRank.min().toString(),\n    })\n    toast.push({\n      status: 'success',\n      title: 'Workflow started',\n      description: `Document is now \"${states?.[0]?.title}\"`,\n    })\n    setBeginning(false)\n    // Optimistically remove action\n    setComplete(true)\n  }, [id, states, client, toast])\n\n  if (!draft || complete || metadata) {\n    return null\n  }\n\n  return {\n    icon: SplitVerticalIcon,\n    disabled: metadata || loading || Boolean(error) || beginning || complete,\n    label: beginning ? `Beginning...` : `Begin Workflow`,\n    onHandle: handle,\n  }\n}\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {type ToastContextValue, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n  type DocumentActionDescription,\n  type DocumentActionProps,\n  type SanityClient,\n  useClient,\n} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport const handleDeleteMetadata = async (\n  client: SanityClient,\n  toast: ToastContextValue,\n  id: string,\n) => {\n  try {\n    await client.delete(`workflow-metadata.${id}`)\n    toast.push({\n      status: 'success',\n      title: 'Workflow completed',\n    })\n  } catch (error) {\n    console.error(error)\n    toast.push({\n      status: 'error',\n      title: 'Could not complete Workflow',\n    })\n  }\n}\n\nexport function useCompleteWorkflow({id}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  if (error) {\n    console.error(error)\n  }\n\n  const handle = useCallback(async () => {\n    await handleDeleteMetadata(client, toast, id)\n  }, [client, toast, id])\n\n  if (!metadata) {\n    return null\n  }\n\n  const state = states.find((s) => s.id === metadata.state)\n  const isLastState = state?.id === states?.[states?.length - 1]?.id\n\n  return {\n    icon: CheckmarkIcon,\n    disabled: loading || Boolean(error) || !isLastState,\n    label: `Complete Workflow`,\n    title: isLastState\n      ? `Removes the document from the Workflow process`\n      : `Cannot remove from workflow until in the last state`,\n    onHandle: async () => {\n      await handle()\n    },\n    tone: 'positive',\n  }\n}\n","import {type DocumentBadgeDescription, type DocumentBadgeProps, useCurrentUser} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useAssigneesBadge({\n  id: documentId,\n}: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const currentUser = useCurrentUser()\n  const {metadata, loading, error} = useWorkflowContext(documentId)\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  if (loading || error || !metadata) {\n    if (error) {\n      console.error(error)\n    }\n\n    return null\n  }\n\n  if (!metadata?.assignees?.length) {\n    return {\n      label: 'Unassigned',\n    }\n  }\n\n  const {assignees} = metadata ?? []\n  const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n  const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n  const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n  const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n  let label\n\n  if (hasMe && assigneesCount === 0) {\n    label = 'Assigned to Me'\n  } else if (hasMe && assigneesCount > 0) {\n    label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n  } else {\n    label = `${assigneesCount} assigned`\n  }\n\n  return {\n    label,\n    title,\n    color: 'primary',\n  }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\n\nexport function useStateBadge({\n  id: documentId,\n}: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(documentId)\n  const state = states.find((s) => s.id === metadata?.state)\n\n  if (loading || error) {\n    if (error) {\n      console.error(error)\n    }\n\n    return null\n  }\n\n  if (!state) {\n    return null\n  }\n\n  return {\n    label: state.title,\n    // title: state.title,\n    color: state?.color,\n  }\n}\n","import {useEffect} from 'react'\nimport {type ObjectInputProps, getPublishedId} from 'sanity'\n\nimport {useWorkflowContext} from './WorkflowContext'\n\n// This component is loaded at the root level of the Document Form\n// It is used to signal the document ID to the WorkflowProvider\nexport default function WorkflowSignal(props: ObjectInputProps) {\n  const documentId = props?.value?.['_id'] ? getPublishedId(props.value['_id']) : null\n\n  const {addId, removeId} = useWorkflowContext()\n\n  useEffect(() => {\n    // On mount, add  to the query of listening documents\n    if (documentId) {\n      addId(documentId)\n    }\n\n    // On unmount, remove from the query of listening documents\n    return () => {\n      if (documentId) {\n        removeId(documentId)\n      }\n    }\n  }, [documentId, addId, removeId])\n\n  return props.renderDefault(props)\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Button} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\n\ntype EditButtonProps = {\n  id: string\n  type: string\n  disabled?: boolean\n}\n\nexport default function EditButton(props: EditButtonProps) {\n  const {id, type, disabled = false} = props\n  const {navigateIntent} = useRouter()\n\n  return (\n    <Button\n      onClick={() => navigateIntent('edit', {id, type})}\n      mode=\"ghost\"\n      fontSize={1}\n      padding={2}\n      tabIndex={-1}\n      icon={EditIcon}\n      text=\"Edit\"\n      disabled={disabled}\n    />\n  )\n}\n","import {Flex, Card, Spinner} from '@sanity/ui'\nimport {Preview, type SanityDocument, type StringInputProps, useSchema} from 'sanity'\nimport {useListeningQuery, Feedback} from 'sanity-plugin-utils'\n\nimport EditButton from './EditButton'\n\n// TODO: Update this to use the same component as the Tool\nexport default function Field(props: StringInputProps) {\n  const schema = useSchema()\n  const {\n    data: _data,\n    loading,\n    error,\n  } = useListeningQuery<SanityDocument>(`*[_id in [$id, $draftId]]|order(_updatedAt)[0]`, {\n    params: {\n      id: String(props.value),\n      draftId: `drafts.${String(props.value)}`,\n    },\n  })\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const data = _data as SanityDocument\n\n  if (loading) {\n    return <Spinner />\n  }\n\n  const schemaType = schema.get(data?._type ?? ``)\n\n  if (error || !data?._type || !schemaType) {\n    return <Feedback tone=\"critical\" title=\"Error with query\" />\n  }\n\n  return (\n    <Card border padding={2}>\n      <Flex align=\"center\" justify=\"space-between\" gap={2}>\n        <Preview layout=\"default\" value={data} schemaType={schemaType} />\n        <EditButton id={data._id} type={data._type} />\n      </Flex>\n    </Card>\n  )\n}\n","import {Card} from '@sanity/ui'\nimport {type FunctionComponent} from 'react'\nimport {type ArrayOfPrimitivesInputProps, useFormValue} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from './UserAssignment'\n\nconst UserAssignmentInput: FunctionComponent<ArrayOfPrimitivesInputProps> = (props) => {\n  const documentId = useFormValue([`documentId`])\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  const stringValue =\n    Array.isArray(props?.value) && props?.value?.length\n      ? props.value.map((item) => String(item))\n      : []\n\n  return (\n    <Card border padding={1}>\n      <UserAssignment userList={userList} assignees={stringValue} documentId={String(documentId)} />\n    </Card>\n  )\n}\n\nexport default UserAssignmentInput\n","import {LexoRank} from 'lexorank'\n\n// Use in initial value field by passing in the rank value of the last document\n// If no value passed, generate a sensibly low rank\nexport default function initialRank(lastRankValue = ``): string {\n  const lastRank =\n    lastRankValue && typeof lastRankValue === 'string'\n      ? LexoRank.parse(lastRankValue)\n      : LexoRank.min()\n  const nextRank = lastRank.genNext().genNext()\n\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  return (nextRank as any).value\n}\n","import {defineField, defineType} from 'sanity'\n\nimport Field from '../../components/DocumentCard/Field'\nimport UserAssignmentInput from '../../components/UserAssignmentInput'\nimport {API_VERSION} from '../../constants'\nimport initialRank from '../../helpers/initialRank'\nimport type {State} from '../../types'\n\nexport default (states: State[]) =>\n  defineType({\n    type: 'document',\n    name: 'workflow.metadata',\n    title: 'Workflow metadata',\n    liveEdit: true,\n    fields: [\n      defineField({\n        name: 'state',\n        description: `The current \"State\" of the document. Field is read only as changing it would not fire the state's \"operation\" setting. These are fired in the Document Actions and in the custom Tool.`,\n        readOnly: true,\n        type: 'string',\n        options: {\n          list: states.length\n            ? states.map((state) => ({\n                value: state.id,\n                title: state.title,\n              }))\n            : [],\n          layout: 'radio',\n        },\n      }),\n      defineField({\n        name: 'documentId',\n        title: 'Document ID',\n        description:\n          'Used to help identify the target document that this metadata is tracking state for.',\n        type: 'string',\n        readOnly: true,\n        components: {\n          input: Field,\n        },\n      }),\n      defineField({\n        name: 'orderRank',\n        description: 'Used to maintain order position of cards in the Tool.',\n        type: 'string',\n        readOnly: true,\n        initialValue: async (_, {getClient}) => {\n          const lastDocOrderRank = await getClient({\n            apiVersion: API_VERSION,\n          }).fetch(/* groq */ `*[_type == $type]|order(@[$order] desc)[0][$order]`, {\n            order: `orderRank`,\n            type: `workflow.metadata`,\n          })\n\n          return initialRank(lastDocOrderRank)\n        },\n      }),\n      defineField({\n        type: 'array',\n        name: 'assignees',\n        of: [{type: 'string'}],\n        components: {\n          input: UserAssignmentInput,\n        },\n      }),\n    ],\n  })\n","import type {SanityDocumentWithMetadata} from '../types'\n\nexport function filterItemsAndSort(\n  items: SanityDocumentWithMetadata[],\n  stateId: string,\n  selectedUsers: string[] = [],\n  selectedSchemaTypes: null | string[] = [],\n): SanityDocumentWithMetadata[] {\n  return (\n    items\n      // Only items that have existing documents\n      .filter((item) => item?._id)\n      // Only items of this state\n      .filter((item) => item?._metadata?.state === stateId)\n      // Only items with selected users, if the document has any assigned users\n      .filter((item) =>\n        selectedUsers.length && item._metadata?.assignees?.length\n          ? item._metadata?.assignees.some((assignee) => selectedUsers.includes(assignee))\n          : !selectedUsers.length,\n      )\n      // Only items of selected schema types, if any are selected\n      .filter((item) => {\n        if (!selectedSchemaTypes) {\n          return true\n        }\n\n        return selectedSchemaTypes.length ? selectedSchemaTypes.includes(item._type) : false\n      })\n      // Sort by metadata orderRank, a string field\n      .sort((a, b) => {\n        const aOrderRank = a._metadata?.orderRank || '0'\n        const bOrderRank = b._metadata?.orderRank || '0'\n\n        return aOrderRank.localeCompare(bOrderRank)\n      })\n  )\n}\n","import type {DraggableLocation} from '@hello-pangea/dnd'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {useClient} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {SanityDocumentWithMetadata, State} from '../types'\n\nconst QUERY = /* groq */ `*[_type == \"workflow.metadata\"]|order(orderRank){\n  \"_metadata\": {\n    _rev,\n    assignees,\n    documentId,\n    state,\n    orderRank,\n    \"draftDocumentId\": \"drafts.\" + documentId,\n  }\n}{\n  ...,\n  ...(\n    *[_id == ^._metadata.documentId || _id == ^._metadata.draftDocumentId]|order(_updatedAt)[0]{\n      _id,\n      _type,\n      _rev,\n      _updatedAt\n    }\n  )\n}`\n\ntype WorkflowDocuments = {\n  workflowData: {\n    data: SanityDocumentWithMetadata[]\n    loading: boolean\n    error: unknown\n  }\n  operations: {\n    move: (\n      draggedId: string,\n      destination: DraggableLocation,\n      states: State[],\n      newOrder: string,\n    ) => Promise<{_id: string; _type: string; documentId: string; state: State} | null>\n  }\n}\n\nexport function useWorkflowDocuments(schemaTypes: string[]): WorkflowDocuments {\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n\n  // Get and listen to changes on documents + workflow metadata documents\n  const {\n    data: _data,\n    loading,\n    error,\n  } = useListeningQuery<SanityDocumentWithMetadata[]>(QUERY, {\n    params: {schemaTypes},\n    initialValue: [],\n  })\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const data = _data as SanityDocumentWithMetadata[]\n\n  const [localDocuments, setLocalDocuments] = useState<SanityDocumentWithMetadata[]>([])\n\n  useEffect(() => {\n    if (data) {\n      // Fix this later\n      // oxlint-disable-next-line react/react-compiler\n      setLocalDocuments(data)\n    }\n  }, [data])\n\n  const move = useCallback(\n    async (\n      draggedId: string,\n      destination: DraggableLocation,\n      states: State[],\n      newOrder: string,\n    ) => {\n      // Optimistic update\n      const currentLocalData = localDocuments\n      const newLocalDocuments = localDocuments.map((item) => {\n        if (item?._metadata?.documentId === draggedId) {\n          return {\n            ...item,\n            _metadata: {\n              ...item._metadata,\n              state: destination.droppableId,\n              orderRank: newOrder,\n              // This value won't be written to the document\n              // It's done so that un/publish operations don't happen twice\n              // Because a moved document's card will update once optimistically\n              // and then again when the document is updated\n              optimistic: true,\n            },\n          }\n        }\n\n        return item\n      })\n\n      setLocalDocuments(newLocalDocuments)\n\n      // Now client-side update\n      const newStateId = destination.droppableId\n      const newState = states.find((s) => s.id === newStateId)\n      const document = localDocuments.find((d) => d?._metadata?.documentId === draggedId)\n\n      if (!newState?.id) {\n        toast.push({\n          title: `Could not find target state ${newStateId}`,\n          status: 'error',\n        })\n        return null\n      }\n\n      if (!document) {\n        toast.push({\n          title: `Could not find dragged document in data`,\n          status: 'error',\n        })\n        return null\n      }\n\n      // We need to know if it's a draft or not\n      const {_id, _type} = document\n\n      // Metadata + useDocumentOperation always uses Published id\n      const {documentId, _rev} = document._metadata || {}\n\n      await client\n        .patch(`workflow-metadata.${documentId}`)\n        .ifRevisionId(_rev)\n        .set({state: newStateId, orderRank: newOrder})\n        .commit()\n        .then((res) => {\n          toast.push({\n            title:\n              newState.id === document._metadata.state\n                ? `Reordered in \"${newState?.title ?? newStateId}\"`\n                : `Moved to \"${newState?.title ?? newStateId}\"`,\n            status: 'success',\n          })\n          return res\n        })\n        .catch((err) => {\n          // Revert optimistic update\n          setLocalDocuments(currentLocalData)\n\n          toast.push({\n            title: `Failed to move to \"${newState?.title ?? newStateId}\"`,\n            description: err.message,\n            status: 'error',\n          })\n          return null\n        })\n\n      // Send back to the workflow board so a document update can happen\n      return {_id, _type, documentId, state: newState}\n    },\n    [client, toast, localDocuments],\n  )\n\n  return {\n    workflowData: {data: localDocuments, loading, error},\n    operations: {move},\n  }\n}\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {useCurrentUser, UserAvatar} from 'sanity'\n\nimport type {User} from '../../types'\n\ntype AvatarGroupProps = {\n  users: User[]\n  max?: number\n}\n\nexport default function AvatarGroup(props: AvatarGroupProps) {\n  const currentUser = useCurrentUser()\n  const {users, max = 4} = props\n\n  const len = users?.length\n  const {me, visibleUsers} = useMemo(() => {\n    return {\n      me: currentUser?.id ? users.find((u) => u.id === currentUser.id) : undefined,\n      visibleUsers: users.filter((u) => u.id !== currentUser?.id).slice(0, max - 1),\n    }\n  }, [users, max, currentUser])\n\n  if (!users?.length) {\n    return null\n  }\n\n  return (\n    <Flex align=\"center\" gap={1}>\n      {me ? <UserAvatar user={me} /> : null}\n      {visibleUsers.map((user) => (\n        <Box key={user.id} style={{marginRight: -8}}>\n          <UserAvatar user={user} />\n        </Box>\n      ))}\n      {len > max && (\n        <Box paddingLeft={2}>\n          <Text size={1}>+{len - max}</Text>\n        </Box>\n      )}\n    </Flex>\n  )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Grid, Popover, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useRef, useState} from 'react'\n\nimport type {User} from '../types'\nimport AvatarGroup from './DocumentCard/AvatarGroup'\nimport UserAssignment from './UserAssignment'\n\ntype UserDisplayProps = {\n  userList: User[]\n  assignees: string[]\n  documentId: string\n  disabled?: boolean\n}\n\nexport default function UserDisplay(props: UserDisplayProps) {\n  const {assignees, userList, documentId, disabled = false} = props\n\n  const buttonRef = useRef<HTMLButtonElement | null>(null)\n  const popoverRef = useRef<HTMLDivElement | null>(null)\n  const [isOpen, setIsOpen] = useState(false)\n\n  const close = useCallback(() => setIsOpen(false), [])\n  const open = useCallback(() => setIsOpen(true), [])\n\n  useClickOutsideEvent(close, () => [buttonRef.current, popoverRef.current])\n\n  return (\n    <Popover\n      ref={popoverRef}\n      content={<UserAssignment userList={userList} assignees={assignees} documentId={documentId} />}\n      portal\n      open={isOpen}\n    >\n      {!assignees || assignees.length === 0 ? (\n        <Button\n          ref={buttonRef}\n          onClick={open}\n          fontSize={1}\n          padding={2}\n          tabIndex={-1}\n          icon={AddIcon}\n          text=\"Assign\"\n          tone=\"positive\"\n          mode=\"ghost\"\n          disabled={disabled}\n        />\n      ) : (\n        <Grid>\n          <Button ref={buttonRef} onClick={open} padding={0} mode=\"bleed\" disabled={disabled}>\n            <AvatarGroup users={userList.filter((u) => assignees.includes(u.id))} />\n          </Button>\n        </Grid>\n      )}\n    </Popover>\n  )\n}\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {Box, Button, Text, Tooltip, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useClient} from 'sanity'\n\nimport {handleDeleteMetadata} from '../../actions/useCompleteWorkflow'\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n  documentId: string\n  disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {documentId, disabled = false} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  const handleComplete: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n    async (event) => {\n      const id = event.currentTarget.value\n\n      if (!id) {\n        return\n      }\n\n      await handleDeleteMetadata(client, toast, id)\n    },\n    [client, toast],\n  )\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>Remove this document from Workflow</Text>\n        </Box>\n      }\n    >\n      <Button\n        value={documentId}\n        onClick={handleComplete}\n        text=\"Complete\"\n        icon={CheckmarkIcon}\n        tone=\"positive\"\n        mode=\"ghost\"\n        fontSize={1}\n        padding={2}\n        tabIndex={-1}\n        disabled={disabled}\n      />\n    </Tooltip>\n  )\n}\n","import {useRelativeTime} from 'sanity'\n\nexport interface TimeAgoProps {\n  time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n  const timeAgo = useRelativeTime(time)\n\n  return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type PreviewValue, type SanityDocument} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function DraftStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n  const {document} = props\n  const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {document ? (\n              <>Edited {updatedAt && <TimeAgo time={updatedAt} />}</>\n            ) : (\n              <>No unpublished edits</>\n            )}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n        <EditIcon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {PublishIcon} from '@sanity/icons/Publish'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type PreviewValue, type SanityDocument} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n  const {document} = props\n  const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {document ? (\n              <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n            ) : (\n              <>Not published</>\n            )}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n        <PublishIcon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {useEffect} from 'react'\nimport {type ValidationMarker, useValidationStatus} from 'sanity'\n\ntype ValidateProps = {\n  documentId: string\n  type: string\n  onChange: (validation: {isValidating: boolean; validation: ValidationMarker[]}) => void\n}\n\n// Document validation is siloed into its own component\n// Because it's not performant to run on a lot of documents\nexport default function Validate(props: ValidateProps) {\n  const {documentId, type, onChange} = props\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {isValidating, validation = []} = useValidationStatus(documentId, type, false)\n\n  useEffect(() => {\n    onChange({isValidating, validation})\n  }, [onChange, isValidating, validation])\n\n  return null\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type ValidationMarker} from 'sanity'\n\ntype ValidationStatusProps = {\n  validation: ValidationMarker[]\n}\n\nexport function ValidationStatus(props: ValidationStatusProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {validation = []} = props\n\n  if (!validation.length) {\n    return null\n  }\n\n  const hasError = validation.some((item) => item.level === 'error')\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {validation.length === 1\n              ? `1 validation issue`\n              : `${validation.length} validation issues`}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone={hasError ? `critical` : `caution`} size={1}>\n        {hasError ? <ErrorOutlineIcon /> : <WarningOutlineIcon />}\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {DragHandleIcon} from '@sanity/icons/DragHandle'\nimport {Box, Card, type CardTone, Flex, Stack, useTheme} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {type SchemaType, type ValidationMarker, useSchema, Preview} from 'sanity'\n\nimport type {SanityDocumentWithMetadata, State, User} from '../../types'\nimport UserDisplay from '../UserDisplay'\nimport CompleteButton from './CompleteButton'\nimport {DraftStatus} from './core/DraftStatus'\nimport {PublishedStatus} from './core/PublishedStatus'\nimport EditButton from './EditButton'\nimport Validate from './Validate'\nimport {ValidationStatus} from './ValidationStatus'\n\ntype DocumentCardProps = {\n  isDragDisabled: boolean\n  isPatching: boolean\n  userRoleCanDrop: boolean\n  isDragging: boolean\n  item: SanityDocumentWithMetadata\n  states: State[]\n  toggleInvalidDocumentId: (documentId: string, action: 'ADD' | 'REMOVE') => void\n  userList: User[]\n}\n\nexport function DocumentCard(props: DocumentCardProps) {\n  const {\n    isDragDisabled,\n    isPatching,\n    userRoleCanDrop,\n    isDragging,\n    item,\n    states,\n    toggleInvalidDocumentId,\n    userList,\n  } = props\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {assignees = [], documentId} = item._metadata ?? {}\n  const schema = useSchema()\n  const state = states.find((s) => s.id === item._metadata?.state)\n\n  const theme = useTheme()\n  const isDarkMode = getTheme_v2({sanity: theme.sanity}).color._dark\n  const defaultCardTone = isDarkMode ? `transparent` : `default`\n\n  // Validation only runs if the state requests it\n  // Because it's not performant to run it on many documents simultaneously\n  // So we fake it here, and maybe set it inside <Validate />\n  const [optimisticValidation, setOptimisticValidation] = useState<{\n    isValidating: boolean\n    validation: ValidationMarker[]\n  }>({\n    isValidating: state?.requireValidation ?? false,\n    validation: [],\n  })\n\n  const {isValidating, validation} = optimisticValidation\n\n  const handleValidation = useCallback(\n    (updates: {isValidating: boolean; validation: ValidationMarker[]}) => {\n      setOptimisticValidation(updates)\n    },\n    [],\n  )\n\n  const cardTone = useMemo(() => {\n    let tone: CardTone = defaultCardTone\n\n    if (!userRoleCanDrop) return isDarkMode ? `default` : `transparent`\n    if (!documentId) return tone\n    if (isPatching) tone = isDarkMode ? `default` : `transparent`\n    if (isDragging) tone = `positive`\n\n    if (state?.requireValidation && !isValidating && validation.length > 0) {\n      if (validation.some((v) => v.level === 'error')) {\n        tone = `critical`\n      } else {\n        tone = `caution`\n      }\n    }\n\n    return tone\n  }, [\n    defaultCardTone,\n    userRoleCanDrop,\n    isPatching,\n    isDarkMode,\n    documentId,\n    isDragging,\n    isValidating,\n    validation,\n    state?.requireValidation,\n  ])\n\n  // Update validation status\n  // Cannot be done in the above memo because it would set state during render\n  useEffect(() => {\n    if (!isValidating && validation.length > 0) {\n      if (validation.some((v) => v.level === 'error')) {\n        toggleInvalidDocumentId(documentId, 'ADD')\n      } else {\n        toggleInvalidDocumentId(documentId, 'REMOVE')\n      }\n    } else {\n      toggleInvalidDocumentId(documentId, 'REMOVE')\n    }\n  }, [documentId, isValidating, toggleInvalidDocumentId, validation])\n\n  const hasError = useMemo(\n    () => (isValidating ? false : validation.some((v) => v.level === 'error')),\n    [isValidating, validation],\n  )\n\n  const isLastState = useMemo(\n    () => states?.[states?.length - 1]?.id === item._metadata?.state,\n    [states, item._metadata.state],\n  )\n\n  return (\n    <>\n      {state?.requireValidation ? (\n        <Validate documentId={documentId} type={item._type} onChange={handleValidation} />\n      ) : null}\n      <Box paddingBottom={3} paddingX={3}>\n        <Card radius={2} shadow={isDragging ? 3 : 1} tone={cardTone}>\n          <Stack>\n            <Card\n              borderBottom\n              radius={2}\n              paddingRight={2}\n              tone={cardTone}\n              style={{pointerEvents: 'none'}}\n            >\n              <Flex align=\"center\" justify=\"space-between\" gap={1}>\n                <Box flex={1}>\n                  <Preview\n                    layout=\"default\"\n                    skipVisibilityCheck\n                    value={item}\n                    // oxlint-disable-next-line no-unsafe-type-assertion\n                    schemaType={schema.get(item._type) as SchemaType}\n                  />\n                </Box>\n                <Box style={{flexShrink: 0}}>\n                  {hasError || isDragDisabled || isPatching ? null : <DragHandleIcon />}\n                </Box>\n              </Flex>\n            </Card>\n\n            <Card padding={2} radius={2} tone=\"inherit\">\n              <Flex align=\"center\" justify=\"space-between\" gap={3}>\n                <Box flex={1}>\n                  {documentId && (\n                    <UserDisplay\n                      userList={userList}\n                      assignees={assignees}\n                      documentId={documentId}\n                      disabled={!userRoleCanDrop}\n                    />\n                  )}\n                </Box>\n                {validation.length > 0 ? <ValidationStatus validation={validation} /> : null}\n                <DraftStatus document={item} />\n                <PublishedStatus document={item} />\n                <EditButton id={item._id} type={item._type} disabled={!userRoleCanDrop} />\n                {isLastState && states.length <= 3 ? (\n                  <CompleteButton documentId={documentId} disabled={!userRoleCanDrop} />\n                ) : null}\n              </Flex>\n              {isLastState && states.length > 3 ? (\n                <Stack paddingTop={2}>\n                  <CompleteButton documentId={documentId} disabled={!userRoleCanDrop} />\n                </Stack>\n              ) : null}\n            </Card>\n          </Stack>\n        </Card>\n      </Box>\n    </>\n  )\n}\n","import {Draggable, type DraggableStyle} from '@hello-pangea/dnd'\nimport {useVirtualizer, type VirtualItem} from '@tanstack/react-virtual'\nimport {type CSSProperties, useCallback, useMemo, useRef} from 'react'\nimport type {CurrentUser} from 'sanity'\nimport type {UserExtended} from 'sanity-plugin-utils'\n\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport type {SanityDocumentWithMetadata, State} from '../types'\nimport {DocumentCard} from './DocumentCard'\n\ntype DocumentListProps = {\n  data: SanityDocumentWithMetadata[]\n  invalidDocumentIds: string[]\n  patchingIds: string[]\n  selectedSchemaTypes: string[]\n  selectedUserIds: string[]\n  state: State\n  states: State[]\n  toggleInvalidDocumentId: (documentId: string, action: 'ADD' | 'REMOVE') => void\n  user: CurrentUser | null\n  userList: UserExtended[]\n  userRoleCanDrop: boolean\n}\n\nfunction getStyle(\n  draggableStyle: DraggableStyle | undefined,\n  virtualItem: VirtualItem,\n): CSSProperties {\n  // Default transform required by tanstack virtual for positioning\n  let transform = `translateY(${virtualItem.start}px)`\n\n  // If a card is being dragged over, this card needs to move up or down\n  if (draggableStyle && draggableStyle.transform) {\n    // So get the transform value from beautiful-dnd\n    const draggableTransformY = parseInt(\n      draggableStyle.transform.split(',')[1]!.split('px')[0]!,\n      10,\n    )\n\n    // And apply it to the card\n    transform = `translateY(${virtualItem.start + draggableTransformY}px)`\n  }\n\n  return {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    width: '100%',\n    height: `${virtualItem.size}px`,\n    transform,\n  }\n}\n\n// oxlint-disable-next-line react/react-compiler\nexport default function DocumentList(props: DocumentListProps) {\n  const {\n    // oxlint-disable-next-line no-useless-default-assignment\n    data = [],\n    invalidDocumentIds,\n    patchingIds,\n    selectedSchemaTypes,\n    selectedUserIds,\n    state,\n    states,\n    toggleInvalidDocumentId,\n    user,\n    userList,\n    userRoleCanDrop,\n  } = props\n\n  const dataFiltered = useMemo(() => {\n    return data.length\n      ? filterItemsAndSort(data, state.id, selectedUserIds, selectedSchemaTypes)\n      : []\n  }, [data, selectedSchemaTypes, selectedUserIds, state.id])\n\n  const parentRef = useRef(null)\n\n  const virtualizer = useVirtualizer({\n    count: dataFiltered.length,\n    getScrollElement: useCallback(() => parentRef.current, []),\n    getItemKey: useCallback(\n      (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n      [dataFiltered],\n    ),\n    estimateSize: useCallback(() => 115, []),\n    overscan: 7,\n    measureElement: useCallback((element: Element) => {\n      return element.getBoundingClientRect().height || 115\n    }, []),\n  })\n\n  if (!data.length || !dataFiltered.length) {\n    return null\n  }\n\n  return (\n    <div\n      ref={parentRef}\n      style={{\n        height: `100%`,\n        overflow: 'auto',\n        // Smooths scrollbar behaviour\n        overflowAnchor: 'none',\n        scrollBehavior: 'auto',\n        paddingTop: 1,\n      }}\n    >\n      <div\n        style={{\n          height: `${virtualizer.getTotalSize()}px`,\n          width: '100%',\n          position: 'relative',\n        }}\n      >\n        {virtualizer.getVirtualItems().map((virtualItem) => {\n          const item = dataFiltered[virtualItem.index]\n\n          const {documentId, assignees} = item?._metadata ?? {}\n\n          const isInvalid = invalidDocumentIds.includes(documentId!)\n          const meInAssignees = user?.id ? assignees?.includes(user.id) : false\n          const isDragDisabled =\n            patchingIds.includes(documentId!) ||\n            !userRoleCanDrop ||\n            isInvalid ||\n            !(state.requireAssignment ? state.requireAssignment && meInAssignees : true)\n\n          return (\n            <Draggable\n              key={virtualItem.key}\n              draggableId={documentId!}\n              index={virtualItem.index}\n              isDragDisabled={isDragDisabled}\n            >\n              {(draggableProvided, draggableSnapshot) => (\n                <div\n                  ref={draggableProvided.innerRef}\n                  {...draggableProvided.draggableProps}\n                  {...draggableProvided.dragHandleProps}\n                  style={getStyle(draggableProvided.draggableProps.style, virtualItem)}\n                >\n                  <div ref={virtualizer.measureElement} data-index={virtualItem.index}>\n                    <DocumentCard\n                      userRoleCanDrop={userRoleCanDrop}\n                      isDragDisabled={isDragDisabled}\n                      isPatching={patchingIds.includes(documentId!)}\n                      isDragging={draggableSnapshot.isDragging}\n                      item={item!}\n                      toggleInvalidDocumentId={toggleInvalidDocumentId}\n                      userList={userList}\n                      states={states}\n                    />\n                  </div>\n                </div>\n              )}\n            </Draggable>\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n","import {ResetIcon} from '@sanity/icons/Reset'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Button, Card, Flex, Menu, MenuButton} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {type UserExtended, UserSelectMenu} from 'sanity-plugin-utils'\n\ntype FiltersProps = {\n  uniqueAssignedUsers: UserExtended[]\n  selectedUserIds: string[]\n  schemaTypes: string[]\n  selectedSchemaTypes: string[]\n  toggleSelectedUser: (userId: string) => void\n  resetSelectedUsers: () => void\n  toggleSelectedSchemaType: (schemaType: string) => void\n}\n\nexport default function Filters(props: FiltersProps) {\n  const {\n    // oxlint-disable-next-line no-useless-default-assignment\n    uniqueAssignedUsers = [],\n    selectedUserIds,\n    schemaTypes,\n    selectedSchemaTypes,\n    toggleSelectedUser,\n    resetSelectedUsers,\n    toggleSelectedSchemaType,\n  } = props\n\n  const currentUser = useCurrentUser()\n  const schema = useSchema()\n\n  const onAdd = useCallback(\n    (id: string) => {\n      if (!selectedUserIds.includes(id)) {\n        toggleSelectedUser(id)\n      }\n    },\n    [selectedUserIds, toggleSelectedUser],\n  )\n\n  const onRemove = useCallback(\n    (id: string) => {\n      if (selectedUserIds.includes(id)) {\n        toggleSelectedUser(id)\n      }\n    },\n    [selectedUserIds, toggleSelectedUser],\n  )\n\n  const onClear = useCallback(() => {\n    resetSelectedUsers()\n  }, [resetSelectedUsers])\n\n  if (uniqueAssignedUsers.length === 0 && schemaTypes.length < 2) {\n    return null\n  }\n\n  const meInUniqueAssignees =\n    currentUser?.id && uniqueAssignedUsers.find((u) => u.id === currentUser.id)\n  const uniqueAssigneesNotMe = uniqueAssignedUsers.filter((u) => u.id !== currentUser?.id)\n\n  return (\n    <Card tone=\"primary\" padding={2} borderBottom style={{overflowX: 'hidden'}}>\n      <Flex align=\"center\">\n        <Flex align=\"center\" gap={1} flex={1}>\n          {uniqueAssignedUsers.length > 5 ? (\n            <Card tone=\"default\">\n              <MenuButton\n                button={\n                  <Button\n                    padding={3}\n                    fontSize={1}\n                    text=\"Filter Assignees\"\n                    tone=\"primary\"\n                    icon={UserIcon}\n                  />\n                }\n                id=\"user-filters\"\n                menu={\n                  <Menu>\n                    <UserSelectMenu\n                      value={selectedUserIds}\n                      userList={uniqueAssignedUsers}\n                      onAdd={onAdd}\n                      onRemove={onRemove}\n                      onClear={onClear}\n                      labels={{\n                        addMe: 'Filter mine',\n                        removeMe: 'Clear mine',\n                        clear: 'Clear filters',\n                      }}\n                    />\n                  </Menu>\n                }\n                popover={{portal: true}}\n              />\n            </Card>\n          ) : (\n            <>\n              {meInUniqueAssignees ? (\n                <>\n                  <Button\n                    padding={0}\n                    mode={selectedUserIds.includes(currentUser.id) ? `default` : `bleed`}\n                    onClick={() => toggleSelectedUser(currentUser.id)}\n                  >\n                    <Flex padding={1} align=\"center\" justify=\"center\">\n                      <UserAvatar user={currentUser.id} size={1} withTooltip />\n                    </Flex>\n                  </Button>\n                  <Card borderRight style={{height: 30}} tone=\"inherit\" />\n                </>\n              ) : null}\n              {uniqueAssigneesNotMe.map((user) => (\n                <Button\n                  key={user.id}\n                  padding={0}\n                  mode={selectedUserIds.includes(user.id) ? `default` : `bleed`}\n                  onClick={() => toggleSelectedUser(user.id)}\n                >\n                  <Flex padding={1} align=\"center\" justify=\"center\">\n                    <UserAvatar user={user} size={1} withTooltip />\n                  </Flex>\n                </Button>\n              ))}\n\n              {selectedUserIds.length > 0 ? (\n                <Button\n                  padding={3}\n                  fontSize={1}\n                  text=\"Clear\"\n                  onClick={resetSelectedUsers}\n                  mode=\"ghost\"\n                  icon={ResetIcon}\n                />\n              ) : null}\n            </>\n          )}\n        </Flex>\n\n        {schemaTypes.length > 1 ? (\n          <Flex align=\"center\" gap={1}>\n            {schemaTypes.map((typeName) => {\n              const schemaType = schema.get(typeName)\n\n              if (!schemaType) {\n                return null\n              }\n\n              return (\n                <Button\n                  key={typeName}\n                  padding={3}\n                  fontSize={1}\n                  text={schemaType?.title ?? typeName}\n                  icon={schemaType?.icon ?? undefined}\n                  mode={selectedSchemaTypes.includes(typeName) ? `default` : `ghost`}\n                  onClick={() => toggleSelectedSchemaType(typeName)}\n                />\n              )\n            })}\n          </Flex>\n        ) : null}\n      </Flex>\n    </Card>\n  )\n}\n","import {Box, Text, Tooltip} from '@sanity/ui'\n\ntype StatusProps = {\n  text: string\n  icon: React.ComponentType\n}\n\nexport function Status(props: StatusProps) {\n  const {text, icon} = props\n  const Icon = icon\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>{text}</Text>\n        </Box>\n      }\n    >\n      <Text size={1}>\n        <Icon />\n      </Text>\n    </Tooltip>\n  )\n}\n","import {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Badge, type BadgeTone, Box, Card, Flex, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport type {State} from '../../types'\nimport {Status} from './Status'\n\nconst StyledStickyCard = styled(Card)`\n  position: sticky;\n  top: 0;\n  z-index: 1;\n`\n\ntype StateTitleProps = {\n  state: State\n  requireAssignment: boolean\n  userRoleCanDrop: boolean\n  isDropDisabled: boolean\n  draggingFrom: string\n  documentCount: number\n}\n\nexport default function StateTitle(props: StateTitleProps) {\n  const {state, requireAssignment, userRoleCanDrop, isDropDisabled, draggingFrom, documentCount} =\n    props\n\n  let tone: BadgeTone = 'default'\n  const isSource = draggingFrom === state.id\n\n  if (draggingFrom) {\n    tone = isDropDisabled || isSource ? 'default' : 'positive'\n  }\n\n  return (\n    <StyledStickyCard paddingY={4} padding={3} tone=\"inherit\">\n      <Flex gap={3} align=\"center\">\n        <Badge tone={tone}>{state.title}</Badge>\n        {userRoleCanDrop ? null : (\n          <Status\n            text=\"You do not have permissions to move documents to this State\"\n            icon={InfoOutlineIcon}\n          />\n        )}\n        {requireAssignment ? (\n          <Status\n            text=\"You must be assigned to the document to move documents to this State\"\n            icon={UserIcon}\n          />\n        ) : null}\n        <Box flex={1}>\n          {documentCount > 0 ? (\n            <Text weight=\"semibold\" align=\"right\" size={1}>\n              {documentCount}\n            </Text>\n          ) : null}\n        </Box>\n      </Flex>\n    </StyledStickyCard>\n  )\n}\n","import {LexoRank} from 'lexorank'\n\nfunction generateMiddleValue(ranks: (LexoRank | undefined)[]) {\n  // Has no undefined values\n  if (!ranks.some((rank) => !rank)) {\n    return ranks\n  }\n\n  // Find the first undefined value\n  const firstUndefined = ranks.findIndex((rank) => !rank)\n\n  // Find the first defined value after the undefined value\n  const firstDefinedAfter = ranks.findIndex((rank, index) => rank && index > firstUndefined)\n  // Find the first defined value before the undefined value\n  const firstDefinedBefore = ranks.findLastIndex((rank, index) => rank && index < firstUndefined)\n\n  if (firstDefinedAfter === -1 || firstDefinedBefore === -1) {\n    throw new Error(\n      `Unable to generate middle value between indexes ${firstDefinedBefore} and ${firstDefinedAfter}`,\n    )\n  }\n\n  const beforeRank = ranks[firstDefinedBefore]\n  const afterRank = ranks[firstDefinedAfter]\n\n  if (\n    !beforeRank ||\n    typeof beforeRank === 'undefined' ||\n    !afterRank ||\n    typeof afterRank === 'undefined'\n  ) {\n    throw new Error(\n      `Unable to generate middle value between indexes ${firstDefinedBefore} and ${firstDefinedAfter}`,\n    )\n  }\n\n  // Generate a new value between the two\n  const between = beforeRank.between(afterRank)\n\n  // Calculate the middle index between the defined values\n  const middle = Math.floor((firstDefinedAfter + firstDefinedBefore) / 2)\n\n  if (ranks[middle]) {\n    throw new Error(`Should not have overwritten value at index ${middle}`)\n  }\n\n  // Insert the new value into the array\n  ranks[middle] = between\n\n  // Return as a new array\n  return ranks\n}\n\n// Generates an array of LexoRanks between two values\nexport function generateMultipleOrderRanks(\n  count: number,\n  start?: LexoRank,\n  end?: LexoRank,\n): LexoRank[] {\n  // Begin array with correct size\n  let ranks = [...Array(count)]\n\n  // Use or create default values\n  const rankStart = start ?? LexoRank.min().genNext().genNext()\n  const rankEnd = end ?? LexoRank.max().genPrev().genPrev()\n\n  ranks[0] = rankStart\n  ranks[count - 1] = rankEnd\n\n  // Keep processing the array until every value between undefined values is defined\n  for (let i = 0; i < count; i++) {\n    ranks = generateMiddleValue(ranks)\n  }\n\n  return ranks.sort((a, b) => a.toString().localeCompare(b.toString()))\n}\n","import {Card, Grid} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport type {PropsWithChildren} from 'react'\nimport {styled} from 'styled-components'\n\nconst StyledFloatingCard = styled(Card)`\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  z-index: 1000;\n`\n\nexport default function FloatingCard({children}: PropsWithChildren) {\n  const childrenHaveValues = Array.isArray(children) ? children.some(Boolean) : Boolean(children)\n\n  return (\n    <AnimatePresence>\n      {childrenHaveValues ? (\n        <motion.div key=\"floater\" initial={{opacity: 0}} animate={{opacity: 1}} exit={{opacity: 0}}>\n          <StyledFloatingCard shadow={3} padding={3} margin={3} radius={3}>\n            <Grid gap={2}>{children}</Grid>\n          </StyledFloatingCard>\n        </motion.div>\n      ) : null}\n    </AnimatePresence>\n  )\n}\n","import {Button, useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useMemo} from 'react'\nimport {useClient} from 'sanity'\nimport type {UserExtended} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {generateMultipleOrderRanks} from '../helpers/generateMultipleOrderRanks'\nimport type {SanityDocumentWithMetadata, State} from '../types'\nimport FloatingCard from './FloatingCard'\n\ntype VerifyProps = {\n  data: SanityDocumentWithMetadata[]\n  userList: UserExtended[]\n  states: State[]\n}\n\n// This component checks the validity of the data in the Kanban\n// It will only render something if there is invalid data\n// And will render buttons to fix the data\nexport default function Verify(props: VerifyProps) {\n  const {data, userList, states} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  // A lot of error-checking\n  const documentsWithoutValidMetadataIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, state} = cur._metadata ?? {}\n        const stateExists = states.find((s) => s.id === state)\n        if (!stateExists && documentId) {\n          acc.push(documentId)\n        }\n        return acc\n      }, [] as string[])\n    : []\n\n  const documentsWithInvalidUserIds =\n    data?.length && userList?.length\n      ? data.reduce((acc, cur) => {\n          const {documentId, assignees} = cur._metadata ?? {}\n          const allAssigneesExist = assignees?.length\n            ? assignees?.every((a) => userList.find((u) => u.id === a))\n            : true\n\n          if (!allAssigneesExist && documentId) {\n            acc.push(documentId)\n          }\n\n          return acc\n        }, [] as string[])\n      : []\n\n  const documentsWithoutOrderIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, orderRank} = cur._metadata ?? {}\n\n        if (!orderRank && documentId) {\n          acc.push(documentId)\n        }\n        return acc\n      }, [] as string[])\n    : []\n\n  const documentsWithDuplicatedOrderIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, orderRank} = cur._metadata ?? {}\n\n        if (\n          orderRank &&\n          data.filter((d) => d._metadata?.orderRank === orderRank).length > 1 &&\n          documentId\n        ) {\n          acc.push(documentId)\n        }\n\n        return acc\n      }, [] as string[])\n    : []\n\n  // Updates metadata documents to a valid, existing state\n  const correctDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Correcting...',\n        status: 'info',\n      })\n\n      const tx = ids.reduce((item, documentId) => {\n        return item.patch(`workflow-metadata.${documentId}`, {\n          set: {state: states?.[0]?.id},\n        })\n      }, client.transaction())\n\n      await tx.commit()\n\n      toast.push({\n        title: `Corrected ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, states, toast],\n  )\n\n  // Remove users that are no longer in the project from documents\n  const removeUsersFromDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Removing users...',\n        status: 'info',\n      })\n\n      const tx = ids.reduce((item, documentId) => {\n        const {assignees} = data.find((d) => d._id === documentId)?._metadata ?? {}\n        const validAssignees = assignees?.length\n          ? assignees.filter((a) => userList.find((u) => u.id === a)?.id)\n          : []\n\n        return item.patch(`workflow-metadata.${documentId}`, {\n          set: {assignees: validAssignees},\n        })\n      }, client.transaction())\n\n      await tx.commit()\n\n      toast.push({\n        title: `Corrected ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, data, toast, userList],\n  )\n\n  // Add order value to metadata documents\n  const addOrderToDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Adding ordering...',\n        status: 'info',\n      })\n\n      // Get first and second order values, if they exist\n      const [firstOrder, secondOrder] = [...data].slice(0, 2).map((d) => d._metadata?.orderRank)\n      const minLexo = firstOrder ? LexoRank.parse(firstOrder) : undefined\n      const maxLexo = secondOrder ? LexoRank.parse(secondOrder) : undefined\n      const ranks = generateMultipleOrderRanks(ids.length, minLexo, maxLexo)\n\n      const tx = client.transaction()\n\n      // Create a new in-between value for each document\n      for (let index = 0; index < ids.length; index += 1) {\n        tx.patch(`workflow-metadata.${ids[index]}`, {\n          set: {orderRank: ranks[index]!.toString()},\n        })\n      }\n\n      await tx.commit()\n\n      toast.push({\n        title: `Added order to ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [data, client, toast],\n  )\n\n  // Reset order value on all metadata documents\n  const resetOrderOfAllDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Adding ordering...',\n        status: 'info',\n      })\n\n      const ranks = generateMultipleOrderRanks(ids.length)\n\n      const tx = client.transaction()\n\n      // Create a new in-between value for each document\n      for (let index = 0; index < ids.length; index += 1) {\n        tx.patch(`workflow-metadata.${ids[index]}`, {\n          set: {orderRank: ranks[index]!.toString()},\n        })\n      }\n\n      await tx.commit()\n\n      toast.push({\n        title: `Added order to ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, toast],\n  )\n\n  // A document could be deleted and the workflow metadata left behind\n  const orphanedMetadataDocumentIds = useMemo(() => {\n    return data.length ? data.filter((doc) => !doc?._id).map((doc) => doc._metadata.documentId) : []\n  }, [data])\n\n  const handleOrphans = useCallback(async () => {\n    toast.push({\n      title: 'Removing orphaned metadata...',\n      status: 'info',\n    })\n\n    const tx = client.transaction()\n    orphanedMetadataDocumentIds.forEach((id) => {\n      tx.delete(`workflow-metadata.${id}`)\n    })\n\n    await tx.commit()\n\n    toast.push({\n      title: `Removed ${orphanedMetadataDocumentIds.length} orphaned metadata documents`,\n      status: 'success',\n    })\n  }, [client, orphanedMetadataDocumentIds, toast])\n\n  return (\n    <FloatingCard>\n      {documentsWithoutValidMetadataIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => correctDocuments(documentsWithoutValidMetadataIds)}\n          text={\n            documentsWithoutValidMetadataIds.length === 1\n              ? `Correct 1 Document State`\n              : `Correct ${documentsWithoutValidMetadataIds.length} Document States`\n          }\n        />\n      ) : null}\n      {documentsWithInvalidUserIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => removeUsersFromDocuments(documentsWithInvalidUserIds)}\n          text={\n            documentsWithInvalidUserIds.length === 1\n              ? `Remove Invalid Users from 1 Document`\n              : `Remove Invalid Users from ${documentsWithInvalidUserIds.length} Documents`\n          }\n        />\n      ) : null}\n      {documentsWithoutOrderIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => addOrderToDocuments(documentsWithoutOrderIds)}\n          text={\n            documentsWithoutOrderIds.length === 1\n              ? `Set Order for 1 Document`\n              : `Set Order for ${documentsWithoutOrderIds.length} Documents`\n          }\n        />\n      ) : null}\n      {documentsWithDuplicatedOrderIds.length > 0 ? (\n        <>\n          <Button\n            tone=\"caution\"\n            mode=\"ghost\"\n            onClick={() => addOrderToDocuments(documentsWithDuplicatedOrderIds)}\n            text={\n              documentsWithDuplicatedOrderIds.length === 1\n                ? `Set Unique Order for 1 Document`\n                : `Set Unique Order for ${documentsWithDuplicatedOrderIds.length} Documents`\n            }\n          />\n          <Button\n            tone=\"caution\"\n            mode=\"ghost\"\n            onClick={() =>\n              // oxlint-disable-next-line no-unnecessary-type-conversion\n              resetOrderOfAllDocuments(data.map((doc) => String(doc._metadata?.documentId)))\n            }\n            text={\n              data.length === 1\n                ? `Reset Order for 1 Document`\n                : `Reset Order for all ${data.length} Documents`\n            }\n          />\n        </>\n      ) : null}\n      {orphanedMetadataDocumentIds.length > 0 ? (\n        <Button\n          text=\"Cleanup orphaned metadata\"\n          onClick={handleOrphans}\n          tone=\"caution\"\n          mode=\"ghost\"\n        />\n      ) : null}\n    </FloatingCard>\n  )\n}\n","import {\n  DragDropContext,\n  type DraggableChildrenFn,\n  type DragStart,\n  Droppable,\n  type DropResult,\n} from '@hello-pangea/dnd'\nimport {Box, Card, Container, Flex, Grid, Spinner, useTheme, useToast} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Tool, useCurrentUser} from 'sanity'\nimport {Feedback, useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {useWorkflowDocuments} from '../hooks/useWorkflowDocuments'\nimport type {State, WorkflowConfig} from '../types'\nimport {DocumentCard} from './DocumentCard'\nimport DocumentList from './DocumentList'\nimport Filters from './Filters'\nimport StateTitle from './StateTitle'\nimport Verify from './Verify'\n\ntype WorkflowToolProps = {\n  tool: Tool<WorkflowConfig>\n}\n\nexport default function WorkflowTool(props: WorkflowToolProps) {\n  const {schemaTypes = [], states = []} = props?.tool?.options ?? {}\n\n  const theme = useTheme()\n  const isDarkMode = getTheme_v2({sanity: theme.sanity}).color._dark\n  const defaultCardTone = isDarkMode ? 'default' : 'transparent'\n  const toast = useToast()\n\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  const user = useCurrentUser()\n  const userRoleNames = user?.roles?.length ? user?.roles.map((r) => r.name) : []\n\n  const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n  const [patchingIds, setPatchingIds] = useState<string[]>([])\n\n  // Data to display in cards\n  const {data, loading, error} = workflowData\n\n  // Operations to perform on cards\n  const {move} = operations\n\n  const [undroppableStates, setUndroppableStates] = useState<string[]>([])\n  const [draggingFrom, setDraggingFrom] = useState(``)\n\n  // When drag starts, check for any States we should not allow dropping on\n  // Because of either:\n  // 1. The \"destination\" State requires user assignment and the user is not assigned to the dragged document\n  // 2. The \"source\" State State has a list of transitions and the \"destination\" State is not in that list\n  const handleDragStart = useCallback(\n    (start: DragStart) => {\n      const {draggableId, source} = start\n      const {droppableId: currentStateId} = source\n      setDraggingFrom(currentStateId)\n\n      const document = data.find((item) => item._metadata?.documentId === draggableId)\n      const state = states.find((s) => s.id === currentStateId)\n\n      // This shouldn't happen but TypeScript\n      if (!document || !state) return\n\n      const undroppableStateIds = []\n      const statesThatRequireAssignmentIds = states\n        .filter((s) => s.requireAssignment)\n        .map((s) => s.id)\n\n      if (statesThatRequireAssignmentIds.length) {\n        const documentAssignees = document._metadata?.assignees ?? []\n        const userIsAssignedToDocument = user?.id ? documentAssignees.includes(user.id) : false\n\n        if (!userIsAssignedToDocument) {\n          undroppableStateIds.push(...statesThatRequireAssignmentIds)\n        }\n      }\n\n      const statesThatCannotBeTransitionedToIds =\n        state.transitions && state.transitions.length\n          ? states.filter((s) => !state.transitions?.includes(s.id)).map((s) => s.id)\n          : []\n\n      if (statesThatCannotBeTransitionedToIds.length) {\n        undroppableStateIds.push(...statesThatCannotBeTransitionedToIds)\n      }\n\n      // Remove currentStateId from undroppableStates\n      const undroppableExceptSelf = undroppableStateIds.filter((id) => id !== currentStateId)\n\n      if (undroppableExceptSelf.length) {\n        setUndroppableStates(undroppableExceptSelf)\n      }\n    },\n    [data, states, user],\n  )\n\n  const handleDragEnd = useCallback(\n    async (result: DropResult) => {\n      // Reset undroppable states\n      setUndroppableStates([])\n      setDraggingFrom(``)\n\n      const {draggableId, source, destination} = result\n\n      if (\n        // No destination?\n        !destination ||\n        // No change in position?\n        (destination.droppableId === source.droppableId && destination.index === source.index)\n      ) {\n        return\n      }\n\n      // Find all items in current state\n      let destinationStateItems = [...filterItemsAndSort(data, destination.droppableId, [], null)]\n\n      // Filter out the dragged item when reordering within the same column\n      if (source.droppableId === destination.droppableId) {\n        destinationStateItems = destinationStateItems.filter(\n          (item) => item._metadata?.documentId !== draggableId,\n        )\n      }\n\n      const destinationStateIndex = states.findIndex((s) => s.id === destination.droppableId)\n      const globalStateMinimumRank = data?.[0]?._metadata.orderRank\n      const globalStateMaximumRank = data?.[data?.length - 1]?._metadata.orderRank\n\n      let newOrder\n\n      if (!destinationStateItems.length) {\n        // Only item in state\n        // New minimum rank\n        if (destinationStateIndex === 0) {\n          // Only the first state should generate an absolute minimum rank\n          newOrder = LexoRank.min().toString()\n        } else {\n          // Otherwise create one rank above the minimum\n          newOrder = LexoRank.min().genNext().toString()\n        }\n      } else if (destination.index === 0) {\n        // Now first item in order\n        const firstItemOrderRank = [...destinationStateItems].shift()?._metadata?.orderRank\n\n        if (firstItemOrderRank && typeof firstItemOrderRank === 'string') {\n          newOrder = LexoRank.parse(firstItemOrderRank).genPrev().toString()\n        } else if (destinationStateIndex === 0) {\n          // Only the first state should generate an absolute minimum rank\n          newOrder = LexoRank.min().toString()\n        } else {\n          // Otherwise create the next rank between min and the globally minimum rank\n          newOrder = LexoRank.parse(globalStateMinimumRank!).between(LexoRank.min()).toString()\n        }\n      } else if (destination.index >= destinationStateItems.length) {\n        // Now last item in order\n        const lastItemOrderRank = [...destinationStateItems].pop()?._metadata?.orderRank\n\n        if (lastItemOrderRank && typeof lastItemOrderRank === 'string') {\n          newOrder = LexoRank.parse(lastItemOrderRank).genNext().toString()\n        } else if (destinationStateIndex === states.length - 1) {\n          // Only the last state should generate an absolute maximum rank\n          newOrder = LexoRank.max().toString()\n        } else {\n          // Otherwise create the next rank between max and the globally maximum rank\n          newOrder = LexoRank.parse(globalStateMaximumRank!).between(LexoRank.min()).toString()\n        }\n      } else {\n        // Must be between two items\n        const itemBefore = destinationStateItems[destination.index - 1]\n        const itemBeforeRank = itemBefore?._metadata?.orderRank\n        let itemBeforeRankParsed\n        if (itemBeforeRank) {\n          itemBeforeRankParsed = LexoRank.parse(itemBeforeRank)\n        } else if (destinationStateIndex === 0) {\n          itemBeforeRankParsed = LexoRank.min()\n        } else {\n          itemBeforeRankParsed = LexoRank.parse(globalStateMinimumRank!)\n        }\n\n        const itemAfter = destinationStateItems[destination.index]\n        const itemAfterRank = itemAfter?._metadata?.orderRank\n        let itemAfterRankParsed\n        if (itemAfterRank) {\n          itemAfterRankParsed = LexoRank.parse(itemAfterRank)\n        } else if (destinationStateIndex === states.length - 1) {\n          itemAfterRankParsed = LexoRank.max()\n        } else {\n          itemAfterRankParsed = LexoRank.parse(globalStateMaximumRank!)\n        }\n\n        newOrder = itemBeforeRankParsed.between(itemAfterRankParsed).toString()\n      }\n\n      setPatchingIds([...patchingIds, draggableId])\n      toast.push({\n        status: 'info',\n        title: 'Updating document state...',\n      })\n      await move(draggableId, destination, states, newOrder)\n      setPatchingIds((ids: string[]) => ids.filter((id) => id !== draggableId))\n    },\n    [data, patchingIds, toast, move, states],\n  )\n\n  // Used for the user filter UI\n  const uniqueAssignedUsers = useMemo(() => {\n    const uniqueUserIds = data.reduce((acc, item) => {\n      // oxlint-disable-next-line no-useless-default-assignment\n      const {assignees = []} = item._metadata ?? {}\n      const newAssignees = assignees?.length ? assignees.filter((a) => !acc.includes(a)) : []\n      if (newAssignees.length) {\n        acc.push(...newAssignees)\n      }\n      return acc\n    }, [] as string[])\n\n    return userList.filter((u) => uniqueUserIds.includes(u.id))\n  }, [data, userList])\n\n  // Selected user IDs filter the visible workflow documents\n  const [selectedUserIds, setSelectedUserIds] = useState<string[]>(\n    uniqueAssignedUsers.map((u) => u.id),\n  )\n  const toggleSelectedUser = useCallback((userId: string) => {\n    setSelectedUserIds((prev) =>\n      prev.includes(userId) ? prev.filter((u) => u !== userId) : [...prev, userId],\n    )\n  }, [])\n  const resetSelectedUsers = useCallback(() => {\n    setSelectedUserIds([])\n  }, [])\n\n  // Selected schema types filter the visible workflow documents\n  const [selectedSchemaTypes, setSelectedSchemaTypes] = useState<string[]>(schemaTypes)\n  const toggleSelectedSchemaType = useCallback((schemaType: string) => {\n    setSelectedSchemaTypes((prev) =>\n      prev.includes(schemaType) ? prev.filter((u) => u !== schemaType) : [...prev, schemaType],\n    )\n  }, [])\n\n  // Document IDs that have validation errors\n  const [invalidDocumentIds, setInvalidDocumentIds] = useState<string[]>([])\n  const toggleInvalidDocumentId = useCallback((docId: string, action: 'ADD' | 'REMOVE') => {\n    setInvalidDocumentIds((prev) =>\n      action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId),\n    )\n  }, [])\n\n  const Clone: DraggableChildrenFn = useCallback(\n    (provided, snapshot, rubric) => {\n      const item = data.find((doc) => doc?._metadata?.documentId === rubric.draggableId)\n\n      return (\n        <div {...provided.draggableProps} {...provided.dragHandleProps} ref={provided.innerRef}>\n          {item ? (\n            <DocumentCard\n              // Assumed false, if it's dragging it's not disabled\n              isDragDisabled={false}\n              // Assumed false, if it's dragging it's not patching\n              isPatching={false}\n              // Assumed true, if you can drag it you can drop it\n              userRoleCanDrop\n              isDragging={snapshot.isDragging}\n              item={item}\n              states={states}\n              toggleInvalidDocumentId={toggleInvalidDocumentId}\n              userList={userList}\n            />\n          ) : (\n            <Feedback title=\"Item not found\" tone=\"caution\" />\n          )}\n        </div>\n      )\n    },\n    [data, states, toggleInvalidDocumentId, userList],\n  )\n\n  if (!states?.length) {\n    return (\n      <Container width={1} padding={5}>\n        <Feedback\n          tone=\"caution\"\n          title=\"Plugin options error\"\n          description=\"No States defined in plugin config\"\n        />\n      </Container>\n    )\n  }\n\n  if (error && !data.length) {\n    return (\n      <Container width={1} padding={5}>\n        <Feedback tone=\"critical\" title=\"Error querying for Workflow documents\" />\n      </Container>\n    )\n  }\n\n  return (\n    <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n      <Verify data={data} userList={userList} states={states} />\n\n      <Filters\n        uniqueAssignedUsers={uniqueAssignedUsers}\n        selectedUserIds={selectedUserIds}\n        toggleSelectedUser={toggleSelectedUser}\n        resetSelectedUsers={resetSelectedUsers}\n        schemaTypes={schemaTypes}\n        selectedSchemaTypes={selectedSchemaTypes}\n        toggleSelectedSchemaType={toggleSelectedSchemaType}\n      />\n      <DragDropContext onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n        <Grid gridTemplateColumns={states.length} height=\"fill\">\n          {states.map((state: State, stateIndex: number) => {\n            const userRoleCanDrop = state?.roles?.length\n              ? arraysContainMatchingString(state.roles, userRoleNames)\n              : true\n            const isDropDisabled = !userRoleCanDrop || undroppableStates.includes(state.id)\n\n            return (\n              <Card key={state.id} borderLeft={stateIndex > 0} tone={defaultCardTone}>\n                <Flex direction=\"column\" height=\"fill\">\n                  <StateTitle\n                    state={state}\n                    requireAssignment={state.requireAssignment ?? false}\n                    userRoleCanDrop={userRoleCanDrop}\n                    isDropDisabled={isDropDisabled}\n                    draggingFrom={draggingFrom}\n                    documentCount={\n                      filterItemsAndSort(data, state.id, selectedUserIds, selectedSchemaTypes)\n                        .length\n                    }\n                  />\n                  <Box flex={1}>\n                    <Droppable\n                      droppableId={state.id}\n                      isDropDisabled={isDropDisabled}\n                      // props required for virtualization\n                      mode=\"virtual\"\n                      renderClone={Clone}\n                    >\n                      {(provided, snapshot) => (\n                        <Card\n                          ref={provided.innerRef}\n                          tone={snapshot.isDraggingOver ? `primary` : defaultCardTone}\n                          height=\"fill\"\n                        >\n                          {loading ? (\n                            <Flex padding={5} align=\"center\" justify=\"center\">\n                              <Spinner muted />\n                            </Flex>\n                          ) : null}\n\n                          <DocumentList\n                            data={data}\n                            invalidDocumentIds={invalidDocumentIds}\n                            patchingIds={patchingIds}\n                            selectedSchemaTypes={selectedSchemaTypes}\n                            selectedUserIds={selectedUserIds}\n                            state={state}\n                            states={states}\n                            toggleInvalidDocumentId={toggleInvalidDocumentId}\n                            user={user}\n                            userList={userList}\n                            userRoleCanDrop={userRoleCanDrop}\n                          />\n\n                          {/* Not required for virtualized lists */}\n                          {/* {provided.placeholder} */}\n                        </Card>\n                      )}\n                    </Droppable>\n                  </Box>\n                </Flex>\n              </Card>\n            )\n          })}\n        </Grid>\n      </DragDropContext>\n    </Flex>\n  )\n}\n","import {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport type {Tool} from 'sanity'\n\nimport WorkflowTool from '../components/WorkflowTool'\nimport type {WorkflowConfig} from '../types'\n\nexport type WorkflowToolConfig = (options: WorkflowConfig) => Tool\n\nexport const workflowTool: WorkflowToolConfig = (options: WorkflowConfig) => ({\n  name: 'workflow',\n  title: 'Workflow',\n  component: WorkflowTool,\n  icon: SplitVerticalIcon,\n  options,\n})\n","import {definePlugin, isObjectInputProps, type Plugin} from 'sanity'\n\nimport {defineUpdateWorkflow} from './actions/defineUpdateWorkflow'\nimport {useAssignWorkflow} from './actions/useAssignWorkflow'\nimport {useBeginWorkflow} from './actions/useBeginWorkflow'\nimport {useCompleteWorkflow} from './actions/useCompleteWorkflow'\nimport {useAssigneesBadge} from './badges/useAssigneesBadge'\nimport {useStateBadge} from './badges/useStateBadge'\nimport {WorkflowProvider} from './components/WorkflowContext'\nimport WorkflowSignal from './components/WorkflowSignal'\nimport {DEFAULT_CONFIG} from './constants'\nimport metadata from './schema/workflow/workflow.metadata'\nimport {workflowTool} from './tools'\nimport type {WorkflowConfig} from './types'\n\nexport const workflow: Plugin<WorkflowConfig> = definePlugin<WorkflowConfig>(\n  (config = DEFAULT_CONFIG) => {\n    const {schemaTypes, states} = {...DEFAULT_CONFIG, ...config}\n\n    if (!states?.length) {\n      throw new Error(`Workflow plugin: Missing \"states\" in config`)\n    }\n\n    if (!schemaTypes?.length) {\n      throw new Error(`Workflow plugin: Missing \"schemaTypes\" in config`)\n    }\n\n    const useUpdateActions = states.map((state) => defineUpdateWorkflow(state))\n\n    return {\n      name: 'sanity-plugin-workflow',\n      schema: {\n        types: [metadata(states)],\n      },\n      // TODO: Remove 'workflow.metadata' from list of new document types\n      // ...\n      studio: {\n        components: {\n          layout: (props) => (\n            <WorkflowProvider {...props} schemaTypes={schemaTypes} states={states} />\n          ),\n        },\n      },\n      form: {\n        components: {\n          input: (props) => {\n            if (\n              props.id === `root` &&\n              isObjectInputProps(props) &&\n              schemaTypes.includes(props.schemaType.name)\n            ) {\n              return <WorkflowSignal {...props} />\n            }\n\n            return props.renderDefault(props)\n          },\n        },\n      },\n      document: {\n        actions: (prev, context) => {\n          if (!schemaTypes.includes(context.schemaType)) {\n            return prev\n          }\n\n          return [\n            useBeginWorkflow,\n            useAssignWorkflow,\n            ...useUpdateActions,\n            useCompleteWorkflow,\n            ...prev,\n          ]\n        },\n        badges: (prev, context) => {\n          if (!schemaTypes.includes(context.schemaType)) {\n            return prev\n          }\n\n          if (!context.documentId) {\n            return prev\n          }\n\n          return [useStateBadge, useAssigneesBadge, ...prev]\n        },\n      },\n      tools: [\n        // TODO: These configs could be read from Context\n        workflowTool({schemaTypes, states}),\n      ],\n    }\n  },\n)\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["defineStates","WorkflowConfig","API_VERSION","DEFAULT_CONFIG","Required","schemaTypes","states","id","title","color","roles","transitions","requireAssignment","useMemo","useListeningQuery","API_VERSION","KeyedMetadata","Metadata","useWorkflowMetadata","ids","$","_c","t0","t1","Symbol","for","apiVersion","t2","params","options","data","_rawData","loading","error","rawData","t3","bb0","length","t4","acc","item","documentId","keyedMetadata","useCallback","useContext","useMemo","useState","createContext","LayoutProps","DEFAULT_CONFIG","useWorkflowMetadata","KeyedMetadata","WorkflowConfig","WorkflowContextValue","Required","data","loading","error","ids","addId","id","removeId","WorkflowContext","useWorkflowContext","$","_c","current","t0","t1","metadata","WorkflowProviderProps","WorkflowProvider","props","Symbol","for","setIds","includes","t2","id_0","current_0","filter","i","t3","schemaTypes","states","contextValue","t4","renderDefault","t5","arraysContainMatchingString","one","two","some","item","includes","ArrowLeftIcon","ArrowRightIcon","useToast","DocumentActionDescription","useCurrentUser","useValidationStatus","DocumentActionProps","useClient","useWorkflowContext","API_VERSION","arraysContainMatchingString","State","useUpdateWorkflow","t0","actionState","$","_c","id","type","user","t1","Symbol","for","apiVersion","client","toast","currentUser","metadata","loading","error","states","t2","state","s","currentState","find","t3","assignees","t4","t5","undefined","validation","isValidating","hasValidationErrors","requireValidation","length","_temp","console","t6","documentId","newState","patch","set","commit","then","push","status","title","catch","err","onHandle","currentStateIndex","findIndex","s_0","actionStateIndex","s_1","direction","DirectionIcon","directionLabel","t7","roles","map","_temp2","userRoleCanUpdateState","actionStateIsAValidTransition","transitions","includes","t8","requireAssignment","userAssignmentCanUpdateState","t9","Boolean","t10","t11","icon","disabled","label","r","name","v","level","defineUpdateWorkflow","props","useToast","useCallback","useClient","UserSelectMenu","API_VERSION","User","UserAssignmentProps","userList","assignees","documentId","UserAssignment","props","$","_c","t0","Symbol","for","apiVersion","client","toast","t1","userId","user","find","u","id","push","status","title","patch","setIfMissing","insert","commit","then","displayName","catch","err","console","error","description","addAssignee","t2","userId_0","user_0","u_0","unset","err_0","removeAssignee","t3","err_1","clearAssignees","t4","maxHeight","t5","t6","UsersIcon","useState","DocumentActionDescription","DocumentActionProps","useProjectUsers","UserAssignment","useWorkflowContext","API_VERSION","useAssignWorkflow","t0","$","_c","id","metadata","loading","error","isDialogOpen","setDialogOpen","t1","Symbol","for","apiVersion","userList","console","t2","Boolean","t3","t4","type","onClose","content","assignees","length","t5","t6","icon","disabled","label","title","dialog","onHandle","SplitVerticalIcon","useToast","LexoRank","useCallback","useState","DocumentActionDescription","DocumentActionProps","useClient","useWorkflowContext","API_VERSION","useBeginWorkflow","t0","$","_c","id","draft","metadata","loading","error","states","t1","Symbol","for","apiVersion","client","toast","beginning","setBeginning","complete","setComplete","console","t2","title","lowestOrderFirstState","fetch","state","createIfNotExists","_id","_type","documentId","orderRank","parse","genNext","toString","min","push","status","description","handle","t3","Boolean","t4","t5","icon","disabled","label","onHandle","CheckmarkIcon","ToastContextValue","useToast","useCallback","DocumentActionDescription","DocumentActionProps","SanityClient","useClient","useWorkflowContext","API_VERSION","handleDeleteMetadata","client","toast","id","delete","push","status","title","error","console","useCompleteWorkflow","t0","$","_c","metadata","loading","states","t1","Symbol","for","apiVersion","t2","handle","t3","t4","s","state","find","isLastState","length","Boolean","t5","t6","t7","icon","disabled","label","onHandle","tone","DocumentBadgeDescription","DocumentBadgeProps","useCurrentUser","useProjectUsers","useWorkflowContext","API_VERSION","useAssigneesBadge","t0","$","_c","id","documentId","currentUser","metadata","loading","error","t1","Symbol","for","apiVersion","userList","console","assignees","length","t2","label","hasMe","some","assignee","assigneesCount","t3","t4","user","includes","assigneeUsers","filter","map","_temp","join","title","color","user_0","displayName","DocumentBadgeDescription","DocumentBadgeProps","useWorkflowContext","useStateBadge","t0","$","_c","id","documentId","metadata","loading","error","states","t1","state","t2","s","find","console","color","t3","title","label","useEffect","ObjectInputProps","getPublishedId","useWorkflowContext","WorkflowSignal","props","$","_c","t0","value","_id","documentId","addId","removeId","t1","t2","t3","renderDefault","EditIcon","Button","useRouter","EditButtonProps","id","type","disabled","EditButton","props","$","_c","t0","undefined","navigateIntent","t1","t2","Flex","Card","Spinner","Preview","SanityDocument","StringInputProps","useSchema","useListeningQuery","Feedback","EditButton","Field","props","$","_c","schema","t0","String","value","t1","t2","params","id","draftId","data","_data","loading","error","t3","Symbol","for","_type","get","schemaType","t4","t5","_id","t6","Card","FunctionComponent","ArrayOfPrimitivesInputProps","useFormValue","useProjectUsers","API_VERSION","UserAssignment","UserAssignmentInput","props","$","_c","t0","Symbol","for","documentId","t1","apiVersion","userList","t2","value","Array","isArray","length","map","_temp","stringValue","t3","String","t4","item","LexoRank","initialRank","lastRankValue","lastRank","parse","min","nextRank","genNext","value","defineField","defineType","Field","UserAssignmentInput","API_VERSION","initialRank","State","states","type","name","title","liveEdit","fields","description","readOnly","options","list","length","map","state","value","id","layout","components","input","initialValue","_","getClient","lastDocOrderRank","apiVersion","fetch","order","of","SanityDocumentWithMetadata","filterItemsAndSort","items","stateId","selectedUsers","selectedSchemaTypes","filter","item","_id","_metadata","state","length","assignees","some","assignee","includes","_type","sort","a","b","aOrderRank","orderRank","bOrderRank","localeCompare","DraggableLocation","useToast","useCallback","useEffect","useState","useClient","useListeningQuery","API_VERSION","SanityDocumentWithMetadata","State","QUERY","WorkflowDocuments","workflowData","data","loading","error","operations","move","draggedId","destination","states","newOrder","Promise","_id","_type","documentId","state","useWorkflowDocuments","schemaTypes","$","_c","toast","t0","Symbol","for","apiVersion","client","t1","t2","t3","params","initialValue","_data","t4","localDocuments","setLocalDocuments","t5","t6","t7","currentLocalData","newLocalDocuments","map","item","_metadata","droppableId","orderRank","optimistic","newStateId","newState","find","s","id","document","d","push","title","status","_rev","patch","ifRevisionId","set","commit","then","res","catch","err","description","message","t8","t9","t10","Box","Flex","Text","useMemo","useCurrentUser","UserAvatar","User","AvatarGroupProps","users","max","AvatarGroup","props","$","_c","currentUser","t0","undefined","len","length","t1","id","find","u","t2","t3","u_0","filter","slice","me","visibleUsers","t4","t5","map","_temp","t6","t7","user","marginRight","AddIcon","Button","Grid","Popover","useClickOutsideEvent","useCallback","useRef","useState","User","AvatarGroup","UserAssignment","UserDisplayProps","userList","assignees","documentId","disabled","UserDisplay","props","$","_c","t0","undefined","buttonRef","popoverRef","isOpen","setIsOpen","t1","Symbol","for","close","t2","open","t3","current","t4","t5","length","filter","u","includes","id","t6","CheckmarkIcon","Box","Button","Text","Tooltip","useToast","useCallback","useClient","handleDeleteMetadata","API_VERSION","CompleteButtonProps","documentId","disabled","CompleteButton","props","$","_c","t0","undefined","t1","Symbol","for","apiVersion","client","toast","t2","event","id","currentTarget","value","handleComplete","t3","t4","useRelativeTime","TimeAgoProps","time","Date","TimeAgo","t0","$","_c","timeAgo","t1","EditIcon","Box","Text","Tooltip","TextWithTone","PreviewValue","SanityDocument","TimeAgo","DraftStatus","props","$","_c","document","updatedAt","_updatedAt","t0","t1","t2","t3","Symbol","for","t4","t5","PublishIcon","Box","Text","Tooltip","TextWithTone","PreviewValue","SanityDocument","TimeAgo","PublishedStatus","props","$","_c","document","updatedAt","_updatedAt","t0","t1","t2","t3","Symbol","for","t4","t5","useEffect","ValidationMarker","useValidationStatus","ValidateProps","documentId","type","onChange","validation","isValidating","Validate","props","$","_c","t0","t1","undefined","t2","t3","ErrorOutlineIcon","WarningOutlineIcon","Box","Text","Tooltip","TextWithTone","ValidationMarker","ValidationStatusProps","validation","ValidationStatus","props","$","_c","t0","t1","undefined","length","t2","some","_temp","hasError","t3","t4","t5","t6","t7","t8","item","level","DragHandleIcon","Box","Card","CardTone","Flex","Stack","useTheme","getTheme_v2","useCallback","useEffect","useMemo","useState","SchemaType","ValidationMarker","useSchema","Preview","SanityDocumentWithMetadata","State","User","UserDisplay","CompleteButton","DraftStatus","PublishedStatus","EditButton","Validate","ValidationStatus","DocumentCardProps","isDragDisabled","isPatching","userRoleCanDrop","isDragging","item","states","toggleInvalidDocumentId","documentId","action","userList","DocumentCard","props","$","_c","t0","_metadata","assignees","t1","t2","undefined","schema","t3","state","t4","s","id","find","theme","isDarkMode","sanity","color","_dark","defaultCardTone","requireValidation","t5","Symbol","for","t6","isValidating","validation","optimisticValidation","setOptimisticValidation","t7","updates","handleValidation","t8","bb0","tone","length","some","_temp","cardTone","t10","t9","_temp2","t11","_temp3","hasError","isLastState","t12","_type","t13","t14","pointerEvents","t15","get","t16","t17","t18","flexShrink","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","_id","t30","t31","t32","t33","t34","t35","t36","v_1","v","level","v_0","Draggable","DraggableStyle","useVirtualizer","VirtualItem","CSSProperties","useCallback","useMemo","useRef","CurrentUser","UserExtended","filterItemsAndSort","SanityDocumentWithMetadata","State","DocumentCard","DocumentListProps","data","invalidDocumentIds","patchingIds","selectedSchemaTypes","selectedUserIds","state","states","toggleInvalidDocumentId","documentId","action","user","userList","userRoleCanDrop","getStyle","draggableStyle","virtualItem","transform","start","draggableTransformY","parseInt","split","position","top","left","width","height","size","DocumentList","props","dataFiltered","length","id","parentRef","virtualizer","count","getScrollElement","current","getItemKey","index","_metadata","estimateSize","overscan","measureElement","element","Element","getBoundingClientRect","overflow","overflowAnchor","scrollBehavior","paddingTop","getTotalSize","getVirtualItems","map","item","assignees","isInvalid","includes","meInAssignees","isDragDisabled","requireAssignment","key","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","style","isDragging","ResetIcon","UserIcon","Button","Card","Flex","Menu","MenuButton","useCallback","useCurrentUser","UserAvatar","useSchema","UserExtended","UserSelectMenu","FiltersProps","uniqueAssignedUsers","selectedUserIds","schemaTypes","selectedSchemaTypes","toggleSelectedUser","userId","resetSelectedUsers","toggleSelectedSchemaType","schemaType","Filters","props","$","_c","t0","undefined","currentUser","schema","t1","id","includes","onAdd","t2","id_0","onRemove","t3","onClear","length","meInUniqueAssignees","find","u","t4","u_0","uniqueAssigneesNotMe","filter","T0","t5","t6","t7","t8","Symbol","for","overflowX","T1","t9","T2","t10","t11","t12","t13","addMe","removeMe","clear","portal","height","map","user","t14","t15","typeName","get","title","icon","t16","t17","Box","Text","Tooltip","StatusProps","text","icon","React","ComponentType","Status","props","$","_c","Icon","t0","t1","t2","InfoOutlineIcon","UserIcon","Badge","BadgeTone","Box","Card","Flex","Text","styled","State","Status","StyledStickyCard","StateTitleProps","state","requireAssignment","userRoleCanDrop","isDropDisabled","draggingFrom","documentCount","StateTitle","props","$","_c","tone","isSource","id","t0","title","t1","t2","t3","t4","t5","LexoRank","generateMiddleValue","ranks","some","rank","firstUndefined","findIndex","firstDefinedAfter","index","firstDefinedBefore","findLastIndex","Error","beforeRank","afterRank","between","middle","Math","floor","generateMultipleOrderRanks","count","start","end","Array","rankStart","min","genNext","rankEnd","max","genPrev","i","sort","a","b","toString","localeCompare","Card","Grid","AnimatePresence","motion","PropsWithChildren","styled","StyledFloatingCard","FloatingCard","t0","$","_c","children","t1","Array","isArray","some","Boolean","childrenHaveValues","t2","opacity","t3","Button","useToast","LexoRank","useCallback","useMemo","useClient","UserExtended","API_VERSION","generateMultipleOrderRanks","SanityDocumentWithMetadata","State","FloatingCard","VerifyProps","data","userList","states","Verify","props","$","_c","t0","Symbol","for","apiVersion","client","toast","t1","length","reduce","acc","cur","documentId","state","_metadata","stateExists","find","s","id","push","documentsWithoutValidMetadataIds","t2","acc_0","cur_0","documentId_0","assignees","allAssigneesExist","every","a","u","documentsWithInvalidUserIds","t3","_temp","documentsWithoutOrderIds","t4","acc_2","cur_2","documentId_2","orderRank","orderRank_0","filter","d","documentsWithDuplicatedOrderIds","t5","ids","title","status","tx","item","documentId_3","patch","set","transaction","commit","correctDocuments","t6","ids_0","tx_0","item_0","documentId_4","assignees_0","d_0","_id","validAssignees","a_0","u_0","removeUsersFromDocuments","t7","ids_1","firstOrder","secondOrder","slice","map","_temp2","minLexo","parse","undefined","maxLexo","ranks","tx_1","index","toString","addOrderToDocuments","t8","ids_2","ranks_0","tx_2","index_0","resetOrderOfAllDocuments","t9","_temp3","_temp4","orphanedMetadataDocumentIds","t10","tx_3","forEach","delete","handleOrphans","t11","t12","t13","t14","_temp5","t15","t16","doc_1","String","doc","doc_0","d_1","acc_1","cur_1","documentId_1","DragDropContext","DraggableChildrenFn","DragStart","Droppable","DropResult","Box","Card","Container","Flex","Grid","Spinner","useTheme","useToast","getTheme_v2","LexoRank","useCallback","useMemo","useState","Tool","useCurrentUser","Feedback","useProjectUsers","API_VERSION","arraysContainMatchingString","filterItemsAndSort","useWorkflowDocuments","State","WorkflowConfig","DocumentCard","DocumentList","Filters","StateTitle","Verify","WorkflowToolProps","tool","WorkflowTool","props","$","_c","t0","options","schemaTypes","t1","states","t2","t3","undefined","t4","theme","isDarkMode","sanity","color","_dark","defaultCardTone","toast","t5","Symbol","for","apiVersion","userList","user","userRoleNames","roles","length","map","_temp","workflowData","operations","t6","patchingIds","setPatchingIds","data","loading","error","move","t7","undroppableStates","setUndroppableStates","draggingFrom","setDraggingFrom","t8","start","draggableId","source","droppableId","currentStateId","document","find","item","_metadata","documentId","state","s","id","undroppableStateIds","statesThatRequireAssignmentIds","filter","_temp2","_temp3","documentAssignees","assignees","userIsAssignedToDocument","includes","push","statesThatCannotBeTransitionedToIds","transitions","s_2","_temp4","undroppableExceptSelf","handleDragStart","t9","result","draggableId_0","source_0","destination","index","destinationStateItems","item_0","destinationStateIndex","findIndex","s_4","globalStateMinimumRank","orderRank","globalStateMaximumRank","newOrder","min","toString","genNext","firstItemOrderRank","shift","parse","genPrev","between","lastItemOrderRank","pop","max","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","status","title","ids","id_0","handleDragEnd","t10","uniqueUserIds","reduce","_temp5","u","uniqueAssignedUsers","t11","_temp6","selectedUserIds","setSelectedUserIds","t12","userId","prev","u_1","toggleSelectedUser","t13","resetSelectedUsers","selectedSchemaTypes","setSelectedSchemaTypes","t14","schemaType","prev_0","u_2","toggleSelectedSchemaType","t15","invalidDocumentIds","setInvalidDocumentIds","t16","docId","action","prev_1","id_1","toggleInvalidDocumentId","t17","provided","snapshot","rubric","item_2","doc","draggableProps","dragHandleProps","innerRef","isDragging","Clone","t18","T0","t19","t20","t21","t22","T1","T2","t23","t24","t25","state_0","stateIndex","userRoleCanDrop","isDropDisabled","requireAssignment","provided_0","snapshot_0","isDraggingOver","t26","t27","t28","u_0","acc","item_1","newAssignees","a","s_3","s_1","s_0","r","name","SplitVerticalIcon","Tool","WorkflowTool","WorkflowConfig","WorkflowToolConfig","options","workflowTool","name","title","component","icon","definePlugin","isObjectInputProps","Plugin","defineUpdateWorkflow","useAssignWorkflow","useBeginWorkflow","useCompleteWorkflow","useAssigneesBadge","useStateBadge","WorkflowProvider","WorkflowSignal","DEFAULT_CONFIG","metadata","workflowTool","WorkflowConfig","workflow","config","schemaTypes","states","length","Error","useUpdateActions","map","state","name","schema","types","studio","components","layout","props","form","input","id","includes","schemaType","renderDefault","document","actions","prev","context","badges","documentId","tools"],"sources":["../src/types/index.ts","../src/constants/index.ts","../src/hooks/useWorkflowMetadata.tsx","../src/components/WorkflowContext.tsx","../src/helpers/arraysContainMatchingString.ts","../src/actions/defineUpdateWorkflow.tsx","../src/components/UserAssignment.tsx","../src/actions/useAssignWorkflow.tsx","../src/actions/useBeginWorkflow.tsx","../src/actions/useCompleteWorkflow.tsx","../src/badges/useAssigneesBadge.tsx","../src/badges/useStateBadge.tsx","../src/components/WorkflowSignal.tsx","../src/components/DocumentCard/EditButton.tsx","../src/components/DocumentCard/Field.tsx","../src/components/UserAssignmentInput.tsx","../src/helpers/initialRank.ts","../src/schema/workflow/workflow.metadata.ts","../src/helpers/filterItemsAndSort.ts","../src/hooks/useWorkflowDocuments.tsx","../src/components/DocumentCard/AvatarGroup.tsx","../src/components/UserDisplay.tsx","../src/components/DocumentCard/CompleteButton.tsx","../src/components/DocumentCard/core/TimeAgo.tsx","../src/components/DocumentCard/core/DraftStatus.tsx","../src/components/DocumentCard/core/PublishedStatus.tsx","../src/components/DocumentCard/Validate.tsx","../src/components/DocumentCard/ValidationStatus.tsx","../src/components/DocumentCard/index.tsx","../src/components/DocumentList.tsx","../src/components/Filters.tsx","../src/components/StateTitle/Status.tsx","../src/components/StateTitle/index.tsx","../src/helpers/generateMultipleOrderRanks.ts","../src/components/FloatingCard.tsx","../src/components/Verify.tsx","../src/components/WorkflowTool.tsx","../src/tools/index.ts","../src/plugin.tsx"],"sourcesContent":["import type {SanityDocumentLike} from 'sanity'\n\nexport type State = {\n  id: string\n  transitions: string[]\n  title: string\n  roles?: string[]\n  requireAssignment?: boolean\n  requireValidation?: boolean\n  // From document badges\n  color?: 'primary' | 'success' | 'warning' | 'danger'\n}\n\nexport type StateCheck<Id, States> = {\n  id: Id\n  // Transitions is an array of State ids\n  transitions?: States extends {id: infer Id2}[] ? Id2[] : never\n} & State\n\nexport type WorkflowConfig = {\n  schemaTypes: string[]\n  states?: State[]\n}\n\nexport function defineStates<Id extends string, States extends StateCheck<Id, States>[]>(\n  states: States,\n): States {\n  return states\n}\n\nexport type User = {\n  createdAt: string\n  displayName: string\n  email: string\n  familyName: string\n  givenName: string\n  id: string\n  imageUrl: string\n  isCurrentUser: boolean\n  middleName: string\n  projectId: string\n  provider: string\n  sanityUserId: string\n  updatedAt: string\n}\n\nexport type Metadata = SanityDocumentLike & {\n  _rev: string\n  assignees: string[]\n  documentId: string\n  state: string\n  orderRank: string\n}\n\nexport type KeyedMetadata = {[key: string]: Metadata}\n\nexport type SanityDocumentWithMetadata = {\n  _metadata: Metadata\n  _id: string\n  _type: string\n  _rev: string\n  _updatedAt: string\n}\n","import {defineStates, type WorkflowConfig} from '../types'\n\nexport const API_VERSION = `2023-01-01`\n\nexport const DEFAULT_CONFIG: Required<WorkflowConfig> = {\n  schemaTypes: [],\n  states: defineStates([\n    {\n      id: 'inReview',\n      title: 'In review',\n      color: 'primary',\n      roles: ['editor', 'administrator'],\n      transitions: ['changesRequested', 'approved'],\n    },\n    {\n      id: 'changesRequested',\n      title: 'Changes requested',\n      color: 'warning',\n      roles: ['editor', 'administrator'],\n      transitions: ['approved'],\n    },\n    {\n      id: 'approved',\n      title: 'Approved',\n      color: 'success',\n      roles: ['administrator'],\n      transitions: ['changesRequested'],\n      requireAssignment: true,\n    },\n  ]),\n}\n","import {useMemo} from 'react'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {KeyedMetadata, Metadata} from '../types'\n\n/**\n * Takes the published ID of documents and return the metadata for those documents.\n *\n * @param ids Source document published IDs\n */\nexport function useWorkflowMetadata(ids: string[]): {\n  data: KeyedMetadata\n  loading: boolean\n  error: unknown\n} {\n  const {\n    data: _rawData,\n    loading,\n    error,\n  } = useListeningQuery<Metadata[]>(\n    `*[_type == \"workflow.metadata\" && documentId in $ids]{\n      _id,\n      _type,\n      _rev,\n      assignees,\n      documentId,\n      state,\n      orderRank\n    }`,\n    {\n      params: {ids},\n      options: {apiVersion: API_VERSION},\n    },\n  )\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const rawData = _rawData as Metadata[]\n\n  const keyedMetadata = useMemo(() => {\n    if (!rawData || rawData.length === 0) return {}\n\n    const acc: KeyedMetadata = {}\n    for (const item of rawData) {\n      acc[item.documentId] = item\n    }\n    return acc\n  }, [rawData])\n\n  return {data: keyedMetadata, loading, error}\n}\n","import {useCallback, useContext, useMemo, useState, createContext} from 'react'\nimport type {LayoutProps} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport type {KeyedMetadata, WorkflowConfig} from '../types'\n\nexport type WorkflowContextValue = Required<WorkflowConfig> & {\n  data: KeyedMetadata\n  loading: boolean\n  error: unknown\n  ids: string[]\n  addId: (id: string) => void\n  removeId: (id: string) => void\n}\n\nconst WorkflowContext = createContext<WorkflowContextValue>({\n  data: {},\n  loading: false,\n  error: false,\n  ids: [],\n  addId: () => null,\n  removeId: () => null,\n  ...DEFAULT_CONFIG,\n})\n\nexport function useWorkflowContext(id?: string) {\n  const current = useContext(WorkflowContext)\n\n  return {...current, metadata: id ? current.data[id] : null}\n}\n\ntype WorkflowProviderProps = LayoutProps & Required<WorkflowConfig>\n\n/**\n * This Provider wraps the Studio and provides the workflow context to document actions and badges.\n * This is so individual actions and badges do not need to all register their own listeners.\n * Instead, each document \"signals\" its ID up to the provider, which then registers a single listener\n * This is performed inside of a component loaded at the root level of the Document Form\n */\nexport function WorkflowProvider(props: WorkflowProviderProps) {\n  const [ids, setIds] = useState<string[]>([])\n  const addId = useCallback(\n    (id: string) => setIds((current) => (current.includes(id) ? current : [...current, id])),\n    [],\n  )\n  const removeId = useCallback(\n    (id: string) => setIds((current) => current.filter((i) => i !== id)),\n    [],\n  )\n  const {data, loading, error} = useWorkflowMetadata(ids)\n\n  const contextValue = useMemo(\n    () => ({\n      data,\n      loading,\n      error,\n      ids,\n      addId,\n      removeId,\n      states: props.states,\n      schemaTypes: props.schemaTypes,\n    }),\n    [data, loading, error, ids, addId, removeId, props.states, props.schemaTypes],\n  )\n\n  return (\n    <WorkflowContext.Provider value={contextValue}>\n      {props.renderDefault(props)}\n    </WorkflowContext.Provider>\n  )\n}\n","export function arraysContainMatchingString(one: string[], two: string[]): boolean {\n  return one.some((item) => two.includes(item))\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {useToast} from '@sanity/ui'\nimport {\n  type DocumentActionDescription,\n  useCurrentUser,\n  useValidationStatus,\n  type DocumentActionProps,\n  useClient,\n} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport type {State} from '../types'\n\nfunction useUpdateWorkflow(\n  {id, type}: DocumentActionProps,\n  actionState: State,\n): DocumentActionDescription | null {\n  const user = useCurrentUser()\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n  const currentUser = useCurrentUser()\n\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const currentState = states.find((s) => s.id === metadata?.state)\n  const {assignees = []} = metadata ?? {}\n\n  // TODO: Shouldn't the document action props contain this?\n  const {validation, isValidating} = useValidationStatus(id, type, false)\n  const hasValidationErrors =\n    currentState?.requireValidation &&\n    !isValidating &&\n    validation?.length > 0 &&\n    validation.find((v) => v.level === 'error')\n\n  if (error) {\n    console.error(error)\n  }\n\n  const onHandle = (documentId: string, newState: State) => {\n    client\n      .patch(`workflow-metadata.${documentId}`)\n      .set({state: newState.id})\n      .commit()\n      .then(() => {\n        toast.push({\n          status: 'success',\n          title: `Document state now \"${newState.title}\"`,\n        })\n        return undefined\n      })\n      .catch((err) => {\n        console.error(err)\n        toast.push({\n          status: 'error',\n          title: `Document state update failed`,\n        })\n      })\n  }\n\n  // Remove button if:\n  // Document is not in Workflow OR\n  // The current State is the same as this actions State\n  if (!metadata || (currentState && currentState.id === actionState.id)) {\n    return null\n  }\n\n  const currentStateIndex = states.findIndex((s) => s.id === currentState?.id)\n  const actionStateIndex = states.findIndex((s) => s.id === actionState.id)\n  const direction = actionStateIndex > currentStateIndex ? 'promote' : 'demote'\n  const DirectionIcon = direction === 'promote' ? ArrowRightIcon : ArrowLeftIcon\n  const directionLabel = direction === 'promote' ? 'Promote' : 'Demote'\n\n  const userRoleCanUpdateState =\n    user?.roles?.length && actionState?.roles?.length\n      ? // If the Action state is limited to specific roles\n        // check that the current user has one of those roles\n        arraysContainMatchingString(\n          user.roles.map((r) => r.name),\n          actionState.roles,\n        )\n      : // No roles specified on the next state, so anyone can update\n        actionState?.roles?.length !== 0\n\n  const actionStateIsAValidTransition =\n    currentState?.id && currentState?.transitions?.length\n      ? // If the Current State limits transitions to specific States\n        // Check that the Action State is in Current State's transitions array\n        currentState.transitions.includes(actionState.id)\n      : // Otherwise this isn't a problem\n        true\n\n  const userAssignmentCanUpdateState = actionState.requireAssignment\n    ? // If the Action State requires assigned users\n      // Check the current user ID is in the assignees array\n      currentUser && assignees?.length && assignees.includes(currentUser.id)\n    : // Otherwise this isn't a problem\n      true\n\n  let title = `${directionLabel} State to \"${actionState.title}\"`\n\n  if (!userRoleCanUpdateState) {\n    title = `Your User role cannot ${directionLabel} State to \"${actionState.title}\"`\n  } else if (!actionStateIsAValidTransition) {\n    title = `You cannot ${directionLabel} State to \"${actionState.title}\" from \"${currentState?.title}\"`\n  } else if (!userAssignmentCanUpdateState) {\n    title = `You must be assigned to the document to ${directionLabel} State to \"${actionState.title}\"`\n  } else if (currentState?.requireValidation && isValidating) {\n    title = `Document is validating, cannot ${directionLabel} State to \"${actionState.title}\"`\n  } else if (hasValidationErrors) {\n    title = `Document has validation errors, cannot ${directionLabel} State to \"${actionState.title}\"`\n  }\n\n  return {\n    icon: DirectionIcon,\n    disabled:\n      loading ||\n      Boolean(error) ||\n      (currentState?.requireValidation && isValidating) ||\n      Boolean(hasValidationErrors) ||\n      !currentState ||\n      !userRoleCanUpdateState ||\n      !actionStateIsAValidTransition ||\n      !userAssignmentCanUpdateState,\n    title,\n    label: actionState.title,\n    onHandle: () => onHandle(id, actionState),\n  }\n}\n\n// @TODO memoize this call, so the defined useUpdateWorkflow can persist if actionState is the same\nexport function defineUpdateWorkflow(\n  actionState: State,\n): (props: DocumentActionProps) => DocumentActionDescription | null {\n  return (props: DocumentActionProps) => useUpdateWorkflow(props, actionState)\n}\n","import {useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useClient} from 'sanity'\nimport {UserSelectMenu} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {User} from '../types'\n\ntype UserAssignmentProps = {\n  userList: User[]\n  assignees: string[]\n  documentId: string\n}\n\nexport default function UserAssignment(props: UserAssignmentProps) {\n  const {assignees, userList, documentId} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  const addAssignee = useCallback(\n    (userId: string) => {\n      const user = userList.find((u) => u.id === userId)\n\n      if (!userId || !user) {\n        return toast.push({\n          status: 'error',\n          title: 'Could not find User',\n        })\n      }\n\n      return client\n        .patch(`workflow-metadata.${documentId}`)\n        .setIfMissing({assignees: []})\n        .insert(`after`, `assignees[-1]`, [userId])\n        .commit()\n        .then(() => {\n          return toast.push({\n            title: `Added ${user.displayName} to assignees`,\n            status: 'success',\n          })\n        })\n        .catch((err) => {\n          console.error(err)\n\n          return toast.push({\n            title: `Failed to add assignee`,\n            description: userId,\n            status: 'error',\n          })\n        })\n    },\n    [documentId, client, toast, userList],\n  )\n\n  const removeAssignee = useCallback(\n    (userId: string) => {\n      const user = userList.find((u) => u.id === userId)\n\n      if (!userId || !user) {\n        return toast.push({\n          status: 'error',\n          title: 'Could not find User',\n        })\n      }\n\n      return client\n        .patch(`workflow-metadata.${documentId}`)\n        .unset([`assignees[@ == \"${userId}\"]`])\n        .commit()\n        .then(() => {\n          return toast.push({\n            title: `Removed ${user.displayName} from assignees`,\n            status: 'success',\n          })\n        })\n        .catch((err) => {\n          console.error(err)\n\n          return toast.push({\n            title: `Failed to remove assignee`,\n            description: documentId,\n            status: 'error',\n          })\n        })\n    },\n    [client, toast, documentId, userList],\n  )\n\n  const clearAssignees = useCallback(() => {\n    return client\n      .patch(`workflow-metadata.${documentId}`)\n      .unset([`assignees`])\n      .commit()\n      .then(() => {\n        return toast.push({\n          title: `Cleared assignees`,\n          status: 'success',\n        })\n      })\n      .catch((err) => {\n        console.error(err)\n\n        return toast.push({\n          title: `Failed to clear assignees`,\n          description: documentId,\n          status: 'error',\n        })\n      })\n  }, [client, toast, documentId])\n\n  return (\n    <UserSelectMenu\n      style={{maxHeight: 300}}\n      value={assignees || []}\n      userList={userList}\n      onAdd={addAssignee}\n      onClear={clearAssignees}\n      onRemove={removeAssignee}\n    />\n  )\n}\n","import {UsersIcon} from '@sanity/icons/Users'\nimport {useState} from 'react'\nimport type {DocumentActionDescription, DocumentActionProps} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useAssignWorkflow({id}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error} = useWorkflowContext(id)\n  const [isDialogOpen, setDialogOpen] = useState(false)\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  if (error) {\n    console.error(error)\n  }\n\n  if (!metadata) {\n    return null\n  }\n\n  return {\n    icon: UsersIcon,\n    disabled: !metadata || loading || Boolean(error),\n    label: `Assign`,\n    title: metadata ? null : `Document is not in Workflow`,\n    dialog: isDialogOpen && {\n      type: 'popover',\n      onClose: () => {\n        setDialogOpen(false)\n      },\n      content: (\n        <UserAssignment\n          userList={userList}\n          assignees={metadata?.assignees?.length > 0 ? metadata.assignees : []}\n          documentId={id}\n        />\n      ),\n    },\n    onHandle: () => {\n      setDialogOpen(true)\n    },\n  }\n}\n","import {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useState} from 'react'\nimport {type DocumentActionDescription, type DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useBeginWorkflow({\n  id,\n  draft,\n}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n  const [beginning, setBeginning] = useState(false)\n  const [complete, setComplete] = useState(false)\n\n  if (error) {\n    console.error(error)\n  }\n\n  const handle = useCallback(async () => {\n    setBeginning(true)\n    const lowestOrderFirstState = await client.fetch(\n      /* groq */ `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n      {state: states?.[0]?.id},\n    )\n    await client.createIfNotExists({\n      _id: `workflow-metadata.${id}`,\n      _type: `workflow.metadata`,\n      documentId: id,\n      state: states?.[0]?.id,\n      orderRank: lowestOrderFirstState\n        ? LexoRank.parse(lowestOrderFirstState).genNext().toString()\n        : LexoRank.min().toString(),\n    })\n    toast.push({\n      status: 'success',\n      title: 'Workflow started',\n      description: `Document is now \"${states?.[0]?.title}\"`,\n    })\n    setBeginning(false)\n    // Optimistically remove action\n    setComplete(true)\n  }, [id, states, client, toast])\n\n  if (!draft || complete || metadata) {\n    return null\n  }\n\n  return {\n    icon: SplitVerticalIcon,\n    disabled: metadata || loading || Boolean(error) || beginning || complete,\n    label: beginning ? `Beginning...` : `Begin Workflow`,\n    onHandle: handle,\n  }\n}\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {type ToastContextValue, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n  type DocumentActionDescription,\n  type DocumentActionProps,\n  type SanityClient,\n  useClient,\n} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport const handleDeleteMetadata = async (\n  client: SanityClient,\n  toast: ToastContextValue,\n  id: string,\n) => {\n  try {\n    await client.delete(`workflow-metadata.${id}`)\n    toast.push({\n      status: 'success',\n      title: 'Workflow completed',\n    })\n  } catch (error) {\n    console.error(error)\n    toast.push({\n      status: 'error',\n      title: 'Could not complete Workflow',\n    })\n  }\n}\n\nexport function useCompleteWorkflow({id}: DocumentActionProps): DocumentActionDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(id)\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  if (error) {\n    console.error(error)\n  }\n\n  const handle = useCallback(async () => {\n    await handleDeleteMetadata(client, toast, id)\n  }, [client, toast, id])\n\n  if (!metadata) {\n    return null\n  }\n\n  const state = states.find((s) => s.id === metadata.state)\n  const isLastState = state?.id === states?.[states?.length - 1]?.id\n\n  return {\n    icon: CheckmarkIcon,\n    disabled: loading || Boolean(error) || !isLastState,\n    label: `Complete Workflow`,\n    title: isLastState\n      ? `Removes the document from the Workflow process`\n      : `Cannot remove from workflow until in the last state`,\n    onHandle: async () => {\n      await handle()\n    },\n    tone: 'positive',\n  }\n}\n","import {type DocumentBadgeDescription, type DocumentBadgeProps, useCurrentUser} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function useAssigneesBadge({\n  id: documentId,\n}: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const currentUser = useCurrentUser()\n  const {metadata, loading, error} = useWorkflowContext(documentId)\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  if (loading || error || !metadata) {\n    if (error) {\n      console.error(error)\n    }\n\n    return null\n  }\n\n  if (!metadata?.assignees?.length) {\n    return {\n      label: 'Unassigned',\n    }\n  }\n\n  const {assignees} = metadata ?? []\n  const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n  const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n  const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n  const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n  let label\n\n  if (hasMe && assigneesCount === 0) {\n    label = 'Assigned to Me'\n  } else if (hasMe && assigneesCount > 0) {\n    label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n  } else {\n    label = `${assigneesCount} assigned`\n  }\n\n  return {\n    label,\n    title,\n    color: 'primary',\n  }\n}\n","import type {DocumentBadgeDescription, DocumentBadgeProps} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\n\nexport function useStateBadge({\n  id: documentId,\n}: DocumentBadgeProps): DocumentBadgeDescription | null {\n  const {metadata, loading, error, states} = useWorkflowContext(documentId)\n  const state = states.find((s) => s.id === metadata?.state)\n\n  if (loading || error) {\n    if (error) {\n      console.error(error)\n    }\n\n    return null\n  }\n\n  if (!state) {\n    return null\n  }\n\n  return {\n    label: state.title,\n    // title: state.title,\n    color: state?.color,\n  }\n}\n","import {useEffect} from 'react'\nimport {type ObjectInputProps, getPublishedId} from 'sanity'\n\nimport {useWorkflowContext} from './WorkflowContext'\n\n// This component is loaded at the root level of the Document Form\n// It is used to signal the document ID to the WorkflowProvider\nexport default function WorkflowSignal(props: ObjectInputProps) {\n  const documentId = props?.value?.['_id'] ? getPublishedId(props.value['_id']) : null\n\n  const {addId, removeId} = useWorkflowContext()\n\n  useEffect(() => {\n    // On mount, add  to the query of listening documents\n    if (documentId) {\n      addId(documentId)\n    }\n\n    // On unmount, remove from the query of listening documents\n    return () => {\n      if (documentId) {\n        removeId(documentId)\n      }\n    }\n  }, [documentId, addId, removeId])\n\n  return props.renderDefault(props)\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Button} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\n\ntype EditButtonProps = {\n  id: string\n  type: string\n  disabled?: boolean\n}\n\nexport default function EditButton(props: EditButtonProps) {\n  const {id, type, disabled = false} = props\n  const {navigateIntent} = useRouter()\n\n  return (\n    <Button\n      onClick={() => navigateIntent('edit', {id, type})}\n      mode=\"ghost\"\n      fontSize={1}\n      padding={2}\n      tabIndex={-1}\n      icon={EditIcon}\n      text=\"Edit\"\n      disabled={disabled}\n    />\n  )\n}\n","import {Flex, Card, Spinner} from '@sanity/ui'\nimport {Preview, type SanityDocument, type StringInputProps, useSchema} from 'sanity'\nimport {useListeningQuery, Feedback} from 'sanity-plugin-utils'\n\nimport EditButton from './EditButton'\n\n// TODO: Update this to use the same component as the Tool\nexport default function Field(props: StringInputProps) {\n  const schema = useSchema()\n  const {\n    data: _data,\n    loading,\n    error,\n  } = useListeningQuery<SanityDocument>(`*[_id in [$id, $draftId]]|order(_updatedAt)[0]`, {\n    params: {\n      id: String(props.value),\n      draftId: `drafts.${String(props.value)}`,\n    },\n  })\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const data = _data as SanityDocument\n\n  if (loading) {\n    return <Spinner />\n  }\n\n  const schemaType = schema.get(data?._type ?? ``)\n\n  if (error || !data?._type || !schemaType) {\n    return <Feedback tone=\"critical\" title=\"Error with query\" />\n  }\n\n  return (\n    <Card border padding={2}>\n      <Flex align=\"center\" justify=\"space-between\" gap={2}>\n        <Preview layout=\"default\" value={data} schemaType={schemaType} />\n        <EditButton id={data._id} type={data._type} />\n      </Flex>\n    </Card>\n  )\n}\n","import {Card} from '@sanity/ui'\nimport {type FunctionComponent} from 'react'\nimport {type ArrayOfPrimitivesInputProps, useFormValue} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from './UserAssignment'\n\nconst UserAssignmentInput: FunctionComponent<ArrayOfPrimitivesInputProps> = (props) => {\n  const documentId = useFormValue([`documentId`])\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  const stringValue =\n    Array.isArray(props?.value) && props?.value?.length\n      ? props.value.map((item) => String(item))\n      : []\n\n  return (\n    <Card border padding={1}>\n      <UserAssignment userList={userList} assignees={stringValue} documentId={String(documentId)} />\n    </Card>\n  )\n}\n\nexport default UserAssignmentInput\n","import {LexoRank} from 'lexorank'\n\n// Use in initial value field by passing in the rank value of the last document\n// If no value passed, generate a sensibly low rank\nexport default function initialRank(lastRankValue = ``): string {\n  const lastRank =\n    lastRankValue && typeof lastRankValue === 'string'\n      ? LexoRank.parse(lastRankValue)\n      : LexoRank.min()\n  const nextRank = lastRank.genNext().genNext()\n\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  return (nextRank as any).value\n}\n","import {defineField, defineType} from 'sanity'\n\nimport Field from '../../components/DocumentCard/Field'\nimport UserAssignmentInput from '../../components/UserAssignmentInput'\nimport {API_VERSION} from '../../constants'\nimport initialRank from '../../helpers/initialRank'\nimport type {State} from '../../types'\n\nexport default (states: State[]) =>\n  defineType({\n    type: 'document',\n    name: 'workflow.metadata',\n    title: 'Workflow metadata',\n    liveEdit: true,\n    fields: [\n      defineField({\n        name: 'state',\n        description: `The current \"State\" of the document. Field is read only as changing it would not fire the state's \"operation\" setting. These are fired in the Document Actions and in the custom Tool.`,\n        readOnly: true,\n        type: 'string',\n        options: {\n          list: states.length\n            ? states.map((state) => ({\n                value: state.id,\n                title: state.title,\n              }))\n            : [],\n          layout: 'radio',\n        },\n      }),\n      defineField({\n        name: 'documentId',\n        title: 'Document ID',\n        description:\n          'Used to help identify the target document that this metadata is tracking state for.',\n        type: 'string',\n        readOnly: true,\n        components: {\n          input: Field,\n        },\n      }),\n      defineField({\n        name: 'orderRank',\n        description: 'Used to maintain order position of cards in the Tool.',\n        type: 'string',\n        readOnly: true,\n        initialValue: async (_, {getClient}) => {\n          const lastDocOrderRank = await getClient({\n            apiVersion: API_VERSION,\n          }).fetch(/* groq */ `*[_type == $type]|order(@[$order] desc)[0][$order]`, {\n            order: `orderRank`,\n            type: `workflow.metadata`,\n          })\n\n          return initialRank(lastDocOrderRank)\n        },\n      }),\n      defineField({\n        type: 'array',\n        name: 'assignees',\n        of: [{type: 'string'}],\n        components: {\n          input: UserAssignmentInput,\n        },\n      }),\n    ],\n  })\n","import type {SanityDocumentWithMetadata} from '../types'\n\nexport function filterItemsAndSort(\n  items: SanityDocumentWithMetadata[],\n  stateId: string,\n  selectedUsers: string[] = [],\n  selectedSchemaTypes: null | string[] = [],\n): SanityDocumentWithMetadata[] {\n  return (\n    items\n      // Only items that have existing documents\n      .filter((item) => item?._id)\n      // Only items of this state\n      .filter((item) => item?._metadata?.state === stateId)\n      // Only items with selected users, if the document has any assigned users\n      .filter((item) =>\n        selectedUsers.length && item._metadata?.assignees?.length\n          ? item._metadata?.assignees.some((assignee) => selectedUsers.includes(assignee))\n          : !selectedUsers.length,\n      )\n      // Only items of selected schema types, if any are selected\n      .filter((item) => {\n        if (!selectedSchemaTypes) {\n          return true\n        }\n\n        return selectedSchemaTypes.length ? selectedSchemaTypes.includes(item._type) : false\n      })\n      // Sort by metadata orderRank, a string field\n      .sort((a, b) => {\n        const aOrderRank = a._metadata?.orderRank || '0'\n        const bOrderRank = b._metadata?.orderRank || '0'\n\n        return aOrderRank.localeCompare(bOrderRank)\n      })\n  )\n}\n","import type {DraggableLocation} from '@hello-pangea/dnd'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {useClient} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport type {SanityDocumentWithMetadata, State} from '../types'\n\nconst QUERY = /* groq */ `*[_type == \"workflow.metadata\"]|order(orderRank){\n  \"_metadata\": {\n    _rev,\n    assignees,\n    documentId,\n    state,\n    orderRank,\n    \"draftDocumentId\": \"drafts.\" + documentId,\n  }\n}{\n  ...,\n  ...(\n    *[_id == ^._metadata.documentId || _id == ^._metadata.draftDocumentId]|order(_updatedAt)[0]{\n      _id,\n      _type,\n      _rev,\n      _updatedAt\n    }\n  )\n}`\n\ntype WorkflowDocuments = {\n  workflowData: {\n    data: SanityDocumentWithMetadata[]\n    loading: boolean\n    error: unknown\n  }\n  operations: {\n    move: (\n      draggedId: string,\n      destination: DraggableLocation,\n      states: State[],\n      newOrder: string,\n    ) => Promise<{_id: string; _type: string; documentId: string; state: State} | null>\n  }\n}\n\nexport function useWorkflowDocuments(schemaTypes: string[]): WorkflowDocuments {\n  const toast = useToast()\n  const client = useClient({apiVersion: API_VERSION})\n\n  // Get and listen to changes on documents + workflow metadata documents\n  const {\n    data: _data,\n    loading,\n    error,\n  } = useListeningQuery<SanityDocumentWithMetadata[]>(QUERY, {\n    params: {schemaTypes},\n    initialValue: [],\n  })\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const data = _data as SanityDocumentWithMetadata[]\n\n  const [localDocuments, setLocalDocuments] = useState<SanityDocumentWithMetadata[]>([])\n\n  useEffect(() => {\n    if (data) {\n      // Fix this later\n      // oxlint-disable-next-line react/react-compiler\n      setLocalDocuments(data)\n    }\n  }, [data])\n\n  const move = useCallback(\n    async (\n      draggedId: string,\n      destination: DraggableLocation,\n      states: State[],\n      newOrder: string,\n    ) => {\n      // Optimistic update\n      const currentLocalData = localDocuments\n      const newLocalDocuments = localDocuments.map((item) => {\n        if (item?._metadata?.documentId === draggedId) {\n          return {\n            ...item,\n            _metadata: {\n              ...item._metadata,\n              state: destination.droppableId,\n              orderRank: newOrder,\n              // This value won't be written to the document\n              // It's done so that un/publish operations don't happen twice\n              // Because a moved document's card will update once optimistically\n              // and then again when the document is updated\n              optimistic: true,\n            },\n          }\n        }\n\n        return item\n      })\n\n      setLocalDocuments(newLocalDocuments)\n\n      // Now client-side update\n      const newStateId = destination.droppableId\n      const newState = states.find((s) => s.id === newStateId)\n      const document = localDocuments.find((d) => d?._metadata?.documentId === draggedId)\n\n      if (!newState?.id) {\n        toast.push({\n          title: `Could not find target state ${newStateId}`,\n          status: 'error',\n        })\n        return null\n      }\n\n      if (!document) {\n        toast.push({\n          title: `Could not find dragged document in data`,\n          status: 'error',\n        })\n        return null\n      }\n\n      // We need to know if it's a draft or not\n      const {_id, _type} = document\n\n      // Metadata + useDocumentOperation always uses Published id\n      const {documentId, _rev} = document._metadata || {}\n\n      await client\n        .patch(`workflow-metadata.${documentId}`)\n        .ifRevisionId(_rev)\n        .set({state: newStateId, orderRank: newOrder})\n        .commit()\n        .then((res) => {\n          toast.push({\n            title:\n              newState.id === document._metadata.state\n                ? `Reordered in \"${newState?.title ?? newStateId}\"`\n                : `Moved to \"${newState?.title ?? newStateId}\"`,\n            status: 'success',\n          })\n          return res\n        })\n        .catch((err) => {\n          // Revert optimistic update\n          setLocalDocuments(currentLocalData)\n\n          toast.push({\n            title: `Failed to move to \"${newState?.title ?? newStateId}\"`,\n            description: err.message,\n            status: 'error',\n          })\n          return null\n        })\n\n      // Send back to the workflow board so a document update can happen\n      return {_id, _type, documentId, state: newState}\n    },\n    [client, toast, localDocuments],\n  )\n\n  return {\n    workflowData: {data: localDocuments, loading, error},\n    operations: {move},\n  }\n}\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {useCurrentUser, UserAvatar} from 'sanity'\n\nimport type {User} from '../../types'\n\ntype AvatarGroupProps = {\n  users: User[]\n  max?: number\n}\n\nexport default function AvatarGroup(props: AvatarGroupProps) {\n  const currentUser = useCurrentUser()\n  const {users, max = 4} = props\n\n  const len = users?.length\n  const {me, visibleUsers} = useMemo(() => {\n    return {\n      me: currentUser?.id ? users.find((u) => u.id === currentUser.id) : undefined,\n      visibleUsers: users.filter((u) => u.id !== currentUser?.id).slice(0, max - 1),\n    }\n  }, [users, max, currentUser])\n\n  if (!users?.length) {\n    return null\n  }\n\n  return (\n    <Flex align=\"center\" gap={1}>\n      {me ? <UserAvatar user={me} /> : null}\n      {visibleUsers.map((user) => (\n        <Box key={user.id} style={{marginRight: -8}}>\n          <UserAvatar user={user} />\n        </Box>\n      ))}\n      {len > max && (\n        <Box paddingLeft={2}>\n          <Text size={1}>+{len - max}</Text>\n        </Box>\n      )}\n    </Flex>\n  )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Grid, Popover, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useRef, useState} from 'react'\n\nimport type {User} from '../types'\nimport AvatarGroup from './DocumentCard/AvatarGroup'\nimport UserAssignment from './UserAssignment'\n\ntype UserDisplayProps = {\n  userList: User[]\n  assignees: string[]\n  documentId: string\n  disabled?: boolean\n}\n\nexport default function UserDisplay(props: UserDisplayProps) {\n  const {assignees, userList, documentId, disabled = false} = props\n\n  const buttonRef = useRef<HTMLButtonElement | null>(null)\n  const popoverRef = useRef<HTMLDivElement | null>(null)\n  const [isOpen, setIsOpen] = useState(false)\n\n  const close = useCallback(() => setIsOpen(false), [])\n  const open = useCallback(() => setIsOpen(true), [])\n\n  useClickOutsideEvent(close, () => [buttonRef.current, popoverRef.current])\n\n  return (\n    <Popover\n      ref={popoverRef}\n      content={<UserAssignment userList={userList} assignees={assignees} documentId={documentId} />}\n      portal\n      open={isOpen}\n    >\n      {!assignees || assignees.length === 0 ? (\n        <Button\n          ref={buttonRef}\n          onClick={open}\n          fontSize={1}\n          padding={2}\n          tabIndex={-1}\n          icon={AddIcon}\n          text=\"Assign\"\n          tone=\"positive\"\n          mode=\"ghost\"\n          disabled={disabled}\n        />\n      ) : (\n        <Grid>\n          <Button ref={buttonRef} onClick={open} padding={0} mode=\"bleed\" disabled={disabled}>\n            <AvatarGroup users={userList.filter((u) => assignees.includes(u.id))} />\n          </Button>\n        </Grid>\n      )}\n    </Popover>\n  )\n}\n","import {CheckmarkIcon} from '@sanity/icons/Checkmark'\nimport {Box, Button, Text, Tooltip, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useClient} from 'sanity'\n\nimport {handleDeleteMetadata} from '../../actions/useCompleteWorkflow'\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n  documentId: string\n  disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {documentId, disabled = false} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  const handleComplete: React.MouseEventHandler<HTMLButtonElement> = useCallback(\n    async (event) => {\n      const id = event.currentTarget.value\n\n      if (!id) {\n        return\n      }\n\n      await handleDeleteMetadata(client, toast, id)\n    },\n    [client, toast],\n  )\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>Remove this document from Workflow</Text>\n        </Box>\n      }\n    >\n      <Button\n        value={documentId}\n        onClick={handleComplete}\n        text=\"Complete\"\n        icon={CheckmarkIcon}\n        tone=\"positive\"\n        mode=\"ghost\"\n        fontSize={1}\n        padding={2}\n        tabIndex={-1}\n        disabled={disabled}\n      />\n    </Tooltip>\n  )\n}\n","import {useRelativeTime} from 'sanity'\n\nexport interface TimeAgoProps {\n  time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n  const timeAgo = useRelativeTime(time)\n\n  return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type PreviewValue, type SanityDocument} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function DraftStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n  const {document} = props\n  const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {document ? (\n              <>Edited {updatedAt && <TimeAgo time={updatedAt} />}</>\n            ) : (\n              <>No unpublished edits</>\n            )}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n        <EditIcon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {PublishIcon} from '@sanity/icons/Publish'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type PreviewValue, type SanityDocument} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n  const {document} = props\n  const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {document ? (\n              <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n            ) : (\n              <>Not published</>\n            )}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n        <PublishIcon />\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {useEffect} from 'react'\nimport {type ValidationMarker, useValidationStatus} from 'sanity'\n\ntype ValidateProps = {\n  documentId: string\n  type: string\n  onChange: (validation: {isValidating: boolean; validation: ValidationMarker[]}) => void\n}\n\n// Document validation is siloed into its own component\n// Because it's not performant to run on a lot of documents\nexport default function Validate(props: ValidateProps) {\n  const {documentId, type, onChange} = props\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {isValidating, validation = []} = useValidationStatus(documentId, type, false)\n\n  useEffect(() => {\n    onChange({isValidating, validation})\n  }, [onChange, isValidating, validation])\n\n  return null\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone, type ValidationMarker} from 'sanity'\n\ntype ValidationStatusProps = {\n  validation: ValidationMarker[]\n}\n\nexport function ValidationStatus(props: ValidationStatusProps) {\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {validation = []} = props\n\n  if (!validation.length) {\n    return null\n  }\n\n  const hasError = validation.some((item) => item.level === 'error')\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>\n            {validation.length === 1\n              ? `1 validation issue`\n              : `${validation.length} validation issues`}\n          </Text>\n        </Box>\n      }\n    >\n      <TextWithTone tone={hasError ? `critical` : `caution`} size={1}>\n        {hasError ? <ErrorOutlineIcon /> : <WarningOutlineIcon />}\n      </TextWithTone>\n    </Tooltip>\n  )\n}\n","import {DragHandleIcon} from '@sanity/icons/DragHandle'\nimport {Box, Card, type CardTone, Flex, Stack, useTheme} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {type SchemaType, type ValidationMarker, useSchema, Preview} from 'sanity'\n\nimport type {SanityDocumentWithMetadata, State, User} from '../../types'\nimport UserDisplay from '../UserDisplay'\nimport CompleteButton from './CompleteButton'\nimport {DraftStatus} from './core/DraftStatus'\nimport {PublishedStatus} from './core/PublishedStatus'\nimport EditButton from './EditButton'\nimport Validate from './Validate'\nimport {ValidationStatus} from './ValidationStatus'\n\ntype DocumentCardProps = {\n  isDragDisabled: boolean\n  isPatching: boolean\n  userRoleCanDrop: boolean\n  isDragging: boolean\n  item: SanityDocumentWithMetadata\n  states: State[]\n  toggleInvalidDocumentId: (documentId: string, action: 'ADD' | 'REMOVE') => void\n  userList: User[]\n}\n\nexport function DocumentCard(props: DocumentCardProps) {\n  const {\n    isDragDisabled,\n    isPatching,\n    userRoleCanDrop,\n    isDragging,\n    item,\n    states,\n    toggleInvalidDocumentId,\n    userList,\n  } = props\n  // oxlint-disable-next-line no-useless-default-assignment\n  const {assignees = [], documentId} = item._metadata ?? {}\n  const schema = useSchema()\n  const state = states.find((s) => s.id === item._metadata?.state)\n\n  const theme = useTheme()\n  const isDarkMode = getTheme_v2({sanity: theme.sanity}).color._dark\n  const defaultCardTone = isDarkMode ? `transparent` : `default`\n\n  // Validation only runs if the state requests it\n  // Because it's not performant to run it on many documents simultaneously\n  // So we fake it here, and maybe set it inside <Validate />\n  const [optimisticValidation, setOptimisticValidation] = useState<{\n    isValidating: boolean\n    validation: ValidationMarker[]\n  }>({\n    isValidating: state?.requireValidation ?? false,\n    validation: [],\n  })\n\n  const {isValidating, validation} = optimisticValidation\n\n  const handleValidation = useCallback(\n    (updates: {isValidating: boolean; validation: ValidationMarker[]}) => {\n      setOptimisticValidation(updates)\n    },\n    [],\n  )\n\n  const cardTone = useMemo(() => {\n    let tone: CardTone = defaultCardTone\n\n    if (!userRoleCanDrop) return isDarkMode ? `default` : `transparent`\n    if (!documentId) return tone\n    if (isPatching) tone = isDarkMode ? `default` : `transparent`\n    if (isDragging) tone = `positive`\n\n    if (state?.requireValidation && !isValidating && validation.length > 0) {\n      if (validation.some((v) => v.level === 'error')) {\n        tone = `critical`\n      } else {\n        tone = `caution`\n      }\n    }\n\n    return tone\n  }, [\n    defaultCardTone,\n    userRoleCanDrop,\n    isPatching,\n    isDarkMode,\n    documentId,\n    isDragging,\n    isValidating,\n    validation,\n    state?.requireValidation,\n  ])\n\n  // Update validation status\n  // Cannot be done in the above memo because it would set state during render\n  useEffect(() => {\n    if (!isValidating && validation.length > 0) {\n      if (validation.some((v) => v.level === 'error')) {\n        toggleInvalidDocumentId(documentId, 'ADD')\n      } else {\n        toggleInvalidDocumentId(documentId, 'REMOVE')\n      }\n    } else {\n      toggleInvalidDocumentId(documentId, 'REMOVE')\n    }\n  }, [documentId, isValidating, toggleInvalidDocumentId, validation])\n\n  const hasError = useMemo(\n    () => (isValidating ? false : validation.some((v) => v.level === 'error')),\n    [isValidating, validation],\n  )\n\n  const isLastState = useMemo(\n    () => states?.[states?.length - 1]?.id === item._metadata?.state,\n    [states, item._metadata.state],\n  )\n\n  return (\n    <>\n      {state?.requireValidation ? (\n        <Validate documentId={documentId} type={item._type} onChange={handleValidation} />\n      ) : null}\n      <Box paddingBottom={3} paddingX={3}>\n        <Card radius={2} shadow={isDragging ? 3 : 1} tone={cardTone}>\n          <Stack>\n            <Card\n              borderBottom\n              radius={2}\n              paddingRight={2}\n              tone={cardTone}\n              style={{pointerEvents: 'none'}}\n            >\n              <Flex align=\"center\" justify=\"space-between\" gap={1}>\n                <Box flex={1}>\n                  <Preview\n                    layout=\"default\"\n                    skipVisibilityCheck\n                    value={item}\n                    // oxlint-disable-next-line no-unsafe-type-assertion\n                    schemaType={schema.get(item._type) as SchemaType}\n                  />\n                </Box>\n                <Box style={{flexShrink: 0}}>\n                  {hasError || isDragDisabled || isPatching ? null : <DragHandleIcon />}\n                </Box>\n              </Flex>\n            </Card>\n\n            <Card padding={2} radius={2} tone=\"inherit\">\n              <Flex align=\"center\" justify=\"space-between\" gap={3}>\n                <Box flex={1}>\n                  {documentId && (\n                    <UserDisplay\n                      userList={userList}\n                      assignees={assignees}\n                      documentId={documentId}\n                      disabled={!userRoleCanDrop}\n                    />\n                  )}\n                </Box>\n                {validation.length > 0 ? <ValidationStatus validation={validation} /> : null}\n                <DraftStatus document={item} />\n                <PublishedStatus document={item} />\n                <EditButton id={item._id} type={item._type} disabled={!userRoleCanDrop} />\n                {isLastState && states.length <= 3 ? (\n                  <CompleteButton documentId={documentId} disabled={!userRoleCanDrop} />\n                ) : null}\n              </Flex>\n              {isLastState && states.length > 3 ? (\n                <Stack paddingTop={2}>\n                  <CompleteButton documentId={documentId} disabled={!userRoleCanDrop} />\n                </Stack>\n              ) : null}\n            </Card>\n          </Stack>\n        </Card>\n      </Box>\n    </>\n  )\n}\n","import {Draggable, type DraggableStyle} from '@hello-pangea/dnd'\nimport {useVirtualizer, type VirtualItem} from '@tanstack/react-virtual'\nimport {type CSSProperties, useCallback, useMemo, useRef} from 'react'\nimport type {CurrentUser} from 'sanity'\nimport type {UserExtended} from 'sanity-plugin-utils'\n\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport type {SanityDocumentWithMetadata, State} from '../types'\nimport {DocumentCard} from './DocumentCard'\n\ntype DocumentListProps = {\n  data: SanityDocumentWithMetadata[]\n  invalidDocumentIds: string[]\n  patchingIds: string[]\n  selectedSchemaTypes: string[]\n  selectedUserIds: string[]\n  state: State\n  states: State[]\n  toggleInvalidDocumentId: (documentId: string, action: 'ADD' | 'REMOVE') => void\n  user: CurrentUser | null\n  userList: UserExtended[]\n  userRoleCanDrop: boolean\n}\n\nfunction getStyle(\n  draggableStyle: DraggableStyle | undefined,\n  virtualItem: VirtualItem,\n): CSSProperties {\n  // Default transform required by tanstack virtual for positioning\n  let transform = `translateY(${virtualItem.start}px)`\n\n  // If a card is being dragged over, this card needs to move up or down\n  if (draggableStyle && draggableStyle.transform) {\n    // So get the transform value from beautiful-dnd\n    const draggableTransformY = parseInt(\n      draggableStyle.transform.split(',')[1]!.split('px')[0]!,\n      10,\n    )\n\n    // And apply it to the card\n    transform = `translateY(${virtualItem.start + draggableTransformY}px)`\n  }\n\n  return {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    width: '100%',\n    height: `${virtualItem.size}px`,\n    transform,\n  }\n}\n\n// oxlint-disable-next-line react/react-compiler\nexport default function DocumentList(props: DocumentListProps) {\n  const {\n    // oxlint-disable-next-line no-useless-default-assignment\n    data = [],\n    invalidDocumentIds,\n    patchingIds,\n    selectedSchemaTypes,\n    selectedUserIds,\n    state,\n    states,\n    toggleInvalidDocumentId,\n    user,\n    userList,\n    userRoleCanDrop,\n  } = props\n\n  const dataFiltered = useMemo(() => {\n    return data.length\n      ? filterItemsAndSort(data, state.id, selectedUserIds, selectedSchemaTypes)\n      : []\n  }, [data, selectedSchemaTypes, selectedUserIds, state.id])\n\n  const parentRef = useRef(null)\n\n  const virtualizer = useVirtualizer({\n    count: dataFiltered.length,\n    getScrollElement: useCallback(() => parentRef.current, []),\n    getItemKey: useCallback(\n      (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n      [dataFiltered],\n    ),\n    estimateSize: useCallback(() => 115, []),\n    overscan: 7,\n    measureElement: useCallback((element: Element) => {\n      return element.getBoundingClientRect().height || 115\n    }, []),\n  })\n\n  if (!data.length || !dataFiltered.length) {\n    return null\n  }\n\n  return (\n    <div\n      ref={parentRef}\n      style={{\n        height: `100%`,\n        overflow: 'auto',\n        // Smooths scrollbar behaviour\n        overflowAnchor: 'none',\n        scrollBehavior: 'auto',\n        paddingTop: 1,\n      }}\n    >\n      <div\n        style={{\n          height: `${virtualizer.getTotalSize()}px`,\n          width: '100%',\n          position: 'relative',\n        }}\n      >\n        {virtualizer.getVirtualItems().map((virtualItem) => {\n          const item = dataFiltered[virtualItem.index]\n\n          const {documentId, assignees} = item?._metadata ?? {}\n\n          const isInvalid = invalidDocumentIds.includes(documentId!)\n          const meInAssignees = user?.id ? assignees?.includes(user.id) : false\n          const isDragDisabled =\n            patchingIds.includes(documentId!) ||\n            !userRoleCanDrop ||\n            isInvalid ||\n            !(state.requireAssignment ? state.requireAssignment && meInAssignees : true)\n\n          return (\n            <Draggable\n              key={virtualItem.key}\n              draggableId={documentId!}\n              index={virtualItem.index}\n              isDragDisabled={isDragDisabled}\n            >\n              {(draggableProvided, draggableSnapshot) => (\n                <div\n                  ref={draggableProvided.innerRef}\n                  {...draggableProvided.draggableProps}\n                  {...draggableProvided.dragHandleProps}\n                  style={getStyle(draggableProvided.draggableProps.style, virtualItem)}\n                >\n                  <div ref={virtualizer.measureElement} data-index={virtualItem.index}>\n                    <DocumentCard\n                      userRoleCanDrop={userRoleCanDrop}\n                      isDragDisabled={isDragDisabled}\n                      isPatching={patchingIds.includes(documentId!)}\n                      isDragging={draggableSnapshot.isDragging}\n                      item={item!}\n                      toggleInvalidDocumentId={toggleInvalidDocumentId}\n                      userList={userList}\n                      states={states}\n                    />\n                  </div>\n                </div>\n              )}\n            </Draggable>\n          )\n        })}\n      </div>\n    </div>\n  )\n}\n","import {ResetIcon} from '@sanity/icons/Reset'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Button, Card, Flex, Menu, MenuButton} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {type UserExtended, UserSelectMenu} from 'sanity-plugin-utils'\n\ntype FiltersProps = {\n  uniqueAssignedUsers: UserExtended[]\n  selectedUserIds: string[]\n  schemaTypes: string[]\n  selectedSchemaTypes: string[]\n  toggleSelectedUser: (userId: string) => void\n  resetSelectedUsers: () => void\n  toggleSelectedSchemaType: (schemaType: string) => void\n}\n\nexport default function Filters(props: FiltersProps) {\n  const {\n    // oxlint-disable-next-line no-useless-default-assignment\n    uniqueAssignedUsers = [],\n    selectedUserIds,\n    schemaTypes,\n    selectedSchemaTypes,\n    toggleSelectedUser,\n    resetSelectedUsers,\n    toggleSelectedSchemaType,\n  } = props\n\n  const currentUser = useCurrentUser()\n  const schema = useSchema()\n\n  const onAdd = useCallback(\n    (id: string) => {\n      if (!selectedUserIds.includes(id)) {\n        toggleSelectedUser(id)\n      }\n    },\n    [selectedUserIds, toggleSelectedUser],\n  )\n\n  const onRemove = useCallback(\n    (id: string) => {\n      if (selectedUserIds.includes(id)) {\n        toggleSelectedUser(id)\n      }\n    },\n    [selectedUserIds, toggleSelectedUser],\n  )\n\n  const onClear = useCallback(() => {\n    resetSelectedUsers()\n  }, [resetSelectedUsers])\n\n  if (uniqueAssignedUsers.length === 0 && schemaTypes.length < 2) {\n    return null\n  }\n\n  const meInUniqueAssignees =\n    currentUser?.id && uniqueAssignedUsers.find((u) => u.id === currentUser.id)\n  const uniqueAssigneesNotMe = uniqueAssignedUsers.filter((u) => u.id !== currentUser?.id)\n\n  return (\n    <Card tone=\"primary\" padding={2} borderBottom style={{overflowX: 'hidden'}}>\n      <Flex align=\"center\">\n        <Flex align=\"center\" gap={1} flex={1}>\n          {uniqueAssignedUsers.length > 5 ? (\n            <Card tone=\"default\">\n              <MenuButton\n                button={\n                  <Button\n                    padding={3}\n                    fontSize={1}\n                    text=\"Filter Assignees\"\n                    tone=\"primary\"\n                    icon={UserIcon}\n                  />\n                }\n                id=\"user-filters\"\n                menu={\n                  <Menu>\n                    <UserSelectMenu\n                      value={selectedUserIds}\n                      userList={uniqueAssignedUsers}\n                      onAdd={onAdd}\n                      onRemove={onRemove}\n                      onClear={onClear}\n                      labels={{\n                        addMe: 'Filter mine',\n                        removeMe: 'Clear mine',\n                        clear: 'Clear filters',\n                      }}\n                    />\n                  </Menu>\n                }\n                popover={{portal: true}}\n              />\n            </Card>\n          ) : (\n            <>\n              {meInUniqueAssignees ? (\n                <>\n                  <Button\n                    padding={0}\n                    mode={selectedUserIds.includes(currentUser.id) ? `default` : `bleed`}\n                    onClick={() => toggleSelectedUser(currentUser.id)}\n                  >\n                    <Flex padding={1} align=\"center\" justify=\"center\">\n                      <UserAvatar user={currentUser.id} size={1} withTooltip />\n                    </Flex>\n                  </Button>\n                  <Card borderRight style={{height: 30}} tone=\"inherit\" />\n                </>\n              ) : null}\n              {uniqueAssigneesNotMe.map((user) => (\n                <Button\n                  key={user.id}\n                  padding={0}\n                  mode={selectedUserIds.includes(user.id) ? `default` : `bleed`}\n                  onClick={() => toggleSelectedUser(user.id)}\n                >\n                  <Flex padding={1} align=\"center\" justify=\"center\">\n                    <UserAvatar user={user} size={1} withTooltip />\n                  </Flex>\n                </Button>\n              ))}\n\n              {selectedUserIds.length > 0 ? (\n                <Button\n                  padding={3}\n                  fontSize={1}\n                  text=\"Clear\"\n                  onClick={resetSelectedUsers}\n                  mode=\"ghost\"\n                  icon={ResetIcon}\n                />\n              ) : null}\n            </>\n          )}\n        </Flex>\n\n        {schemaTypes.length > 1 ? (\n          <Flex align=\"center\" gap={1}>\n            {schemaTypes.map((typeName) => {\n              const schemaType = schema.get(typeName)\n\n              if (!schemaType) {\n                return null\n              }\n\n              return (\n                <Button\n                  key={typeName}\n                  padding={3}\n                  fontSize={1}\n                  text={schemaType?.title ?? typeName}\n                  icon={schemaType?.icon ?? undefined}\n                  mode={selectedSchemaTypes.includes(typeName) ? `default` : `ghost`}\n                  onClick={() => toggleSelectedSchemaType(typeName)}\n                />\n              )\n            })}\n          </Flex>\n        ) : null}\n      </Flex>\n    </Card>\n  )\n}\n","import {Box, Text, Tooltip} from '@sanity/ui'\n\ntype StatusProps = {\n  text: string\n  icon: React.ComponentType\n}\n\nexport function Status(props: StatusProps) {\n  const {text, icon} = props\n  const Icon = icon\n\n  return (\n    <Tooltip\n      portal\n      content={\n        <Box padding={2}>\n          <Text size={1}>{text}</Text>\n        </Box>\n      }\n    >\n      <Text size={1}>\n        <Icon />\n      </Text>\n    </Tooltip>\n  )\n}\n","import {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {UserIcon} from '@sanity/icons/User'\nimport {Badge, type BadgeTone, Box, Card, Flex, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport type {State} from '../../types'\nimport {Status} from './Status'\n\nconst StyledStickyCard = styled(Card)`\n  position: sticky;\n  top: 0;\n  z-index: 1;\n`\n\ntype StateTitleProps = {\n  state: State\n  requireAssignment: boolean\n  userRoleCanDrop: boolean\n  isDropDisabled: boolean\n  draggingFrom: string\n  documentCount: number\n}\n\nexport default function StateTitle(props: StateTitleProps) {\n  const {state, requireAssignment, userRoleCanDrop, isDropDisabled, draggingFrom, documentCount} =\n    props\n\n  let tone: BadgeTone = 'default'\n  const isSource = draggingFrom === state.id\n\n  if (draggingFrom) {\n    tone = isDropDisabled || isSource ? 'default' : 'positive'\n  }\n\n  return (\n    <StyledStickyCard paddingY={4} padding={3} tone=\"inherit\">\n      <Flex gap={3} align=\"center\">\n        <Badge tone={tone}>{state.title}</Badge>\n        {userRoleCanDrop ? null : (\n          <Status\n            text=\"You do not have permissions to move documents to this State\"\n            icon={InfoOutlineIcon}\n          />\n        )}\n        {requireAssignment ? (\n          <Status\n            text=\"You must be assigned to the document to move documents to this State\"\n            icon={UserIcon}\n          />\n        ) : null}\n        <Box flex={1}>\n          {documentCount > 0 ? (\n            <Text weight=\"semibold\" align=\"right\" size={1}>\n              {documentCount}\n            </Text>\n          ) : null}\n        </Box>\n      </Flex>\n    </StyledStickyCard>\n  )\n}\n","import {LexoRank} from 'lexorank'\n\nfunction generateMiddleValue(ranks: (LexoRank | undefined)[]) {\n  // Has no undefined values\n  if (!ranks.some((rank) => !rank)) {\n    return ranks\n  }\n\n  // Find the first undefined value\n  const firstUndefined = ranks.findIndex((rank) => !rank)\n\n  // Find the first defined value after the undefined value\n  const firstDefinedAfter = ranks.findIndex((rank, index) => rank && index > firstUndefined)\n  // Find the first defined value before the undefined value\n  const firstDefinedBefore = ranks.findLastIndex((rank, index) => rank && index < firstUndefined)\n\n  if (firstDefinedAfter === -1 || firstDefinedBefore === -1) {\n    throw new Error(\n      `Unable to generate middle value between indexes ${firstDefinedBefore} and ${firstDefinedAfter}`,\n    )\n  }\n\n  const beforeRank = ranks[firstDefinedBefore]\n  const afterRank = ranks[firstDefinedAfter]\n\n  if (\n    !beforeRank ||\n    typeof beforeRank === 'undefined' ||\n    !afterRank ||\n    typeof afterRank === 'undefined'\n  ) {\n    throw new Error(\n      `Unable to generate middle value between indexes ${firstDefinedBefore} and ${firstDefinedAfter}`,\n    )\n  }\n\n  // Generate a new value between the two\n  const between = beforeRank.between(afterRank)\n\n  // Calculate the middle index between the defined values\n  const middle = Math.floor((firstDefinedAfter + firstDefinedBefore) / 2)\n\n  if (ranks[middle]) {\n    throw new Error(`Should not have overwritten value at index ${middle}`)\n  }\n\n  // Insert the new value into the array\n  ranks[middle] = between\n\n  // Return as a new array\n  return ranks\n}\n\n// Generates an array of LexoRanks between two values\nexport function generateMultipleOrderRanks(\n  count: number,\n  start?: LexoRank,\n  end?: LexoRank,\n): LexoRank[] {\n  // Begin array with correct size\n  let ranks = [...Array(count)]\n\n  // Use or create default values\n  const rankStart = start ?? LexoRank.min().genNext().genNext()\n  const rankEnd = end ?? LexoRank.max().genPrev().genPrev()\n\n  ranks[0] = rankStart\n  ranks[count - 1] = rankEnd\n\n  // Keep processing the array until every value between undefined values is defined\n  for (let i = 0; i < count; i++) {\n    ranks = generateMiddleValue(ranks)\n  }\n\n  return ranks.sort((a, b) => a.toString().localeCompare(b.toString()))\n}\n","import {Card, Grid} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport type {PropsWithChildren} from 'react'\nimport {styled} from 'styled-components'\n\nconst StyledFloatingCard = styled(Card)`\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  z-index: 1000;\n`\n\nexport default function FloatingCard({children}: PropsWithChildren) {\n  const childrenHaveValues = Array.isArray(children) ? children.some(Boolean) : Boolean(children)\n\n  return (\n    <AnimatePresence>\n      {childrenHaveValues ? (\n        <motion.div key=\"floater\" initial={{opacity: 0}} animate={{opacity: 1}} exit={{opacity: 0}}>\n          <StyledFloatingCard shadow={3} padding={3} margin={3} radius={3}>\n            <Grid gap={2}>{children}</Grid>\n          </StyledFloatingCard>\n        </motion.div>\n      ) : null}\n    </AnimatePresence>\n  )\n}\n","import {Button, useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useMemo} from 'react'\nimport {useClient} from 'sanity'\nimport type {UserExtended} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {generateMultipleOrderRanks} from '../helpers/generateMultipleOrderRanks'\nimport type {SanityDocumentWithMetadata, State} from '../types'\nimport FloatingCard from './FloatingCard'\n\ntype VerifyProps = {\n  data: SanityDocumentWithMetadata[]\n  userList: UserExtended[]\n  states: State[]\n}\n\n// This component checks the validity of the data in the Kanban\n// It will only render something if there is invalid data\n// And will render buttons to fix the data\nexport default function Verify(props: VerifyProps) {\n  const {data, userList, states} = props\n  const client = useClient({apiVersion: API_VERSION})\n  const toast = useToast()\n\n  // A lot of error-checking\n  const documentsWithoutValidMetadataIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, state} = cur._metadata ?? {}\n        const stateExists = states.find((s) => s.id === state)\n        if (!stateExists && documentId) {\n          acc.push(documentId)\n        }\n        return acc\n      }, [] as string[])\n    : []\n\n  const documentsWithInvalidUserIds =\n    data?.length && userList?.length\n      ? data.reduce((acc, cur) => {\n          const {documentId, assignees} = cur._metadata ?? {}\n          const allAssigneesExist = assignees?.length\n            ? assignees?.every((a) => userList.find((u) => u.id === a))\n            : true\n\n          if (!allAssigneesExist && documentId) {\n            acc.push(documentId)\n          }\n\n          return acc\n        }, [] as string[])\n      : []\n\n  const documentsWithoutOrderIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, orderRank} = cur._metadata ?? {}\n\n        if (!orderRank && documentId) {\n          acc.push(documentId)\n        }\n        return acc\n      }, [] as string[])\n    : []\n\n  const documentsWithDuplicatedOrderIds = data?.length\n    ? data.reduce((acc, cur) => {\n        const {documentId, orderRank} = cur._metadata ?? {}\n\n        if (\n          orderRank &&\n          data.filter((d) => d._metadata?.orderRank === orderRank).length > 1 &&\n          documentId\n        ) {\n          acc.push(documentId)\n        }\n\n        return acc\n      }, [] as string[])\n    : []\n\n  // Updates metadata documents to a valid, existing state\n  const correctDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Correcting...',\n        status: 'info',\n      })\n\n      const tx = ids.reduce((item, documentId) => {\n        return item.patch(`workflow-metadata.${documentId}`, {\n          set: {state: states?.[0]?.id},\n        })\n      }, client.transaction())\n\n      await tx.commit()\n\n      toast.push({\n        title: `Corrected ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, states, toast],\n  )\n\n  // Remove users that are no longer in the project from documents\n  const removeUsersFromDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Removing users...',\n        status: 'info',\n      })\n\n      const tx = ids.reduce((item, documentId) => {\n        const {assignees} = data.find((d) => d._id === documentId)?._metadata ?? {}\n        const validAssignees = assignees?.length\n          ? assignees.filter((a) => userList.find((u) => u.id === a)?.id)\n          : []\n\n        return item.patch(`workflow-metadata.${documentId}`, {\n          set: {assignees: validAssignees},\n        })\n      }, client.transaction())\n\n      await tx.commit()\n\n      toast.push({\n        title: `Corrected ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, data, toast, userList],\n  )\n\n  // Add order value to metadata documents\n  const addOrderToDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Adding ordering...',\n        status: 'info',\n      })\n\n      // Get first and second order values, if they exist\n      const [firstOrder, secondOrder] = [...data].slice(0, 2).map((d) => d._metadata?.orderRank)\n      const minLexo = firstOrder ? LexoRank.parse(firstOrder) : undefined\n      const maxLexo = secondOrder ? LexoRank.parse(secondOrder) : undefined\n      const ranks = generateMultipleOrderRanks(ids.length, minLexo, maxLexo)\n\n      const tx = client.transaction()\n\n      // Create a new in-between value for each document\n      for (let index = 0; index < ids.length; index += 1) {\n        tx.patch(`workflow-metadata.${ids[index]}`, {\n          set: {orderRank: ranks[index]!.toString()},\n        })\n      }\n\n      await tx.commit()\n\n      toast.push({\n        title: `Added order to ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [data, client, toast],\n  )\n\n  // Reset order value on all metadata documents\n  const resetOrderOfAllDocuments = useCallback(\n    async (ids: string[]) => {\n      toast.push({\n        title: 'Adding ordering...',\n        status: 'info',\n      })\n\n      const ranks = generateMultipleOrderRanks(ids.length)\n\n      const tx = client.transaction()\n\n      // Create a new in-between value for each document\n      for (let index = 0; index < ids.length; index += 1) {\n        tx.patch(`workflow-metadata.${ids[index]}`, {\n          set: {orderRank: ranks[index]!.toString()},\n        })\n      }\n\n      await tx.commit()\n\n      toast.push({\n        title: `Added order to ${ids.length === 1 ? `1 Document` : `${ids.length} Documents`}`,\n        status: 'success',\n      })\n    },\n    [client, toast],\n  )\n\n  // A document could be deleted and the workflow metadata left behind\n  const orphanedMetadataDocumentIds = useMemo(() => {\n    return data.length ? data.filter((doc) => !doc?._id).map((doc) => doc._metadata.documentId) : []\n  }, [data])\n\n  const handleOrphans = useCallback(async () => {\n    toast.push({\n      title: 'Removing orphaned metadata...',\n      status: 'info',\n    })\n\n    const tx = client.transaction()\n    orphanedMetadataDocumentIds.forEach((id) => {\n      tx.delete(`workflow-metadata.${id}`)\n    })\n\n    await tx.commit()\n\n    toast.push({\n      title: `Removed ${orphanedMetadataDocumentIds.length} orphaned metadata documents`,\n      status: 'success',\n    })\n  }, [client, orphanedMetadataDocumentIds, toast])\n\n  return (\n    <FloatingCard>\n      {documentsWithoutValidMetadataIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => correctDocuments(documentsWithoutValidMetadataIds)}\n          text={\n            documentsWithoutValidMetadataIds.length === 1\n              ? `Correct 1 Document State`\n              : `Correct ${documentsWithoutValidMetadataIds.length} Document States`\n          }\n        />\n      ) : null}\n      {documentsWithInvalidUserIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => removeUsersFromDocuments(documentsWithInvalidUserIds)}\n          text={\n            documentsWithInvalidUserIds.length === 1\n              ? `Remove Invalid Users from 1 Document`\n              : `Remove Invalid Users from ${documentsWithInvalidUserIds.length} Documents`\n          }\n        />\n      ) : null}\n      {documentsWithoutOrderIds.length > 0 ? (\n        <Button\n          tone=\"caution\"\n          mode=\"ghost\"\n          onClick={() => addOrderToDocuments(documentsWithoutOrderIds)}\n          text={\n            documentsWithoutOrderIds.length === 1\n              ? `Set Order for 1 Document`\n              : `Set Order for ${documentsWithoutOrderIds.length} Documents`\n          }\n        />\n      ) : null}\n      {documentsWithDuplicatedOrderIds.length > 0 ? (\n        <>\n          <Button\n            tone=\"caution\"\n            mode=\"ghost\"\n            onClick={() => addOrderToDocuments(documentsWithDuplicatedOrderIds)}\n            text={\n              documentsWithDuplicatedOrderIds.length === 1\n                ? `Set Unique Order for 1 Document`\n                : `Set Unique Order for ${documentsWithDuplicatedOrderIds.length} Documents`\n            }\n          />\n          <Button\n            tone=\"caution\"\n            mode=\"ghost\"\n            onClick={() =>\n              // oxlint-disable-next-line no-unnecessary-type-conversion\n              resetOrderOfAllDocuments(data.map((doc) => String(doc._metadata?.documentId)))\n            }\n            text={\n              data.length === 1\n                ? `Reset Order for 1 Document`\n                : `Reset Order for all ${data.length} Documents`\n            }\n          />\n        </>\n      ) : null}\n      {orphanedMetadataDocumentIds.length > 0 ? (\n        <Button\n          text=\"Cleanup orphaned metadata\"\n          onClick={handleOrphans}\n          tone=\"caution\"\n          mode=\"ghost\"\n        />\n      ) : null}\n    </FloatingCard>\n  )\n}\n","import {\n  DragDropContext,\n  type DraggableChildrenFn,\n  type DragStart,\n  Droppable,\n  type DropResult,\n} from '@hello-pangea/dnd'\nimport {Box, Card, Container, Flex, Grid, Spinner, useTheme, useToast} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Tool, useCurrentUser} from 'sanity'\nimport {Feedback, useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {useWorkflowDocuments} from '../hooks/useWorkflowDocuments'\nimport type {State, WorkflowConfig} from '../types'\nimport {DocumentCard} from './DocumentCard'\nimport DocumentList from './DocumentList'\nimport Filters from './Filters'\nimport StateTitle from './StateTitle'\nimport Verify from './Verify'\n\ntype WorkflowToolProps = {\n  tool: Tool<WorkflowConfig>\n}\n\nexport default function WorkflowTool(props: WorkflowToolProps) {\n  const {schemaTypes = [], states = []} = props?.tool?.options ?? {}\n\n  const theme = useTheme()\n  const isDarkMode = getTheme_v2({sanity: theme.sanity}).color._dark\n  const defaultCardTone = isDarkMode ? 'default' : 'transparent'\n  const toast = useToast()\n\n  const userList = useProjectUsers({apiVersion: API_VERSION})\n\n  const user = useCurrentUser()\n  const userRoleNames = user?.roles?.length ? user?.roles.map((r) => r.name) : []\n\n  const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n  const [patchingIds, setPatchingIds] = useState<string[]>([])\n\n  // Data to display in cards\n  const {data, loading, error} = workflowData\n\n  // Operations to perform on cards\n  const {move} = operations\n\n  const [undroppableStates, setUndroppableStates] = useState<string[]>([])\n  const [draggingFrom, setDraggingFrom] = useState(``)\n\n  // When drag starts, check for any States we should not allow dropping on\n  // Because of either:\n  // 1. The \"destination\" State requires user assignment and the user is not assigned to the dragged document\n  // 2. The \"source\" State State has a list of transitions and the \"destination\" State is not in that list\n  const handleDragStart = useCallback(\n    (start: DragStart) => {\n      const {draggableId, source} = start\n      const {droppableId: currentStateId} = source\n      setDraggingFrom(currentStateId)\n\n      const document = data.find((item) => item._metadata?.documentId === draggableId)\n      const state = states.find((s) => s.id === currentStateId)\n\n      // This shouldn't happen but TypeScript\n      if (!document || !state) return\n\n      const undroppableStateIds = []\n      const statesThatRequireAssignmentIds = states\n        .filter((s) => s.requireAssignment)\n        .map((s) => s.id)\n\n      if (statesThatRequireAssignmentIds.length) {\n        const documentAssignees = document._metadata?.assignees ?? []\n        const userIsAssignedToDocument = user?.id ? documentAssignees.includes(user.id) : false\n\n        if (!userIsAssignedToDocument) {\n          undroppableStateIds.push(...statesThatRequireAssignmentIds)\n        }\n      }\n\n      const statesThatCannotBeTransitionedToIds =\n        state.transitions && state.transitions.length\n          ? states.filter((s) => !state.transitions?.includes(s.id)).map((s) => s.id)\n          : []\n\n      if (statesThatCannotBeTransitionedToIds.length) {\n        undroppableStateIds.push(...statesThatCannotBeTransitionedToIds)\n      }\n\n      // Remove currentStateId from undroppableStates\n      const undroppableExceptSelf = undroppableStateIds.filter((id) => id !== currentStateId)\n\n      if (undroppableExceptSelf.length) {\n        setUndroppableStates(undroppableExceptSelf)\n      }\n    },\n    [data, states, user],\n  )\n\n  const handleDragEnd = useCallback(\n    async (result: DropResult) => {\n      // Reset undroppable states\n      setUndroppableStates([])\n      setDraggingFrom(``)\n\n      const {draggableId, source, destination} = result\n\n      if (\n        // No destination?\n        !destination ||\n        // No change in position?\n        (destination.droppableId === source.droppableId && destination.index === source.index)\n      ) {\n        return\n      }\n\n      // Find all items in current state\n      let destinationStateItems = [...filterItemsAndSort(data, destination.droppableId, [], null)]\n\n      // Filter out the dragged item when reordering within the same column\n      if (source.droppableId === destination.droppableId) {\n        destinationStateItems = destinationStateItems.filter(\n          (item) => item._metadata?.documentId !== draggableId,\n        )\n      }\n\n      const destinationStateIndex = states.findIndex((s) => s.id === destination.droppableId)\n      const globalStateMinimumRank = data?.[0]?._metadata.orderRank\n      const globalStateMaximumRank = data?.[data?.length - 1]?._metadata.orderRank\n\n      let newOrder\n\n      if (!destinationStateItems.length) {\n        // Only item in state\n        // New minimum rank\n        if (destinationStateIndex === 0) {\n          // Only the first state should generate an absolute minimum rank\n          newOrder = LexoRank.min().toString()\n        } else {\n          // Otherwise create one rank above the minimum\n          newOrder = LexoRank.min().genNext().toString()\n        }\n      } else if (destination.index === 0) {\n        // Now first item in order\n        const firstItemOrderRank = [...destinationStateItems].shift()?._metadata?.orderRank\n\n        if (firstItemOrderRank && typeof firstItemOrderRank === 'string') {\n          newOrder = LexoRank.parse(firstItemOrderRank).genPrev().toString()\n        } else if (destinationStateIndex === 0) {\n          // Only the first state should generate an absolute minimum rank\n          newOrder = LexoRank.min().toString()\n        } else {\n          // Otherwise create the next rank between min and the globally minimum rank\n          newOrder = LexoRank.parse(globalStateMinimumRank!).between(LexoRank.min()).toString()\n        }\n      } else if (destination.index >= destinationStateItems.length) {\n        // Now last item in order\n        const lastItemOrderRank = [...destinationStateItems].pop()?._metadata?.orderRank\n\n        if (lastItemOrderRank && typeof lastItemOrderRank === 'string') {\n          newOrder = LexoRank.parse(lastItemOrderRank).genNext().toString()\n        } else if (destinationStateIndex === states.length - 1) {\n          // Only the last state should generate an absolute maximum rank\n          newOrder = LexoRank.max().toString()\n        } else {\n          // Otherwise create the next rank between max and the globally maximum rank\n          newOrder = LexoRank.parse(globalStateMaximumRank!).between(LexoRank.min()).toString()\n        }\n      } else {\n        // Must be between two items\n        const itemBefore = destinationStateItems[destination.index - 1]\n        const itemBeforeRank = itemBefore?._metadata?.orderRank\n        let itemBeforeRankParsed\n        if (itemBeforeRank) {\n          itemBeforeRankParsed = LexoRank.parse(itemBeforeRank)\n        } else if (destinationStateIndex === 0) {\n          itemBeforeRankParsed = LexoRank.min()\n        } else {\n          itemBeforeRankParsed = LexoRank.parse(globalStateMinimumRank!)\n        }\n\n        const itemAfter = destinationStateItems[destination.index]\n        const itemAfterRank = itemAfter?._metadata?.orderRank\n        let itemAfterRankParsed\n        if (itemAfterRank) {\n          itemAfterRankParsed = LexoRank.parse(itemAfterRank)\n        } else if (destinationStateIndex === states.length - 1) {\n          itemAfterRankParsed = LexoRank.max()\n        } else {\n          itemAfterRankParsed = LexoRank.parse(globalStateMaximumRank!)\n        }\n\n        newOrder = itemBeforeRankParsed.between(itemAfterRankParsed).toString()\n      }\n\n      setPatchingIds([...patchingIds, draggableId])\n      toast.push({\n        status: 'info',\n        title: 'Updating document state...',\n      })\n      await move(draggableId, destination, states, newOrder)\n      setPatchingIds((ids: string[]) => ids.filter((id) => id !== draggableId))\n    },\n    [data, patchingIds, toast, move, states],\n  )\n\n  // Used for the user filter UI\n  const uniqueAssignedUsers = useMemo(() => {\n    const uniqueUserIds = data.reduce((acc, item) => {\n      // oxlint-disable-next-line no-useless-default-assignment\n      const {assignees = []} = item._metadata ?? {}\n      const newAssignees = assignees?.length ? assignees.filter((a) => !acc.includes(a)) : []\n      if (newAssignees.length) {\n        acc.push(...newAssignees)\n      }\n      return acc\n    }, [] as string[])\n\n    return userList.filter((u) => uniqueUserIds.includes(u.id))\n  }, [data, userList])\n\n  // Selected user IDs filter the visible workflow documents\n  const [selectedUserIds, setSelectedUserIds] = useState<string[]>(\n    uniqueAssignedUsers.map((u) => u.id),\n  )\n  const toggleSelectedUser = useCallback((userId: string) => {\n    setSelectedUserIds((prev) =>\n      prev.includes(userId) ? prev.filter((u) => u !== userId) : [...prev, userId],\n    )\n  }, [])\n  const resetSelectedUsers = useCallback(() => {\n    setSelectedUserIds([])\n  }, [])\n\n  // Selected schema types filter the visible workflow documents\n  const [selectedSchemaTypes, setSelectedSchemaTypes] = useState<string[]>(schemaTypes)\n  const toggleSelectedSchemaType = useCallback((schemaType: string) => {\n    setSelectedSchemaTypes((prev) =>\n      prev.includes(schemaType) ? prev.filter((u) => u !== schemaType) : [...prev, schemaType],\n    )\n  }, [])\n\n  // Document IDs that have validation errors\n  const [invalidDocumentIds, setInvalidDocumentIds] = useState<string[]>([])\n  const toggleInvalidDocumentId = useCallback((docId: string, action: 'ADD' | 'REMOVE') => {\n    setInvalidDocumentIds((prev) =>\n      action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId),\n    )\n  }, [])\n\n  const Clone: DraggableChildrenFn = useCallback(\n    (provided, snapshot, rubric) => {\n      const item = data.find((doc) => doc?._metadata?.documentId === rubric.draggableId)\n\n      return (\n        <div {...provided.draggableProps} {...provided.dragHandleProps} ref={provided.innerRef}>\n          {item ? (\n            <DocumentCard\n              // Assumed false, if it's dragging it's not disabled\n              isDragDisabled={false}\n              // Assumed false, if it's dragging it's not patching\n              isPatching={false}\n              // Assumed true, if you can drag it you can drop it\n              userRoleCanDrop\n              isDragging={snapshot.isDragging}\n              item={item}\n              states={states}\n              toggleInvalidDocumentId={toggleInvalidDocumentId}\n              userList={userList}\n            />\n          ) : (\n            <Feedback title=\"Item not found\" tone=\"caution\" />\n          )}\n        </div>\n      )\n    },\n    [data, states, toggleInvalidDocumentId, userList],\n  )\n\n  if (!states?.length) {\n    return (\n      <Container width={1} padding={5}>\n        <Feedback\n          tone=\"caution\"\n          title=\"Plugin options error\"\n          description=\"No States defined in plugin config\"\n        />\n      </Container>\n    )\n  }\n\n  if (error && !data.length) {\n    return (\n      <Container width={1} padding={5}>\n        <Feedback tone=\"critical\" title=\"Error querying for Workflow documents\" />\n      </Container>\n    )\n  }\n\n  return (\n    <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n      <Verify data={data} userList={userList} states={states} />\n\n      <Filters\n        uniqueAssignedUsers={uniqueAssignedUsers}\n        selectedUserIds={selectedUserIds}\n        toggleSelectedUser={toggleSelectedUser}\n        resetSelectedUsers={resetSelectedUsers}\n        schemaTypes={schemaTypes}\n        selectedSchemaTypes={selectedSchemaTypes}\n        toggleSelectedSchemaType={toggleSelectedSchemaType}\n      />\n      <DragDropContext onDragStart={handleDragStart} onDragEnd={handleDragEnd}>\n        <Grid gridTemplateColumns={states.length} height=\"fill\">\n          {states.map((state: State, stateIndex: number) => {\n            const userRoleCanDrop = state?.roles?.length\n              ? arraysContainMatchingString(state.roles, userRoleNames)\n              : true\n            const isDropDisabled = !userRoleCanDrop || undroppableStates.includes(state.id)\n\n            return (\n              <Card key={state.id} borderLeft={stateIndex > 0} tone={defaultCardTone}>\n                <Flex direction=\"column\" height=\"fill\">\n                  <StateTitle\n                    state={state}\n                    requireAssignment={state.requireAssignment ?? false}\n                    userRoleCanDrop={userRoleCanDrop}\n                    isDropDisabled={isDropDisabled}\n                    draggingFrom={draggingFrom}\n                    documentCount={\n                      filterItemsAndSort(data, state.id, selectedUserIds, selectedSchemaTypes)\n                        .length\n                    }\n                  />\n                  <Box flex={1}>\n                    <Droppable\n                      droppableId={state.id}\n                      isDropDisabled={isDropDisabled}\n                      // props required for virtualization\n                      mode=\"virtual\"\n                      renderClone={Clone}\n                    >\n                      {(provided, snapshot) => (\n                        <Card\n                          ref={provided.innerRef}\n                          tone={snapshot.isDraggingOver ? `primary` : defaultCardTone}\n                          height=\"fill\"\n                        >\n                          {loading ? (\n                            <Flex padding={5} align=\"center\" justify=\"center\">\n                              <Spinner muted />\n                            </Flex>\n                          ) : null}\n\n                          <DocumentList\n                            data={data}\n                            invalidDocumentIds={invalidDocumentIds}\n                            patchingIds={patchingIds}\n                            selectedSchemaTypes={selectedSchemaTypes}\n                            selectedUserIds={selectedUserIds}\n                            state={state}\n                            states={states}\n                            toggleInvalidDocumentId={toggleInvalidDocumentId}\n                            user={user}\n                            userList={userList}\n                            userRoleCanDrop={userRoleCanDrop}\n                          />\n\n                          {/* Not required for virtualized lists */}\n                          {/* {provided.placeholder} */}\n                        </Card>\n                      )}\n                    </Droppable>\n                  </Box>\n                </Flex>\n              </Card>\n            )\n          })}\n        </Grid>\n      </DragDropContext>\n    </Flex>\n  )\n}\n","import {SplitVerticalIcon} from '@sanity/icons/SplitVertical'\nimport type {Tool} from 'sanity'\n\nimport WorkflowTool from '../components/WorkflowTool'\nimport type {WorkflowConfig} from '../types'\n\nexport type WorkflowToolConfig = (options: WorkflowConfig) => Tool\n\nexport const workflowTool: WorkflowToolConfig = (options: WorkflowConfig) => ({\n  name: 'workflow',\n  title: 'Workflow',\n  component: WorkflowTool,\n  icon: SplitVerticalIcon,\n  options,\n})\n","import {definePlugin, isObjectInputProps, type Plugin} from 'sanity'\n\nimport {defineUpdateWorkflow} from './actions/defineUpdateWorkflow'\nimport {useAssignWorkflow} from './actions/useAssignWorkflow'\nimport {useBeginWorkflow} from './actions/useBeginWorkflow'\nimport {useCompleteWorkflow} from './actions/useCompleteWorkflow'\nimport {useAssigneesBadge} from './badges/useAssigneesBadge'\nimport {useStateBadge} from './badges/useStateBadge'\nimport {WorkflowProvider} from './components/WorkflowContext'\nimport WorkflowSignal from './components/WorkflowSignal'\nimport {DEFAULT_CONFIG} from './constants'\nimport metadata from './schema/workflow/workflow.metadata'\nimport {workflowTool} from './tools'\nimport type {WorkflowConfig} from './types'\n\nexport const workflow: Plugin<WorkflowConfig> = definePlugin<WorkflowConfig>(\n  (config = DEFAULT_CONFIG) => {\n    const {schemaTypes, states} = {...DEFAULT_CONFIG, ...config}\n\n    if (!states?.length) {\n      throw new Error(`Workflow plugin: Missing \"states\" in config`)\n    }\n\n    if (!schemaTypes?.length) {\n      throw new Error(`Workflow plugin: Missing \"schemaTypes\" in config`)\n    }\n\n    const useUpdateActions = states.map((state) => defineUpdateWorkflow(state))\n\n    return {\n      name: 'sanity-plugin-workflow',\n      schema: {\n        types: [metadata(states)],\n      },\n      // TODO: Remove 'workflow.metadata' from list of new document types\n      // ...\n      studio: {\n        components: {\n          layout: (props) => (\n            <WorkflowProvider {...props} schemaTypes={schemaTypes} states={states} />\n          ),\n        },\n      },\n      form: {\n        components: {\n          input: (props) => {\n            if (\n              props.id === `root` &&\n              isObjectInputProps(props) &&\n              schemaTypes.includes(props.schemaType.name)\n            ) {\n              return <WorkflowSignal {...props} />\n            }\n\n            return props.renderDefault(props)\n          },\n        },\n      },\n      document: {\n        actions: (prev, context) => {\n          if (!schemaTypes.includes(context.schemaType)) {\n            return prev\n          }\n\n          return [\n            useBeginWorkflow,\n            useAssignWorkflow,\n            ...useUpdateActions,\n            useCompleteWorkflow,\n            ...prev,\n          ]\n        },\n        badges: (prev, context) => {\n          if (!schemaTypes.includes(context.schemaType)) {\n            return prev\n          }\n\n          if (!context.documentId) {\n            return prev\n          }\n\n          return [useStateBadge, useAssigneesBadge, ...prev]\n        },\n      },\n      tools: [\n        // TODO: These configs could be read from Context\n        workflowTool({schemaTypes, states}),\n      ],\n    }\n  },\n)\n"],"mappings":"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"}
\ No newline at end of file