sanity-plugin-workflow 1.0.0-beta.6 → 1.0.0-beta.7

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/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/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/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 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: 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 {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {Metadata, State} from '../types'\n\n/**\n * Takes the published ID of a document and return the metadata and current state object\n *\n * @param id Source document published ID\n * @param states Array of States defined in plugin config\n * @returns State\n */\nexport function useWorkflowMetadata(\n id: string,\n states: State[]\n): {\n data: {metadata?: Metadata; state?: State}\n loading: boolean\n error: boolean\n} {\n const {\n data: metadata,\n loading,\n error,\n } = useListeningQuery<Metadata>(\n `*[_type == \"workflow.metadata\" && documentId == $id][0]`,\n {\n params: {id},\n }\n )\n\n if (metadata?.state) {\n return {\n data: {\n metadata,\n state: states.find((s) => s.id === metadata.state),\n },\n loading,\n error,\n }\n }\n\n return {data: {}, loading, error}\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {DocumentActionProps} from 'sanity'\nimport {useState} from 'react'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function AssignWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const [isDialogOpen, setDialogOpen] = useState(false)\n const userList = useProjectUsers({apiVersion: API_VERSION})\n const {data, loading, error} = useWorkflowMetadata(id, states)\n\n if (error) {\n console.error(error)\n }\n\n if (!data?.metadata) {\n return null\n }\n\n return {\n icon: UsersIcon,\n type: 'dialog',\n disabled: !data || loading || error,\n label: `Assign`,\n title: data ? 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={data.metadata?.assignees ?? []}\n documentId={id}\n />\n ),\n },\n onHandle: () => {\n setDialogOpen(true)\n },\n }\n}\n","import {useCallback, useState} from 'react'\nimport {SplitVerticalIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function BeginWorkflow(props: DocumentActionProps, states: State[]) {\n const {id, draft} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\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 {\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 // Faster!\n {visibility: 'async'}\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 || data.metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: data?.metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {useCallback} from 'react'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function CompleteWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\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 const isLastState = data?.state?.id === states[states.length - 1].id\n\n if (!data.metadata) {\n return null\n }\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 {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\n// eslint-disable-next-line complexity\nexport function UpdateWorkflow(\n props: DocumentActionProps,\n allStates: State[],\n actionState: State\n) {\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 {data, loading, error} = useWorkflowMetadata(id, allStates)\n const {state: currentState} = data\n const {assignees = []} = data?.metadata ?? {}\n\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 // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // if (!ops.publish.disabled && nextOperation === 'publish') {\n // ops.publish.execute()\n // } else if (!ops.unpublish.disabled && nextOperation === 'unpublish') {\n // ops.unpublish.execute()\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 (!data.metadata || (currentState && currentState.id === actionState.id)) {\n return null\n }\n\n const currentStateIndex = allStates.findIndex(\n (s) => s.id === currentState?.id\n )\n const actionStateIndex = allStates.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'\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function AssigneesBadge(\n states: State[],\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {metadata} = data\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n if (loading || error || !metadata) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!metadata?.assignees?.length) {\n return {\n label: 'Unassigned',\n }\n }\n\n const {assignees} = metadata ?? []\n const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n let label\n\n if (hasMe && assigneesCount === 0) {\n label = 'Assigned to Me'\n } else if (hasMe && assigneesCount > 0) {\n label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function StateBadge(states: State[], documentId: string): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {state} = data\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 {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 },\n ...(\n *[_id in [^.documentId, \"drafts.\" + ^.documentId]]|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\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} = document._metadata || {}\n\n await client\n .patch(`workflow-metadata.${documentId}`)\n // Removed because it was effecting fast-updates between columns\n // TODO: Prevent dragging while patching instead while keeping optimistic updates and revert when patch fails\n // .ifRevisionId(document._metadata._rev)\n .set({state: newStateId, orderRank: newOrder})\n .commit()\n .then(() => {\n return toast.push({\n title: `Moved to \"${newState?.title ?? newStateId}\"`,\n status: 'success',\n })\n })\n .catch((err) => {\n // Revert optimistic update\n setLocalDocuments(currentLocalData)\n\n return toast.push({\n title: `Failed to move to \"${newState?.title ?? newStateId}\"`,\n description: err.message,\n status: 'error',\n })\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 React from 'react'\nimport {Button, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\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.useCallback(\n (id: string) => {\n client\n .delete(`workflow-metadata.${id}`)\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow completed',\n description: id,\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: 'Could not complete Workflow',\n description: id,\n })\n })\n },\n [client, toast]\n )\n\n return (\n <Button\n onClick={() => handleComplete(documentId)}\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 )\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 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 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 (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 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 value={item}\n schemaType={schema.get(item._type) as SchemaType}\n />\n </Box>\n <Box style={{flexShrink: 0}}>\n {hasError || isDragDisabled ? null : <DragHandleIcon />}\n </Box>\n </Flex>\n </Card>\n\n <Card padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" justify=\"space-between\" gap={3}>\n <Box flex={1}>\n {documentId && (\n <UserDisplay\n userList={userList}\n assignees={assignees}\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n )}\n </Box>\n {validation.length > 0 ? (\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 ? (\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n ) : null}\n </Flex>\n </Card>\n </Stack>\n </Card>\n </Box>\n </>\n )\n}\n","import {Draggable} from '@hello-pangea/dnd'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {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 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\nexport default function DocumentList(props: DocumentListProps) {\n const {\n data = [],\n invalidDocumentIds,\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 rowVirtualizer = useVirtualizer({\n count: data.length,\n getScrollElement: () => parentRef.current,\n getItemKey: (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n estimateSize: () => 113,\n overscan: 10,\n })\n\n if (!data.length) {\n return null\n }\n\n return (\n <div\n ref={parentRef}\n style={{\n height: `100%`,\n overflow: 'auto',\n paddingTop: 1,\n // Smooths scrollbar behaviour\n overflowAnchor: 'none',\n scrollBehavior: 'auto',\n }}\n >\n {/* {dataFiltered.map((item, itemIndex) => { */}\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const item = dataFiltered[virtualItem.index]\n\n const {documentId, assignees} = item?._metadata ?? {}\n\n if (!documentId) {\n return null\n }\n\n const isInvalid = invalidDocumentIds.includes(documentId)\n const meInAssignees = user?.id ? assignees?.includes(user.id) : false\n const isDragDisabled =\n !userRoleCanDrop ||\n isInvalid ||\n !(state.requireAssignment\n ? state.requireAssignment && meInAssignees\n : true)\n\n return (\n <Draggable\n // The metadata's documentId is always the published one to avoid rerendering\n key={documentId}\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 >\n <DocumentCard\n userRoleCanDrop={userRoleCanDrop}\n isDragDisabled={isDragDisabled}\n isDragging={draggableSnapshot.isDragging}\n item={item}\n toggleInvalidDocumentId={toggleInvalidDocumentId}\n userList={userList}\n states={states}\n />\n </div>\n )}\n </Draggable>\n )\n })}\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 > 0 ? (\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 {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 {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 = data?.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 order value\n const firstOrder = data[0]?._metadata?.orderRank\n let newLexo =\n firstOrder && data.length !== ids.length\n ? LexoRank.parse(firstOrder)\n : LexoRank.min()\n\n const tx = client.transaction()\n\n for (let index = 0; index < ids.length; index += 1) {\n newLexo = newLexo.genNext().genNext()\n\n tx.patch(`workflow-metadata.${ids[index]}`, {\n set: {orderRank: newLexo.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 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 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 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 <Button\n tone=\"caution\"\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 ) : null}\n {orphanedMetadataDocumentIds.length > 0 ? (\n <Button\n text=\"Cleanup orphaned metadata\"\n onClick={handleOrphans}\n tone=\"caution\"\n />\n ) : null}\n {/* <Button\n tone=\"caution\"\n onClick={() =>\n addOrderToDocuments(\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 </FloatingCard>\n )\n}\n","import {\n DragDropContext,\n DragStart,\n Droppable,\n DropResult,\n} from '@hello-pangea/dnd'\nimport {Box, Card, Container, Flex, Grid, Spinner, useTheme} 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\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\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\n let newOrder\n\n if (!destinationStateItems.length) {\n // Only item in state\n // New minimum rank\n newOrder = LexoRank.min().toString()\n } else if (destination.index === 0) {\n // Now first item in order\n const firstItemOrderRank = [...destinationStateItems].shift()?._metadata\n ?.orderRank\n newOrder =\n firstItemOrderRank && typeof firstItemOrderRank === 'string'\n ? LexoRank.parse(firstItemOrderRank).genPrev().toString()\n : LexoRank.min().toString()\n } else if (destination.index + 1 === destinationStateItems.length) {\n // Now last item in order\n const lastItemOrderRank = [...destinationStateItems].pop()?._metadata\n ?.orderRank\n newOrder =\n lastItemOrderRank && typeof lastItemOrderRank === 'string'\n ? LexoRank.parse(lastItemOrderRank).genNext().toString()\n : LexoRank.min().toString()\n } else {\n // Must be between two items\n const itemBefore = destinationStateItems[destination.index - 1]\n const itemBeforeRank = itemBefore?._metadata?.orderRank\n const itemBeforeRankParsed = itemBeforeRank\n ? LexoRank.parse(itemBeforeRank)\n : LexoRank.min()\n const itemAfter = destinationStateItems[destination.index]\n const itemAfterRank = itemAfter?._metadata?.orderRank\n const itemAfterRankParsed = itemAfterRank\n ? LexoRank.parse(itemAfterRank)\n : LexoRank.max()\n\n newOrder = itemBeforeRankParsed.between(itemAfterRankParsed).toString()\n }\n\n move(draggableId, destination, states, newOrder)\n },\n [data, 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 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 // TODO: Render this as a memo/callback\n renderClone={(provided, snapshot, rubric) => {\n const item = data.find(\n (doc) =>\n 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 isDragDisabled={false}\n userRoleCanDrop={userRoleCanDrop}\n isDragging={snapshot.isDragging}\n item={item}\n states={states}\n toggleInvalidDocumentId={\n toggleInvalidDocumentId\n }\n userList={userList}\n />\n ) : (\n <Feedback title=\"Item not found\" tone=\"caution\" />\n )}\n </div>\n )\n }}\n >\n {(provided, snapshot) => (\n <Card\n ref={provided.innerRef}\n tone={\n snapshot.isDraggingOver\n ? `primary`\n : defaultCardTone\n }\n height=\"fill\"\n paddingTop={1}\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 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} 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 {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: Missing states 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 document: {\n actions: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n // TODO: Augment 'publish' and 'unpublish' to be disabled if a document IS in Workflow\n // This would be best done with a listening query here, but we don't have access to documentStore\n\n // TODO: Performance improvements:\n // Each of these actions registers their own listener!\n // One should probably be responsible for listening and storing the response in context\n\n return [\n (props) => BeginWorkflow(props, states),\n (props) => AssignWorkflow(props, states),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, states, state)\n ),\n (props) => CompleteWorkflow(props, states),\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(states, documentId),\n () => AssigneesBadge(states, documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [workflowTool({schemaTypes, states})],\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","data","metadata","loading","useListeningQuery","params","state","s","AssignWorkflow","_a","_b","isDialogOpen","setDialogOpen","useState","useProjectUsers","icon","UsersIcon","type","disabled","label","dialog","onClose","content","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","fetch","createIfNotExists","_id","_type","orderRank","LexoRank","parse","genNext","toString","min","visibility","SplitVerticalIcon","CompleteWorkflow","delete","isLastState","length","CheckmarkIcon","arraysContainMatchingString","one","two","some","item","includes","UpdateWorkflow","allStates","actionState","_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","filter","join","StateBadge","EditButton","navigateIntent","useRouter","Button","onClick","mode","fontSize","padding","tabIndex","EditIcon","text","Field","schema","useSchema","String","draftId","Spinner","schemaType","get","Feedback","tone","Card","border","children","jsxs","Flex","align","justify","gap","Preview","layout","UserAssignmentInput","useFormValue","stringValue","Array","isArray","initialRank","lastRankValue","lastRank","nextRank","defineType","liveEdit","fields","defineField","readOnly","options","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","useEffect","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","optimistic","newStateId","document","d","message","workflowData","operations","AvatarGroup","users","max","len","me","visibleUsers","useMemo","slice","UserAvatar","Box","marginRight","paddingLeft","Text","size","UserDisplay","button","popover","setPopover","isOpen","setIsOpen","close","open","useClickOutside","Popover","ref","portal","AddIcon","Grid","CompleteButton","handleComplete","TimeAgo","_ref2","time","timeAgo","useTimeAgo","DraftStatus","updatedAt","_updatedAt","Tooltip","Fragment","TextWithTone","dimmed","muted","PublishedStatus","PublishIcon","Validate","onChange","ValidationStatus","hasError","ErrorOutlineIcon","WarningOutlineIcon","DocumentCard","isDragDisabled","userRoleCanDrop","isDragging","toggleInvalidDocumentId","isDarkMode","useTheme","sanity","dark","defaultCardTone","optimisticValidation","setOptimisticValidation","handleValidation","updates","cardTone","paddingBottom","paddingX","radius","shadow","Stack","borderBottom","pointerEvents","flex","flexShrink","DragHandleIcon","DocumentList","invalidDocumentIds","selectedUserIds","dataFiltered","parentRef","useRef","rowVirtualizer","useVirtualizer","count","getScrollElement","current","getItemKey","index","estimateSize","overscan","height","overflow","paddingTop","overflowAnchor","scrollBehavior","getVirtualItems","virtualItem","isInvalid","meInAssignees","Draggable","draggableId","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","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","StyledFloatingCard","_templateObject3","FloatingCard","_ref3","childrenHaveValues","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Verify","documentsWithoutValidMetadataIds","reduce","acc","cur","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","documentsWithoutOrderIds","documentsWithDuplicatedOrderIds","correctDocuments","ids","tx","transaction","removeUsersFromDocuments","validAssignees","addOrderToDocuments","firstOrder","newLexo","orphanedMetadataDocumentIds","doc","handleOrphans","forEach","WorkflowTool","tool","userRoleNames","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","start","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_e","_f","destinationStateItems","firstItemOrderRank","shift","genPrev","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","between","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","setInvalidDocumentIds","docId","action","Container","width","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","renderClone","provided","snapshot","rubric","isDraggingOver","workflowTool","component","workflow","definePlugin","config","Error","types","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/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/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/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 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: 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 {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {Metadata, State} from '../types'\n\n/**\n * Takes the published ID of a document and return the metadata and current state object\n *\n * @param id Source document published ID\n * @param states Array of States defined in plugin config\n * @returns State\n */\nexport function useWorkflowMetadata(\n id: string,\n states: State[]\n): {\n data: {metadata?: Metadata; state?: State}\n loading: boolean\n error: boolean\n} {\n const {\n data: metadata,\n loading,\n error,\n } = useListeningQuery<Metadata>(\n `*[_type == \"workflow.metadata\" && documentId == $id][0]`,\n {\n params: {id},\n }\n )\n\n if (metadata?.state) {\n return {\n data: {\n metadata,\n state: states.find((s) => s.id === metadata.state),\n },\n loading,\n error,\n }\n }\n\n return {data: {}, loading, error}\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {DocumentActionProps} from 'sanity'\nimport {useState} from 'react'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function AssignWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const [isDialogOpen, setDialogOpen] = useState(false)\n const userList = useProjectUsers({apiVersion: API_VERSION})\n const {data, loading, error} = useWorkflowMetadata(id, states)\n\n if (error) {\n console.error(error)\n }\n\n if (!data?.metadata) {\n return null\n }\n\n return {\n icon: UsersIcon,\n type: 'dialog',\n disabled: !data || loading || error,\n label: `Assign`,\n title: data ? 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={data.metadata?.assignees ?? []}\n documentId={id}\n />\n ),\n },\n onHandle: () => {\n setDialogOpen(true)\n },\n }\n}\n","import {useCallback, useState} from 'react'\nimport {SplitVerticalIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function BeginWorkflow(props: DocumentActionProps, states: State[]) {\n const {id, draft} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\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 {\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 // Faster!\n {visibility: 'async'}\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 || data.metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: data?.metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {useCallback} from 'react'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function CompleteWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\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 const isLastState = data?.state?.id === states[states.length - 1].id\n\n if (!data.metadata) {\n return null\n }\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 {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\n// eslint-disable-next-line complexity\nexport function UpdateWorkflow(\n props: DocumentActionProps,\n allStates: State[],\n actionState: State\n) {\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 {data, loading, error} = useWorkflowMetadata(id, allStates)\n const {state: currentState} = data\n const {assignees = []} = data?.metadata ?? {}\n\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 // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // if (!ops.publish.disabled && nextOperation === 'publish') {\n // ops.publish.execute()\n // } else if (!ops.unpublish.disabled && nextOperation === 'unpublish') {\n // ops.unpublish.execute()\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 (!data.metadata || (currentState && currentState.id === actionState.id)) {\n return null\n }\n\n const currentStateIndex = allStates.findIndex(\n (s) => s.id === currentState?.id\n )\n const actionStateIndex = allStates.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'\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function AssigneesBadge(\n states: State[],\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {metadata} = data\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n if (loading || error || !metadata) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!metadata?.assignees?.length) {\n return {\n label: 'Unassigned',\n }\n }\n\n const {assignees} = metadata ?? []\n const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n let label\n\n if (hasMe && assigneesCount === 0) {\n label = 'Assigned to Me'\n } else if (hasMe && assigneesCount > 0) {\n label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function StateBadge(states: State[], documentId: string): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {state} = data\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 {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 },\n ...(\n *[_id in [^.documentId, \"drafts.\" + ^.documentId]]|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\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: `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 // Like as in desk lists, except it has an intermittent loading state\n // layout=\"default\"\n // Like in the PTE, with no loading state\n layout=\"block\"\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} from '@hello-pangea/dnd'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {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\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 rowVirtualizer = useVirtualizer({\n count: data.length,\n getScrollElement: () => parentRef.current,\n getItemKey: (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n estimateSize: () => 113,\n overscan: 10,\n })\n\n if (!data.length) {\n return null\n }\n\n return (\n <div\n ref={parentRef}\n style={{\n height: `100%`,\n overflow: 'auto',\n paddingTop: 1,\n // Smooths scrollbar behaviour\n overflowAnchor: 'none',\n scrollBehavior: 'auto',\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const item = dataFiltered[virtualItem.index]\n\n const {documentId, assignees} = item?._metadata ?? {}\n\n if (!documentId) {\n return null\n }\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 // The metadata's documentId is always the published one to avoid rerendering\n key={documentId}\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 >\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 )}\n </Draggable>\n )\n })}\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 {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 {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 = data?.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\n const [firstOrder, secondOrder] = [...data]\n .slice(0, 2)\n .map((d) => d._metadata?.orderRank)\n const minLexo =\n firstOrder && data.length !== ids.length\n ? LexoRank.parse(firstOrder)\n : LexoRank.min()\n const maxLexo =\n secondOrder && data.length !== ids.length\n ? LexoRank.parse(secondOrder)\n : LexoRank.max()\n let newLexo = minLexo.between(maxLexo)\n const lastLexo = 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 newLexo = newLexo.between(lastLexo)\n\n tx.patch(`workflow-metadata.${ids[index]}`, {\n set: {orderRank: newLexo.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 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 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 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 <Button\n tone=\"caution\"\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 ) : null}\n {orphanedMetadataDocumentIds.length > 0 ? (\n <Button\n text=\"Cleanup orphaned metadata\"\n onClick={handleOrphans}\n tone=\"caution\"\n />\n ) : null}\n {/* <Button\n tone=\"caution\"\n onClick={() =>\n addOrderToDocuments(\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 </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 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 === 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 paddingTop={1}\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} 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 {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: Missing states 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 document: {\n actions: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n // TODO: Augment 'publish' and 'unpublish' to be disabled if a document IS in Workflow\n // This would be best done with a listening query here, but we don't have access to documentStore\n\n // TODO: Performance improvements:\n // Each of these actions registers their own listener!\n // One should probably be responsible for listening and storing the response in context\n\n return [\n (props) => BeginWorkflow(props, states),\n (props) => AssignWorkflow(props, states),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, states, state)\n ),\n (props) => CompleteWorkflow(props, states),\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(states, documentId),\n () => AssigneesBadge(states, documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [workflowTool({schemaTypes, states})],\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","data","metadata","loading","useListeningQuery","params","state","s","AssignWorkflow","_a","_b","isDialogOpen","setDialogOpen","useState","useProjectUsers","icon","UsersIcon","type","disabled","label","dialog","onClose","content","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","fetch","createIfNotExists","_id","_type","orderRank","LexoRank","parse","genNext","toString","min","visibility","SplitVerticalIcon","CompleteWorkflow","delete","isLastState","length","CheckmarkIcon","arraysContainMatchingString","one","two","some","item","includes","UpdateWorkflow","allStates","actionState","_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","filter","join","StateBadge","EditButton","navigateIntent","useRouter","Button","onClick","mode","fontSize","padding","tabIndex","EditIcon","text","Field","schema","useSchema","String","draftId","Spinner","schemaType","get","Feedback","tone","Card","border","children","jsxs","Flex","align","justify","gap","Preview","layout","UserAssignmentInput","useFormValue","stringValue","Array","isArray","initialRank","lastRankValue","lastRank","nextRank","defineType","liveEdit","fields","defineField","readOnly","options","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","useEffect","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","optimistic","newStateId","document","d","_rev","ifRevisionId","res","message","workflowData","operations","AvatarGroup","users","max","len","me","visibleUsers","useMemo","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","flexShrink","DragHandleIcon","paddingTop","DocumentList","invalidDocumentIds","patchingIds","selectedUserIds","dataFiltered","parentRef","useRef","rowVirtualizer","useVirtualizer","count","getScrollElement","current","getItemKey","index","estimateSize","overscan","height","overflow","overflowAnchor","scrollBehavior","getVirtualItems","virtualItem","isInvalid","meInAssignees","Draggable","draggableId","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","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","StyledFloatingCard","_templateObject3","FloatingCard","_ref3","childrenHaveValues","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Verify","documentsWithoutValidMetadataIds","reduce","acc","cur","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","documentsWithoutOrderIds","documentsWithDuplicatedOrderIds","correctDocuments","ids","tx","transaction","removeUsersFromDocuments","validAssignees","addOrderToDocuments","firstOrder","secondOrder","minLexo","maxLexo","newLexo","between","lastLexo","orphanedMetadataDocumentIds","doc","handleOrphans","forEach","WorkflowTool","tool","userRoleNames","setPatchingIds","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","start","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_e","_f","destinationStateItems","destinationStateIndex","globalStateMinimumRank","globalStateMaximumRank","firstItemOrderRank","shift","genPrev","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","setInvalidDocumentIds","docId","action","Clone","provided","snapshot","rubric","Container","width","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","renderClone","isDraggingOver","workflowTool","component","workflow","definePlugin","config","Error","types","actions","context","badges","tools"],"mappings":"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"}