sanity-plugin-workflow 1.0.0-beta.1 → 1.0.0-beta.3
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/LICENSE +1 -1
- package/README.md +71 -12
- package/lib/{src/index.d.ts → index.d.ts} +3 -3
- package/lib/index.esm.js +1691 -1
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +1704 -1
- package/lib/index.js.map +1 -1
- package/package.json +48 -38
- package/src/actions/AssignWorkflow.tsx +48 -0
- package/src/actions/BeginWorkflow.tsx +68 -0
- package/src/actions/CompleteWorkflow.tsx +41 -0
- package/src/actions/RequestReviewAction.js +1 -7
- package/src/actions/UpdateWorkflow.tsx +142 -0
- package/src/badges/AssigneesBadge.tsx +52 -0
- package/src/badges/{index.tsx → StateBadge.tsx} +4 -8
- package/src/components/DocumentCard/AvatarGroup.tsx +12 -8
- package/src/components/DocumentCard/CompleteButton.tsx +53 -0
- package/src/components/DocumentCard/EditButton.tsx +3 -2
- package/src/components/DocumentCard/Field.tsx +38 -0
- package/src/components/DocumentCard/ValidationStatus.tsx +37 -0
- package/src/components/DocumentCard/core/DraftStatus.tsx +32 -0
- package/src/components/DocumentCard/core/PublishedStatus.tsx +32 -0
- package/src/components/DocumentCard/core/TimeAgo.tsx +11 -0
- package/src/components/DocumentCard/index.tsx +156 -50
- package/src/components/Filters.tsx +168 -0
- package/src/components/FloatingCard.tsx +29 -0
- package/src/components/StateTitle/Status.tsx +27 -0
- package/src/components/StateTitle/index.tsx +73 -0
- package/src/components/UserAssignment.tsx +57 -75
- package/src/components/UserAssignmentInput.tsx +27 -0
- package/src/components/UserDisplay.tsx +57 -0
- package/src/components/Validators.tsx +196 -0
- package/src/components/WorkflowTool.tsx +301 -160
- package/src/constants/index.ts +31 -0
- package/src/helpers/arraysContainMatchingString.ts +6 -0
- package/src/helpers/filterItemsAndSort.ts +39 -0
- package/src/helpers/initialRank.ts +13 -0
- package/src/hooks/useWorkflowDocuments.tsx +62 -70
- package/src/hooks/useWorkflowMetadata.tsx +0 -1
- package/src/index.ts +38 -58
- package/src/schema/workflow/workflow.metadata.ts +68 -0
- package/src/tools/index.ts +15 -0
- package/src/types/index.ts +27 -6
- package/src/actions/DemoteAction.tsx +0 -62
- package/src/actions/PromoteAction.tsx +0 -62
- package/src/components/Mutate.tsx +0 -54
- package/src/components/StateTimeline.tsx +0 -98
- package/src/components/UserSelectInput.tsx +0 -43
- package/src/schema/workflow/metadata.ts +0 -38
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.esm.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","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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"}
|