sanity-plugin-workflow 1.0.0-beta.3 → 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/lib/index.esm.js +1498 -1389
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +1495 -1386
- package/lib/index.js.map +1 -1
- package/package.json +4 -3
- package/src/components/DocumentCard/core/PublishedStatus.tsx +10 -3
- package/src/components/DocumentCard/index.tsx +5 -5
- package/src/components/DocumentList.tsx +122 -0
- package/src/components/Filters.tsx +3 -3
- package/src/components/Validators.tsx +36 -3
- package/src/components/WorkflowTool.tsx +102 -104
- package/src/constants/index.ts +1 -1
- package/src/helpers/filterItemsAndSort.ts +2 -0
- package/src/hooks/useWorkflowDocuments.tsx +6 -6
- package/src/index.ts +5 -5
- package/src/schema/workflow/workflow.metadata.ts +1 -1
- package/src/tools/index.ts +1 -1
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/DocumentCard/EditButton.tsx","../src/components/DocumentCard/AvatarGroup.tsx","../src/components/UserAssignment.tsx","../src/components/UserDisplay.tsx","../src/components/DocumentCard/core/TimeAgo.tsx","../src/components/DocumentCard/core/DraftStatus.tsx","../src/components/DocumentCard/core/PublishedStatus.tsx","../src/components/DocumentCard/ValidationStatus.tsx","../src/components/DocumentCard/CompleteButton.tsx","../src/components/DocumentCard/index.tsx","../src/hooks/useWorkflowDocuments.tsx","../src/components/FloatingCard.tsx","../src/components/Validators.tsx","../src/components/Filters.tsx","../src/helpers/filterItemsAndSort.ts","../src/helpers/arraysContainMatchingString.ts","../src/components/StateTitle/Status.tsx","../src/components/StateTitle/index.tsx","../src/components/WorkflowTool.tsx","../src/tools/index.ts","../src/components/DocumentCard/Field.tsx","../src/components/UserAssignmentInput.tsx","../src/helpers/initialRank.ts","../src/schema/workflow/workflow.metadata.ts","../src/hooks/useWorkflowMetadata.tsx","../src/actions/AssignWorkflow.tsx","../src/actions/BeginWorkflow.tsx","../src/actions/CompleteWorkflow.tsx","../src/badges/AssigneesBadge.tsx","../src/badges/StateBadge.tsx","../src/actions/UpdateWorkflow.tsx","../src/index.ts"],"sourcesContent":["import {SanityDocumentLike} from 'sanity'\n\n// export type Operation = 'publish' | 'unpublish'\n\nexport type State = {\n id: string\n transitions: string[]\n title: string\n // operation?: Operation\n roles?: string[]\n requireAssignment?: boolean\n // From document badges\n color?: 'primary' | 'success' | 'warning' | 'danger'\n}\n\nexport type StateCheck<Id, States> = {\n id: Id\n // Transitions is an array of State ids\n transitions?: States extends {id: infer Id2}[] ? Id2[] : never\n} & State\n\nexport type WorkflowConfig = {\n schemaTypes: string[]\n states?: State[]\n}\n\nexport function defineStates<\n Id extends string,\n States extends StateCheck<Id, States>[]\n>(states: States): States {\n return states\n}\n\nexport type User = {\n createdAt: string\n displayName: string\n email: string\n familyName: string\n givenName: string\n id: string\n imageUrl: string\n isCurrentUser: boolean\n middleName: string\n projectId: string\n provider: string\n sanityUserId: string\n updatedAt: string\n}\n\nexport type DragData = {\n documentId?: string\n x?: number\n y?: number\n state?: string\n}\n\nexport type Metadata = SanityDocumentLike & {\n _rev: string\n assignees: string[]\n documentId: string\n state: string\n orderRank: string\n}\n\nexport type SanityDocumentWithMetadata = {\n _metadata: Metadata\n _id: string\n _type: string\n _rev: string\n _updatedAt: string\n}\n","import {WorkflowConfig, defineStates} from '../types'\n\nexport const API_VERSION = `2023-01-01`\n\nexport const DEFAULT_CONFIG: WorkflowConfig = {\n schemaTypes: [],\n states: defineStates([\n {\n id: 'inReview',\n title: 'In review',\n color: 'primary',\n roles: ['editor', 'administrator'],\n transitions: ['changesRequested', 'approved'],\n },\n {\n id: 'changesRequested',\n title: 'Changes requested',\n color: 'warning',\n roles: ['editor', 'administrator'],\n transitions: ['approved'],\n },\n {\n id: 'approved',\n title: 'Approved',\n color: 'success',\n roles: ['administrator'],\n requireAssignment: true,\n transitions: ['changesRequested'],\n },\n ]),\n}\n","import {Button} from '@sanity/ui'\nimport {EditIcon} from '@sanity/icons'\nimport {useRouter} from 'sanity/router'\n\ntype EditButtonProps = {\n id: string\n type: string\n disabled?: boolean\n}\n\nexport default function EditButton(props: EditButtonProps) {\n const {id, type, disabled = false} = props\n const {navigateIntent} = useRouter()\n\n return (\n <Button\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => navigateIntent('edit', {id, type})}\n mode=\"ghost\"\n fontSize={1}\n padding={2}\n tabIndex={-1}\n icon={EditIcon}\n text=\"Edit\"\n disabled={disabled}\n />\n )\n}\n","import 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 {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 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 {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'\n\nimport {TimeAgo} from './TimeAgo'\nimport {TextWithTone} from 'sanity'\n\nexport function PublishedStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"positive\" dimmed={!document} muted={!document} size={1}>\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {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","import React from 'react'\nimport {Button, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {useClient} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n documentId: string\n disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n const {documentId, disabled = false} = props\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n const handleComplete = React.useCallback(\n (id: string) => {\n client\n .delete(`workflow-metadata.${id}`)\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow completed',\n description: id,\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: 'Could not complete Workflow',\n description: id,\n })\n })\n },\n [client, toast]\n )\n\n return (\n <Button\n onClick={() => handleComplete(documentId)}\n text=\"Complete\"\n icon={CheckmarkIcon}\n tone=\"positive\"\n mode=\"ghost\"\n fontSize={1}\n padding={2}\n tabIndex={-1}\n disabled={disabled}\n />\n )\n}\n","/* eslint-disable react/prop-types */\nimport {useEffect, useMemo} from 'react'\nimport {Box, Card, CardTone, Flex, Stack, useTheme} from '@sanity/ui'\nimport {DragHandleIcon} from '@sanity/icons'\nimport {useSchema, SchemaType, useValidationStatus} from 'sanity'\nimport {Preview} from 'sanity'\n\nimport EditButton from './EditButton'\nimport {SanityDocumentWithMetadata, State, User} from '../../types'\nimport UserDisplay from '../UserDisplay'\nimport {DraftStatus} from './core/DraftStatus'\nimport {PublishedStatus} from './core/PublishedStatus'\nimport {ValidationStatus} from './ValidationStatus'\nimport CompleteButton from './CompleteButton'\n\ntype DocumentCardProps = {\n isDragDisabled: boolean\n userRoleCanDrop: boolean\n isDragging: boolean\n item: SanityDocumentWithMetadata\n states: State[]\n toggleInvalidDocumentId: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => void\n userList: User[]\n}\n\nexport function DocumentCard(props: DocumentCardProps) {\n const {\n isDragDisabled,\n userRoleCanDrop,\n isDragging,\n item,\n states,\n toggleInvalidDocumentId,\n userList,\n } = props\n const {assignees = [], documentId} = item._metadata ?? {}\n const schema = useSchema()\n\n // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // const currentState = useMemo(\n // () => states.find((state) => state.id === item._metadata?.state),\n // [states, item]\n // )\n // const ops = useDocumentOperation(documentId ?? ``, item._type)\n // const toast = useToast()\n\n // useEffect(() => {\n // const isDraft = item._id.startsWith('drafts.')\n\n // if (isDraft && currentState?.operation === 'publish' && !item?._metadata?.optimistic) {\n // if (!ops.publish.disabled) {\n // ops.publish.execute()\n // toast.push({\n // title: 'Published Document',\n // description: documentId,\n // status: 'success',\n // })\n // }\n // } else if (\n // !isDraft &&\n // currentState?.operation === 'unpublish' &&\n // !item?._metadata?.optimistic\n // ) {\n // if (!ops.unpublish.disabled) {\n // ops.unpublish.execute()\n // toast.push({\n // title: 'Unpublished Document',\n // description: documentId,\n // status: 'success',\n // })\n // }\n // }\n // }, [currentState, documentId, item, ops, toast])\n\n const isDarkMode = useTheme().sanity.color.dark\n const defaultCardTone = isDarkMode ? `transparent` : `default`\n const {validation = [], isValidating} = useValidationStatus(\n documentId ?? ``,\n item._type\n )\n\n const cardTone = useMemo(() => {\n let tone: CardTone = defaultCardTone\n\n if (!userRoleCanDrop) return isDarkMode ? `default` : `transparent`\n if (!documentId) return tone\n if (isDragging) tone = `positive`\n\n if (!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 isDarkMode,\n userRoleCanDrop,\n defaultCardTone,\n documentId,\n isDragging,\n validation,\n isValidating,\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 <Box paddingBottom={3} paddingX={3}>\n <Card radius={2} shadow={isDragging ? 3 : 1} tone={cardTone}>\n <Stack>\n <Card\n borderBottom\n radius={2}\n padding={3}\n paddingLeft={2}\n tone={cardTone}\n style={{pointerEvents: 'none'}}\n >\n <Flex align=\"center\" justify=\"space-between\" gap={1}>\n <Box flex={1}>\n <Preview\n layout=\"default\"\n value={item}\n schemaType={schema.get(item._type) as SchemaType}\n />\n </Box>\n <Box style={{flexShrink: 0}}>\n {hasError || isDragDisabled ? null : <DragHandleIcon />}\n </Box>\n </Flex>\n </Card>\n\n <Card padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" justify=\"space-between\" gap={3}>\n <Box flex={1}>\n {documentId && (\n <UserDisplay\n userList={userList}\n assignees={assignees}\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n )}\n </Box>\n {validation.length > 0 ? (\n <ValidationStatus validation={validation} />\n ) : null}\n <DraftStatus document={item} />\n <PublishedStatus document={item} />\n <EditButton\n id={item._id}\n type={item._type}\n disabled={!userRoleCanDrop}\n />\n {isLastState ? (\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n ) : null}\n </Flex>\n </Card>\n </Stack>\n </Card>\n </Box>\n )\n}\n","import React from 'react'\nimport {useListeningQuery} from 'sanity-plugin-utils'\nimport {useToast} from '@sanity/ui'\nimport {useClient} from 'sanity'\nimport {DraggableLocation} from 'react-beautiful-dnd'\nimport groq from 'groq'\n\nimport {SanityDocumentWithMetadata, State} from '../types'\nimport {API_VERSION} from '../constants'\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}[defined(_id)]`\n\ntype WorkflowDocuments = {\n workflowData: {\n data: SanityDocumentWithMetadata[]\n loading: boolean\n error: boolean\n }\n operations: {\n move: (\n draggedId: string,\n destination: DraggableLocation,\n states: State[],\n newOrder: string\n ) => void\n }\n}\n\nexport function useWorkflowDocuments(schemaTypes: string[]): WorkflowDocuments {\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Get and listen to changes on documents + workflow metadata documents\n const {data, loading, error} = useListeningQuery<\n SanityDocumentWithMetadata[]\n >(QUERY, {\n params: {schemaTypes},\n initialValue: [],\n })\n\n const [localDocuments, setLocalDocuments] = React.useState<\n SanityDocumentWithMetadata[]\n >([])\n\n React.useEffect(() => {\n if (data) {\n setLocalDocuments(data)\n }\n }, [data])\n\n const move = React.useCallback(\n (\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 {_rev, documentId} = document._metadata || {}\n\n client\n .patch(`workflow-metadata.${documentId}`)\n .ifRevisionId(_rev as string)\n .set({state: newStateId, orderRank: newOrder})\n .commit()\n .then(() => {\n return toast.push({\n title: `Moved to \"${newState?.title ?? newStateId}\"`,\n status: 'success',\n })\n })\n .catch(() => {\n // Revert optimistic update\n setLocalDocuments(currentLocalData)\n\n return toast.push({\n title: `Failed to move to \"${newState?.title ?? newStateId}\"`,\n status: 'error',\n })\n })\n\n // Send back to the workflow board so a document update can happen\n return {_id, _type, documentId, state: newState as State}\n },\n [client, toast, localDocuments]\n )\n\n return {\n workflowData: {data: localDocuments, loading, error},\n operations: {move},\n }\n}\n","import {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 React from 'react'\nimport {useToast, Button} from '@sanity/ui'\nimport {useClient} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\nimport {LexoRank} from 'lexorank'\n\nimport FloatingCard from './FloatingCard'\nimport {API_VERSION} from '../constants'\nimport {SanityDocumentWithMetadata, State} from '../types'\n\ntype ValidatorsProps = {\n data: SanityDocumentWithMetadata[]\n userList: UserExtended[]\n states: State[]\n}\n\nexport default function Validators({data, userList, states}: ValidatorsProps) {\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n // A lot of error-checking\n const documentsWithoutValidMetadataIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, state} = cur._metadata ?? {}\n const stateExists = states.find((s) => s.id === state)\n\n return !stateExists && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithInvalidUserIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, assignees} = cur._metadata ?? {}\n const allAssigneesExist = assignees?.length\n ? assignees?.every((a) => userList.find((u) => u.id === a))\n : true\n\n return !allAssigneesExist && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithoutOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return !orderRank && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n // Updates metadata documents to a valid, existing state\n const correctDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Correcting...',\n status: 'info',\n })\n\n const tx = ids.reduce((item, documentId) => {\n return item.patch(`workflow-metadata.${documentId}`, {\n set: {state: states[0].id},\n })\n }, client.transaction())\n\n await tx.commit()\n\n toast.push({\n title: `Corrected ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, states, toast]\n )\n\n // Remove users that are no longer in the project from documents\n const removeUsersFromDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Removing users...',\n status: 'info',\n })\n\n const tx = ids.reduce((item, documentId) => {\n const {assignees} =\n data.find((d) => d._id === documentId)?._metadata ?? {}\n const validAssignees = assignees?.length\n ? // eslint-disable-next-line max-nested-callbacks\n assignees.filter((a) => userList.find((u) => u.id === a)?.id)\n : []\n\n return item.patch(`workflow-metadata.${documentId}`, {\n set: {assignees: validAssignees},\n })\n }, client.transaction())\n\n await tx.commit()\n\n toast.push({\n title: `Corrected ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, data, toast, userList]\n )\n\n // Add order value to metadata documents\n const addOrderToDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Adding ordering...',\n status: 'info',\n })\n\n // Get first order value\n const firstOrder = data[0]?._metadata?.orderRank\n let newLexo =\n firstOrder && data.length !== ids.length\n ? LexoRank.parse(firstOrder)\n : LexoRank.min()\n\n const tx = client.transaction()\n\n for (let index = 0; index < ids.length; index += 1) {\n newLexo = newLexo.genNext().genNext()\n\n tx.patch(`workflow-metadata.${ids[index]}`, {\n set: {orderRank: newLexo.toString()},\n })\n }\n\n await tx.commit()\n\n toast.push({\n title: `Added order to ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n return (\n <FloatingCard>\n {documentsWithoutValidMetadataIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => correctDocuments(documentsWithoutValidMetadataIds)}\n text={\n documentsWithoutValidMetadataIds.length === 1\n ? `Correct 1 Document State`\n : `Correct ${documentsWithoutValidMetadataIds.length} Document States`\n }\n />\n ) : null}\n {documentsWithInvalidUserIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => removeUsersFromDocuments(documentsWithInvalidUserIds)}\n text={\n documentsWithInvalidUserIds.length === 1\n ? `Remove Invalid Users from 1 Document`\n : `Remove Invalid Users from ${documentsWithInvalidUserIds.length} Documents`\n }\n />\n ) : null}\n {documentsWithoutOrderIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => addOrderToDocuments(documentsWithoutOrderIds)}\n text={\n documentsWithoutOrderIds.length === 1\n ? `Set Order for 1 Document`\n : `Set Order for ${documentsWithoutOrderIds.length} Documents`\n }\n />\n ) : null}\n {/* <Button\n tone=\"caution\"\n onClick={() =>\n addOrderToDocuments(\n data.map((doc) => String(doc._metadata?.documentId))\n )\n }\n text={\n data.length === 1\n ? `Reset Order for 1 Document`\n : `Reset Order for all ${data.length} Documents`\n }\n /> */}\n </FloatingCard>\n )\n}\n","import {MenuButton, Menu, Flex, Card, Button} from '@sanity/ui'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {UserIcon, ResetIcon} from '@sanity/icons'\nimport {UserExtended, UserSelectMenu} from 'sanity-plugin-utils'\nimport {useCallback} from 'react'\n\ntype FiltersProps = {\n uniqueAssignedUsers: UserExtended[]\n selectedUserIds: string[]\n schemaTypes: string[]\n selectedSchemaTypes: string[]\n toggleSelectedUser: (userId: string) => void\n resetSelectedUsers: () => void\n toggleSelectedSchemaType: (schemaType: string) => void\n}\n\nexport default function Filters(props: FiltersProps) {\n const {\n uniqueAssignedUsers = [],\n selectedUserIds,\n schemaTypes,\n selectedSchemaTypes,\n toggleSelectedUser,\n resetSelectedUsers,\n toggleSelectedSchemaType,\n } = props\n\n const currentUser = useCurrentUser()\n const schema = useSchema()\n\n const onAdd = useCallback(\n (id: string) => {\n if (!selectedUserIds.includes(id)) {\n toggleSelectedUser(id)\n }\n },\n [selectedUserIds, toggleSelectedUser]\n )\n\n const onRemove = useCallback(\n (id: string) => {\n if (selectedUserIds.includes(id)) {\n toggleSelectedUser(id)\n }\n },\n [selectedUserIds, toggleSelectedUser]\n )\n\n const onClear = useCallback(() => {\n resetSelectedUsers()\n }, [resetSelectedUsers])\n\n if (uniqueAssignedUsers.length === 0 && schemaTypes.length < 2) {\n return null\n }\n\n const meInUniqueAssignees =\n currentUser?.id && uniqueAssignedUsers.find((u) => u.id === currentUser.id)\n const uniqueAssigneesNotMe = uniqueAssignedUsers.filter(\n (u) => u.id !== currentUser?.id\n )\n\n return (\n <Card tone=\"primary\" padding={2} borderBottom style={{overflowX: 'hidden'}}>\n <Flex align=\"center\">\n <Flex align=\"center\" gap={1} flex={1}>\n {uniqueAssignedUsers.length > 5 ? (\n <Card tone=\"default\">\n <MenuButton\n button={\n <Button\n text=\"Filter Assignees\"\n tone=\"primary\"\n icon={UserIcon}\n />\n }\n id=\"user-filters\"\n menu={\n <Menu>\n <UserSelectMenu\n value={selectedUserIds}\n userList={uniqueAssignedUsers}\n onAdd={onAdd}\n onRemove={onRemove}\n onClear={onClear}\n labels={{\n addMe: 'Filter mine',\n removeMe: 'Clear mine',\n clear: 'Clear filters',\n }}\n />\n </Menu>\n }\n popover={{portal: true}}\n />\n </Card>\n ) : (\n <>\n {meInUniqueAssignees ? (\n <>\n <Button\n padding={0}\n mode={\n selectedUserIds.includes(currentUser.id)\n ? `default`\n : `bleed`\n }\n onClick={() => toggleSelectedUser(currentUser.id)}\n >\n <Flex padding={1} align=\"center\" justify=\"center\">\n <UserAvatar user={currentUser.id} size={1} withTooltip />\n </Flex>\n </Button>\n <Card borderRight style={{height: 30}} tone=\"inherit\" />\n </>\n ) : null}\n {uniqueAssigneesNotMe.map((user) => (\n <Button\n key={user.id}\n padding={0}\n mode={selectedUserIds.includes(user.id) ? `default` : `bleed`}\n onClick={() => toggleSelectedUser(user.id)}\n >\n <Flex padding={1} align=\"center\" justify=\"center\">\n <UserAvatar user={user} size={1} withTooltip />\n </Flex>\n </Button>\n ))}\n\n {selectedUserIds.length > 0 ? (\n <Button\n text=\"Clear\"\n onClick={resetSelectedUsers}\n mode=\"ghost\"\n icon={ResetIcon}\n />\n ) : null}\n </>\n )}\n </Flex>\n\n {schemaTypes.length > 0 ? (\n <Flex align=\"center\" gap={1}>\n {schemaTypes.map((typeName) => {\n const schemaType = schema.get(typeName)\n\n if (!schemaType) {\n return null\n }\n\n return (\n <Button\n key={typeName}\n text={schemaType?.title ?? typeName}\n icon={schemaType?.icon ?? undefined}\n mode={\n selectedSchemaTypes.includes(typeName) ? `default` : `ghost`\n }\n onClick={() => toggleSelectedSchemaType(typeName)}\n />\n )\n })}\n </Flex>\n ) : null}\n </Flex>\n </Card>\n )\n}\n","import {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 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","export function arraysContainMatchingString(\n one: string[],\n two: string[]\n): boolean {\n return one.some((item) => two.includes(item))\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 {Flex, Card, Badge, BadgeTone} from '@sanity/ui'\nimport {InfoOutlineIcon, UserIcon} from '@sanity/icons'\nimport styled, {css} from 'styled-components'\n\nimport {Status} from './Status'\nimport {\n // Operation,\n State,\n} from '../../types'\n\ntype StateTitleProps = {\n state: State\n requireAssignment: boolean\n userRoleCanDrop: boolean\n isDropDisabled: boolean\n draggingFrom: string\n // operation?: Operation\n}\n\nconst StyledStickyCard = styled(Card)(\n () => css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\n)\n\nexport default function StateTitle(props: StateTitleProps) {\n const {state, requireAssignment, userRoleCanDrop, isDropDisabled, draggingFrom} = 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={(draggingFrom && !isDropDisabled) || isSource ? 'default' : 'outline'}\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 {/* {operation ? (\n <Status\n text={\n operation === 'publish'\n ? `A document moved to this State will also publish the current Draft`\n : `A document moved to this State will also unpublish the current Published version`\n }\n icon={operation === 'publish' ? PublishIcon : UnpublishIcon}\n />\n ) : null} */}\n </Flex>\n </StyledStickyCard>\n )\n}\n","import React from 'react'\nimport {Flex, Card, Grid, Spinner, Container, useTheme} from '@sanity/ui'\nimport {Feedback, useProjectUsers} from 'sanity-plugin-utils'\nimport {Tool, useCurrentUser} from 'sanity'\nimport {\n DragDropContext,\n Droppable,\n Draggable,\n DropResult,\n DragStart,\n} from 'react-beautiful-dnd'\n\nimport {State, WorkflowConfig} from '../types'\nimport {DocumentCard} from './DocumentCard'\nimport {useWorkflowDocuments} from '../hooks/useWorkflowDocuments'\nimport {API_VERSION} from '../constants'\n\nimport Validators from './Validators'\nimport Filters from './Filters'\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport StateTitle from './StateTitle'\nimport {LexoRank} from 'lexorank'\n\ntype WorkflowToolProps = {\n tool: Tool<WorkflowConfig>\n}\n\nexport default function WorkflowTool(props: WorkflowToolProps) {\n const {schemaTypes = [], states = []} = props?.tool?.options ?? {}\n\n const isDarkMode = useTheme().sanity.color.dark\n const defaultCardTone = isDarkMode ? 'default' : 'transparent'\n\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n const user = useCurrentUser()\n const userRoleNames = user?.roles?.length\n ? user?.roles.map((r) => r.name)\n : []\n\n const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n\n // Data to display in cards\n const {data, loading, error} = workflowData\n\n // Operations to perform on cards\n const {move} = operations\n\n const [undroppableStates, setUndroppableStates] = React.useState<string[]>([])\n const [draggingFrom, setDraggingFrom] = React.useState(``)\n\n // When drag starts, check for any States we should not allow dropping on\n // Because of either:\n // 1. The \"destination\" State requires user assignment and the user is not assigned to the dragged document\n // 2. The \"source\" State State has a list of transitions and the \"destination\" State is not in that list\n const handleDragStart = React.useCallback(\n (start: DragStart) => {\n const {draggableId, source} = start\n const {droppableId: currentStateId} = source\n setDraggingFrom(currentStateId)\n\n const document = data.find(\n (item) => item._metadata?.documentId === draggableId\n )\n const state = states.find((s) => s.id === currentStateId)\n\n // This shouldn't happen but TypeScript\n if (!document || !state) return\n\n const undroppableStateIds = []\n const statesThatRequireAssignmentIds = states\n .filter((s) => s.requireAssignment)\n .map((s) => s.id)\n\n if (statesThatRequireAssignmentIds.length) {\n const documentAssignees = document._metadata?.assignees ?? []\n const userIsAssignedToDocument = user?.id\n ? documentAssignees.includes(user.id)\n : false\n\n if (!userIsAssignedToDocument) {\n undroppableStateIds.push(...statesThatRequireAssignmentIds)\n }\n }\n\n const statesThatCannotBeTransitionedToIds =\n state.transitions && state.transitions.length\n ? states\n .filter((s) => !state.transitions?.includes(s.id))\n .map((s) => s.id)\n : []\n\n if (statesThatCannotBeTransitionedToIds.length) {\n undroppableStateIds.push(...statesThatCannotBeTransitionedToIds)\n }\n\n // Remove currentStateId from undroppableStates\n const undroppableExceptSelf = undroppableStateIds.filter(\n (id) => id !== currentStateId\n )\n\n if (undroppableExceptSelf.length) {\n setUndroppableStates(undroppableExceptSelf)\n }\n },\n [data, states, user]\n )\n\n const handleDragEnd = React.useCallback(\n (result: DropResult) => {\n // Reset undroppable states\n setUndroppableStates([])\n setDraggingFrom(``)\n\n const {draggableId, source, destination} = result\n\n if (\n // No destination?\n !destination ||\n // No change in position?\n (destination.droppableId === source.droppableId &&\n destination.index === source.index)\n ) {\n return\n }\n\n // Find all items in current state\n const destinationStateItems = [\n ...filterItemsAndSort(data, destination.droppableId, [], null),\n ]\n\n let newOrder\n\n if (!destinationStateItems.length) {\n // Only item in state\n // New minimum rank\n newOrder = LexoRank.min().toString()\n } else if (destination.index === 0) {\n // Now first item in order\n const firstItemOrderRank = [...destinationStateItems].shift()?._metadata\n ?.orderRank\n newOrder =\n firstItemOrderRank && typeof firstItemOrderRank === 'string'\n ? LexoRank.parse(firstItemOrderRank).genPrev().toString()\n : LexoRank.min().toString()\n } else if (destination.index + 1 === destinationStateItems.length) {\n // Now last item in order\n const lastItemOrderRank = [...destinationStateItems].pop()?._metadata\n ?.orderRank\n newOrder =\n lastItemOrderRank && typeof lastItemOrderRank === 'string'\n ? LexoRank.parse(lastItemOrderRank).genNext().toString()\n : LexoRank.min().toString()\n } else {\n // Must be between two items\n const itemBefore = destinationStateItems[destination.index]\n const itemBeforeRank = itemBefore?._metadata?.orderRank\n const itemBeforeRankParsed = itemBefore._metadata.orderRank\n ? LexoRank.parse(itemBeforeRank)\n : LexoRank.min()\n const itemAfter = destinationStateItems[destination.index + 1]\n const itemAfterRank = itemAfter?._metadata?.orderRank\n const itemAfterRankParsed = itemAfter._metadata.orderRank\n ? LexoRank.parse(itemAfterRank)\n : LexoRank.max()\n\n newOrder = itemBeforeRankParsed.between(itemAfterRankParsed).toString()\n }\n\n move(draggableId, destination, states, newOrder)\n },\n [data, move, states]\n )\n\n 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 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 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 const [invalidDocumentIds, setInvalidDocumentIds] = React.useState<string[]>(\n []\n )\n const toggleInvalidDocumentId = React.useCallback(\n (docId: string, action: 'ADD' | 'REMOVE') => {\n setInvalidDocumentIds((prev) =>\n action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId)\n )\n },\n []\n )\n\n if (!states?.length) {\n return (\n <Container width={1} padding={5}>\n <Feedback\n tone=\"caution\"\n title=\"Plugin options error\"\n description=\"No States defined in plugin config\"\n />\n </Container>\n )\n }\n\n if (error && !data.length) {\n return (\n <Container width={1} padding={5}>\n <Feedback\n tone=\"critical\"\n title=\"Error querying for Workflow documents\"\n />\n </Container>\n )\n }\n\n return (\n <Card height=\"fill\" overflow=\"hidden\">\n <Validators data={data} userList={userList} states={states} />\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 height=\"fill\"\n overflow=\"auto\"\n >\n <StateTitle\n state={state}\n requireAssignment={state.requireAssignment ?? false}\n userRoleCanDrop={userRoleCanDrop}\n // operation={state.operation}\n isDropDisabled={isDropDisabled}\n draggingFrom={draggingFrom}\n />\n <Droppable\n droppableId={state.id}\n isDropDisabled={isDropDisabled}\n >\n {(provided, snapshot) => (\n <Card\n ref={provided.innerRef}\n tone={\n snapshot.isDraggingOver ? `primary` : defaultCardTone\n }\n height=\"fill\"\n paddingTop={1}\n >\n {loading ? (\n <Flex padding={5} align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n ) : null}\n\n {data.length > 0 &&\n filterItemsAndSort(\n data,\n state.id,\n selectedUserIds,\n selectedSchemaTypes\n ).map((item, itemIndex) => {\n const isInvalid = invalidDocumentIds.includes(\n String(item?._metadata?.documentId)\n )\n const meInAssignees = user?.id\n ? item?._metadata?.assignees?.includes(user.id)\n : false\n const isDragDisabled =\n !userRoleCanDrop ||\n isInvalid ||\n !(state.requireAssignment\n ? state.requireAssignment && meInAssignees\n : true)\n const {documentId} = item._metadata ?? {}\n\n if (!documentId) {\n return null\n }\n\n return (\n <Draggable\n // The metadata's documentId is always the published one to avoid rerendering\n key={documentId}\n draggableId={documentId}\n index={itemIndex}\n isDragDisabled={isDragDisabled}\n >\n {(draggableProvided, draggableSnapshot) => (\n <div\n ref={draggableProvided.innerRef}\n {...draggableProvided.draggableProps}\n {...draggableProvided.dragHandleProps}\n >\n <DocumentCard\n userRoleCanDrop={userRoleCanDrop}\n isDragDisabled={isDragDisabled}\n isDragging={draggableSnapshot.isDragging}\n item={item}\n toggleInvalidDocumentId={\n toggleInvalidDocumentId\n }\n userList={userList}\n states={states}\n />\n </div>\n )}\n </Draggable>\n )\n })}\n {provided.placeholder}\n </Card>\n )}\n </Droppable>\n </Card>\n )\n })}\n </Grid>\n </DragDropContext>\n </Card>\n )\n}\n","import {Tool} from 'sanity'\nimport {SplitVerticalIcon} from '@sanity/icons'\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 {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 {defineType, defineField} 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 {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {Metadata, State} from '../types'\n\n/**\n * Takes the published ID of a document and return the metadata and current state object\n *\n * @param id Source document published ID\n * @param states Array of States defined in plugin config\n * @returns State\n */\nexport function useWorkflowMetadata(\n id: string,\n states: State[]\n): {\n data: {metadata?: Metadata; state?: State}\n loading: boolean\n error: boolean\n} {\n const {\n data: metadata,\n loading,\n error,\n } = useListeningQuery<Metadata>(\n `*[_type == \"workflow.metadata\" && documentId == $id][0]`,\n {\n params: {id},\n }\n )\n\n if (metadata?.state) {\n return {\n data: {\n metadata,\n state: states.find((s) => s.id === metadata.state),\n },\n loading,\n error,\n }\n }\n\n return {data: {}, loading, error}\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {DocumentActionProps} from 'sanity'\nimport {useState} from 'react'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function AssignWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const [isDialogOpen, setDialogOpen] = useState(false)\n const userList = useProjectUsers({apiVersion: API_VERSION})\n const {data, loading, error} = useWorkflowMetadata(id, states)\n\n if (error) {\n console.error(error)\n }\n\n if (!data?.metadata) {\n return null\n }\n\n return {\n icon: UsersIcon,\n type: 'dialog',\n disabled: !data || loading || error,\n label: `Assign`,\n title: data ? null : `Document is not in Workflow`,\n dialog: isDialogOpen && {\n type: 'popover',\n onClose: () => {\n setDialogOpen(false)\n },\n content: (\n <UserAssignment\n userList={userList}\n assignees={data.metadata?.assignees ?? []}\n documentId={id}\n />\n ),\n },\n onHandle: () => {\n setDialogOpen(true)\n },\n }\n}\n","import {useCallback, useState} from 'react'\nimport {SplitVerticalIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function BeginWorkflow(props: DocumentActionProps, states: State[]) {\n const {id, draft} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n const [beginning, setBeginning] = useState(false)\n const [complete, setComplete] = useState(false)\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(async () => {\n setBeginning(true)\n const lowestOrderFirstState = await client.fetch(\n `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n {state: states[0].id}\n )\n client\n .createIfNotExists(\n {\n _id: `workflow-metadata.${id}`,\n _type: `workflow.metadata`,\n documentId: id,\n state: states[0].id,\n orderRank: lowestOrderFirstState\n ? LexoRank.parse(lowestOrderFirstState).genNext().toString()\n : LexoRank.min().toString(),\n },\n // Faster!\n {visibility: 'async'}\n )\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow started',\n description: `Document is now \"${states[0].title}\"`,\n })\n setBeginning(false)\n // Optimistically remove action\n setComplete(true)\n })\n }, [id, states, client, toast])\n\n if (!draft || complete || data.metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: data?.metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {useCallback} from 'react'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function CompleteWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\n const client = useClient({apiVersion: API_VERSION})\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(() => {\n client.delete(`workflow-metadata.${id}`)\n }, [id, client])\n\n const isLastState = data?.state?.id === states[states.length - 1].id\n\n if (!data.metadata) {\n return null\n }\n\n return {\n icon: CheckmarkIcon,\n type: 'dialog',\n disabled: loading || error || !isLastState,\n label: `Complete Workflow`,\n title: isLastState\n ? `Removes the document from the Workflow process`\n : `Cannot remove from workflow until in the last state`,\n onHandle: () => {\n handle()\n },\n color: 'positive',\n }\n}\n","import {CurrentUser, DocumentBadgeDescription} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function AssigneesBadge(\n states: State[],\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {metadata} = data\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n if (loading || error || !metadata) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!metadata?.assignees?.length) {\n return {\n label: 'Unassigned',\n }\n }\n\n const {assignees} = metadata ?? []\n const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n let label\n\n if (hasMe && assigneesCount === 0) {\n label = 'Assigned to Me'\n } else if (hasMe && assigneesCount > 0) {\n label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function StateBadge(states: State[], documentId: string): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {state} = data\n\n if (loading || error) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!state) {\n return null\n }\n\n return {\n label: state.title,\n // title: state.title,\n color: state?.color,\n }\n}\n","// import {useState} from 'react'\nimport {ArrowRightIcon, ArrowLeftIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {useCurrentUser, useValidationStatus} from 'sanity'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {API_VERSION} from '../constants'\nimport {State} from '../types'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\n\nexport function UpdateWorkflow(\n props: DocumentActionProps,\n allStates: State[],\n actionState: State\n) {\n const {id, type} = props\n const {validation, isValidating} = useValidationStatus(id, type)\n const hasValidationErrors =\n !isValidating &&\n validation?.length > 0 &&\n validation.find((v) => v.level === 'error')\n\n const user = useCurrentUser()\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n const currentUser = useCurrentUser()\n\n const {data, loading, error} = useWorkflowMetadata(id, allStates)\n const {state: currentState} = data\n const {assignees = []} = data?.metadata ?? {}\n\n if (error) {\n console.error(error)\n }\n\n const onHandle = (documentId: string, newState: State) => {\n client\n .patch(`workflow-metadata.${documentId}`)\n .set({state: newState.id})\n .commit()\n .then(() => {\n props.onComplete()\n toast.push({\n status: 'success',\n title: `Document state now \"${newState.title}\"`,\n })\n // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // if (!ops.publish.disabled && nextOperation === 'publish') {\n // ops.publish.execute()\n // } else if (!ops.unpublish.disabled && nextOperation === 'unpublish') {\n // ops.unpublish.execute()\n // }\n })\n .catch((err) => {\n props.onComplete()\n console.error(err)\n toast.push({\n status: 'error',\n title: `Document state update failed`,\n })\n })\n }\n\n // Remove button if:\n // Document is not in Workflow OR\n // The current State is the same as this actions State\n if (!data.metadata || (currentState && currentState.id === actionState.id)) {\n return null\n }\n\n const currentStateIndex = allStates.findIndex(\n (s) => s.id === currentState?.id\n )\n const actionStateIndex = allStates.findIndex((s) => s.id === actionState.id)\n const direction = actionStateIndex > currentStateIndex ? 'promote' : 'demote'\n const DirectionIcon = direction === 'promote' ? ArrowRightIcon : ArrowLeftIcon\n const directionLabel = direction === 'promote' ? 'Promote' : 'Demote'\n\n let title = `${directionLabel} State to \"${actionState.title}\"`\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 if (!userRoleCanUpdateState) {\n title = `Your User role cannot ${directionLabel} State to \"${actionState.title}\"`\n }\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 if (!actionStateIsAValidTransition) {\n title = `You cannot ${directionLabel} State to \"${actionState.title}\" from \"${currentState?.title}\"`\n }\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 if (!userAssignmentCanUpdateState) {\n title = `You must be assigned to the document to ${directionLabel} State to \"${actionState.title}\"`\n }\n\n 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 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 {definePlugin, DocumentActionProps} from 'sanity'\n\nimport {DEFAULT_CONFIG} from './constants'\nimport {WorkflowConfig} from './types'\nimport {workflowTool} from './tools'\nimport metadata from './schema/workflow/workflow.metadata'\nimport {AssignWorkflow} from './actions/AssignWorkflow'\nimport {BeginWorkflow} from './actions/BeginWorkflow'\nimport {CompleteWorkflow} from './actions/CompleteWorkflow'\nimport {AssigneesBadge} from './badges/AssigneesBadge'\nimport {StateBadge} from './badges/StateBadge'\nimport {UpdateWorkflow} from './actions/UpdateWorkflow'\n\nexport const workflow = definePlugin<WorkflowConfig>(\n (config = DEFAULT_CONFIG) => {\n const {schemaTypes, states} = {...DEFAULT_CONFIG, ...config}\n\n if (!states?.length) {\n throw new Error(`Workflow: Missing states in config`)\n }\n\n return {\n name: 'sanity-plugin-workflow',\n schema: {\n types: [metadata(states)],\n },\n // TODO: Remove 'workflow.metadata' from list of new document types\n // ...\n document: {\n actions: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n // TODO: Augment 'publish' and 'unpublish' to be disabled if a document IS in Workflow\n // This would be best done with a listening query here, but we don't have access to documentStore\n\n // TODO: Performance improvements:\n // Each of these actions registers their own listener!\n // One should probably be responsible for listening and storing the response in context\n\n return [\n (props) => BeginWorkflow(props, states),\n (props) => AssignWorkflow(props, states),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, states, state)\n ),\n (props) => CompleteWorkflow(props, states),\n ...prev,\n ]\n },\n badges: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n const {documentId, currentUser} = context\n\n if (!documentId) {\n return prev\n }\n\n return [\n () => StateBadge(states, documentId),\n () => AssigneesBadge(states, documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [workflowTool({schemaTypes, states})],\n }\n }\n)\n"],"names":["defineStates","states","API_VERSION","DEFAULT_CONFIG","schemaTypes","id","title","color","roles","transitions","requireAssignment","EditButton","props","type","disabled","navigateIntent","useRouter","jsx","Button","onClick","mode","fontSize","padding","tabIndex","icon","EditIcon","text","AvatarGroup","currentUser","useCurrentUser","users","max","len","length","me","visibleUsers","React","default","useMemo","find","u","filter","slice","jsxs","Flex","align","gap","children","UserAvatar","user","map","Box","style","marginRight","paddingLeft","Text","size","UserAssignment","assignees","userList","documentId","client","useClient","apiVersion","toast","useToast","addAssignee","useCallback","userId","push","status","patch","setIfMissing","insert","commit","then","concat","displayName","catch","err","console","error","description","removeAssignee","unset","clearAssignees","UserSelectMenu","maxHeight","value","onAdd","onClear","onRemove","UserDisplay","button","useState","popover","setPopover","isOpen","setIsOpen","close","open","useClickOutside","Popover","ref","content","portal","AddIcon","tone","Grid","includes","TimeAgo","_ref","time","timeAgo","useTimeAgo","DraftStatus","document","updatedAt","_updatedAt","Tooltip","Fragment","TextWithTone","dimmed","muted","PublishedStatus","PublishIcon","ValidationStatus","validation","hasError","some","item","level","ErrorOutlineIcon","WarningOutlineIcon","CompleteButton","handleComplete","delete","CheckmarkIcon","DocumentCard","_a","isDragDisabled","userRoleCanDrop","isDragging","toggleInvalidDocumentId","_metadata","schema","useSchema","isDarkMode","useTheme","sanity","dark","defaultCardTone","isValidating","useValidationStatus","_type","cardTone","v","useEffect","isLastState","state","paddingBottom","paddingX","Card","radius","shadow","Stack","borderBottom","pointerEvents","justify","flex","Preview","layout","schemaType","get","flexShrink","DragHandleIcon","_id","QUERY","groq","_templateObject","_taggedTemplateLiteral","useWorkflowDocuments","data","loading","useListeningQuery","params","initialValue","localDocuments","setLocalDocuments","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","orderRank","optimistic","newStateId","newState","s","d","_rev","ifRevisionId","set","workflowData","operations","StyledFloatingCard","styled","css","_templateObject2","FloatingCard","_ref2","childrenHaveValues","Array","isArray","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Validators","_ref3","documentsWithoutValidMetadataIds","reduce","acc","cur","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","a","documentsWithoutOrderIds","correctDocuments","ids","tx","transaction","removeUsersFromDocuments","_b","validAssignees","addOrderToDocuments","firstOrder","newLexo","LexoRank","parse","min","index","genNext","toString","Filters","uniqueAssignedUsers","selectedUserIds","selectedSchemaTypes","toggleSelectedUser","resetSelectedUsers","toggleSelectedSchemaType","meInUniqueAssignees","uniqueAssigneesNotMe","overflowX","MenuButton","UserIcon","menu","Menu","labels","addMe","removeMe","clear","withTooltip","borderRight","height","ResetIcon","typeName","filterItemsAndSort","items","stateId","selectedUsers","arguments","undefined","_c","assignee","sort","b","aOrderRank","bOrderRank","localeCompare","arraysContainMatchingString","one","two","Status","Icon","StyledStickyCard","_templateObject3","StateTitle","isDropDisabled","draggingFrom","isSource","paddingY","Badge","InfoOutlineIcon","WorkflowTool","tool","options","useProjectUsers","userRoleNames","r","name","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","start","draggableId","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_d","_e","_f","destinationStateItems","firstItemOrderRank","shift","genPrev","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","between","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","invalidDocumentIds","setInvalidDocumentIds","docId","action","Container","width","Feedback","overflow","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","provided","snapshot","innerRef","isDraggingOver","paddingTop","Spinner","itemIndex","isInvalid","String","meInAssignees","Draggable","draggableProvided","draggableSnapshot","draggableProps","dragHandleProps","placeholder","workflowTool","component","SplitVerticalIcon","Field","draftId","border","UserAssignmentInput","useFormValue","stringValue","initialRank","lastRankValue","lastRank","nextRank","metadata","defineType","liveEdit","fields","defineField","readOnly","list","components","input","p","_ref4","getClient","lastDocOrderRank","fetch","order","of","useWorkflowMetadata","AssignWorkflow","isDialogOpen","setDialogOpen","UsersIcon","label","dialog","onClose","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","createIfNotExists","visibility","CompleteWorkflow","AssigneesBadge","hasMe","assigneesCount","assigneeUsers","join","StateBadge","UpdateWorkflow","allStates","actionState","hasValidationErrors","currentState","onComplete","currentStateIndex","findIndex","actionStateIndex","direction","DirectionIcon","ArrowRightIcon","ArrowLeftIcon","directionLabel","userRoleCanUpdateState","actionStateIsAValidTransition","userAssignmentCanUpdateState","workflow","definePlugin","config","Error","types","actions","context","badges","tools"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types/index.ts","../src/constants/index.ts","../src/components/UserAssignment.tsx","../src/hooks/useWorkflowMetadata.tsx","../src/actions/AssignWorkflow.tsx","../src/actions/BeginWorkflow.tsx","../src/actions/CompleteWorkflow.tsx","../src/helpers/arraysContainMatchingString.ts","../src/actions/UpdateWorkflow.tsx","../src/badges/AssigneesBadge.tsx","../src/badges/StateBadge.tsx","../src/components/DocumentCard/EditButton.tsx","../src/components/DocumentCard/Field.tsx","../src/components/UserAssignmentInput.tsx","../src/helpers/initialRank.ts","../src/schema/workflow/workflow.metadata.ts","../src/helpers/filterItemsAndSort.ts","../src/hooks/useWorkflowDocuments.tsx","../src/components/DocumentCard/AvatarGroup.tsx","../src/components/UserDisplay.tsx","../src/components/DocumentCard/CompleteButton.tsx","../src/components/DocumentCard/core/TimeAgo.tsx","../src/components/DocumentCard/core/DraftStatus.tsx","../src/components/DocumentCard/core/PublishedStatus.tsx","../src/components/DocumentCard/ValidationStatus.tsx","../src/components/DocumentCard/index.tsx","../src/components/DocumentList.tsx","../src/components/Filters.tsx","../src/components/StateTitle/Status.tsx","../src/components/StateTitle/index.tsx","../src/components/FloatingCard.tsx","../src/components/Validators.tsx","../src/components/WorkflowTool.tsx","../src/tools/index.ts","../src/index.ts"],"sourcesContent":["import {SanityDocumentLike} from 'sanity'\n\n// export type Operation = 'publish' | 'unpublish'\n\nexport type State = {\n id: string\n transitions: string[]\n title: string\n // operation?: Operation\n roles?: string[]\n requireAssignment?: boolean\n // From document badges\n color?: 'primary' | 'success' | 'warning' | 'danger'\n}\n\nexport type StateCheck<Id, States> = {\n id: Id\n // Transitions is an array of State ids\n transitions?: States extends {id: infer Id2}[] ? Id2[] : never\n} & State\n\nexport type WorkflowConfig = {\n schemaTypes: string[]\n states?: State[]\n}\n\nexport function defineStates<\n Id extends string,\n States extends StateCheck<Id, States>[]\n>(states: States): States {\n return states\n}\n\nexport type User = {\n createdAt: string\n displayName: string\n email: string\n familyName: string\n givenName: string\n id: string\n imageUrl: string\n isCurrentUser: boolean\n middleName: string\n projectId: string\n provider: string\n sanityUserId: string\n updatedAt: string\n}\n\nexport type DragData = {\n documentId?: string\n x?: number\n y?: number\n state?: string\n}\n\nexport type Metadata = SanityDocumentLike & {\n _rev: string\n assignees: string[]\n documentId: string\n state: string\n orderRank: string\n}\n\nexport type SanityDocumentWithMetadata = {\n _metadata: Metadata\n _id: string\n _type: string\n _rev: string\n _updatedAt: string\n}\n","import {defineStates, WorkflowConfig} from '../types'\n\nexport const API_VERSION = `2023-01-01`\n\nexport const DEFAULT_CONFIG: WorkflowConfig = {\n schemaTypes: [],\n states: defineStates([\n {\n id: 'inReview',\n title: 'In review',\n color: 'primary',\n roles: ['editor', 'administrator'],\n transitions: ['changesRequested', 'approved'],\n },\n {\n id: 'changesRequested',\n title: 'Changes requested',\n color: 'warning',\n roles: ['editor', 'administrator'],\n transitions: ['approved'],\n },\n {\n id: 'approved',\n title: 'Approved',\n color: 'success',\n roles: ['administrator'],\n requireAssignment: true,\n transitions: ['changesRequested'],\n },\n ]),\n}\n","import React from 'react'\nimport {useToast} from '@sanity/ui'\nimport {UserSelectMenu} from 'sanity-plugin-utils'\nimport {useClient} from 'sanity'\n\nimport {User} from '../types'\nimport {API_VERSION} from '../constants'\n\ntype UserAssignmentProps = {\n userList: User[]\n assignees: string[]\n documentId: string\n}\n\nexport default function UserAssignment(props: UserAssignmentProps) {\n const {assignees, userList, documentId} = props\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n const addAssignee = React.useCallback(\n (userId: string) => {\n const user = userList.find((u) => u.id === userId)\n\n if (!userId || !user) {\n return toast.push({\n status: 'error',\n title: 'Could not find User',\n })\n }\n\n return client\n .patch(`workflow-metadata.${documentId}`)\n .setIfMissing({assignees: []})\n .insert(`after`, `assignees[-1]`, [userId])\n .commit()\n .then(() => {\n return toast.push({\n title: `Added ${user.displayName} to assignees`,\n status: 'success',\n })\n })\n .catch((err) => {\n console.error(err)\n\n return toast.push({\n title: `Failed to add assignee`,\n description: userId,\n status: 'error',\n })\n })\n },\n [documentId, client, toast, userList]\n )\n\n const removeAssignee = React.useCallback(\n (userId: string) => {\n const user = userList.find((u) => u.id === userId)\n\n if (!userId || !user) {\n return toast.push({\n status: 'error',\n title: 'Could not find User',\n })\n }\n\n return client\n .patch(`workflow-metadata.${documentId}`)\n .unset([`assignees[@ == \"${userId}\"]`])\n .commit()\n .then(() => {\n return toast.push({\n title: `Removed ${user.displayName} from assignees`,\n status: 'success',\n })\n })\n .catch((err) => {\n console.error(err)\n\n return toast.push({\n title: `Failed to remove assignee`,\n description: documentId,\n status: 'error',\n })\n })\n },\n [client, toast, documentId, userList]\n )\n\n const clearAssignees = React.useCallback(() => {\n return client\n .patch(`workflow-metadata.${documentId}`)\n .unset([`assignees`])\n .commit()\n .then(() => {\n return toast.push({\n title: `Cleared assignees`,\n status: 'success',\n })\n })\n .catch((err) => {\n console.error(err)\n\n return toast.push({\n title: `Failed to clear assignees`,\n description: documentId,\n status: 'error',\n })\n })\n }, [client, toast, documentId])\n\n return (\n <UserSelectMenu\n style={{maxHeight: 300}}\n value={assignees || []}\n userList={userList}\n onAdd={addAssignee}\n onClear={clearAssignees}\n onRemove={removeAssignee}\n />\n )\n}\n","import {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {Metadata, State} from '../types'\n\n/**\n * Takes the published ID of a document and return the metadata and current state object\n *\n * @param id Source document published ID\n * @param states Array of States defined in plugin config\n * @returns State\n */\nexport function useWorkflowMetadata(\n id: string,\n states: State[]\n): {\n data: {metadata?: Metadata; state?: State}\n loading: boolean\n error: boolean\n} {\n const {\n data: metadata,\n loading,\n error,\n } = useListeningQuery<Metadata>(\n `*[_type == \"workflow.metadata\" && documentId == $id][0]`,\n {\n params: {id},\n }\n )\n\n if (metadata?.state) {\n return {\n data: {\n metadata,\n state: states.find((s) => s.id === metadata.state),\n },\n loading,\n error,\n }\n }\n\n return {data: {}, loading, error}\n}\n","import {UsersIcon} from '@sanity/icons'\nimport {DocumentActionProps} from 'sanity'\nimport {useState} from 'react'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from '../components/UserAssignment'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function AssignWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const [isDialogOpen, setDialogOpen] = useState(false)\n const userList = useProjectUsers({apiVersion: API_VERSION})\n const {data, loading, error} = useWorkflowMetadata(id, states)\n\n if (error) {\n console.error(error)\n }\n\n if (!data?.metadata) {\n return null\n }\n\n return {\n icon: UsersIcon,\n type: 'dialog',\n disabled: !data || loading || error,\n label: `Assign`,\n title: data ? null : `Document is not in Workflow`,\n dialog: isDialogOpen && {\n type: 'popover',\n onClose: () => {\n setDialogOpen(false)\n },\n content: (\n <UserAssignment\n userList={userList}\n assignees={data.metadata?.assignees ?? []}\n documentId={id}\n />\n ),\n },\n onHandle: () => {\n setDialogOpen(true)\n },\n }\n}\n","import {useCallback, useState} from 'react'\nimport {SplitVerticalIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\nimport {useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function BeginWorkflow(props: DocumentActionProps, states: State[]) {\n const {id, draft} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n const [beginning, setBeginning] = useState(false)\n const [complete, setComplete] = useState(false)\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(async () => {\n setBeginning(true)\n const lowestOrderFirstState = await client.fetch(\n `*[_type == \"workflow.metadata\" && state == $state]|order(orderRank)[0].orderRank`,\n {state: states[0].id}\n )\n client\n .createIfNotExists(\n {\n _id: `workflow-metadata.${id}`,\n _type: `workflow.metadata`,\n documentId: id,\n state: states[0].id,\n orderRank: lowestOrderFirstState\n ? LexoRank.parse(lowestOrderFirstState).genNext().toString()\n : LexoRank.min().toString(),\n },\n // Faster!\n {visibility: 'async'}\n )\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow started',\n description: `Document is now \"${states[0].title}\"`,\n })\n setBeginning(false)\n // Optimistically remove action\n setComplete(true)\n })\n }, [id, states, client, toast])\n\n if (!draft || complete || data.metadata) {\n return null\n }\n\n return {\n icon: SplitVerticalIcon,\n type: 'dialog',\n disabled: data?.metadata || loading || error || beginning || complete,\n label: beginning ? `Beginning...` : `Begin Workflow`,\n onHandle: () => {\n handle()\n },\n }\n}\n","import {useCallback} from 'react'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {State} from '../types'\n\nexport function CompleteWorkflow(props: DocumentActionProps, states: State[]) {\n const {id} = props\n const {data, loading, error} = useWorkflowMetadata(id, states)\n const client = useClient({apiVersion: API_VERSION})\n\n if (error) {\n console.error(error)\n }\n\n const handle = useCallback(() => {\n client.delete(`workflow-metadata.${id}`)\n }, [id, client])\n\n const isLastState = data?.state?.id === states[states.length - 1].id\n\n if (!data.metadata) {\n return null\n }\n\n return {\n icon: CheckmarkIcon,\n type: 'dialog',\n disabled: loading || error || !isLastState,\n label: `Complete Workflow`,\n title: isLastState\n ? `Removes the document from the Workflow process`\n : `Cannot remove from workflow until in the last state`,\n onHandle: () => {\n handle()\n },\n color: 'positive',\n }\n}\n","export function arraysContainMatchingString(\n one: string[],\n two: string[]\n): boolean {\n return one.some((item) => two.includes(item))\n}\n","// import {useState} from 'react'\nimport {ArrowRightIcon, ArrowLeftIcon} from '@sanity/icons'\nimport {useToast} from '@sanity/ui'\nimport {useCurrentUser, useValidationStatus} from 'sanity'\nimport {DocumentActionProps, useClient} from 'sanity'\n\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\nimport {API_VERSION} from '../constants'\nimport {State} from '../types'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\n\nexport function UpdateWorkflow(\n props: DocumentActionProps,\n allStates: State[],\n actionState: State\n) {\n const {id, type} = props\n const {validation, isValidating} = useValidationStatus(id, type)\n const hasValidationErrors =\n !isValidating &&\n validation?.length > 0 &&\n validation.find((v) => v.level === 'error')\n\n const user = useCurrentUser()\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n const currentUser = useCurrentUser()\n\n const {data, loading, error} = useWorkflowMetadata(id, allStates)\n const {state: currentState} = data\n const {assignees = []} = data?.metadata ?? {}\n\n if (error) {\n console.error(error)\n }\n\n const onHandle = (documentId: string, newState: State) => {\n client\n .patch(`workflow-metadata.${documentId}`)\n .set({state: newState.id})\n .commit()\n .then(() => {\n props.onComplete()\n toast.push({\n status: 'success',\n title: `Document state now \"${newState.title}\"`,\n })\n // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // if (!ops.publish.disabled && nextOperation === 'publish') {\n // ops.publish.execute()\n // } else if (!ops.unpublish.disabled && nextOperation === 'unpublish') {\n // ops.unpublish.execute()\n // }\n })\n .catch((err) => {\n props.onComplete()\n console.error(err)\n toast.push({\n status: 'error',\n title: `Document state update failed`,\n })\n })\n }\n\n // Remove button if:\n // Document is not in Workflow OR\n // The current State is the same as this actions State\n if (!data.metadata || (currentState && currentState.id === actionState.id)) {\n return null\n }\n\n const currentStateIndex = allStates.findIndex(\n (s) => s.id === currentState?.id\n )\n const actionStateIndex = allStates.findIndex((s) => s.id === actionState.id)\n const direction = actionStateIndex > currentStateIndex ? 'promote' : 'demote'\n const DirectionIcon = direction === 'promote' ? ArrowRightIcon : ArrowLeftIcon\n const directionLabel = direction === 'promote' ? 'Promote' : 'Demote'\n\n let title = `${directionLabel} State to \"${actionState.title}\"`\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 if (!userRoleCanUpdateState) {\n title = `Your User role cannot ${directionLabel} State to \"${actionState.title}\"`\n }\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 if (!actionStateIsAValidTransition) {\n title = `You cannot ${directionLabel} State to \"${actionState.title}\" from \"${currentState?.title}\"`\n }\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 if (!userAssignmentCanUpdateState) {\n title = `You must be assigned to the document to ${directionLabel} State to \"${actionState.title}\"`\n }\n\n 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 isValidating ||\n hasValidationErrors ||\n !currentState ||\n !userRoleCanUpdateState ||\n !actionStateIsAValidTransition ||\n !userAssignmentCanUpdateState,\n title,\n label: actionState.title,\n onHandle: () => onHandle(id, actionState),\n }\n}\n","import {CurrentUser, DocumentBadgeDescription} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\nimport {API_VERSION} from '../constants'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function AssigneesBadge(\n states: State[],\n documentId: string,\n currentUser: CurrentUser | null\n): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {metadata} = data\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n if (loading || error || !metadata) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!metadata?.assignees?.length) {\n return {\n label: 'Unassigned',\n }\n }\n\n const {assignees} = metadata ?? []\n const hasMe = currentUser ? assignees.some((assignee) => assignee === currentUser.id) : false\n const assigneesCount = hasMe ? assignees.length - 1 : assignees.length\n const assigneeUsers = userList.filter((user) => assignees.includes(user.id))\n const title = assigneeUsers.map((user) => user.displayName).join(', ')\n\n let label\n\n if (hasMe && assigneesCount === 0) {\n label = 'Assigned to Me'\n } else if (hasMe && assigneesCount > 0) {\n label = `Me and ${assigneesCount} ${assigneesCount === 1 ? 'other' : 'others'}`\n } else {\n label = `${assigneesCount} assigned`\n }\n\n return {\n label,\n title,\n color: 'primary',\n }\n}\n","import {DocumentBadgeDescription} from 'sanity'\nimport {useWorkflowMetadata} from '../hooks/useWorkflowMetadata'\n\nimport {State} from '../types'\n\nexport function StateBadge(states: State[], documentId: string): DocumentBadgeDescription | null {\n const {data, loading, error} = useWorkflowMetadata(documentId, states)\n const {state} = data\n\n if (loading || error) {\n if (error) {\n console.error(error)\n }\n\n return null\n }\n\n if (!state) {\n return null\n }\n\n return {\n label: state.title,\n // title: state.title,\n color: state?.color,\n }\n}\n","import {Button} from '@sanity/ui'\nimport {EditIcon} from '@sanity/icons'\nimport {useRouter} from 'sanity/router'\n\ntype EditButtonProps = {\n id: string\n type: string\n disabled?: boolean\n}\n\nexport default function EditButton(props: EditButtonProps) {\n const {id, type, disabled = false} = props\n const {navigateIntent} = useRouter()\n\n return (\n <Button\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => navigateIntent('edit', {id, type})}\n mode=\"ghost\"\n fontSize={1}\n padding={2}\n tabIndex={-1}\n icon={EditIcon}\n text=\"Edit\"\n disabled={disabled}\n />\n )\n}\n","import {Flex, Card, Spinner} from '@sanity/ui'\nimport {Preview, SanityDocument, StringInputProps, useSchema} from 'sanity'\nimport {useListeningQuery, Feedback} from 'sanity-plugin-utils'\n\nimport EditButton from './EditButton'\n\n// TODO: Update this to use the same component as the Tool\nexport default function Field(props: StringInputProps) {\n const schema = useSchema()\n const {data, loading, error} = useListeningQuery<SanityDocument>(\n `*[_id in [$id, $draftId]]|order(_updatedAt)[0]`,\n {\n params: {\n id: String(props.value),\n draftId: `drafts.${String(props.value)}`,\n },\n }\n )\n\n if (loading) {\n return <Spinner />\n }\n\n const schemaType = schema.get(data?._type ?? ``)\n\n if (error || !data?._type || !schemaType) {\n return <Feedback tone=\"critical\" title=\"Error with query\" />\n }\n\n return (\n <Card border padding={2}>\n <Flex align=\"center\" justify=\"space-between\" gap={2}>\n <Preview layout=\"default\" value={data} schemaType={schemaType} />\n <EditButton id={data._id} type={data._type} />\n </Flex>\n </Card>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {FunctionComponent} from 'react'\nimport {ArraySchemaType, ArrayOfPrimitivesInputProps, useFormValue} from 'sanity'\nimport {useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport UserAssignment from './UserAssignment'\n\nconst UserAssignmentInput: FunctionComponent<\n ArrayOfPrimitivesInputProps<string | number | boolean, ArraySchemaType>\n> = (props) => {\n const documentId = useFormValue([`documentId`])\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n const stringValue =\n Array.isArray(props?.value) && props?.value?.length\n ? props.value.map((item) => String(item))\n : []\n\n return (\n <Card border padding={1}>\n <UserAssignment userList={userList} assignees={stringValue} documentId={String(documentId)} />\n </Card>\n )\n}\n\nexport default UserAssignmentInput\n","import {LexoRank} from 'lexorank'\n\n// Use in initial value field by passing in the rank value of the last document\n// If not value passed, generate a sensibly low rank\nexport default function initialRank(lastRankValue = ``): string {\n const lastRank =\n lastRankValue && typeof lastRankValue === 'string'\n ? LexoRank.parse(lastRankValue)\n : LexoRank.min()\n const nextRank = lastRank.genNext().genNext()\n\n return (nextRank as any).value\n}\n","import {defineField, defineType} from 'sanity'\n\nimport Field from '../../components/DocumentCard/Field'\nimport UserAssignmentInput from '../../components/UserAssignmentInput'\nimport {API_VERSION} from '../../constants'\nimport initialRank from '../../helpers/initialRank'\nimport {State} from '../../types'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default (states: State[]) =>\n defineType({\n type: 'document',\n name: 'workflow.metadata',\n title: 'Workflow metadata',\n liveEdit: true,\n fields: [\n defineField({\n name: 'state',\n description: `The current \"State\" of the document. Field is read only as changing it would not fire the state's \"operation\" setting. These are fired in the Document Actions and in the custom Tool.`,\n readOnly: true,\n type: 'string',\n options: {\n list: states.length\n ? states.map((state) => ({\n value: state.id,\n title: state.title,\n }))\n : [],\n layout: 'radio',\n },\n }),\n defineField({\n name: 'documentId',\n title: 'Document ID',\n description:\n 'Used to help identify the target document that this metadata is tracking state for.',\n type: 'string',\n readOnly: true,\n components: {\n input: Field,\n },\n }),\n defineField({\n name: 'orderRank',\n description: 'Used to maintain order position of cards in the Tool.',\n type: 'string',\n readOnly: true,\n initialValue: async (p, {getClient}) => {\n const lastDocOrderRank = await getClient({\n apiVersion: API_VERSION,\n }).fetch(`*[_type == $type]|order(@[$order] desc)[0][$order]`, {\n order: `orderRank`,\n type: `workflow.metadata`,\n })\n\n return initialRank(lastDocOrderRank)\n },\n }),\n defineField({\n type: 'array',\n name: 'assignees',\n of: [{type: 'string'}],\n components: {\n input: UserAssignmentInput,\n },\n }),\n ],\n })\n","import {SanityDocumentWithMetadata} from '../types'\n\nexport function filterItemsAndSort(\n items: SanityDocumentWithMetadata[],\n stateId: string,\n selectedUsers: string[] = [],\n selectedSchemaTypes: null | string[] = []\n): SanityDocumentWithMetadata[] {\n return (\n items\n // Only items that have existing documents\n .filter((item) => item?._id)\n // Only items of this state\n .filter((item) => item?._metadata?.state === stateId)\n // Only items with selected users, if the document has any assigned users\n .filter((item) =>\n selectedUsers.length && item._metadata?.assignees?.length\n ? item._metadata?.assignees.some((assignee) =>\n selectedUsers.includes(assignee)\n )\n : !selectedUsers.length\n )\n // Only items of selected schema types, if any are selected\n .filter((item) => {\n if (!selectedSchemaTypes) {\n return true\n }\n\n return selectedSchemaTypes.length\n ? selectedSchemaTypes.includes(item._type)\n : false\n })\n // Sort by metadata orderRank, a string field\n .sort((a, b) => {\n const aOrderRank = a._metadata?.orderRank || '0'\n const bOrderRank = b._metadata?.orderRank || '0'\n\n return aOrderRank.localeCompare(bOrderRank)\n })\n )\n}\n","import {DraggableLocation} from '@hello-pangea/dnd'\nimport {useToast} from '@sanity/ui'\nimport groq from 'groq'\nimport React from 'react'\nimport {useClient} from 'sanity'\nimport {useListeningQuery} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {SanityDocumentWithMetadata, State} from '../types'\n\nconst QUERY = groq`*[_type == \"workflow.metadata\"]|order(orderRank){\n \"_metadata\": {\n _rev,\n assignees,\n documentId,\n state,\n orderRank\n },\n ...(\n *[_id in [^.documentId, \"drafts.\" + ^.documentId]]|order(_updatedAt)[0]{ \n _id, \n _type, \n _rev, \n _updatedAt \n }\n )\n}`\n\ntype WorkflowDocuments = {\n workflowData: {\n data: SanityDocumentWithMetadata[]\n loading: boolean\n error: boolean\n }\n operations: {\n move: (\n draggedId: string,\n destination: DraggableLocation,\n states: State[],\n newOrder: string\n ) => void\n }\n}\n\nexport function useWorkflowDocuments(schemaTypes: string[]): WorkflowDocuments {\n const toast = useToast()\n const client = useClient({apiVersion: API_VERSION})\n\n // Get and listen to changes on documents + workflow metadata documents\n const {data, loading, error} = useListeningQuery<\n SanityDocumentWithMetadata[]\n >(QUERY, {\n params: {schemaTypes},\n initialValue: [],\n })\n\n const [localDocuments, setLocalDocuments] = React.useState<\n SanityDocumentWithMetadata[]\n >([])\n\n React.useEffect(() => {\n if (data) {\n setLocalDocuments(data)\n }\n }, [data])\n\n const move = React.useCallback(\n (\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 {_rev, documentId} = document._metadata || {}\n\n client\n .patch(`workflow-metadata.${documentId}`)\n .ifRevisionId(_rev as string)\n .set({state: newStateId, orderRank: newOrder})\n .commit()\n .then(() => {\n return toast.push({\n title: `Moved to \"${newState?.title ?? newStateId}\"`,\n status: 'success',\n })\n })\n .catch(() => {\n // Revert optimistic update\n setLocalDocuments(currentLocalData)\n\n return toast.push({\n title: `Failed to move to \"${newState?.title ?? newStateId}\"`,\n status: 'error',\n })\n })\n\n // Send back to the workflow board so a document update can happen\n return {_id, _type, documentId, state: newState as State}\n },\n [client, toast, localDocuments]\n )\n\n return {\n workflowData: {data: localDocuments, loading, error},\n operations: {move},\n }\n}\n","import React from 'react'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {useCurrentUser, UserAvatar} from 'sanity'\n\nimport {User} from '../../types'\n\ntype AvatarGroupProps = {\n users: User[]\n max?: number\n}\n\nexport default function AvatarGroup(props: AvatarGroupProps) {\n const currentUser = useCurrentUser()\n const {users, max = 4} = props\n\n const len = users?.length\n const {me, visibleUsers} = React.useMemo(() => {\n return {\n me: currentUser?.id ? users.find((u) => u.id === currentUser.id) : undefined,\n visibleUsers: users.filter((u) => u.id !== currentUser?.id).slice(0, max - 1),\n }\n }, [users, max, currentUser])\n\n if (!users?.length) {\n return null\n }\n\n return (\n <Flex align=\"center\" gap={1}>\n {me ? <UserAvatar user={me} /> : null}\n {visibleUsers.map((user) => (\n <Box key={user.id} style={{marginRight: -8}}>\n <UserAvatar user={user} />\n </Box>\n ))}\n {len > max && (\n <Box paddingLeft={2}>\n <Text size={1}>+{len - max}</Text>\n </Box>\n )}\n </Flex>\n )\n}\n","import React from 'react'\nimport {Button, Grid, Popover, useClickOutside} from '@sanity/ui'\nimport {AddIcon} from '@sanity/icons'\n\nimport AvatarGroup from './DocumentCard/AvatarGroup'\nimport {User} from '../types'\nimport UserAssignment from './UserAssignment'\n\ntype UserDisplayProps = {\n userList: User[]\n assignees: string[]\n documentId: string\n disabled?: boolean\n}\n\nexport default function UserDisplay(props: UserDisplayProps) {\n const {assignees, userList, documentId, disabled = false} = props\n\n const [button] = React.useState(null)\n const [popover, setPopover] = React.useState(null)\n const [isOpen, setIsOpen] = React.useState(false)\n\n const close = React.useCallback(() => setIsOpen(false), [])\n const open = React.useCallback(() => setIsOpen(true), [])\n\n useClickOutside(close, [button, popover])\n\n return (\n <Popover\n // @ts-ignore\n ref={setPopover}\n content={<UserAssignment userList={userList} assignees={assignees} documentId={documentId} />}\n portal\n open={isOpen}\n >\n {!assignees || assignees.length === 0 ? (\n <Button\n onClick={open}\n fontSize={1}\n padding={2}\n tabIndex={-1}\n icon={AddIcon}\n text=\"Assign\"\n tone=\"positive\"\n mode=\"ghost\"\n disabled={disabled}\n />\n ) : (\n <Grid>\n <Button onClick={open} padding={0} mode=\"bleed\" disabled={disabled}>\n <AvatarGroup users={userList.filter((u) => assignees.includes(u.id))} />\n </Button>\n </Grid>\n )}\n </Popover>\n )\n}\n","import React from 'react'\nimport {Button, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {useClient} from 'sanity'\n\nimport {API_VERSION} from '../../constants'\n\ntype CompleteButtonProps = {\n documentId: string\n disabled: boolean\n}\n\nexport default function CompleteButton(props: CompleteButtonProps) {\n const {documentId, disabled = false} = props\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n const handleComplete = React.useCallback(\n (id: string) => {\n client\n .delete(`workflow-metadata.${id}`)\n .then(() => {\n toast.push({\n status: 'success',\n title: 'Workflow completed',\n description: id,\n })\n })\n .catch(() => {\n toast.push({\n status: 'error',\n title: 'Could not complete Workflow',\n description: id,\n })\n })\n },\n [client, toast]\n )\n\n return (\n <Button\n onClick={() => handleComplete(documentId)}\n text=\"Complete\"\n icon={CheckmarkIcon}\n tone=\"positive\"\n mode=\"ghost\"\n fontSize={1}\n padding={2}\n tabIndex={-1}\n disabled={disabled}\n />\n )\n}\n","import {useTimeAgo} from 'sanity'\n\nexport interface TimeAgoProps {\n time: string | Date\n}\n\nexport function TimeAgo({time}: TimeAgoProps) {\n const timeAgo = useTimeAgo(time)\n\n return <span title={timeAgo}>{timeAgo} ago</span>\n}\n","import {EditIcon} from '@sanity/icons'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function DraftStatus(props: {document?: PreviewValue | Partial<SanityDocument> | null}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Edited {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>No unpublished edits</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone tone=\"caution\" dimmed={!document} muted={!document} size={1}>\n <EditIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {PublishIcon} from '@sanity/icons'\nimport {PreviewValue, SanityDocument} from '@sanity/types'\nimport {Box, Text, Tooltip} from '@sanity/ui'\nimport {TextWithTone} from 'sanity'\n\nimport {TimeAgo} from './TimeAgo'\n\nexport function PublishedStatus(props: {\n document?: PreviewValue | Partial<SanityDocument> | null\n}) {\n const {document} = props\n const updatedAt = document && '_updatedAt' in document && document._updatedAt\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>\n {document ? (\n <>Published {updatedAt && <TimeAgo time={updatedAt} />}</>\n ) : (\n <>Not published</>\n )}\n </Text>\n </Box>\n }\n >\n <TextWithTone\n tone=\"positive\"\n dimmed={!document}\n muted={!document}\n size={1}\n >\n <PublishIcon />\n </TextWithTone>\n </Tooltip>\n )\n}\n","import {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 {useEffect, useMemo} from 'react'\nimport {SchemaType, useSchema, useValidationStatus} 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 {ValidationStatus} from './ValidationStatus'\n\ntype DocumentCardProps = {\n isDragDisabled: boolean\n userRoleCanDrop: boolean\n isDragging: boolean\n item: SanityDocumentWithMetadata\n states: State[]\n toggleInvalidDocumentId: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => void\n userList: User[]\n}\n\nexport function DocumentCard(props: DocumentCardProps) {\n const {\n isDragDisabled,\n userRoleCanDrop,\n isDragging,\n item,\n states,\n toggleInvalidDocumentId,\n userList,\n } = props\n const {assignees = [], documentId} = item._metadata ?? {}\n const schema = useSchema()\n\n // Perform document operations after State changes\n // If State has changed and the document needs to be un/published\n // This functionality was deemed too dangerous / unexpected\n // Revisit with improved UX\n // const currentState = useMemo(\n // () => states.find((state) => state.id === item._metadata?.state),\n // [states, item]\n // )\n // const ops = useDocumentOperation(documentId ?? ``, item._type)\n // const toast = useToast()\n\n // useEffect(() => {\n // const isDraft = item._id.startsWith('drafts.')\n\n // if (isDraft && currentState?.operation === 'publish' && !item?._metadata?.optimistic) {\n // if (!ops.publish.disabled) {\n // ops.publish.execute()\n // toast.push({\n // title: 'Published Document',\n // description: documentId,\n // status: 'success',\n // })\n // }\n // } else if (\n // !isDraft &&\n // currentState?.operation === 'unpublish' &&\n // !item?._metadata?.optimistic\n // ) {\n // if (!ops.unpublish.disabled) {\n // ops.unpublish.execute()\n // toast.push({\n // title: 'Unpublished Document',\n // description: documentId,\n // status: 'success',\n // })\n // }\n // }\n // }, [currentState, documentId, item, ops, toast])\n\n const isDarkMode = useTheme().sanity.color.dark\n const defaultCardTone = isDarkMode ? `transparent` : `default`\n const {validation = [], isValidating} = useValidationStatus(\n documentId ?? ``,\n item._type\n )\n\n const cardTone = useMemo(() => {\n let tone: CardTone = defaultCardTone\n\n if (!userRoleCanDrop) return isDarkMode ? `default` : `transparent`\n if (!documentId) return tone\n if (isDragging) tone = `positive`\n\n if (!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 isDarkMode,\n userRoleCanDrop,\n defaultCardTone,\n documentId,\n isDragging,\n validation,\n isValidating,\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 <Box paddingBottom={3} paddingX={3}>\n <Card radius={2} shadow={isDragging ? 3 : 1} tone={cardTone}>\n <Stack>\n <Card\n borderBottom\n radius={2}\n padding={3}\n paddingLeft={2}\n tone={cardTone}\n style={{pointerEvents: 'none'}}\n >\n <Flex align=\"center\" justify=\"space-between\" gap={1}>\n <Box flex={1}>\n <Preview\n layout=\"default\"\n value={item}\n schemaType={schema.get(item._type) as SchemaType}\n />\n </Box>\n <Box style={{flexShrink: 0}}>\n {hasError || isDragDisabled ? null : <DragHandleIcon />}\n </Box>\n </Flex>\n </Card>\n\n <Card padding={2} radius={2} tone=\"inherit\">\n <Flex align=\"center\" justify=\"space-between\" gap={3}>\n <Box flex={1}>\n {documentId && (\n <UserDisplay\n userList={userList}\n assignees={assignees}\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n )}\n </Box>\n {validation.length > 0 ? (\n <ValidationStatus validation={validation} />\n ) : null}\n <DraftStatus document={item} />\n <PublishedStatus document={item} />\n <EditButton\n id={item._id}\n type={item._type}\n disabled={!userRoleCanDrop}\n />\n {isLastState ? (\n <CompleteButton\n documentId={documentId}\n disabled={!userRoleCanDrop}\n />\n ) : null}\n </Flex>\n </Card>\n </Stack>\n </Card>\n </Box>\n )\n}\n","import {Draggable} from '@hello-pangea/dnd'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {useMemo, useRef} from 'react'\nimport {CurrentUser} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {SanityDocumentWithMetadata, State} from '../types'\nimport {DocumentCard} from './DocumentCard'\n\ntype DocumentListProps = {\n data: SanityDocumentWithMetadata[]\n invalidDocumentIds: string[]\n selectedSchemaTypes: string[]\n selectedUserIds: string[]\n state: State\n states: State[]\n toggleInvalidDocumentId: (\n documentId: string,\n action: 'ADD' | 'REMOVE'\n ) => void\n user: CurrentUser | null\n userList: UserExtended[]\n userRoleCanDrop: boolean\n}\n\nexport default function DocumentList(props: DocumentListProps) {\n const {\n data = [],\n invalidDocumentIds,\n selectedSchemaTypes,\n selectedUserIds,\n state,\n states,\n toggleInvalidDocumentId,\n user,\n userList,\n userRoleCanDrop,\n } = props\n\n const dataFiltered = useMemo(() => {\n return data.length\n ? filterItemsAndSort(data, state.id, selectedUserIds, selectedSchemaTypes)\n : []\n }, [data, selectedSchemaTypes, selectedUserIds, state.id])\n\n const parentRef = useRef(null)\n\n const rowVirtualizer = useVirtualizer({\n count: data.length,\n getScrollElement: () => parentRef.current,\n getItemKey: (index) => dataFiltered[index]?._metadata?.documentId ?? index,\n estimateSize: () => 113,\n overscan: 5,\n })\n\n if (!data.length) {\n return null\n }\n\n return (\n <div\n ref={parentRef}\n style={{\n height: `100%`,\n overflow: 'auto',\n paddingTop: 1,\n // Smooths scrollbar behaviour\n overflowAnchor: 'none',\n scrollBehavior: 'auto',\n }}\n >\n {/* {dataFiltered.map((item, itemIndex) => { */}\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const item = dataFiltered[virtualItem.index]\n\n const {documentId, assignees} = item?._metadata ?? {}\n\n if (!documentId) {\n return null\n }\n\n const isInvalid = invalidDocumentIds.includes(documentId)\n const meInAssignees = user?.id ? assignees?.includes(user.id) : false\n const isDragDisabled =\n !userRoleCanDrop ||\n isInvalid ||\n !(state.requireAssignment\n ? state.requireAssignment && meInAssignees\n : true)\n\n return (\n <Draggable\n // The metadata's documentId is always the published one to avoid rerendering\n key={documentId}\n draggableId={documentId}\n index={virtualItem.index}\n isDragDisabled={isDragDisabled}\n >\n {(draggableProvided, draggableSnapshot) => (\n <div\n ref={draggableProvided.innerRef}\n {...draggableProvided.draggableProps}\n {...draggableProvided.dragHandleProps}\n >\n <DocumentCard\n userRoleCanDrop={userRoleCanDrop}\n isDragDisabled={isDragDisabled}\n isDragging={draggableSnapshot.isDragging}\n item={item}\n toggleInvalidDocumentId={toggleInvalidDocumentId}\n userList={userList}\n states={states}\n />\n </div>\n )}\n </Draggable>\n )\n })}\n </div>\n )\n}\n","import {ResetIcon, UserIcon} from '@sanity/icons'\nimport {Button, Card, Flex, Menu, MenuButton} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useCurrentUser, UserAvatar, useSchema} from 'sanity'\nimport {UserExtended, UserSelectMenu} from 'sanity-plugin-utils'\n\ntype FiltersProps = {\n uniqueAssignedUsers: UserExtended[]\n selectedUserIds: string[]\n schemaTypes: string[]\n selectedSchemaTypes: string[]\n toggleSelectedUser: (userId: string) => void\n resetSelectedUsers: () => void\n toggleSelectedSchemaType: (schemaType: string) => void\n}\n\nexport default function Filters(props: FiltersProps) {\n const {\n uniqueAssignedUsers = [],\n selectedUserIds,\n schemaTypes,\n selectedSchemaTypes,\n toggleSelectedUser,\n resetSelectedUsers,\n toggleSelectedSchemaType,\n } = props\n\n const currentUser = useCurrentUser()\n const schema = useSchema()\n\n const onAdd = useCallback(\n (id: string) => {\n if (!selectedUserIds.includes(id)) {\n toggleSelectedUser(id)\n }\n },\n [selectedUserIds, toggleSelectedUser]\n )\n\n const onRemove = useCallback(\n (id: string) => {\n if (selectedUserIds.includes(id)) {\n toggleSelectedUser(id)\n }\n },\n [selectedUserIds, toggleSelectedUser]\n )\n\n const onClear = useCallback(() => {\n resetSelectedUsers()\n }, [resetSelectedUsers])\n\n if (uniqueAssignedUsers.length === 0 && schemaTypes.length < 2) {\n return null\n }\n\n const meInUniqueAssignees =\n currentUser?.id && uniqueAssignedUsers.find((u) => u.id === currentUser.id)\n const uniqueAssigneesNotMe = uniqueAssignedUsers.filter(\n (u) => u.id !== currentUser?.id\n )\n\n return (\n <Card tone=\"primary\" padding={2} borderBottom style={{overflowX: 'hidden'}}>\n <Flex align=\"center\">\n <Flex align=\"center\" gap={1} flex={1}>\n {uniqueAssignedUsers.length > 5 ? (\n <Card tone=\"default\">\n <MenuButton\n button={\n <Button\n text=\"Filter Assignees\"\n tone=\"primary\"\n icon={UserIcon}\n />\n }\n id=\"user-filters\"\n menu={\n <Menu>\n <UserSelectMenu\n value={selectedUserIds}\n userList={uniqueAssignedUsers}\n onAdd={onAdd}\n onRemove={onRemove}\n onClear={onClear}\n labels={{\n addMe: 'Filter mine',\n removeMe: 'Clear mine',\n clear: 'Clear filters',\n }}\n />\n </Menu>\n }\n popover={{portal: true}}\n />\n </Card>\n ) : (\n <>\n {meInUniqueAssignees ? (\n <>\n <Button\n padding={0}\n mode={\n selectedUserIds.includes(currentUser.id)\n ? `default`\n : `bleed`\n }\n onClick={() => toggleSelectedUser(currentUser.id)}\n >\n <Flex padding={1} align=\"center\" justify=\"center\">\n <UserAvatar user={currentUser.id} size={1} withTooltip />\n </Flex>\n </Button>\n <Card borderRight style={{height: 30}} tone=\"inherit\" />\n </>\n ) : null}\n {uniqueAssigneesNotMe.map((user) => (\n <Button\n key={user.id}\n padding={0}\n mode={selectedUserIds.includes(user.id) ? `default` : `bleed`}\n onClick={() => toggleSelectedUser(user.id)}\n >\n <Flex padding={1} align=\"center\" justify=\"center\">\n <UserAvatar user={user} size={1} withTooltip />\n </Flex>\n </Button>\n ))}\n\n {selectedUserIds.length > 0 ? (\n <Button\n text=\"Clear\"\n onClick={resetSelectedUsers}\n mode=\"ghost\"\n icon={ResetIcon}\n />\n ) : null}\n </>\n )}\n </Flex>\n\n {schemaTypes.length > 0 ? (\n <Flex align=\"center\" gap={1}>\n {schemaTypes.map((typeName) => {\n const schemaType = schema.get(typeName)\n\n if (!schemaType) {\n return null\n }\n\n return (\n <Button\n key={typeName}\n text={schemaType?.title ?? typeName}\n icon={schemaType?.icon ?? undefined}\n mode={\n selectedSchemaTypes.includes(typeName) ? `default` : `ghost`\n }\n onClick={() => toggleSelectedSchemaType(typeName)}\n />\n )\n })}\n </Flex>\n ) : null}\n </Flex>\n </Card>\n )\n}\n","import React from 'react'\nimport {Box, Text, Tooltip} from '@sanity/ui'\n\ntype StatusProps = {\n text: string\n icon: React.ComponentType\n}\n\nexport function Status(props: StatusProps) {\n const {text, icon} = props\n const Icon = icon\n\n return (\n <Tooltip\n portal\n content={\n <Box padding={2}>\n <Text size={1}>{text}</Text>\n </Box>\n }\n >\n <Text size={1}>\n <Icon />\n </Text>\n </Tooltip>\n )\n}\n","import {Flex, Card, Badge, BadgeTone} from '@sanity/ui'\nimport {InfoOutlineIcon, UserIcon} from '@sanity/icons'\nimport styled, {css} from 'styled-components'\n\nimport {Status} from './Status'\nimport {\n // Operation,\n State,\n} from '../../types'\n\ntype StateTitleProps = {\n state: State\n requireAssignment: boolean\n userRoleCanDrop: boolean\n isDropDisabled: boolean\n draggingFrom: string\n // operation?: Operation\n}\n\nconst StyledStickyCard = styled(Card)(\n () => css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\n)\n\nexport default function StateTitle(props: StateTitleProps) {\n const {state, requireAssignment, userRoleCanDrop, isDropDisabled, draggingFrom} = 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={(draggingFrom && !isDropDisabled) || isSource ? 'default' : 'outline'}\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 {/* {operation ? (\n <Status\n text={\n operation === 'publish'\n ? `A document moved to this State will also publish the current Draft`\n : `A document moved to this State will also unpublish the current Published version`\n }\n icon={operation === 'publish' ? PublishIcon : UnpublishIcon}\n />\n ) : null} */}\n </Flex>\n </StyledStickyCard>\n )\n}\n","import {PropsWithChildren} from 'react'\nimport styled, {css} from 'styled-components'\nimport {Card, Grid} from '@sanity/ui'\nimport {motion, AnimatePresence} from 'framer-motion'\n\nconst StyledFloatingCard = styled(Card)(\n () => css`\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 1000;\n `\n)\n\nexport default function FloatingCard({children}: PropsWithChildren) {\n const childrenHaveValues = Array.isArray(children) ? children.some(Boolean) : Boolean(children)\n\n return (\n <AnimatePresence>\n {childrenHaveValues ? (\n <motion.div key=\"floater\" initial={{opacity: 0}} animate={{opacity: 1}} exit={{opacity: 0}}>\n <StyledFloatingCard shadow={3} padding={3} margin={3} radius={3}>\n <Grid gap={2}>{children}</Grid>\n </StyledFloatingCard>\n </motion.div>\n ) : null}\n </AnimatePresence>\n )\n}\n","import {Button, useToast} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport React from 'react'\nimport {useClient} from 'sanity'\nimport {UserExtended} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {SanityDocumentWithMetadata, State} from '../types'\nimport FloatingCard from './FloatingCard'\n\ntype ValidatorsProps = {\n data: SanityDocumentWithMetadata[]\n userList: UserExtended[]\n states: State[]\n}\n\nexport default function Validators({data, userList, states}: ValidatorsProps) {\n const client = useClient({apiVersion: API_VERSION})\n const toast = useToast()\n\n // A lot of error-checking\n const documentsWithoutValidMetadataIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, state} = cur._metadata ?? {}\n const stateExists = states.find((s) => s.id === state)\n\n return !stateExists && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithInvalidUserIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, assignees} = cur._metadata ?? {}\n const allAssigneesExist = assignees?.length\n ? assignees?.every((a) => userList.find((u) => u.id === a))\n : true\n\n return !allAssigneesExist && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n const documentsWithoutOrderIds = data?.length\n ? data.reduce((acc, cur) => {\n const {documentId, orderRank} = cur._metadata ?? {}\n\n return !orderRank && documentId ? [...acc, documentId] : acc\n }, [] as string[])\n : []\n\n // Updates metadata documents to a valid, existing state\n const correctDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Correcting...',\n status: 'info',\n })\n\n const tx = ids.reduce((item, documentId) => {\n return item.patch(`workflow-metadata.${documentId}`, {\n set: {state: states[0].id},\n })\n }, client.transaction())\n\n await tx.commit()\n\n toast.push({\n title: `Corrected ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, states, toast]\n )\n\n // Remove users that are no longer in the project from documents\n const removeUsersFromDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Removing users...',\n status: 'info',\n })\n\n const tx = ids.reduce((item, documentId) => {\n const {assignees} =\n data.find((d) => d._id === documentId)?._metadata ?? {}\n const validAssignees = assignees?.length\n ? // eslint-disable-next-line max-nested-callbacks\n assignees.filter((a) => userList.find((u) => u.id === a)?.id)\n : []\n\n return item.patch(`workflow-metadata.${documentId}`, {\n set: {assignees: validAssignees},\n })\n }, client.transaction())\n\n await tx.commit()\n\n toast.push({\n title: `Corrected ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [client, data, toast, userList]\n )\n\n // Add order value to metadata documents\n const addOrderToDocuments = React.useCallback(\n async (ids: string[]) => {\n toast.push({\n title: 'Adding ordering...',\n status: 'info',\n })\n\n // Get first order value\n const firstOrder = data[0]?._metadata?.orderRank\n let newLexo =\n firstOrder && data.length !== ids.length\n ? LexoRank.parse(firstOrder)\n : LexoRank.min()\n\n const tx = client.transaction()\n\n for (let index = 0; index < ids.length; index += 1) {\n newLexo = newLexo.genNext().genNext()\n\n tx.patch(`workflow-metadata.${ids[index]}`, {\n set: {orderRank: newLexo.toString()},\n })\n }\n\n await tx.commit()\n\n toast.push({\n title: `Added order to ${\n ids.length === 1 ? `1 Document` : `${ids.length} Documents`\n }`,\n status: 'success',\n })\n },\n [data, client, toast]\n )\n\n // A document could be deleted and the workflow metadata left behind\n const orphanedMetadataDocumentIds = React.useMemo(() => {\n return data.length\n ? data.filter((doc) => !doc?._id).map((doc) => doc._metadata.documentId)\n : []\n }, [data])\n\n const handleOrphans = React.useCallback(() => {\n toast.push({\n title: 'Removing orphaned metadata...',\n status: 'info',\n })\n\n const tx = client.transaction()\n orphanedMetadataDocumentIds.forEach((id) => {\n tx.delete(`workflow-metadata.${id}`)\n })\n\n tx.commit()\n\n toast.push({\n title: `Removed ${orphanedMetadataDocumentIds.length} orphaned metadata documents`,\n status: 'success',\n })\n }, [client, orphanedMetadataDocumentIds, toast])\n\n return (\n <FloatingCard>\n {documentsWithoutValidMetadataIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => correctDocuments(documentsWithoutValidMetadataIds)}\n text={\n documentsWithoutValidMetadataIds.length === 1\n ? `Correct 1 Document State`\n : `Correct ${documentsWithoutValidMetadataIds.length} Document States`\n }\n />\n ) : null}\n {documentsWithInvalidUserIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => removeUsersFromDocuments(documentsWithInvalidUserIds)}\n text={\n documentsWithInvalidUserIds.length === 1\n ? `Remove Invalid Users from 1 Document`\n : `Remove Invalid Users from ${documentsWithInvalidUserIds.length} Documents`\n }\n />\n ) : null}\n {documentsWithoutOrderIds.length > 0 ? (\n <Button\n tone=\"caution\"\n onClick={() => addOrderToDocuments(documentsWithoutOrderIds)}\n text={\n documentsWithoutOrderIds.length === 1\n ? `Set Order for 1 Document`\n : `Set Order for ${documentsWithoutOrderIds.length} Documents`\n }\n />\n ) : null}\n {orphanedMetadataDocumentIds.length > 0 ? (\n <Button\n text=\"Cleanup orphaned metadata\"\n onClick={handleOrphans}\n tone=\"caution\"\n />\n ) : null}\n {/* <Button\n tone=\"caution\"\n onClick={() =>\n addOrderToDocuments(\n data.map((doc) => String(doc._metadata?.documentId))\n )\n }\n text={\n data.length === 1\n ? `Reset Order for 1 Document`\n : `Reset Order for all ${data.length} Documents`\n }\n /> */}\n </FloatingCard>\n )\n}\n","import {\n DragDropContext,\n DragStart,\n Droppable,\n DropResult,\n} from '@hello-pangea/dnd'\nimport {Box, Card, Container, Flex, Grid, Spinner, useTheme} from '@sanity/ui'\nimport {LexoRank} from 'lexorank'\nimport React from 'react'\nimport {Tool, useCurrentUser} from 'sanity'\nimport {Feedback, useProjectUsers} from 'sanity-plugin-utils'\n\nimport {API_VERSION} from '../constants'\nimport {arraysContainMatchingString} from '../helpers/arraysContainMatchingString'\nimport {filterItemsAndSort} from '../helpers/filterItemsAndSort'\nimport {useWorkflowDocuments} from '../hooks/useWorkflowDocuments'\nimport {State, WorkflowConfig} from '../types'\nimport {DocumentCard} from './DocumentCard'\nimport DocumentList from './DocumentList'\nimport Filters from './Filters'\nimport StateTitle from './StateTitle'\nimport Validators from './Validators'\n\ntype WorkflowToolProps = {\n tool: Tool<WorkflowConfig>\n}\n\nexport default function WorkflowTool(props: WorkflowToolProps) {\n const {schemaTypes = [], states = []} = props?.tool?.options ?? {}\n\n const isDarkMode = useTheme().sanity.color.dark\n const defaultCardTone = isDarkMode ? 'default' : 'transparent'\n\n const userList = useProjectUsers({apiVersion: API_VERSION})\n\n const user = useCurrentUser()\n const userRoleNames = user?.roles?.length\n ? user?.roles.map((r) => r.name)\n : []\n\n const {workflowData, operations} = useWorkflowDocuments(schemaTypes)\n\n // Data to display in cards\n const {data, loading, error} = workflowData\n\n // Operations to perform on cards\n const {move} = operations\n\n const [undroppableStates, setUndroppableStates] = React.useState<string[]>([])\n const [draggingFrom, setDraggingFrom] = React.useState(``)\n\n // When drag starts, check for any States we should not allow dropping on\n // Because of either:\n // 1. The \"destination\" State requires user assignment and the user is not assigned to the dragged document\n // 2. The \"source\" State State has a list of transitions and the \"destination\" State is not in that list\n const handleDragStart = React.useCallback(\n (start: DragStart) => {\n const {draggableId, source} = start\n const {droppableId: currentStateId} = source\n setDraggingFrom(currentStateId)\n\n const document = data.find(\n (item) => item._metadata?.documentId === draggableId\n )\n const state = states.find((s) => s.id === currentStateId)\n\n // This shouldn't happen but TypeScript\n if (!document || !state) return\n\n const undroppableStateIds = []\n const statesThatRequireAssignmentIds = states\n .filter((s) => s.requireAssignment)\n .map((s) => s.id)\n\n if (statesThatRequireAssignmentIds.length) {\n const documentAssignees = document._metadata?.assignees ?? []\n const userIsAssignedToDocument = user?.id\n ? documentAssignees.includes(user.id)\n : false\n\n if (!userIsAssignedToDocument) {\n undroppableStateIds.push(...statesThatRequireAssignmentIds)\n }\n }\n\n const statesThatCannotBeTransitionedToIds =\n state.transitions && state.transitions.length\n ? states\n .filter((s) => !state.transitions?.includes(s.id))\n .map((s) => s.id)\n : []\n\n if (statesThatCannotBeTransitionedToIds.length) {\n undroppableStateIds.push(...statesThatCannotBeTransitionedToIds)\n }\n\n // Remove currentStateId from undroppableStates\n const undroppableExceptSelf = undroppableStateIds.filter(\n (id) => id !== currentStateId\n )\n\n if (undroppableExceptSelf.length) {\n setUndroppableStates(undroppableExceptSelf)\n }\n },\n [data, states, user]\n )\n\n const handleDragEnd = React.useCallback(\n (result: DropResult) => {\n // Reset undroppable states\n setUndroppableStates([])\n setDraggingFrom(``)\n\n const {draggableId, source, destination} = result\n\n if (\n // No destination?\n !destination ||\n // No change in position?\n (destination.droppableId === source.droppableId &&\n destination.index === source.index)\n ) {\n return\n }\n\n // Find all items in current state\n const destinationStateItems = [\n ...filterItemsAndSort(data, destination.droppableId, [], null),\n ]\n\n let newOrder\n\n if (!destinationStateItems.length) {\n // Only item in state\n // New minimum rank\n newOrder = LexoRank.min().toString()\n } else if (destination.index === 0) {\n // Now first item in order\n const firstItemOrderRank = [...destinationStateItems].shift()?._metadata\n ?.orderRank\n newOrder =\n firstItemOrderRank && typeof firstItemOrderRank === 'string'\n ? LexoRank.parse(firstItemOrderRank).genPrev().toString()\n : LexoRank.min().toString()\n } else if (destination.index + 1 === destinationStateItems.length) {\n // Now last item in order\n const lastItemOrderRank = [...destinationStateItems].pop()?._metadata\n ?.orderRank\n newOrder =\n lastItemOrderRank && typeof lastItemOrderRank === 'string'\n ? LexoRank.parse(lastItemOrderRank).genNext().toString()\n : LexoRank.min().toString()\n } else {\n // Must be between two items\n const itemBefore = destinationStateItems[destination.index - 1]\n const itemBeforeRank = itemBefore?._metadata?.orderRank\n const itemBeforeRankParsed = itemBefore._metadata.orderRank\n ? LexoRank.parse(itemBeforeRank)\n : LexoRank.min()\n const itemAfter = destinationStateItems[destination.index]\n const itemAfterRank = itemAfter?._metadata?.orderRank\n const itemAfterRankParsed = itemAfter._metadata.orderRank\n ? LexoRank.parse(itemAfterRank)\n : LexoRank.max()\n\n newOrder = itemBeforeRankParsed.between(itemAfterRankParsed).toString()\n }\n\n move(draggableId, destination, states, newOrder)\n },\n [data, move, states]\n )\n\n // Used for the user filter UI\n const uniqueAssignedUsers = React.useMemo(() => {\n const uniqueUserIds = data.reduce((acc, item) => {\n const {assignees = []} = item._metadata ?? {}\n const newAssignees = assignees?.length\n ? assignees.filter((a) => !acc.includes(a))\n : []\n return newAssignees.length ? [...acc, ...newAssignees] : acc\n }, [] as string[])\n\n return userList.filter((u) => uniqueUserIds.includes(u.id))\n }, [data, userList])\n\n // Selected user IDs filter the visible workflow documents\n const [selectedUserIds, setSelectedUserIds] = React.useState<string[]>(\n uniqueAssignedUsers.map((u) => u.id)\n )\n const toggleSelectedUser = React.useCallback((userId: string) => {\n setSelectedUserIds((prev) =>\n prev.includes(userId)\n ? prev.filter((u) => u !== userId)\n : [...prev, userId]\n )\n }, [])\n const resetSelectedUsers = React.useCallback(() => {\n setSelectedUserIds([])\n }, [])\n\n // Selected schema types filter the visible workflow documents\n const [selectedSchemaTypes, setSelectedSchemaTypes] =\n React.useState<string[]>(schemaTypes)\n const toggleSelectedSchemaType = React.useCallback((schemaType: string) => {\n setSelectedSchemaTypes((prev) =>\n prev.includes(schemaType)\n ? prev.filter((u) => u !== schemaType)\n : [...prev, schemaType]\n )\n }, [])\n\n // Document IDs that have validation errors\n const [invalidDocumentIds, setInvalidDocumentIds] = React.useState<string[]>(\n []\n )\n const toggleInvalidDocumentId = React.useCallback(\n (docId: string, action: 'ADD' | 'REMOVE') => {\n setInvalidDocumentIds((prev) =>\n action === 'ADD' ? [...prev, docId] : prev.filter((id) => id !== docId)\n )\n },\n []\n )\n\n if (!states?.length) {\n return (\n <Container width={1} padding={5}>\n <Feedback\n tone=\"caution\"\n title=\"Plugin options error\"\n description=\"No States defined in plugin config\"\n />\n </Container>\n )\n }\n\n if (error && !data.length) {\n return (\n <Container width={1} padding={5}>\n <Feedback\n tone=\"critical\"\n title=\"Error querying for Workflow documents\"\n />\n </Container>\n )\n }\n\n return (\n <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Validators data={data} userList={userList} states={states} />\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 // operation={state.operation}\n isDropDisabled={isDropDisabled}\n draggingFrom={draggingFrom}\n />\n <Box flex={1}>\n <Droppable\n droppableId={state.id}\n isDropDisabled={isDropDisabled}\n // props required for virtualization\n mode=\"virtual\"\n renderClone={(provided, snapshot, rubric) => {\n const item = data.find(\n (doc) =>\n doc?._metadata?.documentId === rubric.draggableId\n )\n\n return (\n <div\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n {item ? (\n <DocumentCard\n isDragDisabled={false}\n userRoleCanDrop={userRoleCanDrop}\n isDragging={snapshot.isDragging}\n item={item}\n states={states}\n toggleInvalidDocumentId={\n toggleInvalidDocumentId\n }\n userList={userList}\n />\n ) : (\n <Feedback title=\"Item not found\" tone=\"caution\" />\n )}\n </div>\n )\n }}\n >\n {(provided, snapshot) => (\n <Card\n ref={provided.innerRef}\n tone={\n snapshot.isDraggingOver\n ? `primary`\n : defaultCardTone\n }\n height=\"fill\"\n paddingTop={1}\n >\n {loading ? (\n <Flex padding={5} align=\"center\" justify=\"center\">\n <Spinner muted />\n </Flex>\n ) : null}\n\n <DocumentList\n data={data}\n invalidDocumentIds={invalidDocumentIds}\n selectedSchemaTypes={selectedSchemaTypes}\n selectedUserIds={selectedUserIds}\n state={state}\n states={states}\n toggleInvalidDocumentId={toggleInvalidDocumentId}\n user={user}\n userList={userList}\n userRoleCanDrop={userRoleCanDrop}\n />\n\n {/* Not required for virtualized lists */}\n {/* {provided.placeholder} */}\n </Card>\n )}\n </Droppable>\n </Box>\n </Flex>\n </Card>\n )\n })}\n </Grid>\n </DragDropContext>\n </Flex>\n )\n}\n","import {SplitVerticalIcon} from '@sanity/icons'\nimport {Tool} from 'sanity'\n\nimport WorkflowTool from '../components/WorkflowTool'\nimport {WorkflowConfig} from '../types'\n\nexport type WorkflowToolConfig = (options: WorkflowConfig) => Tool\n\nexport const workflowTool: WorkflowToolConfig = (options: WorkflowConfig) => ({\n name: 'workflow',\n title: 'Workflow',\n component: WorkflowTool,\n icon: SplitVerticalIcon,\n options,\n})\n","import {definePlugin, DocumentActionProps} from 'sanity'\n\nimport {AssignWorkflow} from './actions/AssignWorkflow'\nimport {BeginWorkflow} from './actions/BeginWorkflow'\nimport {CompleteWorkflow} from './actions/CompleteWorkflow'\nimport {UpdateWorkflow} from './actions/UpdateWorkflow'\nimport {AssigneesBadge} from './badges/AssigneesBadge'\nimport {StateBadge} from './badges/StateBadge'\nimport {DEFAULT_CONFIG} from './constants'\nimport metadata from './schema/workflow/workflow.metadata'\nimport {workflowTool} from './tools'\nimport {WorkflowConfig} from './types'\n\nexport const workflow = definePlugin<WorkflowConfig>(\n (config = DEFAULT_CONFIG) => {\n const {schemaTypes, states} = {...DEFAULT_CONFIG, ...config}\n\n if (!states?.length) {\n throw new Error(`Workflow: Missing states in config`)\n }\n\n return {\n name: 'sanity-plugin-workflow',\n schema: {\n types: [metadata(states)],\n },\n // TODO: Remove 'workflow.metadata' from list of new document types\n // ...\n document: {\n actions: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n // TODO: Augment 'publish' and 'unpublish' to be disabled if a document IS in Workflow\n // This would be best done with a listening query here, but we don't have access to documentStore\n\n // TODO: Performance improvements:\n // Each of these actions registers their own listener!\n // One should probably be responsible for listening and storing the response in context\n\n return [\n (props) => BeginWorkflow(props, states),\n (props) => AssignWorkflow(props, states),\n ...states.map(\n (state) => (props: DocumentActionProps) =>\n UpdateWorkflow(props, states, state)\n ),\n (props) => CompleteWorkflow(props, states),\n ...prev,\n ]\n },\n badges: (prev, context) => {\n if (!schemaTypes.includes(context.schemaType)) {\n return prev\n }\n\n const {documentId, currentUser} = context\n\n if (!documentId) {\n return prev\n }\n\n return [\n () => StateBadge(states, documentId),\n () => AssigneesBadge(states, documentId, currentUser),\n ...prev,\n ]\n },\n },\n tools: [workflowTool({schemaTypes, states})],\n }\n }\n)\n"],"names":["defineStates","states","API_VERSION","DEFAULT_CONFIG","schemaTypes","id","title","color","roles","transitions","requireAssignment","UserAssignment","props","assignees","userList","documentId","client","useClient","apiVersion","toast","useToast","addAssignee","React","useCallback","userId","user","find","u","push","status","patch","setIfMissing","insert","commit","then","concat","displayName","catch","err","console","error","description","removeAssignee","unset","clearAssignees","jsx","UserSelectMenu","style","maxHeight","value","onAdd","onClear","onRemove","useWorkflowMetadata","data","metadata","loading","useListeningQuery","params","state","s","AssignWorkflow","_a","_b","isDialogOpen","setDialogOpen","useState","useProjectUsers","icon","UsersIcon","type","disabled","label","dialog","onClose","content","onHandle","BeginWorkflow","draft","beginning","setBeginning","complete","setComplete","handle","lowestOrderFirstState","fetch","createIfNotExists","_id","_type","orderRank","LexoRank","parse","genNext","toString","min","visibility","SplitVerticalIcon","CompleteWorkflow","delete","isLastState","length","CheckmarkIcon","arraysContainMatchingString","one","two","some","item","includes","UpdateWorkflow","allStates","actionState","_c","_d","validation","isValidating","useValidationStatus","hasValidationErrors","v","level","useCurrentUser","currentUser","currentState","newState","set","onComplete","currentStateIndex","findIndex","actionStateIndex","direction","DirectionIcon","ArrowRightIcon","ArrowLeftIcon","directionLabel","userRoleCanUpdateState","map","r","name","actionStateIsAValidTransition","userAssignmentCanUpdateState","AssigneesBadge","hasMe","assignee","assigneesCount","assigneeUsers","filter","join","StateBadge","EditButton","navigateIntent","useRouter","Button","onClick","mode","fontSize","padding","tabIndex","EditIcon","text","Field","schema","useSchema","String","draftId","Spinner","schemaType","get","Feedback","tone","Card","border","children","jsxs","Flex","align","justify","gap","Preview","layout","UserAssignmentInput","useFormValue","stringValue","Array","isArray","initialRank","lastRankValue","lastRank","nextRank","defineType","liveEdit","fields","defineField","readOnly","options","list","components","input","initialValue","p","_ref","getClient","lastDocOrderRank","order","of","filterItemsAndSort","items","stateId","selectedUsers","arguments","undefined","selectedSchemaTypes","_metadata","sort","a","b","aOrderRank","bOrderRank","localeCompare","QUERY","groq","_templateObject","_taggedTemplateLiteral","useWorkflowDocuments","localDocuments","setLocalDocuments","default","useEffect","move","draggedId","destination","newOrder","currentLocalData","newLocalDocuments","droppableId","optimistic","newStateId","document","d","_rev","ifRevisionId","workflowData","operations","AvatarGroup","users","max","len","me","visibleUsers","useMemo","slice","UserAvatar","Box","marginRight","paddingLeft","Text","size","UserDisplay","button","popover","setPopover","isOpen","setIsOpen","close","open","useClickOutside","Popover","ref","portal","AddIcon","Grid","CompleteButton","handleComplete","TimeAgo","_ref2","time","timeAgo","useTimeAgo","DraftStatus","updatedAt","_updatedAt","Tooltip","Fragment","TextWithTone","dimmed","muted","PublishedStatus","PublishIcon","ValidationStatus","hasError","ErrorOutlineIcon","WarningOutlineIcon","DocumentCard","isDragDisabled","userRoleCanDrop","isDragging","toggleInvalidDocumentId","isDarkMode","useTheme","sanity","dark","defaultCardTone","cardTone","paddingBottom","paddingX","radius","shadow","Stack","borderBottom","pointerEvents","flex","flexShrink","DragHandleIcon","DocumentList","invalidDocumentIds","selectedUserIds","dataFiltered","parentRef","useRef","rowVirtualizer","useVirtualizer","count","getScrollElement","current","getItemKey","index","estimateSize","overscan","height","overflow","paddingTop","overflowAnchor","scrollBehavior","getVirtualItems","virtualItem","isInvalid","meInAssignees","Draggable","draggableId","draggableProvided","draggableSnapshot","innerRef","draggableProps","dragHandleProps","Filters","uniqueAssignedUsers","toggleSelectedUser","resetSelectedUsers","toggleSelectedSchemaType","meInUniqueAssignees","uniqueAssigneesNotMe","overflowX","MenuButton","UserIcon","menu","Menu","labels","addMe","removeMe","clear","withTooltip","borderRight","ResetIcon","typeName","Status","Icon","StyledStickyCard","styled","css","_templateObject2","StateTitle","isDropDisabled","draggingFrom","isSource","paddingY","Badge","InfoOutlineIcon","StyledFloatingCard","_templateObject3","FloatingCard","_ref3","childrenHaveValues","Boolean","AnimatePresence","motion","div","initial","opacity","animate","exit","margin","Validators","_ref4","documentsWithoutValidMetadataIds","reduce","acc","cur","stateExists","documentsWithInvalidUserIds","allAssigneesExist","every","documentsWithoutOrderIds","correctDocuments","ids","tx","transaction","removeUsersFromDocuments","validAssignees","addOrderToDocuments","firstOrder","newLexo","orphanedMetadataDocumentIds","doc","handleOrphans","forEach","WorkflowTool","tool","userRoleNames","undroppableStates","setUndroppableStates","setDraggingFrom","handleDragStart","start","source","currentStateId","undroppableStateIds","statesThatRequireAssignmentIds","documentAssignees","userIsAssignedToDocument","statesThatCannotBeTransitionedToIds","undroppableExceptSelf","handleDragEnd","result","_e","_f","destinationStateItems","firstItemOrderRank","shift","genPrev","lastItemOrderRank","pop","itemBefore","itemBeforeRank","itemBeforeRankParsed","itemAfter","itemAfterRank","itemAfterRankParsed","between","uniqueUserIds","newAssignees","setSelectedUserIds","prev","setSelectedSchemaTypes","setInvalidDocumentIds","docId","action","Container","width","DragDropContext","onDragStart","onDragEnd","columns","stateIndex","borderLeft","Droppable","renderClone","provided","snapshot","rubric","isDraggingOver","workflowTool","component","workflow","definePlugin","config","Error","types","actions","context","badges","tools"],"mappings":"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"}
|