sanity-plugin-workflow 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/types/index.ts","../src/constants/index.ts","../src/components/UserAssignment.tsx","../src/hooks/useWorkflowMetadata.tsx","../src/components/WorkflowContext.tsx","../src/actions/AssignWorkflow.tsx","../src/actions/BeginWorkflow.tsx","../src/actions/CompleteWorkflow.tsx","../src/helpers/arraysContainMatchingString.ts","../src/actions/UpdateWorkflow.tsx","../src/badges/AssigneesBadge.tsx","../src/badges/StateBadge.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/index.ts"],"sourcesContent":["import {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<\n Id extends string,\n States extends StateCheck<Id, States>[]\n>(states: States): 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 DragData = {\n documentId?: string\n x?: number\n y?: number\n state?: 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, 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 React from 'react'\nimport {useToast} from '@sanity/ui'\nimport {UserSelectMenu} from 'sanity-plugin-utils'\nimport {useClient} from 'sanity'\n\nimport {User} from '../types'\nimport {API_VERSION} from '../constants'\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 = React.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 = React.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 = React.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 {useMemo} from 'react'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {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: boolean | unknown | ProgressEvent\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\n const keyedMetadata = useMemo(() => {\n if (!rawData || rawData.length === 0) return {}\n\n return rawData.reduce<KeyedMetadata>((acc, cur) => {\n return {\n ...acc,\n [cur.documentId]: cur,\n }\n }, {})\n }, [rawData])\n\n return {data: keyedMetadata, loading, error}\n}\n","import {useCallback, useContext, useState} from 'react'\nimport {createContext} from 'react'\nimport {LayoutProps} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {KeyedMetadata, WorkflowConfig} from '../types'\n\nexport type WorkflowContextValue = Required<WorkflowConfig> & {\n data: KeyedMetadata\n loading: boolean\n error: boolean | unknown | ProgressEvent\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 & {workflow: 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) =>\n 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 return (\n <WorkflowContext.Provider\n value={{\n data,\n loading,\n error,\n ids,\n addId,\n removeId,\n states: props.workflow.states,\n schemaTypes: props.workflow.schemaTypes,\n }}\n >\n {props.renderDefault(props)}\n </WorkflowContext.Provider>\n )\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {useState} from 'react'\nimport {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 AssignWorkflow(props: DocumentActionProps) {\n const {id} = props\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 type: 'dialog',\n disabled: !metadata || loading || 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'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useState} from 'react'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function BeginWorkflow(props: DocumentActionProps) {\n const {id, draft} = props\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 `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n {state: states[0].id}\n )\n client\n .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 .then(() => {\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 })\n }, [id, states, client, toast])\n\n if (!draft || complete || metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {useCallback} from 'react'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function CompleteWorkflow(props: DocumentActionProps) {\n const {id} = props\n const {metadata, loading, error, states} = useWorkflowContext(id)\n const client = useClient({apiVersion: API_VERSION})\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(() => {\n client.delete(`workflow-metadata.${id}`)\n }, [id, client])\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 type: 'dialog',\n disabled: loading || 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: () => {\n handle()\n },\n color: 'positive',\n }\n}\n","export function arraysContainMatchingString(\n one: string[],\n two: string[]\n): boolean {\n return one.some((item) => two.includes(item))\n}\n","import {ArrowLeftIcon, ArrowRightIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {useCurrentUser, useValidationStatus} from 'sanity'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {State} from '../types'\n\n// eslint-disable-next-line complexity\nexport function UpdateWorkflow(props: DocumentActionProps, actionState: State) {\n const {id, type} = props\n\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)\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 props.onComplete()\n toast.push({\n status: 'success',\n title: `Document state now \"${newState.title}\"`,\n })\n })\n .catch((err) => {\n props.onComplete()\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 error ||\n (currentState?.requireValidation && isValidating) ||\n hasValidationErrors ||\n !currentState ||\n !userRoleCanUpdateState ||\n !actionStateIsAValidTransition ||\n !userAssignmentCanUpdateState,\n title,\n label: actionState.title,\n onHandle: () => onHandle(id, actionState),\n }\n}\n","import {CurrentUser, DocumentBadgeDescription} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function AssigneesBadge(\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\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\n ? assignees.some((assignee) => assignee === currentUser.id)\n : 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} ${\n assigneesCount === 1 ? 'other' : 'others'\n }`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\n\nexport function StateBadge(\n documentId: string\n): 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 {ObjectInputProps} 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\n ? props.value._id.replace(`drafts.`, ``)\n : 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 {Button} from '@sanity/ui'\nimport {EditIcon} from '@sanity/icons'\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 // eslint-disable-next-line react/jsx-no-bind\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, SanityDocument, 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 {data, loading, error} = useListeningQuery<SanityDocument>(\n `*[_id in [$id, $draftId]]|order(_updatedAt)[0]`,\n {\n params: {\n id: String(props.value),\n draftId: `drafts.${String(props.value)}`,\n },\n }\n )\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 {FunctionComponent} from 'react'\nimport {ArraySchemaType, ArrayOfPrimitivesInputProps, useFormValue} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from './UserAssignment'\n\nconst UserAssignmentInput: FunctionComponent<\n ArrayOfPrimitivesInputProps<string | number | boolean, ArraySchemaType>\n> = (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 not 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 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 {State} from '../../types'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\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 (p, {getClient}) => {\n const lastDocOrderRank = await getClient({\n apiVersion: API_VERSION,\n }).fetch(`*[_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 {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) =>\n selectedUsers.includes(assignee)\n )\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\n ? selectedSchemaTypes.includes(item._type)\n : 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 {DraggableLocation} from '@hello-pangea/dnd'\nimport {useToast} from '@sanity/ui'\nimport groq from 'groq'\nimport React from 'react'\nimport {useClient} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {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: boolean | unknown | ProgressEvent\n }\n operations: {\n move: (\n draggedId: string,\n destination: DraggableLocation,\n states: State[],\n newOrder: string\n ) => void\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 {data, loading, error} = useListeningQuery<\n SanityDocumentWithMetadata[]\n >(QUERY, {\n params: {schemaTypes},\n initialValue: [],\n })\n\n const [localDocuments, setLocalDocuments] = React.useState<\n SanityDocumentWithMetadata[]\n >([])\n\n React.useEffect(() => {\n if (data) {\n setLocalDocuments(data)\n }\n }, [data])\n\n const move = React.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(\n (d) => d?._metadata?.documentId === draggedId\n )\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 as State}\n },\n [client, toast, localDocuments]\n )\n\n return {\n workflowData: {data: localDocuments, loading, error},\n operations: {move},\n }\n}\n","import React from 'react'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {useCurrentUser, UserAvatar} from 'sanity'\n\nimport {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} = React.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 React from 'react'\nimport {Button, Grid, Popover, useClickOutside} from '@sanity/ui'\nimport {AddIcon} from '@sanity/icons'\n\nimport AvatarGroup from './DocumentCard/AvatarGroup'\nimport {User} from '../types'\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 [button] = React.useState(null)\n const [popover, setPopover] = React.useState(null)\n const [isOpen, setIsOpen] = React.useState(false)\n\n const close = React.useCallback(() => setIsOpen(false), [])\n const open = React.useCallback(() => setIsOpen(true), [])\n\n useClickOutside(close, [button, popover])\n\n return (\n <Popover\n // @ts-ignore\n ref={setPopover}\n content={<UserAssignment userList={userList} assignees={assignees} documentId={documentId} />}\n portal\n open={isOpen}\n >\n {!assignees || assignees.length === 0 ? (\n <Button\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 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'\nimport {Box, Button, Text, Tooltip, useToast} from '@sanity/ui'\nimport React from 'react'\nimport {useClient} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n documentId: string\n disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n const {documentId, disabled = false} = props\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n const handleComplete: React.MouseEventHandler<HTMLButtonElement> =\n React.useCallback(\n (event) => {\n const id = event.currentTarget.value\n\n if (!id) {\n return\n }\n\n client\n .delete(`workflow-metadata.${id}`)\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow completed',\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: 'Could not complete Workflow',\n })\n })\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 {useTimeAgo} from 'sanity'\n\nexport interface TimeAgoProps {\n time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n const timeAgo = useTimeAgo(time)\n\n return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","import {EditIcon} from '@sanity/icons'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} 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'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {\n document?: PreviewValue | Partial<SanityDocument> | null\n}) {\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\n tone=\"positive\"\n dimmed={!document}\n muted={!document}\n size={1}\n >\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {useEffect} from 'react'\nimport {useValidationStatus, ValidationStatus} from 'sanity'\n\ntype ValidateProps = {\n documentId: string\n type: string\n onChange: (validation: ValidationStatus) => 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 const {isValidating, validation = []} = useValidationStatus(documentId, type)\n\n useEffect(() => {\n onChange({isValidating, validation})\n }, [onChange, isValidating, validation])\n\n return null\n}\n","import {ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {ValidationMarker} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\ntype ValidationStatusProps = {\n validation: ValidationMarker[]\n}\n\nexport function ValidationStatus(props: ValidationStatusProps) {\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","/* eslint-disable react/prop-types */\nimport {DragHandleIcon} from '@sanity/icons'\nimport {Box, Card, CardTone, Flex, Stack, useTheme} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n SchemaType,\n useSchema,\n ValidationStatus as ValidationStatusType,\n} from 'sanity'\nimport {Preview} from 'sanity'\n\nimport {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: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => 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 const {assignees = [], documentId} = item._metadata ?? {}\n const schema = useSchema()\n const state = states.find((s) => s.id === item._metadata?.state)\n\n const isDarkMode = useTheme().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] =\n useState<ValidationStatusType>({\n isValidating: state?.requireValidation ?? false,\n validation: [],\n })\n\n const {isValidating, validation} = optimisticValidation\n\n const handleValidation = useCallback((updates: ValidationStatusType) => {\n setOptimisticValidation(updates)\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\n documentId={documentId}\n type={item._type}\n onChange={handleValidation}\n />\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 padding={3}\n paddingLeft={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 schemaType={schema.get(item._type) as SchemaType}\n />\n </Box>\n <Box style={{flexShrink: 0}}>\n {hasError || isDragDisabled || isPatching ? null : (\n <DragHandleIcon />\n )}\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 ? (\n <ValidationStatus validation={validation} />\n ) : null}\n <DraftStatus document={item} />\n <PublishedStatus document={item} />\n <EditButton\n id={item._id}\n type={item._type}\n disabled={!userRoleCanDrop}\n />\n {isLastState && states.length <= 3 ? (\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n ) : null}\n </Flex>\n {isLastState && states.length > 3 ? (\n <Stack paddingTop={2}>\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n </Stack>\n ) : null}\n </Card>\n </Stack>\n </Card>\n </Box>\n </>\n )\n}\n","import {Draggable, DraggableStyle} from '@hello-pangea/dnd'\nimport {useVirtualizer, VirtualItem} from '@tanstack/react-virtual'\nimport {CSSProperties, useMemo, useRef} from 'react'\nimport {CurrentUser} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {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: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => 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\nexport default function DocumentList(props: DocumentListProps) {\n const {\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: () => parentRef.current,\n getItemKey: (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n estimateSize: () => 115,\n overscan: 7,\n measureElement: (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\n ? state.requireAssignment && meInAssignees\n : 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(\n draggableProvided.draggableProps.style,\n virtualItem\n )}\n >\n <div\n ref={virtualizer.measureElement}\n data-index={virtualItem.index}\n >\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, UserIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Menu, MenuButton} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {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 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(\n (u) => u.id !== currentUser?.id\n )\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 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={\n selectedUserIds.includes(currentUser.id)\n ? `default`\n : `bleed`\n }\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 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 text={schemaType?.title ?? typeName}\n icon={schemaType?.icon ?? undefined}\n mode={\n selectedSchemaTypes.includes(typeName) ? `default` : `ghost`\n }\n onClick={() => toggleSelectedSchemaType(typeName)}\n />\n )\n })}\n </Flex>\n ) : null}\n </Flex>\n </Card>\n )\n}\n","import React from 'react'\nimport {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, UserIcon} from '@sanity/icons'\nimport {Badge, BadgeTone, Box, Card, Flex, Text} from '@sanity/ui'\nimport styled, {css} from 'styled-components'\n\nimport {State} from '../../types'\nimport {Status} from './Status'\n\nconst StyledStickyCard = styled(Card)(\n () => css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\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 {\n state,\n requireAssignment,\n userRoleCanDrop,\n isDropDisabled,\n draggingFrom,\n 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\n mode={\n (draggingFrom && !isDropDisabled) || isSource\n ? 'default'\n : 'outline'\n }\n tone={tone}\n muted={!userRoleCanDrop || isDropDisabled}\n >\n {state.title}\n </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(\n (rank, index) => rank && index > firstUndefined\n )\n // Find the first defined value before the undefined value\n const firstDefinedBefore = ranks.findLastIndex(\n (rank, index) => rank && index < firstUndefined\n )\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 {PropsWithChildren} from 'react'\nimport styled, {css} from 'styled-components'\nimport {Card, Grid} from '@sanity/ui'\nimport {motion, AnimatePresence} from 'framer-motion'\n\nconst StyledFloatingCard = styled(Card)(\n () => css`\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 1000;\n `\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 React from 'react'\nimport {useClient} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {generateMultipleOrderRanks} from '../helpers/generateMultipleOrderRanks'\nimport {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 it there is invalid date\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\n return !stateExists && documentId ? [...acc, documentId] : 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 return !allAssigneesExist && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithoutOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return !orderRank && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithDuplicatedOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return orderRank &&\n data.filter((d) => d._metadata?.orderRank === orderRank).length > 1 &&\n documentId\n ? [...acc, documentId]\n : acc\n }, [] as string[])\n : []\n\n // Updates metadata documents to a valid, existing state\n const correctDocuments = React.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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\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 = React.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} =\n data.find((d) => d._id === documentId)?._metadata ?? {}\n const validAssignees = assignees?.length\n ? // eslint-disable-next-line max-nested-callbacks\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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, data, toast, userList]\n )\n\n // Add order value to metadata documents\n const addOrderToDocuments = React.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]\n .slice(0, 2)\n .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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n // Reset order value on all metadata documents\n const resetOrderOfAllDocuments = React.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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n // A document could be deleted and the workflow metadata left behind\n const orphanedMetadataDocumentIds = React.useMemo(() => {\n return data.length\n ? data.filter((doc) => !doc?._id).map((doc) => doc._metadata.documentId)\n : []\n }, [data])\n\n const handleOrphans = React.useCallback(() => {\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 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 resetOrderOfAllDocuments(\n data.map((doc) => String(doc._metadata?.documentId))\n )\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 DraggableChildrenFn,\n DragStart,\n Droppable,\n DropResult,\n} from '@hello-pangea/dnd'\nimport {\n Box,\n Card,\n Container,\n Flex,\n Grid,\n Spinner,\n useTheme,\n useToast,\n} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport React from 'react'\nimport {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 {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 isDarkMode = useTheme().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\n ? user?.roles.map((r) => r.name)\n : []\n\n const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n const [patchingIds, setPatchingIds] = React.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] = React.useState<string[]>([])\n const [draggingFrom, setDraggingFrom] = React.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 = React.useCallback(\n (start: DragStart) => {\n const {draggableId, source} = start\n const {droppableId: currentStateId} = source\n setDraggingFrom(currentStateId)\n\n const document = data.find(\n (item) => item._metadata?.documentId === draggableId\n )\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\n ? documentAssignees.includes(user.id)\n : false\n\n if (!userIsAssignedToDocument) {\n undroppableStateIds.push(...statesThatRequireAssignmentIds)\n }\n }\n\n const statesThatCannotBeTransitionedToIds =\n state.transitions && state.transitions.length\n ? states\n .filter((s) => !state.transitions?.includes(s.id))\n .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(\n (id) => id !== currentStateId\n )\n\n if (undroppableExceptSelf.length) {\n setUndroppableStates(undroppableExceptSelf)\n }\n },\n [data, states, user]\n )\n\n const handleDragEnd = React.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 &&\n destination.index === source.index)\n ) {\n return\n }\n\n // Find all items in current state\n const destinationStateItems = [\n ...filterItemsAndSort(data, destination.droppableId, [], null),\n ]\n const destinationStateIndex = states.findIndex(\n (s) => s.id === destination.droppableId\n )\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\n ?.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)\n .between(LexoRank.min())\n .toString()\n }\n } else if (destination.index + 1 === destinationStateItems.length) {\n // Now last item in order\n const lastItemOrderRank = [...destinationStateItems].pop()?._metadata\n ?.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)\n .between(LexoRank.min())\n .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 = React.useMemo(() => {\n const uniqueUserIds = data.reduce((acc, item) => {\n const {assignees = []} = item._metadata ?? {}\n const newAssignees = assignees?.length\n ? assignees.filter((a) => !acc.includes(a))\n : []\n return newAssignees.length ? [...acc, ...newAssignees] : 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] = React.useState<string[]>(\n uniqueAssignedUsers.map((u) => u.id)\n )\n const toggleSelectedUser = React.useCallback((userId: string) => {\n setSelectedUserIds((prev) =>\n prev.includes(userId)\n ? prev.filter((u) => u !== userId)\n : [...prev, userId]\n )\n }, [])\n const resetSelectedUsers = React.useCallback(() => {\n setSelectedUserIds([])\n }, [])\n\n // Selected schema types filter the visible workflow documents\n const [selectedSchemaTypes, setSelectedSchemaTypes] =\n React.useState<string[]>(schemaTypes)\n const toggleSelectedSchemaType = React.useCallback((schemaType: string) => {\n setSelectedSchemaTypes((prev) =>\n prev.includes(schemaType)\n ? prev.filter((u) => u !== schemaType)\n : [...prev, schemaType]\n )\n }, [])\n\n // Document IDs that have validation errors\n const [invalidDocumentIds, setInvalidDocumentIds] = React.useState<string[]>(\n []\n )\n const toggleInvalidDocumentId = React.useCallback(\n (docId: string, action: 'ADD' | 'REMOVE') => {\n setInvalidDocumentIds((prev) =>\n action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId)\n )\n },\n []\n )\n\n const Clone: DraggableChildrenFn = React.useCallback(\n (provided, snapshot, rubric) => {\n const item = data.find(\n (doc) => doc?._metadata?.documentId === rubric.draggableId\n )\n\n return (\n <div\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\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\n tone=\"critical\"\n title=\"Error querying for Workflow documents\"\n />\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 columns={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 =\n !userRoleCanDrop || undroppableStates.includes(state.id)\n\n return (\n <Card\n key={state.id}\n borderLeft={stateIndex > 0}\n tone={defaultCardTone}\n >\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(\n data,\n state.id,\n selectedUserIds,\n 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={\n snapshot.isDraggingOver\n ? `primary`\n : defaultCardTone\n }\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'\nimport {Tool} from 'sanity'\n\nimport WorkflowTool from '../components/WorkflowTool'\nimport {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, DocumentActionProps, isObjectInputProps} from 'sanity'\n\nimport {AssignWorkflow} from './actions/AssignWorkflow'\nimport {BeginWorkflow} from './actions/BeginWorkflow'\nimport {CompleteWorkflow} from './actions/CompleteWorkflow'\nimport {UpdateWorkflow} from './actions/UpdateWorkflow'\nimport {AssigneesBadge} from './badges/AssigneesBadge'\nimport {StateBadge} from './badges/StateBadge'\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 {WorkflowConfig} from './types'\n\nexport const workflow = 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 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, workflow: {schemaTypes, states}}),\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 (props) => BeginWorkflow(props),\n (props) => AssignWorkflow(props),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, state)\n ),\n (props) => CompleteWorkflow(props),\n ...prev,\n ]\n },\n badges: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n const {documentId, currentUser} = context\n\n if (!documentId) {\n return prev\n }\n\n return [\n () => StateBadge(documentId),\n () => AssigneesBadge(documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [\n // TODO: These configs could be read from Context\n workflowTool({schemaTypes, states}),\n ],\n }\n }\n)\n"],"names":["defineStates","states","API_VERSION","DEFAULT_CONFIG","schemaTypes","id","title","color","roles","transitions","requireAssignment","UserAssignment","props","assignees","userList","documentId","client","useClient","apiVersion","toast","useToast","addAssignee","React","useCallback","userId","user","find","u","push","status","patch","setIfMissing","insert","commit","then","concat","displayName","catch","err","console","error","description","removeAssignee","unset","clearAssignees","jsx","UserSelectMenu","style","maxHeight","value","onAdd","onClear","onRemove","useWorkflowMetadata","ids","data","rawData","loading","useListeningQuery","params","options","keyedMetadata","useMemo","length","reduce","acc","cur","WorkflowContext","createContext","addId","removeId","useWorkflowContext","current","useContext","metadata","WorkflowProvider","setIds","useState","includes","filter","i","Provider","workflow","children","renderDefault","AssignWorkflow","_a","isDialogOpen","setDialogOpen","useProjectUsers","icon","UsersIcon","type","disabled","label","dialog","onClose","content","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","fetch","state","createIfNotExists","_id","_type","orderRank","LexoRank","parse","genNext","toString","min","SplitVerticalIcon","CompleteWorkflow","delete","s","isLastState","CheckmarkIcon","arraysContainMatchingString","one","two","some","item","UpdateWorkflow","actionState","_b","_c","_d","useCurrentUser","currentUser","currentState","validation","isValidating","useValidationStatus","hasValidationErrors","requireValidation","v","level","newState","set","onComplete","currentStateIndex","findIndex","actionStateIndex","direction","DirectionIcon","ArrowRightIcon","ArrowLeftIcon","directionLabel","userRoleCanUpdateState","map","r","name","actionStateIsAValidTransition","userAssignmentCanUpdateState","AssigneesBadge","hasMe","assignee","assigneesCount","assigneeUsers","join","StateBadge","WorkflowSignal","replace","useEffect","EditButton","navigateIntent","useRouter","Button","onClick","mode","fontSize","padding","tabIndex","EditIcon","text","Field","schema","useSchema","String","draftId","Spinner","schemaType","get","Feedback","tone","Card","border","jsxs","Flex","align","justify","gap","Preview","layout","UserAssignmentInput","useFormValue","stringValue","Array","isArray","initialRank","lastRankValue","lastRank","nextRank","defineType","liveEdit","fields","defineField","readOnly","list","components","input","initialValue","p","_ref","getClient","lastDocOrderRank","order","of","filterItemsAndSort","items","stateId","selectedUsers","arguments","undefined","selectedSchemaTypes","_metadata","sort","a","b","aOrderRank","bOrderRank","localeCompare","QUERY","groq","_templateObject","_taggedTemplateLiteral","useWorkflowDocuments","localDocuments","setLocalDocuments","default","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","optimistic","newStateId","document","d","_rev","ifRevisionId","res","message","workflowData","operations","AvatarGroup","users","max","len","me","visibleUsers","slice","UserAvatar","Box","marginRight","paddingLeft","Text","size","UserDisplay","button","popover","setPopover","isOpen","setIsOpen","close","open","useClickOutside","Popover","ref","portal","AddIcon","Grid","CompleteButton","handleComplete","event","currentTarget","Tooltip","TimeAgo","_ref2","time","timeAgo","useTimeAgo","DraftStatus","updatedAt","_updatedAt","Fragment","TextWithTone","dimmed","muted","PublishedStatus","PublishIcon","Validate","onChange","ValidationStatus","hasError","ErrorOutlineIcon","WarningOutlineIcon","DocumentCard","isDragDisabled","isPatching","userRoleCanDrop","isDragging","toggleInvalidDocumentId","isDarkMode","useTheme","sanity","dark","defaultCardTone","optimisticValidation","setOptimisticValidation","handleValidation","updates","cardTone","paddingBottom","paddingX","radius","shadow","Stack","borderBottom","pointerEvents","flex","skipVisibilityCheck","flexShrink","DragHandleIcon","paddingTop","getStyle","draggableStyle","virtualItem","transform","start","draggableTransformY","parseInt","split","position","top","left","width","height","DocumentList","invalidDocumentIds","patchingIds","selectedUserIds","dataFiltered","parentRef","useRef","virtualizer","useVirtualizer","count","getScrollElement","getItemKey","index","estimateSize","overscan","measureElement","element","getBoundingClientRect","overflow","overflowAnchor","scrollBehavior","getTotalSize","getVirtualItems","isInvalid","meInAssignees","Draggable","draggableId","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","key","Filters","uniqueAssignedUsers","toggleSelectedUser","resetSelectedUsers","toggleSelectedSchemaType","meInUniqueAssignees","uniqueAssigneesNotMe","overflowX","MenuButton","UserIcon","menu","Menu","labels","addMe","removeMe","clear","withTooltip","borderRight","ResetIcon","typeName","Status","Icon","StyledStickyCard","styled","css","_templateObject2","StateTitle","isDropDisabled","draggingFrom","documentCount","isSource","paddingY","Badge","InfoOutlineIcon","weight","generateMiddleValue","ranks","rank","firstUndefined","firstDefinedAfter","firstDefinedBefore","findLastIndex","Error","beforeRank","afterRank","between","middle","Math","floor","generateMultipleOrderRanks","end","rankStart","rankEnd","genPrev","StyledFloatingCard","_templateObject3","FloatingCard","_ref3","childrenHaveValues","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Verify","documentsWithoutValidMetadataIds","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","documentsWithoutOrderIds","documentsWithDuplicatedOrderIds","correctDocuments","tx","transaction","removeUsersFromDocuments","validAssignees","addOrderToDocuments","firstOrder","secondOrder","minLexo","maxLexo","resetOrderOfAllDocuments","orphanedMetadataDocumentIds","doc","handleOrphans","forEach","WorkflowTool","tool","userRoleNames","setPatchingIds","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_e","_f","destinationStateItems","destinationStateIndex","globalStateMinimumRank","globalStateMaximumRank","firstItemOrderRank","shift","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","setInvalidDocumentIds","docId","action","Clone","provided","snapshot","rubric","Container","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","renderClone","isDraggingOver","workflowTool","component","definePlugin","config","types","studio","form","isObjectInputProps","actions","context","badges","tools"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/types/index.ts","../src/constants/index.ts","../src/components/UserAssignment.tsx","../src/hooks/useWorkflowMetadata.tsx","../src/components/WorkflowContext.tsx","../src/actions/AssignWorkflow.tsx","../src/actions/BeginWorkflow.tsx","../src/actions/CompleteWorkflow.tsx","../src/helpers/arraysContainMatchingString.ts","../src/actions/UpdateWorkflow.tsx","../src/badges/AssigneesBadge.tsx","../src/badges/StateBadge.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/index.ts"],"sourcesContent":["import {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<\n Id extends string,\n States extends StateCheck<Id, States>[]\n>(states: States): 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 DragData = {\n documentId?: string\n x?: number\n y?: number\n state?: 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, 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 React from 'react'\nimport {useToast} from '@sanity/ui'\nimport {UserSelectMenu} from 'sanity-plugin-utils'\nimport {useClient} from 'sanity'\n\nimport {User} from '../types'\nimport {API_VERSION} from '../constants'\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 = React.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 = React.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 = React.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 {useMemo} from 'react'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {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: boolean | unknown | ProgressEvent\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\n const keyedMetadata = useMemo(() => {\n if (!rawData || rawData.length === 0) return {}\n\n return rawData.reduce<KeyedMetadata>((acc, cur) => {\n return {\n ...acc,\n [cur.documentId]: cur,\n }\n }, {})\n }, [rawData])\n\n return {data: keyedMetadata, loading, error}\n}\n","import {useCallback, useContext, useState} from 'react'\nimport {createContext} from 'react'\nimport {LayoutProps} from 'sanity'\n\nimport {DEFAULT_CONFIG} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {KeyedMetadata, WorkflowConfig} from '../types'\n\nexport type WorkflowContextValue = Required<WorkflowConfig> & {\n data: KeyedMetadata\n loading: boolean\n error: boolean | unknown | ProgressEvent\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 & {workflow: 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) =>\n 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 return (\n <WorkflowContext.Provider\n value={{\n data,\n loading,\n error,\n ids,\n addId,\n removeId,\n states: props.workflow.states,\n schemaTypes: props.workflow.schemaTypes,\n }}\n >\n {props.renderDefault(props)}\n </WorkflowContext.Provider>\n )\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {useState} from 'react'\nimport {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 AssignWorkflow(props: DocumentActionProps) {\n const {id} = props\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 type: 'dialog',\n disabled: !metadata || loading || 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'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport {useCallback, useState} from 'react'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function BeginWorkflow(props: DocumentActionProps) {\n const {id, draft} = props\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 `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n {state: states[0].id}\n )\n client\n .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 .then(() => {\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 })\n }, [id, states, client, toast])\n\n if (!draft || complete || metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {useCallback} from 'react'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function CompleteWorkflow(props: DocumentActionProps) {\n const {id} = props\n const {metadata, loading, error, states} = useWorkflowContext(id)\n const client = useClient({apiVersion: API_VERSION})\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(() => {\n client.delete(`workflow-metadata.${id}`)\n }, [id, client])\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 type: 'dialog',\n disabled: loading || 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: () => {\n handle()\n },\n color: 'positive',\n }\n}\n","export function arraysContainMatchingString(\n one: string[],\n two: string[]\n): boolean {\n return one.some((item) => two.includes(item))\n}\n","import {ArrowLeftIcon, ArrowRightIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {useCurrentUser, useValidationStatus} from 'sanity'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {State} from '../types'\n\n// eslint-disable-next-line complexity\nexport function UpdateWorkflow(props: DocumentActionProps, actionState: State) {\n const {id, type} = props\n\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)\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 props.onComplete()\n toast.push({\n status: 'success',\n title: `Document state now \"${newState.title}\"`,\n })\n })\n .catch((err) => {\n props.onComplete()\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 error ||\n (currentState?.requireValidation && isValidating) ||\n hasValidationErrors ||\n !currentState ||\n !userRoleCanUpdateState ||\n !actionStateIsAValidTransition ||\n !userAssignmentCanUpdateState,\n title,\n label: actionState.title,\n onHandle: () => onHandle(id, actionState),\n }\n}\n","import {CurrentUser, DocumentBadgeDescription} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\nimport {API_VERSION} from '../constants'\n\nexport function AssigneesBadge(\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\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\n ? assignees.some((assignee) => assignee === currentUser.id)\n : 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} ${\n assigneesCount === 1 ? 'other' : 'others'\n }`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\n\nimport {useWorkflowContext} from '../components/WorkflowContext'\n\nexport function StateBadge(\n documentId: string\n): 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 {ObjectInputProps} 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\n ? props.value._id.replace(`drafts.`, ``)\n : 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 {Button} from '@sanity/ui'\nimport {EditIcon} from '@sanity/icons'\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 // eslint-disable-next-line react/jsx-no-bind\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, SanityDocument, 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 {data, loading, error} = useListeningQuery<SanityDocument>(\n `*[_id in [$id, $draftId]]|order(_updatedAt)[0]`,\n {\n params: {\n id: String(props.value),\n draftId: `drafts.${String(props.value)}`,\n },\n }\n )\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 {FunctionComponent} from 'react'\nimport {ArraySchemaType, ArrayOfPrimitivesInputProps, useFormValue} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from './UserAssignment'\n\nconst UserAssignmentInput: FunctionComponent<\n ArrayOfPrimitivesInputProps<string | number | boolean, ArraySchemaType>\n> = (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 not 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 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 {State} from '../../types'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\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 (p, {getClient}) => {\n const lastDocOrderRank = await getClient({\n apiVersion: API_VERSION,\n }).fetch(`*[_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 {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) =>\n selectedUsers.includes(assignee)\n )\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\n ? selectedSchemaTypes.includes(item._type)\n : 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 {DraggableLocation} from '@hello-pangea/dnd'\nimport {useToast} from '@sanity/ui'\nimport groq from 'groq'\nimport React from 'react'\nimport {useClient} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {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: boolean | unknown | ProgressEvent\n }\n operations: {\n move: (\n draggedId: string,\n destination: DraggableLocation,\n states: State[],\n newOrder: string\n ) => void\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 {data, loading, error} = useListeningQuery<\n SanityDocumentWithMetadata[]\n >(QUERY, {\n params: {schemaTypes},\n initialValue: [],\n })\n\n const [localDocuments, setLocalDocuments] = React.useState<\n SanityDocumentWithMetadata[]\n >([])\n\n React.useEffect(() => {\n if (data) {\n setLocalDocuments(data)\n }\n }, [data])\n\n const move = React.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(\n (d) => d?._metadata?.documentId === draggedId\n )\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 as State}\n },\n [client, toast, localDocuments]\n )\n\n return {\n workflowData: {data: localDocuments, loading, error},\n operations: {move},\n }\n}\n","import React from 'react'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {useCurrentUser, UserAvatar} from 'sanity'\n\nimport {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} = React.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 React from 'react'\nimport {Button, Grid, Popover, useClickOutside} from '@sanity/ui'\nimport {AddIcon} from '@sanity/icons'\n\nimport AvatarGroup from './DocumentCard/AvatarGroup'\nimport {User} from '../types'\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 [button] = React.useState(null)\n const [popover, setPopover] = React.useState(null)\n const [isOpen, setIsOpen] = React.useState(false)\n\n const close = React.useCallback(() => setIsOpen(false), [])\n const open = React.useCallback(() => setIsOpen(true), [])\n\n useClickOutside(close, [button, popover])\n\n return (\n <Popover\n // @ts-ignore\n ref={setPopover}\n content={<UserAssignment userList={userList} assignees={assignees} documentId={documentId} />}\n portal\n open={isOpen}\n >\n {!assignees || assignees.length === 0 ? (\n <Button\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 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'\nimport {Box, Button, Text, Tooltip, useToast} from '@sanity/ui'\nimport React from 'react'\nimport {useClient} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n documentId: string\n disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n const {documentId, disabled = false} = props\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n const handleComplete: React.MouseEventHandler<HTMLButtonElement> =\n React.useCallback(\n (event) => {\n const id = event.currentTarget.value\n\n if (!id) {\n return\n }\n\n client\n .delete(`workflow-metadata.${id}`)\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow completed',\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: 'Could not complete Workflow',\n })\n })\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 {useTimeAgo} from 'sanity'\n\nexport interface TimeAgoProps {\n time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n const timeAgo = useTimeAgo(time)\n\n return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","import {EditIcon} from '@sanity/icons'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} 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'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {\n document?: PreviewValue | Partial<SanityDocument> | null\n}) {\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\n tone=\"positive\"\n dimmed={!document}\n muted={!document}\n size={1}\n >\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {useEffect} from 'react'\nimport {useValidationStatus, ValidationStatus} from 'sanity'\n\ntype ValidateProps = {\n documentId: string\n type: string\n onChange: (validation: ValidationStatus) => 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 const {isValidating, validation = []} = useValidationStatus(documentId, type)\n\n useEffect(() => {\n onChange({isValidating, validation})\n }, [onChange, isValidating, validation])\n\n return null\n}\n","import {ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {ValidationMarker} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\ntype ValidationStatusProps = {\n validation: ValidationMarker[]\n}\n\nexport function ValidationStatus(props: ValidationStatusProps) {\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","/* eslint-disable react/prop-types */\nimport {DragHandleIcon} from '@sanity/icons'\nimport {Box, Card, CardTone, Flex, Stack, useTheme} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n SchemaType,\n useSchema,\n ValidationStatus as ValidationStatusType,\n} from 'sanity'\nimport {Preview} from 'sanity'\n\nimport {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: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => 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 const {assignees = [], documentId} = item._metadata ?? {}\n const schema = useSchema()\n const state = states.find((s) => s.id === item._metadata?.state)\n\n const isDarkMode = useTheme().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] =\n useState<ValidationStatusType>({\n isValidating: state?.requireValidation ?? false,\n validation: [],\n })\n\n const {isValidating, validation} = optimisticValidation\n\n const handleValidation = useCallback((updates: ValidationStatusType) => {\n setOptimisticValidation(updates)\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\n documentId={documentId}\n type={item._type}\n onChange={handleValidation}\n />\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 schemaType={schema.get(item._type) as SchemaType}\n />\n </Box>\n <Box style={{flexShrink: 0}}>\n {hasError || isDragDisabled || isPatching ? null : (\n <DragHandleIcon />\n )}\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 ? (\n <ValidationStatus validation={validation} />\n ) : null}\n <DraftStatus document={item} />\n <PublishedStatus document={item} />\n <EditButton\n id={item._id}\n type={item._type}\n disabled={!userRoleCanDrop}\n />\n {isLastState && states.length <= 3 ? (\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n ) : null}\n </Flex>\n {isLastState && states.length > 3 ? (\n <Stack paddingTop={2}>\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n </Stack>\n ) : null}\n </Card>\n </Stack>\n </Card>\n </Box>\n </>\n )\n}\n","import {Draggable, DraggableStyle} from '@hello-pangea/dnd'\nimport {useVirtualizer, VirtualItem} from '@tanstack/react-virtual'\nimport {CSSProperties, useMemo, useRef} from 'react'\nimport {CurrentUser} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {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: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => 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\nexport default function DocumentList(props: DocumentListProps) {\n const {\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: () => parentRef.current,\n getItemKey: (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n estimateSize: () => 115,\n overscan: 7,\n measureElement: (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\n ? state.requireAssignment && meInAssignees\n : 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(\n draggableProvided.draggableProps.style,\n virtualItem\n )}\n >\n <div\n ref={virtualizer.measureElement}\n data-index={virtualItem.index}\n >\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, UserIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Menu, MenuButton} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {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 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(\n (u) => u.id !== currentUser?.id\n )\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={\n selectedUserIds.includes(currentUser.id)\n ? `default`\n : `bleed`\n }\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 padding={3}\n fontSize={1}\n key={typeName}\n text={schemaType?.title ?? typeName}\n icon={schemaType?.icon ?? undefined}\n mode={\n selectedSchemaTypes.includes(typeName) ? `default` : `ghost`\n }\n onClick={() => toggleSelectedSchemaType(typeName)}\n />\n )\n })}\n </Flex>\n ) : null}\n </Flex>\n </Card>\n )\n}\n","import React from 'react'\nimport {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, UserIcon} from '@sanity/icons'\nimport {Badge, BadgeTone, Box, Card, Flex, Text} from '@sanity/ui'\nimport styled, {css} from 'styled-components'\n\nimport {State} from '../../types'\nimport {Status} from './Status'\n\nconst StyledStickyCard = styled(Card)(\n () => css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\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 {\n state,\n requireAssignment,\n userRoleCanDrop,\n isDropDisabled,\n draggingFrom,\n 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\n mode={\n (draggingFrom && !isDropDisabled) || isSource\n ? 'default'\n : 'outline'\n }\n tone={tone}\n muted={!userRoleCanDrop || isDropDisabled}\n >\n {state.title}\n </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(\n (rank, index) => rank && index > firstUndefined\n )\n // Find the first defined value before the undefined value\n const firstDefinedBefore = ranks.findLastIndex(\n (rank, index) => rank && index < firstUndefined\n )\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 {PropsWithChildren} from 'react'\nimport styled, {css} from 'styled-components'\nimport {Card, Grid} from '@sanity/ui'\nimport {motion, AnimatePresence} from 'framer-motion'\n\nconst StyledFloatingCard = styled(Card)(\n () => css`\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 1000;\n `\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 React from 'react'\nimport {useClient} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {generateMultipleOrderRanks} from '../helpers/generateMultipleOrderRanks'\nimport {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 it there is invalid date\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\n return !stateExists && documentId ? [...acc, documentId] : 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 return !allAssigneesExist && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithoutOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return !orderRank && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithDuplicatedOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return orderRank &&\n data.filter((d) => d._metadata?.orderRank === orderRank).length > 1 &&\n documentId\n ? [...acc, documentId]\n : acc\n }, [] as string[])\n : []\n\n // Updates metadata documents to a valid, existing state\n const correctDocuments = React.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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\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 = React.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} =\n data.find((d) => d._id === documentId)?._metadata ?? {}\n const validAssignees = assignees?.length\n ? // eslint-disable-next-line max-nested-callbacks\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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, data, toast, userList]\n )\n\n // Add order value to metadata documents\n const addOrderToDocuments = React.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]\n .slice(0, 2)\n .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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n // Reset order value on all metadata documents\n const resetOrderOfAllDocuments = React.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 ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n // A document could be deleted and the workflow metadata left behind\n const orphanedMetadataDocumentIds = React.useMemo(() => {\n return data.length\n ? data.filter((doc) => !doc?._id).map((doc) => doc._metadata.documentId)\n : []\n }, [data])\n\n const handleOrphans = React.useCallback(() => {\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 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 resetOrderOfAllDocuments(\n data.map((doc) => String(doc._metadata?.documentId))\n )\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 DraggableChildrenFn,\n DragStart,\n Droppable,\n DropResult,\n} from '@hello-pangea/dnd'\nimport {\n Box,\n Card,\n Container,\n Flex,\n Grid,\n Spinner,\n useTheme,\n useToast,\n} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport React from 'react'\nimport {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 {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 isDarkMode = useTheme().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\n ? user?.roles.map((r) => r.name)\n : []\n\n const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n const [patchingIds, setPatchingIds] = React.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] = React.useState<string[]>([])\n const [draggingFrom, setDraggingFrom] = React.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 = React.useCallback(\n (start: DragStart) => {\n const {draggableId, source} = start\n const {droppableId: currentStateId} = source\n setDraggingFrom(currentStateId)\n\n const document = data.find(\n (item) => item._metadata?.documentId === draggableId\n )\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\n ? documentAssignees.includes(user.id)\n : false\n\n if (!userIsAssignedToDocument) {\n undroppableStateIds.push(...statesThatRequireAssignmentIds)\n }\n }\n\n const statesThatCannotBeTransitionedToIds =\n state.transitions && state.transitions.length\n ? states\n .filter((s) => !state.transitions?.includes(s.id))\n .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(\n (id) => id !== currentStateId\n )\n\n if (undroppableExceptSelf.length) {\n setUndroppableStates(undroppableExceptSelf)\n }\n },\n [data, states, user]\n )\n\n const handleDragEnd = React.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 &&\n destination.index === source.index)\n ) {\n return\n }\n\n // Find all items in current state\n const destinationStateItems = [\n ...filterItemsAndSort(data, destination.droppableId, [], null),\n ]\n const destinationStateIndex = states.findIndex(\n (s) => s.id === destination.droppableId\n )\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\n ?.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)\n .between(LexoRank.min())\n .toString()\n }\n } else if (destination.index + 1 === destinationStateItems.length) {\n // Now last item in order\n const lastItemOrderRank = [...destinationStateItems].pop()?._metadata\n ?.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)\n .between(LexoRank.min())\n .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 = React.useMemo(() => {\n const uniqueUserIds = data.reduce((acc, item) => {\n const {assignees = []} = item._metadata ?? {}\n const newAssignees = assignees?.length\n ? assignees.filter((a) => !acc.includes(a))\n : []\n return newAssignees.length ? [...acc, ...newAssignees] : 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] = React.useState<string[]>(\n uniqueAssignedUsers.map((u) => u.id)\n )\n const toggleSelectedUser = React.useCallback((userId: string) => {\n setSelectedUserIds((prev) =>\n prev.includes(userId)\n ? prev.filter((u) => u !== userId)\n : [...prev, userId]\n )\n }, [])\n const resetSelectedUsers = React.useCallback(() => {\n setSelectedUserIds([])\n }, [])\n\n // Selected schema types filter the visible workflow documents\n const [selectedSchemaTypes, setSelectedSchemaTypes] =\n React.useState<string[]>(schemaTypes)\n const toggleSelectedSchemaType = React.useCallback((schemaType: string) => {\n setSelectedSchemaTypes((prev) =>\n prev.includes(schemaType)\n ? prev.filter((u) => u !== schemaType)\n : [...prev, schemaType]\n )\n }, [])\n\n // Document IDs that have validation errors\n const [invalidDocumentIds, setInvalidDocumentIds] = React.useState<string[]>(\n []\n )\n const toggleInvalidDocumentId = React.useCallback(\n (docId: string, action: 'ADD' | 'REMOVE') => {\n setInvalidDocumentIds((prev) =>\n action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId)\n )\n },\n []\n )\n\n const Clone: DraggableChildrenFn = React.useCallback(\n (provided, snapshot, rubric) => {\n const item = data.find(\n (doc) => doc?._metadata?.documentId === rubric.draggableId\n )\n\n return (\n <div\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\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\n tone=\"critical\"\n title=\"Error querying for Workflow documents\"\n />\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 columns={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 =\n !userRoleCanDrop || undroppableStates.includes(state.id)\n\n return (\n <Card\n key={state.id}\n borderLeft={stateIndex > 0}\n tone={defaultCardTone}\n >\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(\n data,\n state.id,\n selectedUserIds,\n 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={\n snapshot.isDraggingOver\n ? `primary`\n : defaultCardTone\n }\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'\nimport {Tool} from 'sanity'\n\nimport WorkflowTool from '../components/WorkflowTool'\nimport {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, DocumentActionProps, isObjectInputProps} from 'sanity'\n\nimport {AssignWorkflow} from './actions/AssignWorkflow'\nimport {BeginWorkflow} from './actions/BeginWorkflow'\nimport {CompleteWorkflow} from './actions/CompleteWorkflow'\nimport {UpdateWorkflow} from './actions/UpdateWorkflow'\nimport {AssigneesBadge} from './badges/AssigneesBadge'\nimport {StateBadge} from './badges/StateBadge'\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 {WorkflowConfig} from './types'\n\nexport const workflow = 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 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, workflow: {schemaTypes, states}}),\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 (props) => BeginWorkflow(props),\n (props) => AssignWorkflow(props),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, state)\n ),\n (props) => CompleteWorkflow(props),\n ...prev,\n ]\n },\n badges: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n const {documentId, currentUser} = context\n\n if (!documentId) {\n return prev\n }\n\n return [\n () => StateBadge(documentId),\n () => AssigneesBadge(documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [\n // TODO: These configs could be read from Context\n workflowTool({schemaTypes, states}),\n ],\n }\n }\n)\n"],"names":["defineStates","states","API_VERSION","DEFAULT_CONFIG","schemaTypes","id","title","color","roles","transitions","requireAssignment","UserAssignment","props","assignees","userList","documentId","client","useClient","apiVersion","toast","useToast","addAssignee","React","useCallback","userId","user","find","u","push","status","patch","concat","setIfMissing","insert","commit","then","displayName","catch","err","console","error","description","removeAssignee","unset","clearAssignees","jsx","UserSelectMenu","style","maxHeight","value","onAdd","onClear","onRemove","useWorkflowMetadata","ids","data","rawData","loading","useListeningQuery","params","options","keyedMetadata","useMemo","length","reduce","acc","cur","WorkflowContext","createContext","addId","removeId","useWorkflowContext","current","useContext","metadata","WorkflowProvider","setIds","useState","includes","filter","i","Provider","workflow","children","renderDefault","AssignWorkflow","_a","isDialogOpen","setDialogOpen","useProjectUsers","icon","UsersIcon","type","disabled","label","dialog","onClose","content","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","fetch","state","createIfNotExists","_id","_type","orderRank","LexoRank","parse","genNext","toString","min","SplitVerticalIcon","CompleteWorkflow","delete","s","isLastState","CheckmarkIcon","arraysContainMatchingString","one","two","some","item","UpdateWorkflow","actionState","_b","_c","_d","useCurrentUser","currentUser","currentState","validation","isValidating","useValidationStatus","hasValidationErrors","requireValidation","v","level","newState","set","onComplete","currentStateIndex","findIndex","actionStateIndex","direction","DirectionIcon","ArrowRightIcon","ArrowLeftIcon","directionLabel","userRoleCanUpdateState","map","r","name","actionStateIsAValidTransition","userAssignmentCanUpdateState","AssigneesBadge","hasMe","assignee","assigneesCount","assigneeUsers","join","StateBadge","WorkflowSignal","replace","useEffect","EditButton","navigateIntent","useRouter","Button","onClick","mode","fontSize","padding","tabIndex","EditIcon","text","Field","schema","useSchema","String","draftId","Spinner","schemaType","get","Feedback","tone","Card","border","jsxs","Flex","align","justify","gap","Preview","layout","UserAssignmentInput","useFormValue","stringValue","Array","isArray","initialRank","lastRankValue","lastRank","nextRank","defineType","liveEdit","fields","defineField","readOnly","list","components","input","initialValue","p","_ref","getClient","lastDocOrderRank","order","of","filterItemsAndSort","items","stateId","selectedUsers","arguments","undefined","selectedSchemaTypes","_metadata","sort","a","b","aOrderRank","bOrderRank","localeCompare","QUERY","groq","__template","useWorkflowDocuments","localDocuments","setLocalDocuments","default","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","optimistic","newStateId","document","d","_rev","ifRevisionId","res","message","workflowData","operations","AvatarGroup","users","max","len","me","visibleUsers","slice","UserAvatar","Box","marginRight","paddingLeft","Text","size","UserDisplay","button","popover","setPopover","isOpen","setIsOpen","close","open","useClickOutside","Popover","ref","portal","AddIcon","Grid","CompleteButton","handleComplete","event","currentTarget","Tooltip","TimeAgo","_ref2","time","timeAgo","useTimeAgo","DraftStatus","updatedAt","_updatedAt","Fragment","TextWithTone","dimmed","muted","PublishedStatus","PublishIcon","Validate","onChange","ValidationStatus","hasError","ErrorOutlineIcon","WarningOutlineIcon","DocumentCard","isDragDisabled","isPatching","userRoleCanDrop","isDragging","toggleInvalidDocumentId","isDarkMode","useTheme","sanity","dark","defaultCardTone","optimisticValidation","setOptimisticValidation","handleValidation","updates","cardTone","paddingBottom","paddingX","radius","shadow","Stack","borderBottom","paddingRight","pointerEvents","flex","skipVisibilityCheck","flexShrink","DragHandleIcon","paddingTop","getStyle","draggableStyle","virtualItem","transform","start","draggableTransformY","parseInt","split","position","top","left","width","height","DocumentList","invalidDocumentIds","patchingIds","selectedUserIds","dataFiltered","parentRef","useRef","virtualizer","useVirtualizer","count","getScrollElement","getItemKey","index","estimateSize","overscan","measureElement","element","getBoundingClientRect","overflow","overflowAnchor","scrollBehavior","getTotalSize","getVirtualItems","isInvalid","meInAssignees","Draggable","draggableId","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","key","Filters","uniqueAssignedUsers","toggleSelectedUser","resetSelectedUsers","toggleSelectedSchemaType","meInUniqueAssignees","uniqueAssigneesNotMe","overflowX","MenuButton","UserIcon","menu","Menu","labels","addMe","removeMe","clear","withTooltip","borderRight","ResetIcon","typeName","Status","Icon","StyledStickyCard","styled","css","StateTitle","isDropDisabled","draggingFrom","documentCount","isSource","paddingY","Badge","InfoOutlineIcon","weight","generateMiddleValue","ranks","rank","firstUndefined","firstDefinedAfter","firstDefinedBefore","findLastIndex","Error","beforeRank","afterRank","between","middle","Math","floor","generateMultipleOrderRanks","end","rankStart","rankEnd","genPrev","StyledFloatingCard","FloatingCard","_ref3","childrenHaveValues","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Verify","documentsWithoutValidMetadataIds","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","documentsWithoutOrderIds","documentsWithDuplicatedOrderIds","correctDocuments","tx","transaction","removeUsersFromDocuments","validAssignees","addOrderToDocuments","firstOrder","secondOrder","minLexo","maxLexo","resetOrderOfAllDocuments","orphanedMetadataDocumentIds","doc","handleOrphans","forEach","WorkflowTool","tool","userRoleNames","setPatchingIds","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_e","_f","destinationStateItems","destinationStateIndex","globalStateMinimumRank","globalStateMaximumRank","firstItemOrderRank","shift","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","setInvalidDocumentIds","docId","action","Clone","provided","snapshot","rubric","Container","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","renderClone","isDraggingOver","workflowTool","component","definePlugin","config","types","studio","form","isObjectInputProps","actions","context","badges","tools"],"mappings":"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"}