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