{"version":3,"file":"pane.mjs","sources":["../../src/structure/components/DocTitle.tsx","../../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.styles.tsx","../../src/structure/components/paneItem/PaneItemPreview.tsx","../../src/structure/components/paneRouter/BackLink.tsx","../../src/structure/components/pane/usePaneLayout.ts","../../src/structure/components/paneRouter/ChildLink.tsx","../../src/structure/components/paneRouter/ParameterizedLink.tsx","../../src/structure/components/paneRouter/ReferenceChildLink.tsx","../../src/structure/components/paneRouter/usePaneRouter.ts","../../src/structure/components/confirmDeleteDialog/ReferencePreviewLink.tsx","../../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.tsx","../../src/structure/components/confirmDeleteDialog/useReferringDocuments.ts","../../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialog.tsx","../../src/structure/components/confirmDeleteDialog/index.tsx","../../src/structure/components/Delay.tsx","../../src/structure/components/pane/constants.ts","../../src/structure/components/pane/PaneDivider.tsx","../../src/structure/components/pane/Pane.tsx","../../src/structure/components/pane/PaneContent.styles.tsx","../../src/structure/components/pane/usePane.ts","../../src/structure/components/pane/PaneContent.tsx","../../src/structure/util/toLowerCaseNoSpaces.tsx","../../src/structure/components/pane/PaneMenuButtonItem.tsx","../../src/structure/components/pane/PaneContextMenuButton.tsx","../../src/structure/components/pane/PaneFooter.styles.tsx","../../src/structure/components/pane/PaneFooter.tsx","../../src/structure/components/pane/PaneHeader.styles.tsx","../../src/structure/components/pane/PaneHeader.tsx","../../src/structure/components/pane/PaneHeaderActionButton.tsx","../../src/structure/components/pane/PaneLayout.styles.tsx","../../src/structure/components/pane/helpers/_calcPaneResize.ts","../../src/structure/components/pane/helpers/_getDOMPath.ts","../../src/structure/components/pane/helpers/_sortElements.ts","../../src/structure/components/pane/paneLayoutController.ts","../../src/structure/components/pane/PaneLayout.tsx","../../src/structure/menuNodes.ts","../../src/structure/components/IntentButton.tsx","../../src/structure/components/paneHeaderActions/InsufficientPermissionsMessageTooltip.tsx","../../src/structure/components/paneHeaderActions/PaneHeaderCreateButton.tsx","../../src/structure/components/paneHeaderActions/PaneHeaderActions.tsx","../../src/structure/components/MissingSchemaType.tsx","../../src/structure/components/paneItem/PaneItem.tsx","../../src/structure/components/RenderActionCollectionState.tsx","../../src/structure/components/RenderBadgeCollectionState.tsx","../../src/structure/diffView/hooks/useCreatePathSyncChannel.ts","../../src/structure/diffView/constants.ts","../../src/structure/diffView/hooks/useDiffViewRouter.ts","../../src/structure/diffView/types/diffViewMode.ts","../../src/structure/diffView/hooks/useDiffViewState.ts","../../src/structure/diffView/hooks/useScrollMirror.tsx","../../src/structure/diffView/versionMode/components/VersionModeHeader.tsx","../../src/structure/diffView/components/DialogLayout.ts","../../src/structure/panes/document/document-layout/pickDocumentLayoutComponent.ts","../../src/structure/diffView/hooks/usePathSyncChannel.ts","../../src/structure/diffView/components/Scroller.ts","../../src/structure/diffView/components/DiffViewPane.tsx","../../src/structure/diffView/components/EditReferenceLinkComponent.tsx","../../src/structure/diffView/components/DiffView.tsx","../../src/structure/diffView/plugin/DiffViewDocumentLayout.tsx","../../src/structure/panes/error/ErrorPane.tsx","../../src/structure/panes/loading/getWaitMessages.ts","../../src/structure/panes/loading/LoadingPane.tsx","../../src/structure/panes/document/useDocumentPane.tsx","../../src/structure/panes/document/comments/CommentsWrapper.tsx","../../src/structure/hooks/useFilteredReleases.ts","../../src/structure/hooks/useDocumentIdStack.ts","../../src/structure/useStructureTool.ts","../../src/structure/panes/document/constants.ts","../../src/structure/panes/document/DocumentInspectorMenuItemsResolver.tsx","../../src/structure/panes/document/useDocumentTitle.ts","../../src/structure/panes/document/DocumentOperationResults.tsx","../../src/structure/components/paneItem/helpers.tsx","../../src/structure/hasObsoleteDraft.ts","../../src/structure/mustChooseNewDocumentDestination.ts","../../src/structure/panes/document/documentInspector/DocumentInspectorHeader.tsx","../../src/structure/panes/document/documentInspector/DocumentInspectorPanel.tsx","../../src/structure/useStructureToolSetting.ts","../../src/structure/panes/document/inspectDialog/constants.ts","../../src/structure/panes/document/inspectDialog/helpers.ts","../../src/structure/panes/document/inspectDialog/InspectDialog.styles.tsx","../../src/structure/panes/document/inspectDialog/Search.tsx","../../src/structure/panes/document/inspectDialog/InspectDialog.tsx","../../src/structure/panes/document/documentPanel/banners/Banner.tsx","../../src/structure/panes/document/documentPanel/banners/DeletedDocumentBanners.tsx","../../src/structure/panes/document/documentPanel/banners/DeprecatedDocumentTypeBanner.tsx","../../src/structure/components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry.ts","../../src/structure/components/requestPermissionDialog/RequestPermissionDialog.tsx","../../src/structure/components/requestPermissionDialog/useRoleRequestsStatus.tsx","../../src/structure/panes/document/documentPanel/banners/InsufficientPermissionBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ReferenceChangedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ArchivedReleaseDocumentBanner.tsx","../../src/structure/panes/document/documentPanel/banners/CanvasLinkedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ChooseNewDocumentDestinationBanner.tsx","../../src/structure/panes/document/documentPanel/banners/CreateLinkedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/DocumentNotInReleaseBanner.tsx","../../src/structure/panes/document/documentPanel/banners/__telemetry__/DraftLiveEditBanner.telemetry.ts","../../src/structure/panes/document/documentPanel/banners/ObsoleteDraftBanner.tsx","../../src/structure/panes/document/documentPanel/banners/OpenReleaseToEditBanner.tsx","../../src/structure/panes/document/documentPanel/banners/RevisionNotFoundBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ScheduledReleaseBanner.tsx","../../src/structure/panes/document/documentPanel/banners/UnpublishedDocumentBanner.tsx","../../src/structure/panes/document/documentPanel/documentViews/FormHeader.tsx","../../src/structure/panes/document/documentPanel/documentViews/FormView.tsx","../../src/structure/panes/document/documentPanel/header/DocumentHeaderTabs.tsx","../../src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.tsx","../../src/structure/panes/document/documentPanel/header/FavoriteToggle.tsx","../../src/structure/panes/document/documentPanel/header/DocumentPanelSubHeader.tsx","../../src/structure/panes/document/documentPanel/DocumentPanel.tsx","../../src/structure/constants.ts","../../src/structure/panes/document/statusBar/dialogs/constants.ts","../../src/structure/panes/document/statusBar/dialogs/ConfirmDialog.tsx","../../src/structure/panes/document/statusBar/dialogs/ModalDialog.tsx","../../src/structure/panes/document/statusBar/dialogs/PopoverDialog.tsx","../../src/structure/panes/document/statusBar/ActionStateDialog.tsx","../../src/structure/panes/document/statusBar/ActionMenuButton.tsx","../../src/structure/documentActions/DeleteAction.tsx","../../src/structure/documentActions/DiscardChangesAction.tsx","../../src/structure/documentActions/DuplicateAction.tsx","../../src/structure/documentActions/HistoryRestoreAction.tsx","../../src/structure/documentActions/__telemetry__/documentActions.telemetry.ts","../../src/structure/documentActions/PublishAction.tsx","../../src/structure/documentActions/UnpublishAction.tsx","../../src/structure/panes/document/statusBar/DocumentStatusBarActions.tsx","../../src/structure/panes/document/documentPanel/header/hook/useChipScrollPosition.tsx","../../src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveList.tsx","../../src/structure/panes/document/documentPanel/header/DocumentPanelHeader.tsx","../../src/structure/components/spacerButton/SpacerButton.tsx","../../src/structure/panes/document/statusBar/DocumentBadges.tsx","../../src/structure/panes/document/timeline/constants.ts","../../src/structure/panes/document/timeline/helpers.ts","../../src/structure/panes/document/timeline/expandableTimelineItemButton.tsx","../../src/structure/panes/document/timeline/timeline.styled.tsx","../../src/structure/panes/document/timeline/timelineI18n.ts","../../src/structure/panes/document/timeline/userAvatarStack.tsx","../../src/structure/panes/document/timeline/timelineItem.tsx","../../src/structure/panes/document/timeline/utils.ts","../../src/structure/panes/document/timeline/timeline.tsx","../../src/structure/panes/document/timeline/TimelineError.tsx","../../src/structure/panes/document/timeline/timelineMenu.tsx","../../src/structure/panes/document/statusBar/DocumentStatusPulse/AnimatedStatusIcon.tsx","../../src/structure/panes/document/statusBar/DocumentStatusPulse/DocumentStatusPulse.tsx","../../src/structure/panes/document/statusBar/DocumentStatusLine.tsx","../../src/structure/panes/document/statusBar/RevisionStatusLine.tsx","../../src/structure/panes/document/statusBar/useResizeObserver.ts","../../src/structure/panes/document/statusBar/DocumentStatusBar.tsx","../../src/structure/panes/document/keyboardShortcuts/DocumentActionShortcuts.tsx","../../src/structure/panes/document/menuItems.ts","../../src/structure/panes/document/document-layout/DocumentLayoutError.tsx","../../src/structure/panes/document/document-layout/DocumentLayoutFooter.tsx","../../src/structure/panes/document/document-layout/DocumentLayout.tsx","../../src/structure/panes/document/document-layout/useDocumentLayoutComponent.ts","../../src/structure/panes/document/__telemetry__/documentPanes.telemetry.ts","../../src/structure/panes/document/getInitialValueTemplateOpts.ts","../../src/structure/panes/document/useDocumentPaneInitialValue.ts","../../src/structure/panes/document/useDocumentPaneInspector.ts","../../src/structure/panes/document/usePreviewUrl.ts","../../src/structure/panes/document/DocumentPaneProvider.tsx","../../src/structure/panes/document/DocumentEventsPane.tsx","../../src/structure/panes/document/DocumentPaneLegacyTimeline.tsx","../../src/structure/panes/document/DocumentPaneProviderWrapper.tsx","../../src/structure/panes/document/useResetHistoryParams.ts","../../src/structure/panes/document/DocumentPane.tsx","../../src/structure/panes/documentList/constants.ts","../../src/structure/panes/documentList/DocumentListPaneContent.tsx","../../src/structure/panes/documentList/helpers.ts","../../src/structure/panes/documentList/listenSearchQuery.ts","../../src/structure/panes/documentList/useDocumentList.ts","../../src/structure/panes/documentList/DocumentListPane.tsx","../../src/structure/panes/documentList/PaneHeader.tsx","../../src/structure/panes/documentList/sheetList/DocumentSheetListSelect.tsx","../../src/structure/panes/documentList/sheetList/DocumentSheetListProvider.tsx","../../src/structure/panes/documentList/sheetList/SheetListCell.tsx","../../src/structure/panes/documentList/sheetList/useDocumentSheetColumns.tsx","../../src/structure/panes/documentList/sheetList/ColumnsControl.tsx","../../src/structure/panes/documentList/sheetList/DocumentSheetListFilter.tsx","../../src/structure/panes/documentList/sheetList/DocumentSheetListHeader.tsx","../../src/structure/panes/documentList/sheetList/DocumentSheetListPaginator.tsx","../../src/structure/panes/documentList/sheetList/useDocumentSheetListStore.ts","../../src/structure/panes/documentList/sheetList/useDocumentSheetList.ts","../../src/structure/panes/documentList/sheetList/DocumentSheetListPane.tsx","../../src/structure/panes/documentList/PaneContainer.tsx","../../src/structure/documentBadges/LiveEditBadge.ts","../../src/structure/getIntentState.ts","../../src/structure/panes/document/inspectors/changes/ChangesInspector.tsx","../../src/structure/panes/document/timeline/events/EventTimelineItem.tsx","../../src/structure/panes/document/timeline/events/PublishedEventMenu.tsx","../../src/structure/panes/document/timeline/events/EventsTimeline.tsx","../../src/structure/panes/document/timeline/events/EventsTimelineMenu.tsx","../../src/structure/panes/document/inspectors/changes/EventsInspector.tsx","../../src/structure/panes/document/inspectors/changes/EventsSelector.tsx","../../src/structure/panes/document/inspectors/changes/HistorySelector.tsx","../../src/structure/panes/document/inspectors/changes/ChangesTabs.tsx","../../src/structure/panes/document/inspectors/changes/index.ts","../../src/structure/panes/document/inspectors/validation/getPathTitles.ts","../../src/structure/panes/document/inspectors/validation/ValidationInspector.tsx","../../src/structure/panes/document/inspectors/validation/index.ts","../../src/structure/router.ts","../../src/structure/structureTool.ts"],"sourcesContent":["import {type SanityDocumentLike} from '@sanity/types'\nimport {unstable_useValuePreview as useValuePreview, useSchema, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface DocTitleProps {\n  document: SanityDocumentLike\n}\n\nexport function DocTitle(props: DocTitleProps) {\n  const {document: documentValue} = props\n  const schema = useSchema()\n  const schemaType = schema.get(documentValue._type)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const {error, value} = useValuePreview({\n    schemaType: schemaType!,\n    value: documentValue,\n  })\n\n  if (!schemaType) {\n    return <code>{t('doc-title.unknown-schema-type.text', {schemaType: documentValue._type})}</code>\n  }\n\n  if (error) {\n    return <>{t('doc-title.error.text', {errorMessage: error.message})}</>\n  }\n\n  return (\n    <>\n      {value?.title || (\n        <span style={{color: 'var(--card-muted-fg-color)'}}>{t('doc-title.fallback.text')}</span>\n      )}\n    </>\n  )\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Flex, Inline, rem, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\nexport const ChevronWrapper = styled(Box)`\n  margin-left: auto;\n`\n\nexport const CrossDatasetReferencesDetails = styled.details`\n  flex: none;\n\n  &[open] ${ChevronWrapper} {\n    transform: rotate(180deg);\n  }\n`\n\nexport const CrossDatasetReferencesSummary = styled.summary`\n  list-style: none;\n\n  &::-webkit-details-marker {\n    display: none;\n  }\n`\n\nexport const Table = styled.table`\n  width: 100%;\n  text-align: left;\n  padding: 0 ${({theme}) => rem(theme.sanity.space[2])};\n  border-collapse: collapse;\n\n  th {\n    padding: ${({theme}) => rem(theme.sanity.space[1])};\n  }\n\n  td {\n    padding: 0 ${({theme}) => rem(theme.sanity.space[1])};\n  }\n\n  tr > *:last-child {\n    text-align: right;\n  }\n`\n\nexport const DocumentIdFlex = styled(Flex)`\n  min-height: 33px;\n`\n\nexport const OtherReferenceCount = (props: {totalCount: number; references: unknown[]}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const difference = props.totalCount - props.references.length\n\n  if (!difference) return null\n\n  return (\n    <Box padding={2}>\n      <Inline space={2}>\n        <Text size={1} muted>\n          {t('confirm-delete-dialog.other-reference-count.title', {count: difference})}\n        </Text>\n\n        <Tooltip\n          portal\n          placement=\"top\"\n          content={t('confirm-delete-dialog.other-reference-count.tooltip')}\n        >\n          <Text size={1} muted>\n            <InfoOutlineIcon />\n          </Text>\n        </Tooltip>\n      </Inline>\n    </Box>\n  )\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {Flex} from '@sanity/ui'\nimport {type ComponentType, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n  type DocumentPresence,\n  DocumentPreviewPresence,\n  type DocumentPreviewStore,\n  DocumentStatus,\n  DocumentStatusIndicator,\n  type GeneralPreviewLayoutKey,\n  getPreviewStateObservable,\n  getPreviewValueWithFallback,\n  SanityDefaultPreview,\n  useDocumentVersionInfo,\n  usePerspective,\n} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../ui-components'\n\nexport interface PaneItemPreviewProps {\n  documentPreviewStore: DocumentPreviewStore\n  icon: ComponentType | false\n  layout: GeneralPreviewLayoutKey\n  presence?: DocumentPresence[]\n  schemaType: SchemaType\n  value: SanityDocument\n}\n\n/**\n * Preview component for _documents_ rendered in structure panes.\n *\n * Note that non-document previews are not handled by this component,\n * despite being pane items! Non-document previews bypass this entirely\n * and are rendered by `<SanityDefaultPreview>`.\n */\nexport function PaneItemPreview(props: PaneItemPreviewProps) {\n  const {icon, layout, presence, schemaType, value} = props\n\n  const versionsInfo = useDocumentVersionInfo(value._id)\n\n  const {perspectiveStack} = usePerspective()\n  const previewStateObservable = useMemo(() => {\n    return getPreviewStateObservable(\n      props.documentPreviewStore,\n      schemaType,\n      value._id,\n      perspectiveStack,\n    )\n  }, [props.documentPreviewStore, schemaType, value._id, perspectiveStack])\n\n  const {\n    snapshot,\n    original,\n    isLoading: previewIsLoading,\n  } = useObservable(previewStateObservable, {\n    snapshot: null,\n    isLoading: true,\n    original: null,\n  })\n\n  const isLoading = previewIsLoading\n\n  const status = isLoading ? null : (\n    <TooltipDelayGroupProvider>\n      <Flex align=\"center\" gap={3}>\n        {presence && presence.length > 0 && <DocumentPreviewPresence presence={presence} />}\n        <DocumentStatusIndicator\n          draft={versionsInfo.draft}\n          published={versionsInfo.published}\n          versions={versionsInfo.versions}\n        />\n      </Flex>\n    </TooltipDelayGroupProvider>\n  )\n\n  const tooltip = (\n    <DocumentStatus\n      draft={versionsInfo.draft}\n      published={versionsInfo.published}\n      versions={versionsInfo.versions}\n    />\n  )\n\n  return (\n    <SanityDefaultPreview\n      {...getPreviewValueWithFallback({snapshot, original, fallback: value})}\n      isPlaceholder={isLoading}\n      icon={icon}\n      layout={layout}\n      status={status}\n      tooltip={tooltip}\n    />\n  )\n}\n","import {type ComponentType, type ForwardedRef, forwardRef, useContext, useMemo} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {StateLink} from 'sanity/router'\n\nimport {type BackLinkProps} from './types'\n\n/**\n * @internal\n */\nexport const BackLink = forwardRef(function BackLink(\n  props: BackLinkProps,\n  ref: ForwardedRef<HTMLAnchorElement>,\n) {\n  const {routerPanesState, groupIndex} = useContext(PaneRouterContext)\n  const panes = useMemo(() => routerPanesState.slice(0, groupIndex), [groupIndex, routerPanesState])\n  const state = useMemo(() => ({panes}), [panes])\n\n  return <StateLink {...props} ref={ref} state={state} />\n}) as ComponentType<BackLinkProps>\n","import {useContext} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePaneLayout(): PaneLayoutContextValue {\n  const pane = useContext(PaneLayoutContext)\n\n  if (!pane) {\n    throw new Error('PaneLayout: missing context value')\n  }\n\n  return pane\n}\n","import {type ForwardedRef, forwardRef, useContext} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {StateLink} from 'sanity/router'\n\nimport {type ChildLinkProps} from './types'\n\n/**\n * @internal\n */\nexport const ChildLink = forwardRef(function ChildLink(\n  props: ChildLinkProps,\n  ref: ForwardedRef<HTMLAnchorElement>,\n) {\n  const {childId, childPayload, childParameters, ...rest} = props\n  const {routerPanesState, groupIndex} = useContext(PaneRouterContext)\n\n  return (\n    <StateLink\n      {...rest}\n      ref={ref}\n      state={{\n        panes: [\n          ...routerPanesState.slice(0, groupIndex + 1),\n          [{id: childId, params: childParameters, payload: childPayload}],\n        ],\n      }}\n    />\n  )\n})\n","import {type ForwardedRef, forwardRef, type ReactNode, useContext, useMemo} from 'react'\nimport {useUnique} from 'sanity'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {StateLink} from 'sanity/router'\n\ninterface ParameterizedLinkProps {\n  params?: Record<string, string>\n  payload?: unknown\n  children?: ReactNode\n}\n\n/**\n * @internal\n */\nexport const ParameterizedLink = forwardRef(function ParameterizedLink(\n  props: ParameterizedLinkProps,\n  ref: ForwardedRef<HTMLAnchorElement>,\n) {\n  const {routerPanesState: currentPanes, groupIndex, siblingIndex} = useContext(PaneRouterContext)\n  const {params, payload, ...rest} = props\n  const nextParams = useUnique(params)\n  const nextPayload = useUnique(payload)\n\n  const nextState = useMemo(() => {\n    const currentGroup = currentPanes[groupIndex]\n    const currentSibling = currentGroup[siblingIndex]\n\n    const nextSibling = {\n      ...currentSibling,\n      params: nextParams ?? currentSibling.params,\n      payload: nextPayload ?? currentSibling.payload,\n    }\n\n    const nextGroup = [\n      ...currentGroup.slice(0, siblingIndex),\n      nextSibling,\n      ...currentGroup.slice(siblingIndex + 1),\n    ]\n\n    const nextPanes = [\n      ...currentPanes.slice(0, groupIndex),\n      nextGroup,\n      ...currentPanes.slice(groupIndex + 1),\n    ]\n\n    return {panes: nextPanes}\n  }, [currentPanes, groupIndex, nextParams, nextPayload, siblingIndex])\n\n  return <StateLink ref={ref} {...rest} state={nextState} />\n})\n","import {toString as pathToString} from '@sanity/util/paths'\nimport {type ForwardedRef, forwardRef} from 'react'\n\nimport {ChildLink} from './ChildLink'\nimport {type ReferenceChildLinkProps} from './types'\n\nexport const ReferenceChildLink = forwardRef(function ReferenceChildLink(\n  {documentId, documentType, parentRefPath, children, template, ...rest}: ReferenceChildLinkProps,\n  ref: ForwardedRef<HTMLAnchorElement>,\n) {\n  return (\n    <ChildLink\n      {...rest}\n      ref={ref}\n      childId={documentId}\n      childPayload={template?.params}\n      childParameters={{\n        type: documentType,\n        parentRefPath: pathToString(parentRefPath),\n        ...(template && {template: template?.id}),\n      }}\n    >\n      {children}\n    </ChildLink>\n  )\n})\n","import {useContext} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\n\nimport {type PaneRouterContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function usePaneRouter(): PaneRouterContextValue {\n  return useContext(PaneRouterContext)\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {type ReactNode, useCallback} from 'react'\nimport {\n  type FIXME,\n  getPublishedId,\n  PreviewCard,\n  useDocumentPresence,\n  useDocumentPreviewStore,\n} from 'sanity'\n\nimport {PaneItemPreview} from '../paneItem/PaneItemPreview'\nimport {usePaneRouter} from '../paneRouter'\n\nconst EMPTY_ARRAY: [] = []\n\ninterface ReferencePreviewLinkProps {\n  onClick?: () => void\n  type: SchemaType & {icon?: any}\n  value: SanityDocument\n}\n\nexport function ReferencePreviewLink(props: ReferencePreviewLinkProps) {\n  const {onClick, type, value} = props\n  const publishedId = getPublishedId(value?._id)\n  const documentPresence = useDocumentPresence(publishedId)\n  const documentPreviewStore = useDocumentPreviewStore()\n  const {ReferenceChildLink} = usePaneRouter()\n\n  const Link = useCallback(\n    function LinkComponent(linkProps: {children: ReactNode}) {\n      return (\n        <ReferenceChildLink\n          documentId={value?._id}\n          documentType={type?.name}\n          parentRefPath={EMPTY_ARRAY}\n          {...linkProps}\n        />\n      )\n    },\n    [ReferenceChildLink, type?.name, value?._id],\n  )\n\n  return (\n    <PreviewCard __unstable_focusRing as={Link as FIXME} data-as=\"a\" onClick={onClick} radius={2}>\n      <PaneItemPreview\n        documentPreviewStore={documentPreviewStore}\n        icon={type?.icon}\n        layout=\"compact\"\n        presence={documentPresence?.length > 0 ? documentPresence : EMPTY_ARRAY}\n        schemaType={type}\n        value={value}\n      />\n    </PreviewCard>\n  )\n}\n","import {\n  ChevronDownIcon,\n  CopyIcon,\n  DocumentsIcon,\n  UnknownIcon,\n  WarningOutlineIcon,\n} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {SanityDefaultPreview, Translate, useSchema, useTranslation} from 'sanity'\n\nimport {Button} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {\n  ChevronWrapper,\n  CrossDatasetReferencesDetails,\n  CrossDatasetReferencesSummary,\n  DocumentIdFlex,\n  OtherReferenceCount,\n  Table,\n} from './ConfirmDeleteDialogBody.styles'\nimport {ReferencePreviewLink} from './ReferencePreviewLink'\nimport {type ReferringDocuments} from './useReferringDocuments'\n\ntype DeletionConfirmationDialogBodyProps = Required<ReferringDocuments> & {\n  documentTitle: React.ReactNode\n  action: 'unpublish' | 'delete'\n  onReferenceLinkClick?: () => void\n}\n\n/**\n * The inner part of the `ConfirmDeleteDialog`. This is ran when both the\n * `crossDatasetReferences` and `internalReferences` are loaded.\n */\nexport function ConfirmDeleteDialogBody({\n  crossDatasetReferences,\n  internalReferences,\n  documentTitle,\n  totalCount,\n  action,\n  datasetNames,\n  hasUnknownDatasetNames,\n  onReferenceLinkClick,\n}: DeletionConfirmationDialogBodyProps) {\n  const schema = useSchema()\n  const toast = useToast()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const renderPreviewItem = useCallback(\n    (item: any) => {\n      const type = schema.get(item._type)\n      if (type) {\n        return <ReferencePreviewLink type={type} value={item} onClick={onReferenceLinkClick} />\n      }\n\n      return (\n        // Padding added to match the ReferencePreviewLink styling\n        <Box padding={2}>\n          <SanityDefaultPreview\n            icon={UnknownIcon}\n            title={t('confirm-delete-dialog.preview-item.preview-unavailable.title')}\n            subtitle={t('confirm-delete-dialog.preview-item.preview-unavailable.subtitle', {\n              documentId: item._id,\n            })}\n            layout=\"default\"\n          />\n        </Box>\n      )\n    },\n    [schema, t, onReferenceLinkClick],\n  )\n\n  if (internalReferences?.totalCount === 0 && crossDatasetReferences?.totalCount === 0) {\n    return (\n      <Text as=\"p\" size={1}>\n        <Translate\n          t={t}\n          i18nKey=\"confirm-delete-dialog.confirmation.text\"\n          context={action}\n          components={{DocumentTitle: () => <strong>{documentTitle}</strong>}}\n        />\n      </Text>\n    )\n  }\n\n  // We do some extra checks to handle cases where you have unavailable dataset\n  // name(s) due to permissions, both alone and in combination with known datasets\n\n  // This normalizes one or more undefined dataset names to the catch-all `unavailable`\n  const normalizedDatasetNames = [\n    ...datasetNames,\n    ...(hasUnknownDatasetNames ? ['unavailable'] : []),\n  ]\n\n  const datasetSubtitle = t('confirm-delete-dialog.cdr-summary.subtitle', {\n    count: normalizedDatasetNames.length,\n    datasets: normalizedDatasetNames.join(', '),\n    context: hasUnknownDatasetNames && normalizedDatasetNames.length ? 'unavailable' : '',\n  })\n\n  return (\n    <Flex direction=\"column\" gap={4}>\n      <Card padding={3} radius={2} tone=\"caution\" flex=\"none\">\n        <Flex>\n          <Text aria-hidden=\"true\" size={1}>\n            <WarningOutlineIcon />\n          </Text>\n          <Box flex={1} marginLeft={3}>\n            <Text size={1}>\n              <Translate\n                i18nKey=\"confirm-delete-dialog.referring-document-count.text\"\n                components={{DocumentTitle: () => documentTitle}}\n                t={t}\n                values={{count: totalCount}}\n              />\n            </Text>\n          </Box>\n        </Flex>\n      </Card>\n      <Box flex=\"none\">\n        <Text size={1}>\n          <Translate\n            i18nKey=\"confirm-delete-dialog.referring-documents-descriptor.text\"\n            t={t}\n            context={action}\n            components={{DocumentTitle: () => documentTitle}}\n          />\n        </Text>\n      </Box>\n      <Card radius={2} shadow={1} flex=\"auto\" padding={2}>\n        <Flex direction=\"column\">\n          {internalReferences.totalCount > 0 && (\n            <Stack as=\"ul\" marginBottom={2} space={2} data-testid=\"internal-references\">\n              {internalReferences?.references.map((item) => (\n                <Box as=\"li\" key={item._id}>\n                  {renderPreviewItem(item)}\n                </Box>\n              ))}\n\n              {internalReferences.totalCount > internalReferences.references.length && (\n                <Box as=\"li\" padding={3}>\n                  <OtherReferenceCount {...internalReferences} />\n                </Box>\n              )}\n            </Stack>\n          )}\n\n          {crossDatasetReferences.totalCount > 0 && (\n            <CrossDatasetReferencesDetails\n              data-testid=\"cross-dataset-references\"\n              style={{\n                // only add the border if needed\n                borderTop:\n                  internalReferences.totalCount > 0\n                    ? '1px solid var(--card-shadow-outline-color)'\n                    : undefined,\n              }}\n            >\n              <CrossDatasetReferencesSummary>\n                <Card\n                  as=\"a\"\n                  marginTop={internalReferences.totalCount > 0 ? 2 : 0}\n                  radius={2}\n                  shadow={1}\n                  paddingY={1}\n                >\n                  <Flex align=\"center\" gap={3} paddingX={3} paddingY={1}>\n                    <Text size={1}>\n                      <DocumentsIcon />\n                    </Text>\n                    <Stack space={2}>\n                      <Text textOverflow=\"ellipsis\" size={1}>\n                        {t('confirm-delete-dialog.cdr-summary.title', {\n                          count: normalizedDatasetNames.length,\n                          documentCount: t('confirm-delete-dialog.cdr-summary.document-count', {\n                            count: crossDatasetReferences.totalCount,\n                          }),\n                        })}\n                      </Text>\n                      <Text title={datasetSubtitle} textOverflow=\"ellipsis\" size={1} muted>\n                        {datasetSubtitle}\n                      </Text>\n                    </Stack>\n                    <ChevronWrapper>\n                      <Text muted size={1}>\n                        <ChevronDownIcon />\n                      </Text>\n                    </ChevronWrapper>\n                  </Flex>\n                </Card>\n              </CrossDatasetReferencesSummary>\n\n              <Box overflow=\"auto\" paddingTop={2}>\n                <Table>\n                  <thead>\n                    <tr>\n                      <th>\n                        <Text muted size={1} style={{minWidth: '5rem'}} weight=\"medium\">\n                          {t('confirm-delete-dialog.cdr-table.project-id.label')}\n                        </Text>\n                      </th>\n                      <th>\n                        <Text muted size={1} weight=\"medium\">\n                          {t('confirm-delete-dialog.cdr-table.dataset.label')}\n                        </Text>\n                      </th>\n                      <th>\n                        <Text muted size={1} weight=\"medium\">\n                          {t('confirm-delete-dialog.cdr-table.document-id.label')}\n                        </Text>\n                      </th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {crossDatasetReferences.references\n                      .filter((reference): reference is Required<typeof reference> => {\n                        return 'projectId' in reference\n                      })\n                      .map(({projectId, datasetName, documentId}, index) => (\n                        // eslint-disable-next-line react/no-array-index-key\n                        <tr key={`${documentId}-${index}`}>\n                          <td>\n                            <Text size={1}>{projectId}</Text>\n                          </td>\n                          <td>\n                            <Text size={1}>{datasetName || 'unavailable'}</Text>\n                          </td>\n                          <td>\n                            <DocumentIdFlex align=\"center\" gap={2} justify=\"flex-end\">\n                              <Text textOverflow=\"ellipsis\" size={1}>\n                                {documentId || 'unavailable'}\n                              </Text>\n                              {documentId && (\n                                <Button\n                                  mode=\"bleed\"\n                                  icon={CopyIcon}\n                                  tooltipProps={{\n                                    content: t(\n                                      'confirm-delete-dialog.cdr-table.copy-id-button.tooltip',\n                                    ),\n                                  }}\n                                  // eslint-disable-next-line react/jsx-no-bind\n                                  onClick={() => {\n                                    navigator.clipboard.writeText(documentId).catch(() => {\n                                      toast.push({\n                                        status: 'error',\n                                        title: t(\n                                          'confirm-delete-dialog.cdr-table.id-copied-toast.title-failed',\n                                        ),\n                                      })\n                                    })\n                                  }}\n                                />\n                              )}\n                            </DocumentIdFlex>\n                          </td>\n                        </tr>\n                      ))}\n                  </tbody>\n                </Table>\n\n                <OtherReferenceCount {...crossDatasetReferences} />\n              </Box>\n            </CrossDatasetReferencesDetails>\n          )}\n        </Flex>\n      </Card>\n      <Box flex=\"none\">\n        <Text size={1}>\n          <Translate\n            i18nKey=\"confirm-delete-dialog.referential-integrity-disclaimer.text\"\n            t={t}\n            context={action}\n            components={{DocumentTitle: () => documentTitle}}\n          />\n        </Text>\n      </Box>\n    </Flex>\n  )\n}\n","import {type ClientError, type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {EMPTY, fromEvent, type Observable, of, timer} from 'rxjs'\nimport {\n  catchError,\n  distinctUntilChanged,\n  map,\n  shareReplay,\n  startWith,\n  switchMap,\n} from 'rxjs/operators'\nimport {\n  type AvailabilityResponse,\n  createHookFromObservableFactory,\n  DEFAULT_STUDIO_CLIENT_OPTIONS,\n  type DocumentStore,\n  getDraftId,\n  getPublishedId,\n  useClient,\n  useDocumentStore,\n} from 'sanity'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n  if (typeof e !== 'object') return false\n  if (!e) return false\n  return 'statusCode' in e && 'response' in e\n}\n\nconst POLL_INTERVAL = 5000\n\n// only fetches when the document is visible\nlet visiblePoll$: Observable<number>\nconst getVisiblePoll$ = () => {\n  if (!visiblePoll$) {\n    visiblePoll$ = fromEvent(document, 'visibilitychange').pipe(\n      // add empty emission to have this fire on creation\n      startWith(null),\n      map(() => document.visibilityState === 'visible'),\n      distinctUntilChanged(),\n      switchMap((visible) =>\n        visible\n          ? // using timer instead of interval since timer will emit on creation\n            timer(0, POLL_INTERVAL)\n          : EMPTY,\n      ),\n      shareReplay({refCount: true, bufferSize: 1}),\n    )\n  }\n  return visiblePoll$\n}\n\nexport type ReferringDocuments = {\n  isLoading: boolean\n  totalCount: number\n  projectIds: string[]\n  datasetNames: string[]\n  hasUnknownDatasetNames: boolean\n  internalReferences?: {\n    totalCount: number\n    references: Array<{_id: string; _type: string}>\n  }\n  crossDatasetReferences?: {\n    totalCount: number\n    references: Array<{\n      /**\n       * The project ID of the document that is currently referencing the subject\n       * document. Unlike `documentId` and `datasetName`, this should always be\n       * defined.\n       */\n      projectId: string\n      /**\n       * The ID of the document that is currently referencing the subject\n       * document. This will be omitted if there is no access to the current\n       * project and dataset pair (e.g. if no `sanity-project-token` were\n       * configured)\n       */\n      documentId?: string\n      /**\n       * The dataset name that is currently referencing the subject document.\n       * This will be omitted if there is no access to the current project and\n       * dataset pair (e.g. if no `sanity-project-token` were configured)\n       */\n      datasetName?: string\n    }>\n  }\n}\n\nfunction getDocumentExistence(\n  documentId: string,\n  {versionedClient}: {versionedClient: SanityClient},\n): Observable<string | undefined> {\n  const draftId = getDraftId(documentId)\n  const publishedId = getPublishedId(documentId)\n  const requestOptions = {\n    uri: versionedClient.getDataUrl('doc', `${draftId},${publishedId}`),\n    json: true,\n    query: {excludeContent: 'true'},\n    tag: 'use-referring-documents.document-existence',\n  }\n  return versionedClient.observable.request<AvailabilityResponse>(requestOptions).pipe(\n    map(({omitted}) => {\n      const nonExistant = omitted.filter((doc) => doc.reason === 'existence')\n      if (nonExistant.length === 2) {\n        // None of the documents exist\n        return undefined\n      }\n\n      if (nonExistant.length === 0) {\n        // Both exist, so use the published one\n        return publishedId\n      }\n\n      // If the draft does not exist, use the published ID, and vice versa\n      return nonExistant.some((doc) => doc.id === draftId) ? publishedId : draftId\n    }),\n  )\n}\n\n/**\n * fetches the cross-dataset references using the client observable.request\n * method (for that requests can be automatically cancelled)\n */\nfunction fetchCrossDatasetReferences(\n  documentId: string,\n  context: {versionedClient: SanityClient},\n): Observable<ReferringDocuments['crossDatasetReferences']> {\n  const {versionedClient} = context\n\n  return getVisiblePoll$().pipe(\n    switchMap(() => getDocumentExistence(documentId, context)),\n    switchMap((checkDocumentId) => {\n      if (!checkDocumentId) {\n        return of({totalCount: 0, references: []})\n      }\n\n      const currentDataset = versionedClient.config().dataset\n\n      return versionedClient.observable\n        .request({\n          url: `/data/references/${currentDataset}/documents/${checkDocumentId}/to?excludeInternalReferences=true&excludePaths=true`,\n          tag: 'use-referring-documents.external',\n        })\n        .pipe(\n          catchError((e) => {\n            // it's possible that referencing document doesn't exist yet so the\n            // API will return a 404. In those cases, we want to catch and return\n            // a response with no references\n            if (isClientError(e) && e.statusCode === 404) {\n              return of({totalCount: 0, references: []})\n            }\n\n            throw e\n          }),\n        )\n    }),\n  )\n}\n\nconst useInternalReferences = createHookFromObservableFactory(\n  ([documentId, documentStore]: [string, DocumentStore]) => {\n    const referencesClause = '*[references($documentId)][0...100]{_id,_type}'\n    const totalClause = 'count(*[references($documentId)])'\n    const fetchQuery = `{\"references\":${referencesClause},\"totalCount\":${totalClause}}`\n    const listenQuery = '*[references($documentId)]'\n\n    return documentStore.listenQuery(\n      {fetch: fetchQuery, listen: listenQuery},\n      {documentId},\n      {tag: 'use-referring-documents', transitions: ['appear', 'disappear'], throttleTime: 5000},\n    ) as Observable<ReferringDocuments['internalReferences']>\n  },\n)\n\nconst useCrossDatasetReferences = createHookFromObservableFactory(\n  ([documentId, versionedClient]: [string, SanityClient]) => {\n    // (documentId: string, versionedClient: SanityClient) => {\n    return getVisiblePoll$().pipe(\n      switchMap(() =>\n        fetchCrossDatasetReferences(documentId, {\n          versionedClient,\n        }),\n      ),\n    )\n  },\n)\n\nexport function useReferringDocuments(documentId: string): ReferringDocuments {\n  const versionedClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n  const documentStore = useDocumentStore()\n  const publishedId = getPublishedId(documentId)\n\n  const [internalReferences, isInternalReferencesLoading] = useInternalReferences(\n    useMemo(() => [publishedId, documentStore], [documentStore, publishedId]),\n  )\n\n  const [crossDatasetReferences, isCrossDatasetReferencesLoading] = useCrossDatasetReferences(\n    useMemo(() => [publishedId, versionedClient], [publishedId, versionedClient]),\n  )\n\n  const projectIds = useMemo(() => {\n    return Array.from(\n      new Set(\n        crossDatasetReferences?.references\n          .map((crossDatasetReference) => crossDatasetReference.projectId)\n          .filter(Boolean),\n      ),\n    ).sort()\n  }, [crossDatasetReferences?.references])\n\n  const datasetNames = useMemo(() => {\n    return Array.from(\n      new Set<string>(\n        crossDatasetReferences?.references\n          // .filter((name) => typeof name === 'string')\n          .map((crossDatasetReference) => crossDatasetReference?.datasetName || '')\n          .filter((datasetName) => Boolean(datasetName) && datasetName !== ''),\n      ),\n    ).sort()\n  }, [crossDatasetReferences?.references])\n\n  const hasUnknownDatasetNames = useMemo(() => {\n    return Boolean(\n      crossDatasetReferences?.references.some(\n        (crossDatasetReference) => typeof crossDatasetReference.datasetName !== 'string',\n      ),\n    )\n  }, [crossDatasetReferences?.references])\n\n  return {\n    totalCount: (internalReferences?.totalCount || 0) + (crossDatasetReferences?.totalCount || 0),\n    projectIds,\n    datasetNames,\n    hasUnknownDatasetNames,\n    internalReferences,\n    crossDatasetReferences,\n    isLoading: isInternalReferencesLoading || isCrossDatasetReferencesLoading,\n  }\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {DocTitle} from '../DocTitle'\nimport {ConfirmDeleteDialogBody} from './ConfirmDeleteDialogBody'\nimport {useReferringDocuments} from './useReferringDocuments'\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n  box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n  align: 'center',\n  direction: 'column',\n  justify: 'center',\n})`\n  height: 110px;\n`\n\n/** @internal */\nexport interface ConfirmDeleteDialogProps {\n  /**\n   * Incoming document ID used to find other referencing documents. This\n   * field respects draft IDs (e.g. if you pass in a published ID when one\n   * doesn't exist the document title may not show up).\n   */\n  id: string\n  /**\n   * The schema typename of the incoming document\n   */\n  type: string\n  /**\n   * The name of the action being done. (e.g. the `'unpublish'` action requires\n   * the same document deletion confirmation).\n   */\n  action?: 'delete' | 'unpublish'\n  onCancel: () => void\n  onConfirm: () => void\n}\n\n/**\n * A confirmation dialog used to prevent unwanted document deletes. Loads all\n * the referencing internal and cross-data references prior to showing the\n * delete button.\n *\n * @internal\n */\nexport function ConfirmDeleteDialog({\n  id,\n  type,\n  action = 'delete',\n  onCancel,\n  onConfirm,\n}: ConfirmDeleteDialogProps) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const dialogId = `deletion-confirmation-${useId()}`\n  const {\n    internalReferences,\n    crossDatasetReferences,\n    isLoading,\n    totalCount,\n    projectIds,\n    datasetNames,\n    hasUnknownDatasetNames,\n  } = useReferringDocuments(id)\n  const documentTitle = <DocTitle document={useMemo(() => ({_id: id, _type: type}), [id, type])} />\n  const showConfirmButton = !isLoading\n\n  return (\n    <Dialog\n      width={1}\n      id={dialogId}\n      header={t('confirm-delete-dialog.header.text', {context: action})}\n      footer={{\n        cancelButton: {\n          onClick: onCancel,\n          text: t('confirm-delete-dialog.cancel-button.text'),\n        },\n        confirmButton: showConfirmButton\n          ? {\n              text:\n                totalCount > 0\n                  ? t('confirm-delete-dialog.confirm-anyway-button.text', {context: action})\n                  : t('confirm-delete-dialog.confirm-button.text', {context: action}),\n              onClick: onConfirm,\n            }\n          : undefined,\n      }}\n      onClose={onCancel}\n      onClickOutside={onCancel}\n    >\n      <DialogBody>\n        {crossDatasetReferences && internalReferences && !isLoading ? (\n          <ConfirmDeleteDialogBody\n            crossDatasetReferences={crossDatasetReferences}\n            internalReferences={internalReferences}\n            documentTitle={documentTitle}\n            isLoading={isLoading}\n            totalCount={totalCount}\n            action={action}\n            projectIds={projectIds}\n            datasetNames={datasetNames}\n            hasUnknownDatasetNames={hasUnknownDatasetNames}\n            onReferenceLinkClick={onCancel}\n          />\n        ) : (\n          <LoadingContainer data-testid=\"loading-container\">\n            <LoadingBlock showText title={t('confirm-delete-dialog.loading.text')} />\n          </LoadingContainer>\n        )}\n      </DialogBody>\n    </Dialog>\n  )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {type ComponentProps, useCallback, useId, useState} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Dialog, ErrorBoundary} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {ConfirmDeleteDialog, type ConfirmDeleteDialogProps} from './ConfirmDeleteDialog'\n\nexport type {ConfirmDeleteDialogProps}\n\ntype ArgType<T> = T extends (arg: infer U) => unknown ? U : never\ntype ErrorInfo = ArgType<ComponentProps<typeof ErrorBoundary>['onCatch']>\n\n/** @internal */\nfunction ConfirmDeleteDialogContainer(props: ConfirmDeleteDialogProps) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const id = useId()\n  const [error, setError] = useState<ErrorInfo | null>(null)\n  const handleRetry = useCallback(() => setError(null), [])\n\n  return error ? (\n    <Dialog\n      id={`dialog-error-${id}`}\n      data-testid=\"confirm-delete-error-dialog\"\n      header={t('confirm-delete-dialog.error.title.text')}\n      footer={{\n        confirmButton: {\n          text: t('confirm-delete-dialog.error.retry-button.text'),\n          onClick: handleRetry,\n          tone: 'default',\n        },\n      }}\n      onClose={props.onCancel}\n    >\n      <Box padding={4}>\n        <Text size={1}>{t('confirm-delete-dialog.error.message.text')}</Text>\n      </Box>\n    </Dialog>\n  ) : (\n    <ErrorBoundary onCatch={setError}>\n      <ConfirmDeleteDialog {...props} />\n    </ErrorBoundary>\n  )\n}\n\nexport {ConfirmDeleteDialogContainer as ConfirmDeleteDialog}\n","import {useEffect, useState} from 'react'\n\nexport function Delay({\n  children,\n  ms = 0,\n}: {\n  children?: React.JSX.Element | (() => React.JSX.Element)\n  ms?: number\n}): React.JSX.Element {\n  const [ready, setReady] = useState(ms <= 0)\n\n  useEffect(() => {\n    if (ms <= 0) {\n      return undefined\n    }\n\n    const timeoutId = setTimeout(() => setReady(true), ms)\n\n    return () => {\n      clearTimeout(timeoutId)\n    }\n  }, [ms])\n\n  if (!ready || !children) {\n    return <></>\n  }\n\n  return typeof children === 'function' ? children() : children\n}\n","/**\n * @internal\n */\nexport const PANE_DEBUG = false\n\n/**\n * @internal\n */\nexport const PANE_COLLAPSED_WIDTH = 51\n\n/**\n * @internal\n */\nexport const PANE_DEFAULT_MIN_WIDTH = PANE_COLLAPSED_WIDTH * 4\n","import {Layer} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {usePaneLayout} from './usePaneLayout'\n\nconst Root = styled(Layer)`\n  position: relative;\n  width: 1px;\n  min-width: 1px;\n\n  &:before {\n    content: '';\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    width: 1px;\n    background-color: var(--card-border-color);\n  }\n\n  &:not([data-disabled]) {\n    cursor: ew-resize;\n    width: 9px;\n    min-width: 9px;\n    margin: 0 -4px;\n\n    &:before {\n      left: 4px;\n    }\n\n    &:after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 9px;\n      bottom: 0;\n      background-color: var(--card-border-color);\n      opacity: 0;\n      transition: opacity 150ms;\n    }\n\n    &[data-dragging]:after,\n    &:hover:after {\n      opacity: 0.2;\n    }\n  }\n`\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneDivider({\n  disabled,\n  element,\n}: {\n  disabled?: boolean\n  element: HTMLElement | null\n}) {\n  const {resize} = usePaneLayout()\n  const [dragging, setDragging] = useState(false)\n\n  const handleMouseDown = useCallback(\n    (event: any) => {\n      if (!element) return\n\n      setDragging(true)\n\n      event.preventDefault()\n\n      const startX = event.pageX\n\n      resize('start', element, 0)\n\n      const handleMouseMove = (e: MouseEvent) => {\n        e.preventDefault()\n\n        const deltaX = e.pageX - startX\n\n        resize('move', element, deltaX)\n      }\n\n      const handleMouseUp = (e: MouseEvent) => {\n        e.preventDefault()\n\n        setDragging(false)\n\n        window.removeEventListener('mousemove', handleMouseMove)\n        window.removeEventListener('mouseup', handleMouseUp)\n\n        resize('end', element, 0)\n      }\n\n      window.addEventListener('mousemove', handleMouseMove)\n      window.addEventListener('mouseup', handleMouseUp)\n    },\n    [element, resize],\n  )\n\n  return (\n    <Root\n      data-disabled={disabled ? '' : undefined}\n      data-dragging={dragging ? '' : undefined}\n      onMouseDown={handleMouseDown}\n    />\n  )\n}\n","import {BoundaryElementProvider, Card, type CardProps, Code, Flex} from '@sanity/ui'\nimport {\n  type ForwardedRef,\n  forwardRef,\n  type HTMLProps,\n  type ReactNode,\n  useCallback,\n  useImperativeHandle,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport {IsLastPaneProvider, LegacyLayerProvider} from 'sanity'\nimport {PaneContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {PANE_COLLAPSED_WIDTH, PANE_DEBUG, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {PaneDivider} from './PaneDivider'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneProps {\n  children?: ReactNode\n  currentMinWidth?: number\n  currentMaxWidth?: number\n  flex?: number\n  id: string\n  minWidth?: number\n  maxWidth?: number\n  selected?: boolean\n}\n\nconst Root = styled(Card)`\n  outline: none;\n\n  // NOTE: This will render a border to the right side of each pane\n  // without taking up physical space.\n  box-shadow: 1px 0 0 var(--card-border-color);\n`\n\n/**\n * @hidden\n * @internal\n */\n// eslint-disable-next-line complexity\nexport const Pane = forwardRef(function Pane(\n  props: PaneProps &\n    Omit<CardProps, 'as' | 'overflow'> &\n    Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'hidden' | 'id' | 'style'>,\n  forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n  const {\n    children,\n    currentMinWidth: currentMinWidthProp,\n    currentMaxWidth: currentMaxWidthProp,\n    flex: flexProp = 1,\n    id,\n    minWidth: minWidthProp,\n    maxWidth: maxWidthProp,\n    selected = false,\n    ...restProps\n  } = props\n  const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n  const {\n    collapse,\n    collapsed: layoutCollapsed,\n    expand,\n    expandedElement,\n    mount,\n    panes,\n  } = usePaneLayout()\n  const pane = panes.find((p) => p.element === rootElement)\n  const paneIndex = pane && panes.indexOf(pane)\n  const nextPane = typeof paneIndex === 'number' ? panes[paneIndex + 1] : undefined\n  const isLast = paneIndex === panes.length - 1\n  const expanded = expandedElement === rootElement\n  const collapsed = layoutCollapsed ? false : pane?.collapsed || false\n  const nextCollapsed = nextPane?.collapsed || false\n  const ref = useRef<HTMLDivElement | null>(null)\n  const flex = pane?.flex ?? flexProp\n  const currentMinWidth = pane?.currentMinWidth ?? currentMinWidthProp\n  const currentMaxWidth = pane?.currentMaxWidth ?? currentMaxWidthProp\n\n  // Forward ref to parent\n  useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n  const setRef = useCallback((refValue: HTMLDivElement | null) => {\n    setRootElement(refValue)\n    ref.current = refValue\n  }, [])\n\n  useLayoutEffect(() => {\n    if (!rootElement) return undefined\n    return mount(rootElement, {\n      currentMinWidth: currentMinWidthProp,\n      currentMaxWidth: currentMaxWidthProp,\n      flex: flexProp,\n      id,\n      minWidth: minWidthProp,\n      maxWidth: maxWidthProp,\n    })\n  }, [\n    currentMinWidthProp,\n    currentMaxWidthProp,\n    flexProp,\n    id,\n    minWidthProp,\n    maxWidthProp,\n    mount,\n    rootElement,\n  ])\n\n  const handleCollapse = useCallback(() => {\n    if (!rootElement) return\n    collapse(rootElement)\n  }, [collapse, rootElement])\n\n  const handleExpand = useCallback(() => {\n    if (!rootElement) return\n    expand(rootElement)\n  }, [expand, rootElement])\n\n  const contextValue = useMemo(\n    () => ({\n      collapse: handleCollapse,\n      collapsed: layoutCollapsed ? false : collapsed,\n      expand: handleExpand,\n      index: paneIndex,\n      isLast,\n      rootElement,\n    }),\n    [collapsed, handleCollapse, handleExpand, isLast, layoutCollapsed, paneIndex, rootElement],\n  )\n\n  const minWidth = useMemo(() => {\n    if (layoutCollapsed) {\n      return undefined\n    }\n\n    if (collapsed) return PANE_COLLAPSED_WIDTH\n\n    if (currentMinWidth === 0) {\n      return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n    }\n\n    if (isLast) {\n      return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n    }\n\n    return currentMinWidth || minWidthProp || PANE_DEFAULT_MIN_WIDTH\n  }, [collapsed, currentMinWidth, isLast, layoutCollapsed, minWidthProp])\n\n  const maxWidth = useMemo(() => {\n    if (collapsed) return PANE_COLLAPSED_WIDTH\n\n    if (layoutCollapsed && isLast) {\n      return undefined\n    }\n\n    if (isLast) {\n      if (maxWidthProp) {\n        return currentMaxWidth ?? maxWidthProp\n      }\n\n      return undefined\n    }\n\n    return currentMaxWidth ?? maxWidthProp\n  }, [collapsed, currentMaxWidth, isLast, layoutCollapsed, maxWidthProp])\n\n  const hidden = layoutCollapsed && !isLast\n\n  const divider = useMemo(\n    () =>\n      !isLast &&\n      !layoutCollapsed && (\n        <LegacyLayerProvider zOffset=\"paneResizer\">\n          <PaneDivider disabled={collapsed || nextCollapsed} element={rootElement} />\n        </LegacyLayerProvider>\n      ),\n    [collapsed, isLast, layoutCollapsed, nextCollapsed, rootElement],\n  )\n\n  const style = useMemo(\n    () => ({\n      flex,\n      minWidth,\n      maxWidth: maxWidth === Infinity ? undefined : maxWidth,\n    }),\n    [flex, minWidth, maxWidth],\n  )\n\n  return (\n    <>\n      <LegacyLayerProvider zOffset=\"pane\">\n        <PaneContext.Provider value={contextValue}>\n          <IsLastPaneProvider isLastPane={isLast}>\n            <Root\n              data-testid=\"pane\"\n              data-ui=\"Pane\"\n              tone=\"inherit\"\n              hidden={hidden}\n              id={id}\n              overflow={layoutCollapsed ? undefined : 'hidden'}\n              {...restProps}\n              data-pane-collapsed={collapsed ? '' : undefined}\n              data-pane-index={paneIndex}\n              data-pane-selected={selected ? '' : undefined}\n              ref={setRef}\n              style={style}\n            >\n              {PANE_DEBUG && (\n                <Card padding={4} tone={expanded ? 'primary' : 'caution'}>\n                  <Code size={1}>\n                    {[\n                      `#${paneIndex}`,\n                      `collapsed=${collapsed}`,\n                      `currentMinWidth=${currentMinWidth}`,\n                      `currentMaxWidth=${currentMaxWidth}`,\n                      `flex=${flex}`,\n                      `minWidth=${minWidth}`,\n                      `maxWidth=${maxWidth}`,\n                    ].join('\\n')}\n                  </Code>\n                </Card>\n              )}\n\n              <BoundaryElementProvider element={rootElement}>\n                {!hidden && (\n                  <Flex direction=\"column\" height=\"fill\">\n                    {children}\n                  </Flex>\n                )}\n              </BoundaryElementProvider>\n            </Root>\n          </IsLastPaneProvider>\n        </PaneContext.Provider>\n      </LegacyLayerProvider>\n\n      {divider}\n    </>\n  )\n})\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n  position: relative;\n  outline: none;\n`\n\nRoot.displayName = 'PaneContent__root'\n","import {useContext} from 'react'\nimport {PaneContext} from 'sanity/_singletons'\n\nimport {type PaneContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePane(): PaneContextValue {\n  const pane = useContext(PaneContext)\n\n  if (!pane) {\n    throw new Error('Pane: missing context value')\n  }\n\n  return pane\n}\n","import {type BoxOverflow} from '@sanity/ui'\nimport {type ElementType, type ForwardedRef, forwardRef, type HTMLProps} from 'react'\n\nimport {Root} from './PaneContent.styles'\nimport {usePane} from './usePane'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneContentProps {\n  as?: ElementType | keyof React.JSX.IntrinsicElements\n  overflow?: BoxOverflow\n  padding?: number | number[]\n}\n\n/**\n * @hidden\n * @internal\n */\nexport const PaneContent = forwardRef(function PaneContent(\n  props: PaneContentProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n  ref: ForwardedRef<HTMLDivElement>,\n) {\n  const {as, children, overflow, padding, ...restProps} = props\n  const {collapsed} = usePane()\n  const {collapsed: layoutCollapsed} = usePaneLayout()\n\n  return (\n    <Root\n      data-testid=\"pane-content\"\n      forwardedAs={as}\n      {...restProps}\n      flex={1}\n      hidden={collapsed}\n      overflow={layoutCollapsed ? undefined : overflow}\n      padding={padding}\n      ref={ref}\n      tone=\"inherit\"\n    >\n      {children}\n    </Root>\n  )\n})\n","/**\n * Remove the spaces and lower case the string\n *\n * @param str - string to remove the spaces and lower case\n * @returns str with no spaces and lower case\n */\nexport function toLowerCaseNoSpaces(str: string | undefined): string {\n  if (!str) return ''\n  return str.toLocaleLowerCase().replaceAll(' ', '')\n}\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {MenuDivider, Text} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {TooltipOfDisabled, useGetI18nText, useI18nText} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {MenuGroup, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {toLowerCaseNoSpaces} from '../../util/toLowerCaseNoSpaces'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\nconst MENU_GROUP_POPOVER_PROPS: PopoverProps = {\n  constrainSize: true,\n  placement: 'left-start',\n  portal: true,\n}\n\nexport function PaneMenuButtonItem(props: {\n  disabled?: boolean\n  isAfterGroup: boolean\n  node: _PaneMenuNode\n}) {\n  const {disabled, isAfterGroup, node} = props\n  const getI18nText = useGetI18nText('i18n' in node ? node : undefined)\n\n  if (node.type === 'divider') {\n    return <MenuDivider />\n  }\n\n  const {title} = getI18nText(node)\n\n  if (node.type === 'group') {\n    if (node.children.length === 0) {\n      return null\n    }\n\n    if (node.expanded) {\n      return (\n        <>\n          {isAfterGroup && <MenuDivider />}\n          {node.children.map((child, childIndex) => (\n            <PaneMenuButtonItem\n              disabled={disabled || Boolean(node.disabled)}\n              isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n              key={child.key}\n              node={child}\n            />\n          ))}\n        </>\n      )\n    }\n\n    return (\n      <>\n        {isAfterGroup && <MenuDivider />}\n        <MenuGroup\n          disabled={disabled}\n          icon={node.icon}\n          popover={MENU_GROUP_POPOVER_PROPS}\n          text={title}\n        >\n          {node.children.map((child, childIndex) => (\n            <PaneMenuButtonItem\n              disabled={disabled || Boolean(node.disabled)}\n              isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n              key={child.key}\n              node={child}\n            />\n          ))}\n        </MenuGroup>\n      </>\n    )\n  }\n\n  return (\n    <>\n      {isAfterGroup && <MenuDivider />}\n      <PaneContextMenuItemResolver disabled={disabled} node={node} />\n    </>\n  )\n}\n\nfunction PaneContextMenuItemResolver(props: {disabled?: boolean; node: _PaneMenuItem}) {\n  const {node} = props\n\n  if (node.intent) {\n    return <PaneContextIntentMenuItem {...props} intent={node.intent} />\n  }\n\n  return <PaneContextMenuItem {...props} />\n}\n\nfunction PaneContextMenuItem(props: {disabled?: boolean; node: _PaneMenuItem}) {\n  const {disabled, node} = props\n  const tooltipContent = typeof node.disabled === 'object' && (\n    <Text size={1}>{node.disabled.reason}</Text>\n  )\n  const {title} = useI18nText(node)\n\n  return (\n    <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n      <MenuItem\n        disabled={disabled || Boolean(node.disabled)}\n        hotkeys={node.hotkey?.split('+')}\n        icon={node.icon}\n        iconRight={node.iconRight || (node.selected && CheckmarkIcon)}\n        // eslint-disable-next-line react/jsx-handler-names\n        onClick={node.onAction}\n        pressed={node.selected}\n        text={title}\n        tone={node.tone}\n        data-testid={`action-${toLowerCaseNoSpaces(node.title)}`}\n      />\n    </TooltipOfDisabled>\n  )\n}\n\nfunction PaneContextIntentMenuItem(props: {\n  disabled?: boolean\n  intent: Intent\n  node: _PaneMenuItem\n}) {\n  const {disabled, intent, node} = props\n  const tooltipContent = typeof node.disabled === 'object' && (\n    <Text size={1}>{node.disabled.reason}</Text>\n  )\n  const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n\n  const handleClick = useCallback(\n    (event: MouseEvent<HTMLDivElement>) => {\n      intentLink.onClick(event)\n      node.onAction()\n    },\n    [intentLink, node],\n  )\n\n  const {title} = useI18nText(node)\n\n  return (\n    <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n      <MenuItem\n        as=\"a\"\n        disabled={disabled || Boolean(node.disabled)}\n        hotkeys={node.hotkey?.split('+')}\n        href={intentLink.href}\n        icon={node.icon}\n        iconRight={node.selected ? CheckmarkIcon : undefined}\n        onClick={handleClick}\n        pressed={node.selected}\n        text={title}\n        tone={node.tone}\n      />\n    </TooltipOfDisabled>\n  )\n}\n","import {Menu, MenuDivider} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {ContextMenuButton} from 'sanity'\n\nimport {MenuButton, type PopoverProps} from '../../../ui-components'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\ninterface PaneContextMenuButtonProps {\n  nodes: _PaneMenuNode[]\n  actionsNodes?: ReactNode\n}\n\nconst CONTEXT_MENU_POPOVER_PROPS: PopoverProps = {\n  constrainSize: true,\n  placement: 'bottom',\n  portal: true,\n}\n\nfunction nodesHasTone(nodes: _PaneMenuNode[], tone: NonNullable<_PaneMenuItem['tone']>): boolean {\n  return nodes.some((node) => {\n    return (\n      (node.type === 'item' && node.tone === tone) ||\n      (node.type === 'group' && nodesHasTone(node.children, tone))\n    )\n  })\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneContextMenuButton(props: PaneContextMenuButtonProps) {\n  const {nodes, actionsNodes} = props\n  const id = useId()\n\n  const hasCritical = nodesHasTone(nodes, 'critical')\n  const hasCaution = nodesHasTone(nodes, 'caution')\n\n  return (\n    <MenuButton\n      button={\n        <ContextMenuButton\n          // eslint-disable-next-line no-nested-ternary\n          tone={hasCritical ? 'critical' : hasCaution ? 'caution' : undefined}\n          data-testid=\"pane-context-menu-button\"\n        />\n      }\n      id={id}\n      menu={\n        <Menu>\n          {actionsNodes && (\n            <>\n              {actionsNodes}\n              <MenuDivider />\n            </>\n          )}\n          {nodes.map((node, nodeIndex) => {\n            const isAfterGroup = nodes[nodeIndex - 1]?.type === 'group'\n            return <PaneMenuButtonItem isAfterGroup={isAfterGroup} key={node.key} node={node} />\n          })}\n        </Menu>\n      }\n      popover={CONTEXT_MENU_POPOVER_PROPS}\n    />\n  )\n}\n","import {Card, Layer} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Layer)`\n  position: sticky;\n  bottom: 0;\n`\n\nexport const RootCard = styled(Card)`\n  padding-bottom: env(safe-area-inset-bottom);\n`\n","import {Box} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Root, RootCard} from './PaneFooter.styles'\nimport {usePane} from './usePane'\n\ninterface PaneFooterProps {\n  children?: ReactNode\n  padding?: number | number[]\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneFooter = forwardRef(function PaneFooter(\n  props: PaneFooterProps,\n  ref: ForwardedRef<HTMLDivElement>,\n) {\n  const {children, padding} = props\n  const {collapsed} = usePane()\n\n  return (\n    <LegacyLayerProvider zOffset=\"paneFooter\">\n      <Root data-testid=\"pane-footer\" hidden={collapsed} ref={ref}>\n        <RootCard tone=\"inherit\">\n          <Box padding={padding}>{children}</Box>\n        </RootCard>\n      </Root>\n    </LegacyLayerProvider>\n  )\n})\n","import {Card, Flex, Layer, Text, TextSkeleton, type Theme} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {css, styled} from 'styled-components'\n\ninterface RootProps {\n  $border?: boolean\n}\n\nexport const Root = styled(Layer)<RootProps>(({$border}) => {\n  return css`\n    line-height: 0;\n    position: sticky;\n    top: 0;\n\n    &:not([data-collapsed]):after {\n      content: '';\n      display: block;\n      position: absolute;\n      left: 0;\n      right: 0;\n      bottom: -1px;\n      border-bottom: 1px solid ${$border ? 'var(--card-border-color)' : 'transparent'};\n      opacity: 1;\n    }\n  `\n})\n\nexport const Layout = styled(Flex)`\n  transform-origin: calc(51px / 2);\n\n  [data-collapsed] > div > & {\n    transform: rotate(90deg);\n  }\n`\n\nexport const TitleCard = styled(Card)(({theme}: {theme: Theme}) => {\n  const {fg, bg} = theme.sanity.color.card.enabled\n\n  // Disable color updates on hover\n  return css`\n    background-color: ${bg};\n\n    [data-ui='Text'] {\n      color: ${fg};\n    }\n  `\n})\n\nexport const TitleTextSkeleton = styled(TextSkeleton)`\n  width: 66%;\n  max-width: 175px;\n`\n\nexport const TitleText = styled(Text)`\n  cursor: default;\n  outline: none;\n`\n","import {Box, Card, Flex, LayerProvider, useElementRect} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode, useCallback, useMemo} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Layout, Root, TitleCard, TitleText, TitleTextSkeleton} from './PaneHeader.styles'\nimport {usePane} from './usePane'\n\nexport type TabsType = 'default' | 'dropdown'\n\n/**\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneHeaderProps {\n  actions?: ReactNode\n  backButton?: ReactNode\n  border?: boolean\n  contentAfter?: ReactNode\n  loading?: boolean\n  subActions?: ReactNode\n  tabIndex?: number\n  tabs?: ReactNode\n  title: ReactNode\n  appendTitle?: ReactNode\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneHeader = forwardRef(function PaneHeader(\n  props: PaneHeaderProps,\n  ref: ForwardedRef<HTMLDivElement>,\n) {\n  const {\n    actions,\n    backButton,\n    border,\n    contentAfter,\n    loading,\n    subActions,\n    tabs,\n    tabIndex,\n    title,\n    appendTitle,\n  } = props\n  const {collapse, collapsed, expand, rootElement: paneElement} = usePane()\n  const paneRect = useElementRect(paneElement || null)\n\n  const layoutStyle = useMemo(\n    () => ({\n      width: collapsed ? paneRect?.height || window.innerHeight : undefined,\n    }),\n    [collapsed, paneRect],\n  )\n\n  const handleTitleClick = useCallback(() => {\n    if (collapsed) return\n    collapse()\n  }, [collapse, collapsed])\n\n  const handleLayoutClick = useCallback(() => {\n    if (!collapsed) return\n    expand()\n  }, [collapsed, expand])\n\n  const showTabsOrSubActions = Boolean(!collapsed && (tabs || subActions))\n\n  return (\n    <LayerProvider zOffset={100}>\n      <Root\n        $border={border}\n        data-collapsed={collapsed ? '' : undefined}\n        data-testid=\"pane-header\"\n        ref={ref}\n      >\n        <LegacyLayerProvider zOffset=\"paneHeader\">\n          <Card data-collapsed={collapsed ? '' : undefined} tone=\"inherit\">\n            <Layout\n              direction=\"column\"\n              gap={3}\n              onClick={handleLayoutClick}\n              padding={3}\n              sizing=\"border\"\n              style={layoutStyle}\n            >\n              <Flex align=\"flex-start\" gap={3}>\n                {backButton && <Box flex=\"none\">{backButton}</Box>}\n\n                <TitleCard\n                  __unstable_focusRing\n                  flex={1}\n                  onClick={handleTitleClick}\n                  paddingLeft={backButton ? 1 : 2}\n                  padding={2}\n                  tabIndex={tabIndex}\n                >\n                  {loading && (\n                    <Box>\n                      <TitleTextSkeleton animated radius={1} size={1} />\n                    </Box>\n                  )}\n                  {!loading && (\n                    <Flex align=\"center\" gap={1}>\n                      <TitleText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n                        {title}\n                      </TitleText>\n                      {appendTitle}\n                    </Flex>\n                  )}\n                </TitleCard>\n\n                {actions && (\n                  <Box hidden={collapsed}>\n                    <LegacyLayerProvider zOffset=\"paneHeader\">{actions}</LegacyLayerProvider>\n                  </Box>\n                )}\n              </Flex>\n\n              {showTabsOrSubActions && (\n                <Flex align=\"center\" hidden={collapsed} overflow=\"auto\">\n                  <Box flex={1} marginRight={subActions ? 3 : 0}>\n                    {tabs}\n                  </Box>\n\n                  {subActions}\n                </Flex>\n              )}\n            </Layout>\n\n            {!collapsed && contentAfter}\n          </Card>\n        </LegacyLayerProvider>\n      </Root>\n    </LayerProvider>\n  )\n})\n","import {UnknownIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useId} from 'react'\nimport {StatusButton, useI18nText, useTranslation} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {Button, MenuButton} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuGroup, type _PaneMenuItem} from './types'\n\nfunction getDisabledReason(node: _PaneMenuItem) {\n  if (!node.disabled) {\n    return {disabledReason: undefined, ariaLabel: undefined, isDisabled: false}\n  }\n\n  /**\n   * This component supports receiving a `reason: string | react.ReactNode`.\n   * We are casting it as string, to avoid the ts error, as content will be rendered into the tooltip which only accepts string, but it won't crash if it's a ReactNode.\n   * For the aria label, we want to check if it's actually a string, to avoid generating an aria-label with the value `[object Object]`.\n   */\n  const disabledReason =\n    typeof node.disabled === 'object' ? (node.disabled.reason as string) : undefined\n  const ariaLabel =\n    typeof node.disabled === 'object' && typeof node.disabled?.reason === 'string'\n      ? node.disabled.reason\n      : 'This is disabled'\n\n  return {disabledReason, ariaLabel, isDisabled: Boolean(node.disabled)}\n}\nexport interface PaneHeaderActionButtonProps {\n  node: _PaneMenuItem | _PaneMenuGroup\n}\n\nexport function PaneHeaderActionButton(props: PaneHeaderActionButtonProps) {\n  const {node} = props\n\n  if (node.type === 'item') {\n    return <PaneHeaderMenuItemActionButton node={node} />\n  }\n\n  if (node.type === 'group') {\n    return <PaneHeaderMenuGroupActionButton node={node} />\n  }\n\n  console.warn('unknown menu node (expected `type: \"item\" | \"group\"`):', node)\n\n  return null\n}\n\nexport interface PaneHeaderMenuItemActionButtonProps {\n  node: _PaneMenuItem\n}\n\nexport function PaneHeaderMenuItemActionButton(props: PaneHeaderMenuItemActionButtonProps) {\n  const {node} = props\n  const {title} = useI18nText(node)\n  const {t} = useTranslation()\n\n  if (node.intent) {\n    return <PaneHeaderActionIntentButton {...props} intent={node.intent} />\n  }\n\n  const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n  return (\n    <StatusButton\n      disabled={isDisabled}\n      icon={node.icon}\n      // eslint-disable-next-line react/jsx-handler-names\n      onClick={node.onAction}\n      selected={node.selected}\n      tone={node.tone}\n      aria-label={ariaLabel || title || t('status-button.aria-label')}\n      tooltipProps={{\n        hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n        content: isDisabled ? disabledReason : title,\n      }}\n    />\n  )\n}\n\nfunction PaneHeaderActionIntentButton(props: {intent: Intent; node: _PaneMenuItem}) {\n  const {intent, node} = props\n  const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n  const {t} = useTranslation()\n\n  const handleClick = useCallback(\n    (event: MouseEvent<HTMLButtonElement>) => {\n      intentLink.onClick(event)\n      node.onAction()\n    },\n    [intentLink, node],\n  )\n\n  const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n  return (\n    <StatusButton\n      forwardedAs=\"a\"\n      disabled={isDisabled}\n      href={intentLink.href}\n      icon={node.icon}\n      onClick={handleClick}\n      selected={node.selected}\n      tone={node.tone}\n      aria-label={ariaLabel || node.title || t('status-button.aria-label')}\n      tooltipProps={{\n        hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n        content: isDisabled ? disabledReason : node.title,\n        placement: 'bottom',\n        portal: true,\n      }}\n    />\n  )\n}\n\nexport interface PaneHeaderMenuGroupActionButtonProps {\n  node: _PaneMenuGroup\n}\n\nfunction PaneHeaderMenuGroupActionButton(props: PaneHeaderMenuGroupActionButtonProps) {\n  const {node} = props\n  const {title} = useI18nText(node)\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          disabled={!!node.disabled}\n          icon={node.icon ?? UnknownIcon}\n          label={title}\n          mode=\"bleed\"\n          tooltipProps={{content: node.title, portal: true}}\n        />\n      }\n      id={useId()}\n      menu={\n        <Menu>\n          {node.children.map((child, idx) => {\n            return (\n              <PaneMenuButtonItem\n                disabled={Boolean(node.disabled)}\n                isAfterGroup={node.children[idx - 1]?.type === 'group'}\n                key={child.key}\n                node={child}\n              />\n            )\n          })}\n        </Menu>\n      }\n    />\n  )\n}\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n  transition: opacity 200ms;\n  position: relative;\n  z-index: 1;\n  padding-left: env(safe-area-inset-left);\n  padding-right: env(safe-area-inset-right);\n  opacity: 0;\n\n  &:not([hidden]) {\n    display: flex;\n  }\n\n  &:not([data-collapsed]) {\n    overflow: auto;\n  }\n\n  &[data-mounted] {\n    opacity: 1;\n  }\n\n  &[data-resizing] {\n    pointer-events: none;\n  }\n`\n","import {PANE_DEFAULT_MIN_WIDTH} from '../constants'\nimport {type PaneConfigOpts, type PaneResizeCache} from '../types'\n\nexport function _calcPaneResize(\n  cache: PaneResizeCache,\n  left: PaneConfigOpts,\n  right: PaneConfigOpts,\n  deltaX: number,\n): {leftFlex: number; leftW: number; rightFlex: number; rightW: number} {\n  const sum = {\n    flex: cache.left.flex + cache.right.flex,\n    width: cache.left.width + cache.right.width,\n  }\n\n  const leftMinWidth = left.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n  const rightMinWidth = right.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n\n  const leftMaxWidth = Math.min(left.maxWidth || Infinity, sum.width - rightMinWidth)\n  const rightMaxWidth = Math.min(right.maxWidth || Infinity, sum.width - leftMinWidth)\n\n  // Get min. delta X\n  let minDeltaX = leftMinWidth - cache.left.width\n  const rightMinDeltaX = cache.right.width - rightMaxWidth\n  if (minDeltaX < rightMinDeltaX) {\n    minDeltaX = rightMinDeltaX\n  }\n\n  // Get max. delta X\n  let maxDeltaX = cache.right.width - rightMinWidth\n  const leftMaxDeltaX = leftMaxWidth - cache.left.width\n  if (maxDeltaX > leftMaxDeltaX) {\n    maxDeltaX = leftMaxDeltaX\n  }\n\n  const _deltaX = Math.min(Math.max(deltaX, minDeltaX), maxDeltaX)\n\n  const leftW = cache.left.width + _deltaX\n  const rightW = cache.right.width - _deltaX\n\n  const leftFlex = (leftW / sum.width) * sum.flex\n  const rightFlex = (rightW / sum.width) * sum.flex\n\n  return {leftFlex, leftW, rightFlex, rightW}\n}\n","/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n  const path: number[] = []\n\n  let e = el\n\n  while (e !== rootElement) {\n    const parentElement = e.parentElement\n\n    if (!parentElement) return path\n\n    const children = Array.from(parentElement.childNodes)\n    const index = children.indexOf(e)\n\n    path.unshift(index)\n\n    if (parentElement === rootElement) {\n      return path\n    }\n\n    e = parentElement\n  }\n\n  return path\n}\n","import {_getDOMPath} from './_getDOMPath'\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement, elements: HTMLElement[]): void {\n  // Create a map containing the DOM path of each pane element.\n  // The DOM path is relative to the `rootElement`, and is used in the next step for sorting.\n  const map = new WeakMap<HTMLElement, number[]>()\n\n  for (const element of elements) {\n    map.set(element, _getDOMPath(rootElement, element))\n  }\n\n  const _sortByElementPath = (a: HTMLElement, b: HTMLElement) => {\n    const _a = map.get(a) || EMPTY_PATH\n    const _b = map.get(b) || EMPTY_PATH\n\n    const len = Math.max(_a.length, _b.length)\n\n    // Loop until there are different indexes\n    for (let i = 0; i < len; i += 1) {\n      const aIndex = _a[i] || -1\n      const bIndex = _b[i] || -1\n\n      if (aIndex !== bIndex) {\n        return aIndex - bIndex\n      }\n    }\n\n    return 0\n  }\n\n  elements.sort(_sortByElementPath)\n}\n","import {PANE_COLLAPSED_WIDTH, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {_calcPaneResize, _sortElements} from './helpers'\nimport {\n  type PaneConfigOpts,\n  type PaneData,\n  type PaneResizeCache,\n  type PaneResizeData,\n} from './types'\n\nexport interface PaneLayoutState {\n  expandedElement: HTMLElement | null\n  panes: PaneData[]\n  resizing: boolean\n}\n\nexport type PaneLayoutStateObserver = (state: PaneLayoutState) => void\n\nexport interface PaneLayoutController {\n  collapse: (element: HTMLElement) => void\n  expand: (element: HTMLElement) => void\n  mount: (element: HTMLElement, options: PaneConfigOpts) => () => void\n  resize: (type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) => void\n  setRootElement: (nextRootElement: HTMLElement | null) => void\n  setRootWidth: (nextRootWidth: number) => void\n  subscribe: (observer: PaneLayoutStateObserver) => () => void\n}\n\nexport function createPaneLayoutController(): PaneLayoutController {\n  const observers: PaneLayoutStateObserver[] = []\n  const elements: HTMLElement[] = []\n  const optionsMap = new WeakMap<HTMLElement, PaneConfigOpts & {original: PaneConfigOpts}>()\n  const userCollapsedElementSet = new Set<HTMLElement>()\n  const cache: Partial<PaneResizeCache> = {}\n\n  // Mutable internal state\n  let rootElement: HTMLElement | null = null\n  let rootWidth = 0\n  let expandedElement: HTMLElement | null = null\n  let resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n  let resizing = false\n\n  function collapse(element: HTMLElement) {\n    userCollapsedElementSet.add(element)\n\n    if (expandedElement === element) {\n      expandedElement = null\n    }\n\n    _notifyObservers()\n  }\n\n  function expand(element: HTMLElement) {\n    userCollapsedElementSet.delete(element)\n\n    expandedElement = element\n\n    _notifyObservers()\n  }\n\n  function mount(element: HTMLElement, options: PaneConfigOpts) {\n    optionsMap.set(element, {...options, original: options})\n\n    elements.push(element)\n\n    if (rootElement) {\n      _sortElements(rootElement, elements)\n    }\n\n    expand(element)\n\n    return () => {\n      const idx = elements.indexOf(element)\n\n      if (idx > -1) {\n        elements.splice(idx, 1)\n      }\n\n      optionsMap.delete(element)\n\n      _notifyObservers()\n    }\n  }\n\n  // eslint-disable-next-line complexity\n  function resize(type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) {\n    const leftIndex = elements.indexOf(leftElement)\n    const leftOptions = optionsMap.get(leftElement)\n\n    if (!leftOptions) return\n\n    const rightElement = elements[leftIndex + 1]\n    const rightOptions = optionsMap.get(rightElement)\n\n    if (!rightOptions) return\n\n    if (type === 'start') {\n      resizing = true\n\n      cache.left = {\n        element: leftElement,\n        flex: leftOptions.flex || 1,\n        width: leftElement.offsetWidth,\n      }\n\n      cache.right = {\n        element: rightElement,\n        flex: rightOptions.flex || 1,\n        width: rightElement.offsetWidth,\n      }\n\n      _notifyObservers()\n    }\n\n    if (type === 'move' && cache.left && cache.right) {\n      resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n\n      const {leftW, rightW, leftFlex, rightFlex} = _calcPaneResize(\n        cache as PaneResizeCache,\n        leftOptions,\n        rightOptions,\n        deltaX,\n      )\n\n      // update resize cache\n      resizeDataMap.set(leftElement, {flex: leftFlex, width: leftW})\n      resizeDataMap.set(rightElement, {flex: rightFlex, width: rightW})\n\n      _notifyObservers()\n    }\n\n    if (type === 'end') {\n      resizing = false\n\n      const leftResizeData = resizeDataMap.get(leftElement)\n      const rightResizeData = resizeDataMap.get(rightElement)\n\n      // Update left options\n      optionsMap.set(leftElement, {\n        ...leftOptions,\n        currentMinWidth: 0,\n        currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n        flex: leftResizeData?.flex ?? leftOptions.flex,\n      })\n\n      // Update right options\n      optionsMap.set(rightElement, {\n        ...rightOptions,\n        currentMinWidth: 0,\n        currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n        flex: rightResizeData?.flex ?? rightOptions.flex,\n      })\n\n      // Reset resize data map\n      resizeDataMap = new Map()\n\n      // Reset cache\n      delete cache.left\n      delete cache.right\n\n      _notifyObservers()\n    }\n  }\n\n  function setRootElement(nextRootElement: HTMLElement | null) {\n    rootElement = nextRootElement\n  }\n\n  function setRootWidth(nextRootWidth: number) {\n    rootWidth = nextRootWidth\n    _notifyObservers()\n  }\n\n  function subscribe(observer: PaneLayoutStateObserver) {\n    observers.push(observer)\n\n    return () => {\n      const idx = observers.push(observer)\n\n      if (idx > -1) {\n        observers.splice(idx, 1)\n      }\n    }\n  }\n\n  return {collapse, expand, mount, resize, setRootElement, setRootWidth, subscribe}\n\n  // eslint-disable-next-line complexity\n  function _notifyObservers() {\n    if (!rootWidth) return\n\n    // Create a reversed array of pane elements, so we can loop over them backwards.\n    // Place the expanded element first (so it has the least chance of being collapsed).\n    const _elements: HTMLElement[] = []\n    for (const element of elements) {\n      if (element !== expandedElement) {\n        _elements.unshift(element)\n      }\n    }\n    if (expandedElement) {\n      _elements.unshift(expandedElement)\n    }\n\n    const dataMap = new WeakMap<HTMLElement, PaneData>()\n    const len = _elements.length\n    const lastElement = _elements[0]\n    const collapsedWidth = (len - 1) * PANE_COLLAPSED_WIDTH\n\n    let remaingWidth = rootWidth - collapsedWidth\n\n    for (const element of _elements) {\n      const options = optionsMap.get(element)\n\n      if (!options) {\n        continue\n      }\n\n      const minWidth = options.currentMinWidth || options.minWidth || PANE_DEFAULT_MIN_WIDTH\n      const isLast = element === lastElement\n\n      // A pane is collapsed if:\n      // - it’s explictly collapsed by the user\n      const userCollapsed = userCollapsedElementSet.has(element)\n      // - it’s minimum width is larger than the remaining width\n      const sizeCollapsed = minWidth > remaingWidth\n      // - if the element is not the last (expanded pane)\n      const collapsed = isLast ? false : userCollapsed || sizeCollapsed\n\n      const resizeData = resizeDataMap.get(element)\n\n      // Collect pane data\n      dataMap.set(element, {\n        element: element,\n        collapsed: collapsed,\n        currentMinWidth: resizeData?.width ?? options.currentMinWidth,\n        currentMaxWidth: resizeData?.width ?? options.currentMaxWidth,\n        flex: resizeData?.flex ?? options.flex ?? 1,\n      })\n\n      // Update remaining width\n      if (collapsed) {\n        remaingWidth -= PANE_COLLAPSED_WIDTH\n      } else {\n        remaingWidth -= minWidth - PANE_COLLAPSED_WIDTH\n      }\n    }\n\n    const panes: PaneData[] = []\n\n    for (const element of elements) {\n      const data = dataMap.get(element)\n\n      if (data) panes.push(data)\n    }\n\n    for (const observer of observers) {\n      observer({\n        expandedElement: expandedElement || elements[elements.length - 1] || null,\n        panes,\n        resizing,\n      })\n    }\n  }\n}\n","import {type CardProps, useElementRect} from '@sanity/ui'\nimport {type HTMLProps, useEffect, useMemo, useState} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {Root} from './PaneLayout.styles'\nimport {createPaneLayoutController, type PaneLayoutState} from './paneLayoutController'\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneLayoutProps {\n  minWidth?: number\n  onCollapse?: () => void\n  onExpand?: () => void\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneLayout(\n  props: PaneLayoutProps &\n    CardProps &\n    Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'wrap'>,\n) {\n  const {children, minWidth, onCollapse, onExpand, ...restProps} = props\n  const [controller] = useState(() => createPaneLayoutController())\n  const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n  const rootRect = useElementRect(rootElement)\n  const width = rootRect?.width || 0\n  const collapsed = width === undefined || !minWidth ? undefined : width < minWidth\n  const [state, setState] = useState<PaneLayoutState>({\n    expandedElement: null,\n    panes: [],\n    resizing: false,\n  })\n\n  // Set root element\n  useEffect(() => controller.setRootElement(rootElement), [controller, rootElement])\n\n  // Set root size\n  useEffect(() => controller.setRootWidth(width), [controller, width])\n\n  // Subscribe to state changes\n  useEffect(() => controller.subscribe(setState), [controller])\n\n  // Call the `onCollapse` and `onExpand` callbacks as the `collapsed` boolean changes\n  useEffect(() => {\n    if (collapsed === undefined) return\n    if (collapsed && onCollapse) onCollapse()\n    if (!collapsed && onExpand) onExpand()\n  }, [collapsed, onCollapse, onExpand])\n\n  // This is the context value that gives each pane the information they need\n  const paneLayout: PaneLayoutContextValue = useMemo(\n    () => ({\n      collapse: controller.collapse,\n      collapsed,\n      expand: controller.expand,\n      expandedElement: state.expandedElement,\n      mount: controller.mount,\n      panes: state.panes,\n      resize: controller.resize,\n      resizing: state.resizing,\n    }),\n    [collapsed, controller, state.expandedElement, state.panes, state.resizing],\n  )\n\n  return (\n    <PaneLayoutContext.Provider value={paneLayout}>\n      <Root\n        data-ui=\"PaneLayout\"\n        {...restProps}\n        data-collapsed={collapsed ? '' : undefined}\n        // The `data-resizing` attribute is used to improve cursor behavior\n        data-resizing={state.resizing ? '' : undefined}\n        // The `data-mounted` attribute is used to fade in the layout and prevent flash of\n        // non-collapsed panes\n        data-mounted={width ? '' : undefined}\n        ref={setRootElement}\n      >\n        {children}\n      </Root>\n    </PaneLayoutContext.Provider>\n  )\n}\n","/* eslint-disable camelcase */\n\nimport {negate} from 'lodash'\n\nimport {type _PaneMenuGroup, type _PaneMenuItem, type _PaneMenuNode} from './components/pane/types'\nimport {type DocumentFieldMenuActionNode, type PaneMenuItem, type PaneMenuItemGroup} from './types'\n\nexport function isMenuNodeButton(node: _PaneMenuNode): node is _PaneMenuItem | _PaneMenuGroup {\n  return (node.type === 'item' || node.type === 'group') && node.renderAsButton\n}\n\nexport const isNotMenuNodeButton = negate(isMenuNodeButton)\n\nexport function resolveMenuNodes(params: {\n  actionHandler: (item: PaneMenuItem) => void\n  fieldActions?: DocumentFieldMenuActionNode[]\n  menuItems: PaneMenuItem[]\n  menuItemGroups: PaneMenuItemGroup[]\n}): _PaneMenuNode[] {\n  const {fieldActions = [], menuItems, menuItemGroups} = params\n\n  const nodes: _PaneMenuNode[] = []\n\n  let keyOffset = 0\n\n  for (let i = 0; i < fieldActions.length; i += 1) {\n    const a = fieldActions[i]\n\n    nodes.push(mapFieldActionToPaneMenuNode(a, `${i}-${a.type}`))\n  }\n\n  keyOffset += nodes.length\n\n  const groups: _PaneMenuGroup[] = []\n\n  for (const itemGroup of menuItemGroups) {\n    const group = groups.find((g) => g.key === itemGroup.id)\n\n    if (!group) {\n      groups.push({\n        type: 'group',\n        key: itemGroup.id,\n\n        children: [],\n        expanded: true,\n        renderAsButton: false,\n        title: itemGroup.title,\n        i18n: itemGroup.i18n,\n      })\n    }\n  }\n\n  const ungroupedItems: _PaneMenuItem[] = []\n\n  for (let i = 0; i < menuItems.length; i += 1) {\n    const item = menuItems[i]\n\n    let group = item.group && groups.find((g) => g.key === item.group)\n    const disabled = typeof item.disabled === 'string' ? {reason: item.disabled} : item.disabled\n\n    if (item.group && !group) {\n      group = {\n        type: 'group',\n        key: item.group,\n        disabled,\n        expanded: true,\n        icon: item.icon,\n        title: item.group,\n        children: [],\n        renderAsButton: false,\n      }\n      groups.push(group)\n    }\n\n    if (group) {\n      group.children.push({\n        type: 'item',\n        key: `${keyOffset + i}-item`,\n\n        hotkey: item.shortcut,\n        icon: item.icon,\n        intent: item.intent,\n        disabled,\n        onAction: () => params.actionHandler(item),\n        renderAsButton: item.showAsAction ?? false,\n        selected: item.selected,\n        title: item.title,\n        i18n: item.i18n,\n        tone: item.tone,\n      })\n    } else {\n      ungroupedItems.push({\n        type: 'item',\n        key: `${keyOffset + i}-item`,\n\n        hotkey: item.shortcut,\n        icon: item.icon,\n        intent: item.intent,\n        disabled,\n        onAction: () => params.actionHandler(item),\n        renderAsButton: item.showAsAction ?? false,\n        selected: item.selected,\n        title: item.title,\n        i18n: item.i18n,\n        tone: item.tone,\n      })\n    }\n  }\n\n  return [...ungroupedItems, ...groups, ...nodes]\n}\n\nfunction mapFieldActionToPaneMenuNode(a: DocumentFieldMenuActionNode, key: string): _PaneMenuNode {\n  if (a.type === 'divider') {\n    return {\n      type: 'divider',\n      key,\n    }\n  }\n\n  if (a.type === 'group') {\n    return {\n      type: 'group',\n      key,\n\n      children: a.children.map((child, childIdx) =>\n        mapFieldActionToPaneMenuNode(child, `${key}-${childIdx}-${child.type}`),\n      ),\n      disabled: a.disabled,\n      expanded: a.expanded ?? true,\n      icon: a.icon,\n      title: a.title,\n      i18n: a.i18n,\n      renderAsButton: a.renderAsButton ?? false,\n    }\n  }\n\n  return {\n    type: 'item',\n    key,\n    intent: a.intent,\n    disabled: a.disabled,\n    icon: a.icon,\n    iconRight: a.iconRight,\n    onAction: a.onAction,\n    renderAsButton: a.renderAsButton ?? false,\n    selected: a.selected,\n    title: a.title,\n    i18n: a.i18n,\n    tone: a.tone,\n  }\n}\n","import {type ComponentProps, type ForwardedRef, forwardRef, type ReactNode, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, type ButtonProps} from '../../ui-components'\nimport {type PaneMenuItem} from '../types'\n\ntype RouterIntent = NonNullable<PaneMenuItem['intent']>\n\nexport const IntentButton = forwardRef(function IntentButton(\n  props: {\n    intent: RouterIntent\n  } & ButtonProps &\n    Omit<ComponentProps<typeof Button>, 'as' | 'href' | 'type'>,\n  ref: ForwardedRef<HTMLAnchorElement>,\n) {\n  const {intent, ...restProps} = props\n\n  const Link = useMemo(\n    () =>\n      // eslint-disable-next-line @typescript-eslint/no-shadow\n      forwardRef(function Link(\n        linkProps: {children: ReactNode},\n        linkRef: ForwardedRef<HTMLAnchorElement>,\n      ) {\n        return (\n          <IntentLink\n            {...linkProps}\n            intent={intent.type}\n            params={intent.params}\n            ref={linkRef}\n            searchParams={intent.searchParams}\n          />\n        )\n      }),\n    [intent],\n  )\n\n  return props.disabled ? (\n    <Button {...restProps} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n  ) : (\n    <Button {...restProps} as={Link} data-as=\"a\" ref={ref as ForwardedRef<HTMLButtonElement>} />\n  )\n})\n","import {type ComponentProps, type ReactNode} from 'react'\nimport {InsufficientPermissionsMessage, useCurrentUser, useTranslation} from 'sanity'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface InsufficientPermissionsMessageTooltipProps {\n  reveal: boolean\n  /**\n   * delegates to `InsufficientPermissionsMessage`'s `context` prop\n   * @see InsufficientPermissionsMessage\n   */\n  context: ComponentProps<typeof InsufficientPermissionsMessage>['context']\n  loading: boolean\n  children: ReactNode\n}\n\nexport function InsufficientPermissionsMessageTooltip({\n  reveal,\n  context,\n  loading,\n  children,\n}: InsufficientPermissionsMessageTooltipProps) {\n  const currentUser = useCurrentUser()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (!reveal) {\n    return <>{children}</>\n  }\n\n  return (\n    <Tooltip\n      content={\n        loading ? (\n          t('insufficient-permissions-message-tooltip.loading-text')\n        ) : (\n          <InsufficientPermissionsMessage context={context} currentUser={currentUser} />\n        )\n      }\n      portal\n    >\n      {/* this wrapping div is to allow mouse events */}\n      {/* while the child element is disabled */}\n      <div>{children}</div>\n    </Tooltip>\n  )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type ComponentProps, type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {\n  type InitialValueTemplateItem,\n  type ReleaseId,\n  type Template,\n  type TemplatePermissionsResult,\n  useGetI18nText,\n  usePerspective,\n  useTemplatePermissions,\n  useTemplates,\n  useTranslation,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, MenuButton, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {IntentButton} from '../IntentButton'\nimport {InsufficientPermissionsMessageTooltip} from './InsufficientPermissionsMessageTooltip'\n\nexport type PaneHeaderIntentProps = ComponentProps<typeof IntentButton>['intent']\n\nconst POPOVER_PROPS: PopoverProps = {\n  constrainSize: true,\n  placement: 'bottom',\n  portal: true,\n}\n\nconst getIntent = (\n  templates: Template[],\n  item: InitialValueTemplateItem,\n  version?: ReleaseId,\n): PaneHeaderIntentProps | null => {\n  const typeName = templates.find((t) => t.id === item.templateId)?.schemaType\n  if (!typeName) return null\n\n  const baseParams = {\n    template: item.templateId,\n    type: typeName,\n    version,\n    id: item.initialDocumentId,\n  }\n\n  return {\n    type: 'create',\n    params: item.parameters ? [baseParams, item.parameters] : baseParams,\n    searchParams: version ? [['perspective', version]] : undefined,\n  }\n}\n\ninterface PaneHeaderCreateButtonProps {\n  templateItems: InitialValueTemplateItem[]\n}\n\nexport function PaneHeaderCreateButton({templateItems}: PaneHeaderCreateButtonProps) {\n  const templates = useTemplates()\n  const {selectedReleaseId} = usePerspective()\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const getI18nText = useGetI18nText([...templateItems, ...templates])\n\n  const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n    templateItems,\n  })\n\n  const nothingGranted = useMemo(() => {\n    return (\n      !isTemplatePermissionsLoading &&\n      templatePermissions?.length !== 0 &&\n      templatePermissions?.every((permission) => !permission.granted)\n    )\n  }, [isTemplatePermissionsLoading, templatePermissions])\n\n  const permissionsById = useMemo(() => {\n    if (!templatePermissions) return {}\n    return templatePermissions.reduce<Record<string, TemplatePermissionsResult | undefined>>(\n      (acc, permission) => {\n        acc[permission.id] = permission\n        return acc\n      },\n      {},\n    )\n  }, [templatePermissions])\n\n  if (nothingGranted) {\n    return (\n      <InsufficientPermissionsMessageTooltip\n        context=\"create-document-type\"\n        reveal\n        loading={isTemplatePermissionsLoading}\n      >\n        <Button\n          aria-label={t('pane-header.disabled-created-button.aria-label')}\n          icon={AddIcon}\n          data-testid=\"action-intent-button\"\n          disabled\n          mode=\"bleed\"\n          // This button handles the tooltip in a special way, won't reuse the forced tooltip.\n          tooltipProps={null}\n        />\n      </InsufficientPermissionsMessageTooltip>\n    )\n  }\n\n  if (templateItems.length === 1) {\n    const firstItem = templateItems[0]\n    const permissions = permissionsById[firstItem.id]\n    const disabled = !permissions?.granted\n    const intent = getIntent(templates, firstItem, selectedReleaseId)\n    if (!intent) return null\n\n    return (\n      <InsufficientPermissionsMessageTooltip\n        reveal={disabled}\n        loading={isTemplatePermissionsLoading}\n        context=\"create-document-type\"\n      >\n        <IntentButton\n          aria-label={getI18nText(firstItem).title}\n          icon={firstItem.icon || AddIcon}\n          intent={intent}\n          mode=\"bleed\"\n          disabled={disabled}\n          data-testid=\"action-intent-button\"\n          tooltipProps={{content: t('pane-header.create-new-button.tooltip')}}\n        />\n      </InsufficientPermissionsMessageTooltip>\n    )\n  }\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          icon={AddIcon}\n          mode=\"bleed\"\n          data-testid=\"multi-action-intent-button\"\n          tooltipProps={{content: t('pane-header.create-new-button.tooltip')}}\n        />\n      }\n      id=\"create-menu\"\n      menu={\n        <Menu>\n          {templateItems.map((item, itemIndex) => {\n            const permissions = permissionsById[item.id]\n            const disabled = !permissions?.granted\n            const intent = getIntent(templates, item, selectedReleaseId)\n            const template = templates.find((i) => i.id === item.templateId)\n            if (!template || !intent) return null\n\n            const Link = forwardRef((linkProps, linkRef: ForwardedRef<never>) =>\n              disabled ? (\n                <button type=\"button\" disabled {...linkProps} ref={linkRef} />\n              ) : (\n                <IntentLink\n                  {...linkProps}\n                  intent={intent.type}\n                  params={intent.params}\n                  searchParams={intent.searchParams}\n                  ref={linkRef}\n                />\n              ),\n            )\n\n            Link.displayName = 'Link'\n\n            const {title} = getI18nText({\n              ...item,\n              // replace the title with the template title\n              title: item.title || getI18nText(template).title,\n            })\n\n            return (\n              <InsufficientPermissionsMessageTooltip\n                context=\"create-document-type\"\n                key={item.id}\n                reveal={disabled}\n                loading={isTemplatePermissionsLoading}\n              >\n                <MenuItem\n                  as={Link}\n                  data-as={disabled ? 'button' : 'a'}\n                  text={title}\n                  aria-label={\n                    disabled ? t('pane-header.disabled-created-button.aria-label') : title\n                  }\n                  disabled={disabled}\n                  data-testid={`action-intent-button-${itemIndex}`}\n                />\n              </InsufficientPermissionsMessageTooltip>\n            )\n          })}\n        </Menu>\n      }\n      popover={POPOVER_PROPS}\n    />\n  )\n}\n","import {Flex} from '@sanity/ui'\nimport {uniqBy} from 'lodash'\nimport {memo, useCallback, useMemo} from 'react'\nimport {EMPTY_ARRAY, EMPTY_OBJECT, type InitialValueTemplateItem, useTemplates} from 'sanity'\n\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../menuNodes'\nimport {\n  type PaneMenuItem,\n  type PaneMenuItemGroup,\n  type StructureToolPaneActionHandler,\n} from '../../types'\nimport {PaneContextMenuButton} from '../pane/PaneContextMenuButton'\nimport {PaneHeaderActionButton} from '../pane/PaneHeaderActionButton'\nimport {PaneHeaderCreateButton} from './PaneHeaderCreateButton'\n\nfunction isNonNullable<T>(value: T): value is NonNullable<T> {\n  return value !== null && value !== undefined\n}\n\n/**\n * hashes an object to a string where the order of the keys don't matter\n */\nconst hashObject = (value: unknown) => {\n  const sortObject = (v: unknown): unknown => {\n    if (typeof v !== 'object' || !v) return v\n    if (Array.isArray(v)) return v.map(sortObject)\n    return Object.entries(v).sort(([keyA], [keyB]) => keyA.localeCompare(keyB, 'en'))\n  }\n\n  const normalize = (v: unknown) => JSON.parse(JSON.stringify(v))\n\n  return JSON.stringify(sortObject(normalize(value)))\n}\n\ninterface PaneHeaderActionsProps {\n  initialValueTemplateItems?: InitialValueTemplateItem[]\n  menuItems?: PaneMenuItem[]\n  menuItemGroups?: PaneMenuItemGroup[]\n  actionHandlers?: Record<string, StructureToolPaneActionHandler>\n}\n\nexport const PaneHeaderActions = memo(function PaneHeaderActions(props: PaneHeaderActionsProps) {\n  const {\n    initialValueTemplateItems: initialValueTemplateItemsFromStructure = EMPTY_ARRAY,\n    menuItems = EMPTY_ARRAY,\n    menuItemGroups = EMPTY_ARRAY,\n    actionHandlers = EMPTY_OBJECT as Record<string, StructureToolPaneActionHandler>,\n  } = props\n\n  const templates = useTemplates()\n\n  const handleAction = useCallback(\n    (item: PaneMenuItem) => {\n      if (typeof item.action === 'string' && !(item.action in actionHandlers)) {\n        console.warn('No handler for action:', item.action)\n        return false\n      }\n\n      const handler =\n        // eslint-disable-next-line no-nested-ternary\n        typeof item.action === 'function'\n          ? item.action\n          : typeof item.action === 'string'\n            ? actionHandlers[item.action]\n            : null\n\n      if (handler) {\n        handler(item.params as Record<string, string>)\n        return true\n      }\n\n      return false\n    },\n    [actionHandlers],\n  )\n\n  const menuNodes = useMemo(\n    () =>\n      resolveMenuNodes({\n        actionHandler: handleAction,\n        menuItemGroups,\n        menuItems: menuItems\n          // remove items with `create` intents because those will get combined\n          // into one action button (see `initialValueTemplateItemFromMenuItems`)\n          .filter((item) => item.intent?.type !== 'create'),\n      }),\n    [handleAction, menuItemGroups, menuItems],\n  )\n\n  const actionNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n  const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n\n  const initialValueTemplateItemFromMenuItems = useMemo(() => {\n    return menuItems\n      .map((item, menuItemIndex) => {\n        if (item.intent?.type !== 'create') return null\n\n        const {params} = item.intent\n        if (!params) return null\n\n        const intentParams = Array.isArray(params) ? params[0] : params\n        const templateParams = Array.isArray(params) ? params[1] : undefined\n\n        // fallback to the schema type name as the template ID.\n        // by default, the initial template values are populated from every\n        // document type in the schema\n        const templateId = intentParams.template || intentParams.type\n        if (!templateId) return null\n\n        // eslint-disable-next-line max-nested-callbacks\n        const template = templates.find((t) => t.id === templateId)\n        // the template doesn't exist then the action might be disabled\n        if (!template) return null\n\n        const initialDocumentId = intentParams.id\n\n        return {\n          item,\n          template,\n          templateParams,\n          menuItemIndex,\n          initialDocumentId,\n        }\n      })\n      .filter(isNonNullable)\n      .map(({initialDocumentId, item, template, menuItemIndex, templateParams}) => {\n        const initialValueTemplateItem: InitialValueTemplateItem = {\n          id: `menuItem${menuItemIndex}`,\n          initialDocumentId,\n          templateId: template.id,\n          type: 'initialValueTemplateItem',\n          title: item.title || template.title,\n          i18n: item.i18n || template.i18n,\n          icon: item.icon as InitialValueTemplateItem['icon'],\n          description: template.description,\n          parameters: templateParams,\n          schemaType: template.schemaType,\n        }\n\n        return initialValueTemplateItem\n      })\n  }, [menuItems, templates])\n\n  const combinedInitialValueTemplates = useMemo(() => {\n    // this de-dupes create actions\n    return uniqBy(\n      [...initialValueTemplateItemFromMenuItems, ...initialValueTemplateItemsFromStructure],\n      (item) => hashObject([item.initialDocumentId, item.templateId, item.parameters]),\n    )\n  }, [initialValueTemplateItemFromMenuItems, initialValueTemplateItemsFromStructure])\n\n  return (\n    <Flex gap={1}>\n      <PaneHeaderCreateButton templateItems={combinedInitialValueTemplates} />\n\n      {actionNodes.map((node) => (\n        <PaneHeaderActionButton key={node.key} node={node} />\n      ))}\n\n      {contextMenuNodes.length > 0 && <PaneContextMenuButton nodes={contextMenuNodes} />}\n    </Flex>\n  )\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {type GeneralPreviewLayoutKey, SanityDefaultPreview, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface MissingSchemaTypeProps {\n  layout?: GeneralPreviewLayoutKey\n  value: SanityDocument\n}\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {layout, value} = props\n\n  return (\n    <SanityDefaultPreview\n      title={\n        <em>\n          <Translate\n            t={t}\n            i18nKey=\"pane-item.missing-schema-type.title\"\n            components={{Code: 'code'}}\n            values={{documentType: value._type}}\n          />\n        </em>\n      }\n      subtitle={\n        <Translate\n          t={t}\n          i18nKey=\"pane-item.missing-schema-type.subtitle\"\n          components={{Code: 'code'}}\n          values={{documentId: value._id}}\n        />\n      }\n      // eslint-disable-next-line react/jsx-no-bind\n      media={() => <WarningOutlineIcon />}\n      layout={layout}\n    />\n  )\n}\n","import {ChevronRightIcon, DocumentIcon, FolderIcon} from '@sanity/icons'\nimport {\n  isSanityDocument,\n  type PreviewValue,\n  type SanityDocument,\n  type SchemaType,\n} from '@sanity/types'\nimport {Box, type CardProps, Text} from '@sanity/ui'\nimport {\n  type ComponentType,\n  type MouseEvent,\n  startTransition,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  type FIXME,\n  type GeneralPreviewLayoutKey,\n  getPublishedId,\n  PreviewCard,\n  SanityDefaultPreview,\n  useDocumentPresence,\n  useDocumentPreviewStore,\n  useEditState,\n  useSchema,\n} from 'sanity'\n\nimport {MissingSchemaType} from '../MissingSchemaType'\nimport {usePaneRouter} from '../paneRouter'\nimport {PaneItemPreview} from './PaneItemPreview'\n\ninterface PaneItemProps {\n  id: string\n  layout?: GeneralPreviewLayoutKey\n  icon?: ComponentType<any> | false\n  pressed?: boolean\n  selected?: boolean\n  title?: string\n  value?: PreviewValue | SanityDocument\n  schemaType?: SchemaType\n  margin?: CardProps['margin']\n  marginBottom?: CardProps['marginBottom']\n  marginTop?: CardProps['marginTop']\n}\n\n/**\n * Return `false` if we explicitly disable the icon.\n * Otherwise return the passed icon or the schema type icon as a backup.\n */\nexport function getIconWithFallback(\n  icon: ComponentType<any> | false | undefined,\n  schemaType: SchemaType | undefined,\n  defaultIcon: ComponentType<any>,\n): ComponentType<any> | false {\n  if (icon === false) {\n    return false\n  }\n\n  return icon || (schemaType && schemaType.icon) || defaultIcon || false\n}\n\nexport function PaneItem(props: PaneItemProps) {\n  const {\n    icon,\n    id,\n    layout = 'default',\n    pressed,\n    schemaType,\n    selected,\n    title,\n    value,\n    margin,\n    marginBottom,\n    marginTop,\n  } = props\n  const schema = useSchema()\n  const documentPreviewStore = useDocumentPreviewStore()\n  const {ChildLink} = usePaneRouter()\n  const documentPresence = useDocumentPresence(id)\n  const hasSchemaType = Boolean(schemaType && schemaType.name && schema.get(schemaType.name))\n  const [clicked, setClicked] = useState<boolean>(false)\n\n  const preview = useMemo(() => {\n    if (value && isSanityDocument(value)) {\n      if (!schemaType || !hasSchemaType) {\n        return <MissingSchemaType value={value} />\n      }\n\n      return (\n        <PaneItemPreview\n          documentPreviewStore={documentPreviewStore}\n          icon={getIconWithFallback(icon, schemaType, DocumentIcon)}\n          layout={layout}\n          schemaType={schemaType}\n          value={value}\n          presence={documentPresence}\n        />\n      )\n    }\n\n    // Always render non-document values as compact previews\n    return (\n      <SanityDefaultPreview\n        status={\n          <Box style={{opacity: 0.5}}>\n            <Text muted size={1}>\n              <ChevronRightIcon />\n            </Text>\n          </Box>\n        }\n        icon={getIconWithFallback(icon, schemaType, FolderIcon)}\n        layout=\"compact\"\n        title={title}\n      />\n    )\n  }, [\n    documentPreviewStore,\n    hasSchemaType,\n    icon,\n    layout,\n    schemaType,\n    title,\n    value,\n    documentPresence,\n  ])\n\n  const handleClick = useCallback((e: MouseEvent<HTMLElement>) => {\n    if (e.metaKey) {\n      setClicked(false)\n      return\n    }\n\n    setClicked(true)\n  }, [])\n\n  // Reset `clicked` state when `selected` prop changes\n  useEffect(() => setClicked(false), [selected])\n\n  // Preloads the edit state on hover, using concurrent rendering with `startTransition` so preloads can be interrupted and not block rendering\n  const [preloading, setPreload] = useState(false)\n  const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n  const handleMouseEnter = useCallback(() => {\n    timeoutRef.current = setTimeout(() => startTransition(() => setPreload(true)), 400)\n  }, [])\n  const handleMouseLeave = useCallback(() => {\n    if (timeoutRef.current) clearTimeout(timeoutRef.current)\n    startTransition(() => setPreload(false))\n  }, [])\n\n  return (\n    <PreviewCard\n      data-testid={`pane-item-${title}`}\n      __unstable_focusRing\n      as={ChildLink as FIXME}\n      // @ts-expect-error - `childId` is a valid prop on `ChildLink`\n      childId={id}\n      data-as=\"a\"\n      margin={margin}\n      marginBottom={marginBottom}\n      marginTop={marginTop}\n      onClick={handleClick}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      pressed={pressed}\n      radius={2}\n      selected={selected || clicked}\n      sizing=\"border\"\n      tabIndex={-1}\n      tone=\"inherit\"\n    >\n      {preview}\n      {preloading && schemaType?.name && value && isSanityDocument(value) && (\n        <PreloadDocumentPane documentId={id} documentType={schemaType.name} />\n      )}\n    </PreviewCard>\n  )\n}\n\nfunction PreloadDocumentPane(props: {documentId: string; documentType: string}) {\n  const {documentId, documentType} = props\n  // Preload the edit state for the document, and keep it alive until mouse leave\n  useEditState(getPublishedId(documentId), documentType)\n\n  return null\n}\nPreloadDocumentPane.displayName = 'PreloadDocumentPane'\n","import {memo, type ReactNode, useMemo} from 'react'\nimport {\n  type DocumentActionComponent,\n  type DocumentActionDescription,\n  type DocumentActionGroup,\n  type DocumentActionProps,\n  getDraftId,\n  GetHookCollectionState,\n  getPublishedId,\n  useCanvasCompanionDoc,\n  useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\n/** @internal */\nexport interface Action<Args, Description> {\n  (args: Args): Description | null\n}\nexport interface ResolvedAction extends DocumentActionDescription {\n  action?: DocumentActionComponent['action']\n}\n\n/** @internal */\nexport interface RenderActionCollectionProps {\n  actions: Action<DocumentActionProps, DocumentActionDescription>[]\n  actionProps: Omit<DocumentActionProps, 'onComplete'>\n  children: (props: {states: ResolvedAction[]}) => ReactNode\n  onActionComplete?: () => void\n  group?: DocumentActionGroup\n}\n\n/** @internal */\nexport const RenderActionCollectionState = memo((props: RenderActionCollectionProps) => {\n  const {actions, children, actionProps, onActionComplete, group} = props\n\n  return (\n    <GetHookCollectionState<Omit<DocumentActionProps, 'onComplete'>, ResolvedAction>\n      onReset={onActionComplete}\n      hooks={actions}\n      args={actionProps}\n      group={group}\n    >\n      {({states}) => (\n        <ActionsGuardWrapper\n          states={states}\n          documentId={\n            actionProps.liveEditSchemaType\n              ? getPublishedId(actionProps.id)\n              : getDraftId(actionProps.id)\n          }\n        >\n          {children}\n        </ActionsGuardWrapper>\n      )}\n    </GetHookCollectionState>\n  )\n})\nRenderActionCollectionState.displayName = 'Memo(RenderActionCollectionState)'\n\n/**\n * This is a list of the actions that are supported when a document is linked to Canvas.\n * Custom actions and actions that are not supported by Canvas will be disabled and will include a tooltip explaining that the action is not supported.\n */\nconst SUPPORTED_LINKED_TO_CANVAS_ACTIONS: DocumentActionComponent['action'][] = [\n  'delete',\n  'duplicate',\n  'publish',\n  'unpublish',\n  'unlinkFromCanvas',\n  'editInCanvas',\n  'linkToCanvas',\n  'schedule',\n]\n\ninterface ActionsGuardWrapperProps {\n  states: ResolvedAction[]\n  documentId: string\n  children: (props: {states: ResolvedAction[]}) => ReactNode\n}\n\nconst ActionsGuardWrapper = (props: ActionsGuardWrapperProps) => {\n  const {states, children, documentId} = props\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {isLinked} = useCanvasCompanionDoc(documentId)\n\n  const result = useMemo(() => {\n    if (isLinked) {\n      return children({\n        states: states.map((s) => {\n          if (!s.action || !SUPPORTED_LINKED_TO_CANVAS_ACTIONS.includes(s.action)) {\n            return {\n              ...s,\n              disabled: true,\n              title: t('action.disabled-by-canvas.tooltip'),\n            }\n          }\n          return s\n        }),\n      })\n    }\n    return children({states})\n  }, [children, states, t, isLinked])\n\n  return result\n}\n","import {memo, type ReactNode} from 'react'\nimport {\n  type DocumentBadgeDescription,\n  type DocumentBadgeProps,\n  type EditStateFor,\n  GetHookCollectionState,\n} from 'sanity'\n\n/** @internal */\nexport interface Badge<Args, Description> {\n  (args: Args): Description | null\n}\n\n/** @internal */\nexport interface RenderBadgeCollectionProps {\n  badges: Badge<DocumentBadgeProps, DocumentBadgeDescription>[]\n  badgeProps: EditStateFor\n  children: (props: {states: DocumentBadgeDescription[]}) => ReactNode\n}\n\n/** @internal */\nexport const RenderBadgeCollectionState = memo((props: RenderBadgeCollectionProps) => {\n  const {badges, children, badgeProps} = props\n\n  return (\n    <GetHookCollectionState<EditStateFor, DocumentBadgeDescription>\n      hooks={badges}\n      args={badgeProps}\n    >\n      {children}\n    </GetHookCollectionState>\n  )\n})\nRenderBadgeCollectionState.displayName = 'Memo(RenderBadgeCollectionState)'\n","import {useMemo} from 'react'\nimport {Subject} from 'rxjs'\n\nimport {type PathSyncChannel, type PathSyncState} from '../types/pathSyncChannel'\n\n/**\n * @internal\n */\nexport function useCreatePathSyncChannel(): PathSyncChannel {\n  return useMemo(() => new Subject<PathSyncState>(), [])\n}\n","/**\n * @internal\n */\nexport const DIFF_VIEW_SEARCH_PARAMETER = 'diffView'\n\n/**\n * @internal\n */\nexport const DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER = 'previousDocument'\n\n/**\n * @internal\n */\nexport const DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER = 'nextDocument'\n\n/**\n * @internal\n */\nexport const DIFF_SEARCH_PARAM_DELIMITER = ','\n","import {fromPairs, toPairs} from 'lodash'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n  DIFF_SEARCH_PARAM_DELIMITER,\n  DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n  DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n  DIFF_VIEW_SEARCH_PARAMETER,\n} from '../constants'\nimport {type DiffViewMode} from '../types/diffViewMode'\n\ntype NavigateDiffView = (\n  options: {\n    mode?: DiffViewMode\n  } & Partial<\n    Record<\n      'previousDocument' | 'nextDocument',\n      {\n        type: string\n        id: string\n      }\n    >\n  >,\n) => void\n\nexport interface DiffViewRouter {\n  navigateDiffView: NavigateDiffView\n  exitDiffView: () => void\n}\n\n/**\n * @internal\n */\nexport function useDiffViewRouter(): DiffViewRouter {\n  const {navigate, state: routerState} = useRouter()\n\n  const navigateDiffView = useCallback<NavigateDiffView>(\n    ({mode, previousDocument, nextDocument}) => {\n      const next = {\n        ...fromPairs(routerState._searchParams),\n        ...(mode\n          ? {\n              [DIFF_VIEW_SEARCH_PARAMETER]: mode,\n            }\n          : {}),\n        ...(previousDocument\n          ? {\n              [DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER]: [\n                previousDocument.type,\n                previousDocument.id,\n              ].join(DIFF_SEARCH_PARAM_DELIMITER),\n            }\n          : {}),\n        ...(nextDocument\n          ? {\n              [DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER]: [nextDocument.type, nextDocument.id].join(\n                DIFF_SEARCH_PARAM_DELIMITER,\n              ),\n            }\n          : {}),\n      }\n\n      navigate({\n        ...routerState,\n        _searchParams: toPairs(next),\n      })\n    },\n    [navigate, routerState],\n  )\n\n  const exitDiffView = useCallback(() => {\n    navigate({\n      ...routerState,\n      _searchParams: (routerState._searchParams ?? []).filter(\n        ([key]) =>\n          ![\n            DIFF_VIEW_SEARCH_PARAMETER,\n            DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n            DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n          ].includes(key),\n      ),\n    })\n  }, [navigate, routerState])\n\n  return {\n    navigateDiffView,\n    exitDiffView,\n  }\n}\n","/**\n * @internal\n */\nexport const diffViewModes = ['version'] as const\n\n/**\n * @internal\n */\nexport type DiffViewMode = (typeof diffViewModes)[number]\n","import {useEffect, useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n  DIFF_SEARCH_PARAM_DELIMITER,\n  DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n  DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n  DIFF_VIEW_SEARCH_PARAMETER,\n} from '../constants'\nimport {type DiffViewMode, diffViewModes} from '../types/diffViewMode'\n\nfunction isDiffViewMode(maybeDiffViewMode: unknown): maybeDiffViewMode is DiffViewMode {\n  return diffViewModes.includes(maybeDiffViewMode as DiffViewMode)\n}\n\ntype DiffViewState =\n  | {\n      isActive: true\n      state: 'ready'\n      mode: DiffViewMode\n      documents: Record<\n        'previous' | 'next',\n        {\n          type: string\n          id: string\n        }\n      >\n    }\n  | {\n      isActive: true\n      state: 'error'\n      mode: DiffViewMode\n      documents?: never\n    }\n  | {\n      isActive: false\n      state?: never\n      mode?: never\n      documents?: never\n    }\n\nexport function useDiffViewState({\n  onParamsError,\n}: {\n  onParamsError?: (errors: DiffViewStateErrorWithInput[]) => void\n} = {}): DiffViewState {\n  const {state: routerState} = useRouter()\n  const searchParams = new URLSearchParams(routerState._searchParams)\n  const previousDocument = searchParams.get(DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER)\n  const nextDocument = searchParams.get(DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER)\n  const mode = searchParams.get(DIFF_VIEW_SEARCH_PARAMETER)\n  const anyParamSet = [previousDocument, nextDocument, mode].some((param) => param !== null)\n\n  const params = useMemo(\n    () =>\n      parseParams({\n        previousDocument: previousDocument ?? '',\n        nextDocument: nextDocument ?? '',\n        mode: mode ?? '',\n      }),\n    [mode, nextDocument, previousDocument],\n  )\n\n  useEffect(() => {\n    if (params.result === 'error' && anyParamSet) {\n      onParamsError?.(params.errors)\n    }\n  }, [anyParamSet, onParamsError, params])\n\n  if (params.result === 'error') {\n    return {\n      isActive: false,\n    }\n  }\n\n  return {\n    state: 'ready',\n    isActive: true,\n    ...params.params,\n  }\n}\n\ntype DiffViewStateError =\n  | 'invalidModeParam'\n  | 'invalidPreviousDocumentParam'\n  | 'invalidNextDocumentParam'\n\ntype DiffViewStateErrorWithInput = [error: DiffViewStateError, input: unknown]\n\ninterface ParamsSuccess {\n  result: 'success'\n  params: Pick<DiffViewState & {state: 'ready'}, 'mode' | 'documents'>\n}\n\ninterface ParamsError {\n  result: 'error'\n  errors: DiffViewStateErrorWithInput[]\n}\n\nfunction parseParams({\n  previousDocument,\n  nextDocument,\n  mode,\n}: {\n  previousDocument: string\n  nextDocument: string\n  mode: string\n}): ParamsSuccess | ParamsError {\n  const errors: DiffViewStateErrorWithInput[] = []\n\n  const [previousDocumentType, previousDocumentId] = previousDocument\n    .split(DIFF_SEARCH_PARAM_DELIMITER)\n    .filter(Boolean)\n\n  const [nextDocumentType, nextDocumentId] = nextDocument\n    .split(DIFF_SEARCH_PARAM_DELIMITER)\n    .filter(Boolean)\n\n  if (!isDiffViewMode(mode)) {\n    errors.push(['invalidModeParam', mode])\n  }\n\n  if (typeof previousDocumentType === 'undefined' || typeof previousDocumentId === 'undefined') {\n    errors.push(['invalidPreviousDocumentParam', previousDocument])\n  }\n\n  if (typeof nextDocumentType === 'undefined' || typeof nextDocumentId === 'undefined') {\n    errors.push(['invalidNextDocumentParam', nextDocument])\n  }\n\n  if (errors.length !== 0) {\n    return {\n      result: 'error',\n      errors,\n    }\n  }\n\n  return {\n    result: 'success',\n    params: {\n      mode,\n      documents: {\n        previous: {\n          type: previousDocumentType,\n          id: previousDocumentId,\n        },\n        next: {\n          type: nextDocumentType,\n          id: nextDocumentId,\n        },\n      },\n    },\n  } as ParamsSuccess\n}\n","import {useEffect} from 'react'\nimport ScrollMirror from 'scrollmirror'\n\n/**\n * Use the ScrollMirror library to synchronise the scroll position for an array of elements.\n *\n * @internal\n */\nexport function useScrollMirror(elements: (HTMLElement | null)[]): void {\n  useEffect(() => {\n    const existentElements = elements.filter((element) => element !== null)\n\n    if (existentElements.length === 0) {\n      return undefined\n    }\n\n    const scrollMirror = new ScrollMirror(existentElements)\n    return () => scrollMirror.destroy()\n  }, [elements])\n}\n","import {CloseIcon, LockIcon, TransferIcon} from '@sanity/icons'\nimport {\n  Box,\n  // eslint-disable-next-line no-restricted-imports -- we need more control over how the `Button` component is rendered\n  Button,\n  type ButtonTone,\n  Flex,\n  Menu,\n  // eslint-disable-next-line no-restricted-imports -- the `VersionModeHeader` component needs more control over how the `MenuItem` component is rendered\n  MenuItem,\n  Stack,\n  Text,\n} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {type ComponentProps, type ComponentType, useCallback, useMemo} from 'react'\nimport {\n  type DocumentLayoutProps,\n  formatRelativeLocalePublishDate,\n  getDraftId,\n  getPublishedId,\n  getReleaseIdFromReleaseDocumentId,\n  getReleaseTone,\n  getVersionFromId,\n  getVersionId,\n  isDraftId,\n  isPublishedId,\n  isReleaseDocument,\n  isReleaseScheduledOrScheduling,\n  ReleaseAvatar,\n  type ReleaseDocument,\n  useActiveReleases,\n  useDocumentVersions,\n  useEditState,\n  useTranslation,\n  useWorkspace,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useDiffViewRouter} from '../../hooks/useDiffViewRouter'\nimport {useDiffViewState} from '../../hooks/useDiffViewState'\n\nconst VersionModeHeaderLayout = styled.header`\n  display: grid;\n  grid-area: header;\n  grid-template-columns: 1fr min-content 1fr;\n  border-block-end: 1px solid var(--card-border-color);\n`\n\nconst VersionModeHeaderLayoutSection = styled.div`\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n`\n\n/**\n * The header component that is rendered when diff view is being used to compare versions of a\n * document.\n *\n * @internal\n */\nexport const VersionModeHeader: ComponentType<\n  {state: 'pending' | 'ready' | 'error'} & Pick<DocumentLayoutProps, 'documentId'>\n> = ({documentId, state}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {data: documentVersions} = useDocumentVersions({documentId})\n  const {exitDiffView, navigateDiffView} = useDiffViewRouter()\n  const {documents} = useDiffViewState()\n  const activeReleases = useActiveReleases()\n  const releasesIds = documentVersions.flatMap((id) => getVersionFromId(id) ?? [])\n\n  const releases = useMemo(() => {\n    return activeReleases.data.filter((release) => {\n      const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n      return typeof releaseId !== 'undefined' && releasesIds.includes(releaseId)\n    })\n  }, [activeReleases.data, releasesIds])\n\n  const onSelectPreviousRelease = useCallback(\n    (selectedDocumentId: string): void => {\n      if (typeof documents?.previous !== 'undefined') {\n        navigateDiffView({\n          previousDocument: {\n            ...documents.previous,\n            id: selectedDocumentId,\n          },\n        })\n      }\n    },\n    [documents?.previous, navigateDiffView],\n  )\n\n  const onSelectNextRelease = useCallback(\n    (selectedDocumentId: string): void => {\n      if (typeof documents?.next !== 'undefined') {\n        navigateDiffView({\n          nextDocument: {\n            ...documents.next,\n            id: selectedDocumentId,\n          },\n        })\n      }\n    },\n    [documents?.next, navigateDiffView],\n  )\n\n  return (\n    <VersionModeHeaderLayout>\n      <VersionModeHeaderLayoutSection>\n        <Box padding={4}>\n          <Text as=\"h1\" size={1} muted>\n            {t('compare-versions.title')}\n          </Text>\n        </Box>\n        {typeof documents?.previous !== 'undefined' && (\n          <VersionMenu\n            releases={releases}\n            onSelectRelease={onSelectPreviousRelease}\n            role=\"previous\"\n            documentId={documentId}\n            state={state}\n            document={documents.previous}\n          />\n        )}\n      </VersionModeHeaderLayoutSection>\n      <Flex align=\"center\" paddingX={3}>\n        <Text size={1}>\n          <TransferIcon />\n        </Text>\n      </Flex>\n      <VersionModeHeaderLayoutSection>\n        {typeof documents?.next !== 'undefined' && (\n          <VersionMenu\n            releases={releases}\n            onSelectRelease={onSelectNextRelease}\n            role=\"next\"\n            documentId={documentId}\n            state={state}\n            document={documents.next}\n          />\n        )}\n        <Box\n          padding={3}\n          style={{\n            justifySelf: 'end',\n          }}\n        >\n          <Button icon={CloseIcon} mode=\"bleed\" onClick={exitDiffView} padding={2} />\n        </Box>\n      </VersionModeHeaderLayoutSection>\n    </VersionModeHeaderLayout>\n  )\n}\n\ninterface VersionMenuProps {\n  state: 'pending' | 'ready' | 'error'\n  releases: ReleaseDocument[]\n  role: 'previous' | 'next'\n  onSelectRelease: (releaseId: string) => void\n  documentId: string\n  document: {\n    type: string\n    id: string\n  }\n}\n\nconst VersionMenu: ComponentType<VersionMenuProps> = ({\n  releases = [],\n  onSelectRelease,\n  role,\n  documentId,\n  document,\n}) => {\n  const {published, draft} = useEditState(getPublishedId(document.id), document.type)\n  const selected = useMemo(() => findRelease(document.id, releases), [document.id, releases])\n  const {t: tStructure} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\n\n  const {\n    document: {\n      drafts: {enabled: isDraftModelEnabled},\n    },\n  } = useWorkspace()\n\n  return (\n    <MenuButton\n      id={role}\n      button={\n        <Button\n          type=\"button\"\n          mode=\"bleed\"\n          padding={2}\n          paddingRight={3}\n          radius=\"full\"\n          selected\n          {...getMenuButtonProps({selected, tCore, tStructure})}\n        />\n      }\n      menu={\n        <Menu>\n          {published && (\n            <VersionMenuItem\n              type=\"published\"\n              onSelect={onSelectRelease}\n              isSelected={selected === 'published'}\n              documentId={documentId}\n            />\n          )}\n          {isDraftModelEnabled && draft && (\n            <VersionMenuItem\n              type=\"draft\"\n              onSelect={onSelectRelease}\n              isSelected={selected === 'draft'}\n              documentId={documentId}\n            />\n          )}\n          {releases.map((release) => (\n            <VersionMenuItem\n              key={release._id}\n              release={release}\n              onSelect={onSelectRelease}\n              isSelected={typeof selected !== 'string' && selected?._id === release._id}\n              documentId={documentId}\n            />\n          ))}\n        </Menu>\n      }\n    />\n  )\n}\n\ntype VersionMenuItemProps = {\n  onSelect: (releaseId: string) => void\n  isSelected?: boolean\n  documentId: string\n} & (\n  | {\n      release: ReleaseDocument\n      type?: never\n    }\n  | {\n      type: 'published' | 'draft'\n      release?: never\n    }\n)\n\nconst VersionMenuItem: ComponentType<VersionMenuItemProps> = ({\n  type,\n  release,\n  onSelect,\n  isSelected,\n  documentId,\n}) => {\n  const {t: tCore} = useTranslation()\n  const {t: tStructure} = useTranslation(structureLocaleNamespace)\n\n  const onClick = useCallback(() => {\n    if (type === 'draft') {\n      onSelect(getDraftId(documentId))\n      return\n    }\n\n    if (type === 'published') {\n      onSelect(getPublishedId(documentId))\n      return\n    }\n\n    if (typeof release?._id !== 'undefined') {\n      onSelect(getVersionId(documentId, getReleaseIdFromReleaseDocumentId(release._id)))\n    }\n  }, [type, onSelect, documentId, release?._id])\n\n  if (type) {\n    const tone: ButtonTone = type === 'published' ? 'positive' : 'caution'\n\n    return (\n      <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n        <Flex gap={1}>\n          <ReleaseAvatar padding={2} tone={tone} />\n          <Box paddingY={2}>\n            <Text size={1} weight=\"medium\">\n              {tStructure(['compare-versions.status', type].join('.'))}\n            </Text>\n          </Box>\n        </Flex>\n      </MenuItem>\n    )\n  }\n\n  const tone: ButtonTone = release ? getReleaseTone(release) : 'neutral'\n\n  return (\n    <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n      <Flex gap={1}>\n        <ReleaseAvatar padding={2} tone={tone} />\n        <Stack flex={1} paddingY={2} paddingRight={2} space={2}>\n          <Text size={1} weight=\"medium\">\n            {release.metadata.title || tCore('release.placeholder-untitled-release')}\n          </Text>\n          {['asap', 'undecided'].includes(release.metadata.releaseType) && (\n            <Text muted size={1}>\n              {tCore(`release.type.${release.metadata.releaseType}`)}\n            </Text>\n          )}\n          {release.metadata.releaseType === 'scheduled' && (\n            <Text muted size={1}>\n              {formatRelativeLocalePublishDate(release)}\n            </Text>\n          )}\n        </Stack>\n        <Flex flex=\"none\">\n          {isReleaseScheduledOrScheduling(release) && (\n            <Box padding={2}>\n              <Text size={1}>\n                <LockIcon />\n              </Text>\n            </Box>\n          )}\n        </Flex>\n      </Flex>\n    </MenuItem>\n  )\n}\n\nfunction getMenuButtonProps({\n  selected,\n  tCore,\n  tStructure,\n}: {\n  selected?: ReleaseDocument | 'published' | 'draft'\n  tCore: TFunction\n  tStructure: TFunction\n}): Pick<ComponentProps<typeof Button>, 'text' | 'tone' | 'icon' | 'iconRight' | 'disabled'> {\n  if (typeof selected === 'undefined') {\n    return {\n      text: tCore('common.loading'),\n      tone: 'neutral',\n      disabled: true,\n    }\n  }\n\n  if (isReleaseDocument(selected)) {\n    const tone: ButtonTone = selected ? getReleaseTone(selected) : 'neutral'\n\n    return {\n      text: selected?.metadata.title || tCore('release.placeholder-untitled-release'),\n      icon: <ReleaseAvatar padding={1} tone={tone} />,\n      iconRight: selected && isReleaseScheduledOrScheduling(selected) ? <LockIcon /> : undefined,\n      tone,\n    }\n  }\n\n  const tone: ButtonTone = selected === 'published' ? 'positive' : 'caution'\n\n  return {\n    text: tStructure(['compare-versions.status', selected].join('.')),\n    icon: <ReleaseAvatar padding={1} tone={tone} />,\n    tone,\n  }\n}\n\n/**\n * If the provided document id represents a version, find and return the corresponding release\n * document. Otherwise, return a string literal signifying whether the document id represents a\n * published or draft document.\n */\nfunction findRelease(\n  documentId: string,\n  releases: ReleaseDocument[],\n): ReleaseDocument | 'published' | 'draft' | undefined {\n  if (isPublishedId(documentId)) {\n    return 'published'\n  }\n\n  if (isDraftId(documentId)) {\n    return 'draft'\n  }\n\n  return releases.find(\n    ({_id}) => getReleaseIdFromReleaseDocumentId(_id) === getVersionFromId(documentId),\n  )\n}\n","import {styled} from 'styled-components'\n\nexport const DialogLayout = styled.div`\n  --offset-block: 40px;\n  display: grid;\n  height: calc(100vh - var(--offset-block));\n  min-height: 0;\n  overflow: hidden;\n  grid-template-areas:\n    'header header'\n    'previous-document next-document';\n  grid-template-columns: 1fr 1fr;\n  grid-template-rows: min-content minmax(0, 1fr);\n`\n","import {type ComponentType} from 'react'\nimport {type DocumentLayoutProps, type PluginOptions} from 'sanity'\n\n/**\n * Pick the document layout component when composing the component middleware chain.\n */\nexport function pickDocumentLayoutComponent(plugin: PluginOptions) {\n  return plugin.document?.components?.unstable_layout as ComponentType<\n    Omit<DocumentLayoutProps, 'renderDefault'>\n  >\n}\n","import {type Path} from '@sanity/types'\nimport {useCallback, useMemo} from 'react'\nimport deepEquals from 'react-fast-compare'\nimport {distinctUntilChanged, filter, map, type Observable} from 'rxjs'\n\nimport {type PathSyncChannelProps, type PathSyncState} from '../types/pathSyncChannel'\n\ntype Push = (state: PathSyncState) => void\n\n/**\n * Synchronise the open path between multiple document panes.\n *\n * @internal\n */\nexport function usePathSyncChannel({syncChannel, id}: PathSyncChannelProps): {\n  push: Push\n  path: Observable<Path>\n} {\n  const push = useCallback<Push>(\n    (state) => syncChannel.next({...state, source: id}),\n    [id, syncChannel],\n  )\n\n  const path = useMemo(\n    () =>\n      syncChannel.pipe(\n        distinctUntilChanged<PathSyncState>((previous, next) =>\n          deepEquals(previous.path, next.path),\n        ),\n        filter(({source}) => source !== id),\n        map((state) => state.path),\n      ),\n    [id, syncChannel],\n  )\n\n  return {\n    path,\n    push,\n  }\n}\n","import {styled} from 'styled-components'\n\nexport const Scroller = styled.div`\n  position: relative;\n  height: 100%;\n  overflow: auto;\n  scroll-behavior: smooth;\n  scrollbar-width: var(--scrollbar-width);\n  overscroll-behavior: contain;\n  will-change: scroll-position;\n`\n","import {type Path, type SanityDocument} from '@sanity/types'\nimport {\n  BoundaryElementProvider,\n  Card,\n  Container as UiContainer,\n  DialogProvider,\n  PortalProvider,\n} from '@sanity/ui'\nimport {noop} from 'lodash'\nimport {\n  type ComponentType,\n  type CSSProperties,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  ChangeIndicatorsTracker,\n  createPatchChannel,\n  FormBuilder,\n  getPublishedId,\n  getVersionFromId,\n  isDraftId,\n  isPublishedId,\n  isVersionId,\n  LoadingBlock,\n  useDocumentForm,\n  useEditState,\n  useMiddlewareComponents,\n  VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {CommentsEnabledContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {pickDocumentLayoutComponent} from '../../panes/document/document-layout/pickDocumentLayoutComponent'\nimport {usePathSyncChannel} from '../hooks/usePathSyncChannel'\nimport {type PathSyncChannel} from '../types/pathSyncChannel'\nimport {Scroller} from './Scroller'\n\nconst DiffViewPaneLayout = styled(Card)`\n  position: relative;\n  grid-area: var(--grid-area);\n`\n\nconst Container = styled(UiContainer)`\n  width: auto;\n`\n\ninterface DiffViewPaneProps {\n  documentType: string\n  documentId: string\n  role: 'previous' | 'next'\n  scrollElement: HTMLElement | null\n  syncChannel: PathSyncChannel\n  compareDocument: {\n    type: string\n    id: string\n  }\n}\n\nexport const DiffViewPane = forwardRef<HTMLDivElement, DiffViewPaneProps>(function DiffViewPane(\n  {role, documentType, documentId, scrollElement, syncChannel, compareDocument},\n  ref,\n) {\n  const containerElement = useRef<HTMLDivElement | null>(null)\n  const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n  const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)\n\n  const DocumentLayout = useMiddlewareComponents({\n    pick: pickDocumentLayoutComponent,\n    defaultComponent: useCallback(\n      () => (\n        <DiffViewDocument\n          compareDocument={compareDocument}\n          documentId={documentId}\n          documentType={documentType}\n          role={role}\n          scrollElement={scrollElement}\n          syncChannel={syncChannel}\n        />\n      ),\n      [compareDocument, documentId, documentType, role, scrollElement, syncChannel],\n    ),\n  })\n\n  return (\n    <ReviewChangesContext.Provider\n      value={{\n        // Render the change indicators inertly, because the diff view modal does not currently\n        // provide a way to display document inspectors.\n        isInteractive: false,\n        onOpenReviewChanges: noop,\n        onSetFocus: noop,\n        isReviewChangesOpen: false,\n      }}\n    >\n      <ChangeIndicatorsTracker>\n        <VirtualizerScrollInstanceProvider\n          scrollElement={scrollElement}\n          containerElement={containerElement}\n        >\n          <BoundaryElementProvider element={boundaryElement}>\n            <DiffViewPaneLayout\n              ref={setBoundaryElement}\n              style={\n                {\n                  '--grid-area': `${role}-document`,\n                } as CSSProperties\n              }\n              borderLeft={role === 'next'}\n            >\n              <Scroller\n                ref={ref}\n                style={\n                  {\n                    // The scroll position is synchronised between panes. This style hides the\n                    // scrollbar for all panes except the one displaying the next document.\n                    '--scrollbar-width': role !== 'next' && 'none',\n                  } as CSSProperties\n                }\n              >\n                <PortalProvider element={portalElement}>\n                  <DialogProvider position=\"absolute\">\n                    <Container ref={containerElement} padding={4} width={1}>\n                      <DocumentLayout documentId={documentId} documentType={documentType} />\n                    </Container>\n                  </DialogProvider>\n                </PortalProvider>\n              </Scroller>\n              <div data-testid=\"diffView-document-panel-portal\" ref={setPortalElement} />\n            </DiffViewPaneLayout>\n          </BoundaryElementProvider>\n        </VirtualizerScrollInstanceProvider>\n      </ChangeIndicatorsTracker>\n    </ReviewChangesContext.Provider>\n  )\n})\n\nconst DiffViewDocument: ComponentType<DiffViewPaneProps> = ({\n  role,\n  documentType,\n  documentId,\n  syncChannel,\n  compareDocument,\n}) => {\n  const compareValue = useCompareValue({compareDocument})\n  const [patchChannel] = useState(() => createPatchChannel())\n\n  const {\n    formState,\n    onChange,\n    onFocus,\n    onBlur,\n    onSetActiveFieldGroup,\n    onSetCollapsedFieldSet,\n    onSetCollapsedPath,\n    collapsedFieldSets,\n    ready,\n    collapsedPaths,\n    schemaType,\n    value,\n    onProgrammaticFocus,\n    ...documentForm\n  } = useDocumentForm({\n    documentId: getPublishedId(documentId),\n    documentType,\n    selectedPerspectiveName: perspectiveName(documentId),\n    releaseId: getVersionFromId(documentId),\n    comparisonValue: compareValue,\n  })\n\n  const isLoading = formState === null || !ready\n\n  const pathSyncChannel = usePathSyncChannel({\n    id: role,\n    syncChannel,\n  })\n\n  const onPathOpen = useCallback(\n    (path: Path) => {\n      documentForm.onPathOpen(path)\n      pathSyncChannel.push({source: role, path})\n    },\n    [documentForm, pathSyncChannel, role],\n  )\n\n  useEffect(() => {\n    const subscription = pathSyncChannel.path.subscribe(onProgrammaticFocus)\n    return () => subscription.unsubscribe()\n  }, [onProgrammaticFocus, pathSyncChannel.path])\n\n  return isLoading ? (\n    <LoadingBlock showText />\n  ) : (\n    <CommentsEnabledContext.Provider\n      value={{\n        enabled: false,\n        mode: null,\n      }}\n    >\n      <FormBuilder\n        // eslint-disable-next-line camelcase\n        __internal_patchChannel={patchChannel}\n        id={`diffView-pane-${role}`}\n        onChange={onChange}\n        onPathFocus={onFocus}\n        onPathOpen={onPathOpen}\n        onPathBlur={onBlur}\n        onFieldGroupSelect={onSetActiveFieldGroup}\n        onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n        onSetPathCollapsed={onSetCollapsedPath}\n        collapsedPaths={collapsedPaths}\n        collapsedFieldSets={collapsedFieldSets}\n        focusPath={formState.focusPath}\n        changed={formState.changed}\n        focused={formState.focused}\n        groups={formState.groups}\n        validation={formState.validation}\n        members={formState.members}\n        presence={formState.presence}\n        schemaType={schemaType}\n        value={value}\n      />\n    </CommentsEnabledContext.Provider>\n  )\n}\n\nfunction perspectiveName(documentId: string): string | undefined {\n  if (isVersionId(documentId)) {\n    return getVersionFromId(documentId)\n  }\n\n  if (isPublishedId(documentId)) {\n    return 'published'\n  }\n\n  return undefined\n}\n\ntype UseCompareValueOptions = Pick<DiffViewPaneProps, 'compareDocument'>\n\n/**\n * Fetch the contents of `compareDocument` for comparison with another version of the document.\n */\nfunction useCompareValue({compareDocument}: UseCompareValueOptions): SanityDocument | undefined {\n  const compareDocumentEditState = useEditState(\n    getPublishedId(compareDocument.id),\n    compareDocument.type,\n    'low',\n    getVersionFromId(compareDocument.id),\n  )\n\n  return useMemo(() => {\n    if (isVersionId(compareDocument.id)) {\n      return compareDocumentEditState.version ?? undefined\n    }\n\n    if (isDraftId(compareDocument.id)) {\n      return compareDocumentEditState.draft ?? undefined\n    }\n\n    if (isPublishedId(compareDocument.id)) {\n      return compareDocumentEditState.published ?? undefined\n    }\n\n    return undefined\n  }, [\n    compareDocument.id,\n    compareDocumentEditState.draft,\n    compareDocumentEditState.published,\n    compareDocumentEditState.version,\n  ])\n}\n","import {type ReferenceInputOptions} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nconst Link = styled.a`\n  flex: 1;\n  text-decoration: none;\n  color: inherit;\n`\n\nexport const EditReferenceLinkComponent: ReferenceInputOptions['EditReferenceLinkComponent'] = ({\n  children,\n  documentId: _documentId,\n  documentType,\n}) => {\n  const {href} = useIntentLink({\n    intent: 'edit',\n    params: {\n      id: _documentId,\n      type: documentType,\n    },\n  })\n\n  return (\n    <Link href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n      {children}\n    </Link>\n  )\n}\n","import {type ComponentType, useContext, useMemo, useState} from 'react'\nimport {type DocumentLayoutProps} from 'sanity'\nimport {ReferenceInputOptionsContext} from 'sanity/_singletons'\n\nimport {Dialog} from '../../../ui-components/dialog/Dialog'\nimport {useCreatePathSyncChannel} from '../hooks/useCreatePathSyncChannel'\nimport {useDiffViewRouter} from '../hooks/useDiffViewRouter'\nimport {useDiffViewState} from '../hooks/useDiffViewState'\nimport {useScrollMirror} from '../hooks/useScrollMirror'\nimport {VersionModeHeader} from '../versionMode/components/VersionModeHeader'\nimport {DialogLayout} from './DialogLayout'\nimport {DiffViewPane} from './DiffViewPane'\nimport {EditReferenceLinkComponent} from './EditReferenceLinkComponent'\n\nexport const DiffView: ComponentType<Pick<DocumentLayoutProps, 'documentId'>> = ({documentId}) => {\n  const {documents, state, mode} = useDiffViewState()\n  const {exitDiffView} = useDiffViewRouter()\n  const syncChannel = useCreatePathSyncChannel()\n  const [previousPaneElement, setPreviousPaneElement] = useState<HTMLElement | null>(null)\n  const [nextPaneElement, setNextPaneElement] = useState<HTMLElement | null>(null)\n  const referenceInputOptionsContext = useContext(ReferenceInputOptionsContext)\n\n  const diffViewReferenceInputOptionsContext = useMemo(\n    () => ({\n      ...referenceInputOptionsContext,\n      disableNew: true,\n      EditReferenceLinkComponent,\n    }),\n    [referenceInputOptionsContext],\n  )\n\n  useScrollMirror([previousPaneElement, nextPaneElement])\n\n  return (\n    <ReferenceInputOptionsContext.Provider value={diffViewReferenceInputOptionsContext}>\n      <Dialog\n        id=\"diffView\"\n        width=\"auto\"\n        onClose={exitDiffView}\n        padding={false}\n        __unstable_hideCloseButton\n      >\n        <DialogLayout>\n          {mode === 'version' && <VersionModeHeader documentId={documentId} state={state} />}\n          {state === 'ready' && (\n            <>\n              <DiffViewPane\n                documentType={documents.previous.type}\n                documentId={documents.previous.id}\n                role=\"previous\"\n                ref={setPreviousPaneElement}\n                scrollElement={previousPaneElement}\n                syncChannel={syncChannel}\n                compareDocument={documents.previous}\n              />\n              <DiffViewPane\n                documentType={documents.next.type}\n                documentId={documents.next.id}\n                role=\"next\"\n                ref={setNextPaneElement}\n                scrollElement={nextPaneElement}\n                syncChannel={syncChannel}\n                // The previous document's edit state is used to calculate the diff inroduced by the next document.\n                compareDocument={documents.previous}\n              />\n            </>\n          )}\n        </DialogLayout>\n      </Dialog>\n    </ReferenceInputOptionsContext.Provider>\n  )\n}\n","import {useToast} from '@sanity/ui'\nimport {type ComponentType, type PropsWithChildren} from 'react'\nimport {type DocumentLayoutProps, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {DiffView} from '../components/DiffView'\nimport {useDiffViewState} from '../hooks/useDiffViewState'\n\nexport const DiffViewDocumentLayout: ComponentType<\n  PropsWithChildren<Pick<DocumentLayoutProps, 'documentId' | 'documentType'>>\n> = ({children, documentId}) => {\n  const toast = useToast()\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {isActive} = useDiffViewState({\n    onParamsError: (errors) => {\n      toast.push({\n        id: 'diffViewParamsParsingError',\n        status: 'error',\n        title: t('compare-version.error.invalidParams.title'),\n        description: (\n          <ul>\n            {errors.map(([error, input]) => (\n              <li key={error}>\n                {t(`compare-version.error.${error}`, {\n                  input,\n                })}\n              </li>\n            ))}\n          </ul>\n        ),\n      })\n    },\n  })\n\n  return (\n    <>\n      {children}\n      {isActive && <DiffView documentId={documentId} />}\n    </>\n  )\n}\n","import {Box, type CardTone} from '@sanity/ui'\n\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\n\n/**\n * @internal\n */\nexport function ErrorPane(props: {\n  children?: React.ReactNode\n  currentMinWidth?: number\n  flex?: number\n  minWidth?: number\n  paneKey: string\n  title?: React.ReactNode\n  tone?: CardTone\n}) {\n  const {\n    children,\n    currentMinWidth,\n    flex,\n    minWidth,\n    paneKey,\n    title = 'Error',\n    tone = 'critical',\n  } = props\n\n  return (\n    <Pane\n      currentMinWidth={currentMinWidth}\n      flex={flex}\n      id={paneKey}\n      minWidth={minWidth}\n      tone={tone}\n    >\n      <PaneHeader title={title} />\n      <PaneContent overflow=\"auto\">\n        <Box paddingX={4} paddingY={5}>\n          {children}\n        </Box>\n      </PaneContent>\n    </Pane>\n  )\n}\n","import {merge, type Observable, of} from 'rxjs'\nimport {delay, mapTo} from 'rxjs/operators'\nimport {isDev} from 'sanity'\n\n/**\n * @internal\n */\nexport type WaitMessage = {messageKey: string} | {message: string}\n\n/**\n * @internal\n */\nexport function getWaitMessages(path: string[]): Observable<WaitMessage> {\n  const thresholds: (WaitMessage & {ms: number})[] = [\n    {ms: 300, messageKey: 'panes.resolving.default-message'},\n    {ms: 5000, messageKey: 'panes.resolving.slow-resolve-message'},\n  ]\n\n  if (isDev) {\n    const message = [\n      'Check console for errors?',\n      'Is your observable/promise resolving?',\n      path.length > 0 ? `Structure path: ${path.join(' ➝ ')}` : '',\n    ]\n\n    thresholds.push({\n      ms: 10000,\n      message: message.join('\\n'),\n    })\n  }\n\n  const src = of(null)\n\n  return merge(\n    ...thresholds.map((threshold) =>\n      src.pipe(\n        mapTo(\n          'messageKey' in threshold\n            ? {messageKey: threshold.messageKey}\n            : {message: threshold.message},\n        ),\n        delay(threshold.ms),\n      ),\n    ),\n  )\n}\n","import {_raf2, type CardTone, Flex} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useState} from 'react'\nimport {type Observable} from 'rxjs'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay} from '../../components/Delay'\nimport {Pane, PaneContent} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {getWaitMessages, type WaitMessage} from './getWaitMessages'\n\ninterface LoadingPaneProps {\n  delay?: number\n  flex?: number\n  message?: string | ((p: string[]) => string | Observable<WaitMessage>)\n  minWidth?: number\n  paneKey: string\n  path?: string\n  selected?: boolean\n  title?: string\n  tone?: CardTone\n}\n\nconst DELAY = false\nconst DEFAULT_MESSAGE_KEY = 'panes.resolving.default-message'\n\nconst Content = styled(Flex)`\n  opacity: 0;\n  transition: opacity 200ms;\n\n  &[data-mounted] {\n    opacity: 1;\n  }\n`\n\n/**\n * @internal\n */\nexport const LoadingPane = memo((props: LoadingPaneProps) => {\n  const {\n    delay = 300,\n    flex,\n    message: messageProp = getWaitMessages,\n    minWidth,\n    paneKey,\n    path,\n    selected,\n    title,\n    tone,\n  } = props\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const resolvedMessage = useMemo(() => {\n    if (typeof messageProp === 'function') {\n      return messageProp(path ? path.split(';') : [])\n    }\n\n    return messageProp\n  }, [messageProp, path])\n\n  const [currentMessage, setCurrentMessage] = useState<string | null>(() => {\n    if (typeof resolvedMessage === 'string') return resolvedMessage\n    return t(DEFAULT_MESSAGE_KEY)\n  })\n\n  useEffect(() => {\n    if (typeof resolvedMessage !== 'object') return undefined\n    if (typeof resolvedMessage.subscribe !== 'function') return undefined\n\n    const sub = resolvedMessage.subscribe((message) => {\n      setCurrentMessage('messageKey' in message ? t(message.messageKey) : message.message)\n    })\n\n    return () => sub.unsubscribe()\n  }, [resolvedMessage, t])\n\n  const [contentElement, setContentElement] = useState<HTMLDivElement | null>(null)\n  const [mounted, setMounted] = useState(false)\n\n  useEffect(() => {\n    if (!contentElement) return undefined\n    return _raf2(() => setMounted(true))\n  }, [contentElement])\n\n  const content = (\n    <Content\n      align=\"center\"\n      data-mounted={mounted ? '' : undefined}\n      direction=\"column\"\n      height=\"fill\"\n      justify=\"center\"\n      ref={setContentElement}\n    >\n      <LoadingBlock showText title={title || currentMessage} />\n    </Content>\n  )\n\n  return (\n    <Pane flex={flex} id={paneKey} minWidth={minWidth} selected={selected} tone={tone}>\n      <PaneContent>{DELAY ? <Delay ms={delay}>{content}</Delay> : content}</PaneContent>\n    </Pane>\n  )\n})\n\nLoadingPane.displayName = 'Memo(LoadingPane)'\n","import {useContext} from 'react'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\n\n/** @internal */\nexport function useDocumentPane(): DocumentPaneContextValue {\n  const documentPane = useContext(DocumentPaneContext)\n\n  if (!documentPane) {\n    throw new Error('DocumentPane: missing context value')\n  }\n\n  return documentPane\n}\n","import {useCallback, useLayoutEffect, useRef} from 'react'\nimport {\n  COMMENTS_INSPECTOR_NAME,\n  CommentsEnabledProvider,\n  CommentsProvider,\n  useCommentsEnabled,\n  usePerspective,\n  useStudioUrl,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface CommentsWrapperProps {\n  children: React.ReactNode\n  documentId: string\n  documentType: string\n}\n\n/**\n * @internal\n * A wrapper that conditionally wraps the document layout in a comments provider\n * if the feature is enabled for the project and the current document.\n */\nexport function CommentsWrapper(props: CommentsWrapperProps) {\n  const {children, documentId, documentType} = props\n\n  return (\n    <CommentsEnabledProvider documentId={documentId} documentType={documentType}>\n      <CommentsProviderWrapper documentId={documentId} documentType={documentType}>\n        {children}\n      </CommentsProviderWrapper>\n    </CommentsEnabledProvider>\n  )\n}\n\nfunction CommentsProviderWrapper(props: CommentsWrapperProps) {\n  const {children, documentId, documentType} = props\n\n  const {enabled} = useCommentsEnabled()\n  const {connectionState, onPathOpen, inspector, openInspector} = useDocumentPane()\n  const {selectedReleaseId} = usePerspective()\n  const {params, setParams, createPathWithParams} = usePaneRouter()\n  const {studioUrl} = useStudioUrl(window.location.origin)\n\n  const selectedCommentId = params?.comment\n  const paramsRef = useRef(params)\n\n  useLayoutEffect(() => {\n    paramsRef.current = params\n  }, [params])\n\n  const getCommentLink = useCallback(\n    (commentId: string) => {\n      // Generate a path based on the current pane params.\n      // We force a value for `inspect` to ensure that this is included in URLs when comments\n      // are created outside of the inspector context (i.e. directly on the field)\n      // @todo: consider filtering pane router params and culling all non-active RHS panes prior to generating this link\n      const path = createPathWithParams({\n        ...paramsRef.current,\n        comment: commentId,\n        inspect: COMMENTS_INSPECTOR_NAME,\n      })\n      return `${studioUrl}${path}`\n    },\n    [createPathWithParams, studioUrl],\n  )\n\n  const handleClearSelectedComment = useCallback(() => {\n    setParams({...paramsRef.current, comment: undefined})\n  }, [setParams])\n\n  const handleOpenCommentsInspector = useCallback(() => {\n    if (inspector?.name === COMMENTS_INSPECTOR_NAME) return\n\n    openInspector(COMMENTS_INSPECTOR_NAME)\n  }, [inspector?.name, openInspector])\n\n  // If comments are not enabled, render the default document layout\n  if (!enabled) {\n    return <>{children}</>\n  }\n\n  return (\n    <CommentsProvider\n      documentId={documentId}\n      documentType={documentType}\n      getCommentLink={getCommentLink}\n      isCommentsOpen={inspector?.name === COMMENTS_INSPECTOR_NAME}\n      isConnecting={connectionState === 'connecting'}\n      onClearSelectedComment={handleClearSelectedComment}\n      onCommentsOpen={handleOpenCommentsInspector}\n      onPathOpen={onPathOpen}\n      selectedCommentId={selectedCommentId}\n      sortOrder=\"desc\"\n      type=\"field\"\n      releaseId={selectedReleaseId}\n    >\n      {children}\n    </CommentsProvider>\n  )\n}\n","import {useMemo} from 'react'\nimport {\n  getReleaseIdFromReleaseDocumentId,\n  getVersionFromId,\n  type ReleaseDocument,\n  useActiveReleases,\n  useArchivedReleases,\n  useDocumentVersions,\n  usePerspective,\n} from 'sanity'\n\nimport {usePaneRouter} from '../components/paneRouter/usePaneRouter'\nimport {type DocumentPaneContextValue} from '../panes/document/DocumentPaneContext'\n\ntype FilterReleases = {\n  notCurrentReleases: ReleaseDocument[]\n  currentReleases: ReleaseDocument[]\n  inCreation: ReleaseDocument | null\n}\n\n/**\n * @internal\n */\nexport function useFilteredReleases({\n  displayed,\n  documentId,\n}: Pick<DocumentPaneContextValue, 'displayed' | 'documentId'>): FilterReleases {\n  const {selectedReleaseId} = usePerspective()\n  const {data: releases} = useActiveReleases()\n  const {data: archivedReleases} = useArchivedReleases()\n  const {data: documentVersions} = useDocumentVersions({documentId})\n  const isCreatingDocument = displayed && !displayed._createdAt\n  const {params} = usePaneRouter()\n\n  return useMemo(() => {\n    if (!documentVersions) return {notCurrentReleases: [], currentReleases: [], inCreation: null}\n    // Gets the releases ids from the document versions, it means, the releases that the document belongs to\n    const releasesIds = documentVersions.map((id) => getVersionFromId(id))\n    const activeReleases = releases.reduce(\n      (acc: FilterReleases, release) => {\n        const versionDocExists = releasesIds.includes(\n          getReleaseIdFromReleaseDocumentId(release._id),\n        )\n        const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n        const isCreatingThisVersion =\n          isCreatingDocument &&\n          releaseId === getVersionFromId(displayed._id || '') &&\n          releaseId === selectedReleaseId\n\n        if (isCreatingThisVersion) {\n          acc.inCreation = release\n        } else if (versionDocExists) {\n          acc.currentReleases.push(release)\n        } else {\n          acc.notCurrentReleases.push(release)\n        }\n        return acc\n      },\n      {notCurrentReleases: [], currentReleases: [], inCreation: null},\n    )\n\n    // without historyVersion, version is not in an archived release\n    if (!params?.historyVersion) return activeReleases\n\n    const archivedRelease = archivedReleases.find(\n      (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n    )\n\n    // only for explicitly archived releases; published releases use published perspective\n    if (archivedRelease?.state === 'archived') {\n      activeReleases.currentReleases.push(archivedRelease)\n    }\n\n    return activeReleases\n  }, [\n    archivedReleases,\n    isCreatingDocument,\n    displayed?._id,\n    documentVersions,\n    params?.historyVersion,\n    releases,\n    selectedReleaseId,\n  ])\n}\n","import {useMemo} from 'react'\nimport {getReleaseIdFromReleaseDocumentId, getVersionId, useWorkspace} from 'sanity'\n\nimport {type DocumentPaneContextValue} from '../panes/document/DocumentPaneContext'\nimport {useFilteredReleases} from './useFilteredReleases'\n\n/**\n * @internal\n */\nexport interface DocumentIdStack {\n  /**\n   * The position of the displayed document within the stack.\n   */\n  position: number\n  /**\n   * The id of the previous document in the stack.\n   */\n  previousId?: string\n  /**\n   * The id of the next document in the stack.\n   */\n  nextId?: string\n  /**\n   * An array of document ids comprising the stack the displayed document is a member of, ordered per\n   * release layering.\n   */\n  stack: string[]\n}\n\n/**\n * Get a stack of document ids representing existing versions of the provided document with release\n * layering applied.\n *\n * @internal\n */\nexport function useDocumentIdStack({\n  displayed,\n  documentId,\n  editState,\n}: Pick<DocumentPaneContextValue, 'displayed' | 'documentId' | 'editState'>): DocumentIdStack {\n  const {\n    document: {\n      drafts: {enabled: isDraftModelEnabled},\n    },\n  } = useWorkspace()\n\n  const filteredReleases = useFilteredReleases({displayed, documentId})\n\n  const systemStack = [\n    editState?.published?._id,\n    isDraftModelEnabled ? editState?.draft?._id : [],\n  ].flat()\n\n  const releaseStack = filteredReleases.currentReleases.map(\n    (release) =>\n      editState?.id && getVersionId(editState.id, getReleaseIdFromReleaseDocumentId(release._id)),\n  )\n\n  const stack = systemStack.concat(releaseStack).filter((id) => typeof id === 'string')\n\n  const position = useMemo(\n    () => stack.findIndex((id) => id === displayed?._id),\n    [displayed?._id, stack],\n  )\n\n  const previousId = useMemo(() => stack[position - 1] ?? undefined, [position, stack])\n  const nextId = useMemo(() => stack[position + 1] ?? undefined, [position, stack])\n\n  return {\n    position,\n    previousId,\n    nextId,\n    stack,\n  }\n}\n","import {useContext} from 'react'\nimport {StructureToolContext} from 'sanity/_singletons'\n\nimport {type StructureToolContextValue} from './types'\n\n/** @internal */\nexport function useStructureTool(): StructureToolContextValue {\n  const structureTool = useContext(StructureToolContext)\n  if (!structureTool) throw new Error(`StructureTool: missing context value`)\n\n  return structureTool\n}\n","import {type PaneRouterContextValue} from '../../components'\nimport {type PaneMenuItemGroup} from '../../types'\n\nexport const DOCUMENT_PANEL_MIN_WIDTH = 320\nexport const DOCUMENT_PANEL_INITIAL_MIN_WIDTH = 600\n\nexport const DOCUMENT_INSPECTOR_MIN_WIDTH = 320\nexport const DOCUMENT_INSPECTOR_MAX_WIDTH = 540\n\nexport const EMPTY_PARAMS: NonNullable<PaneRouterContextValue['params']> = {}\n\nexport const INSPECT_ACTION_PREFIX = 'inspect:'\n\nexport const DEFAULT_MENU_ITEM_GROUPS: PaneMenuItemGroup[] = [{id: 'inspectors'}, {id: 'links'}]\n\n// inspectors\nexport const HISTORY_INSPECTOR_NAME = 'sanity/structure/history'\nexport const VALIDATION_INSPECTOR_NAME = 'sanity/structure/validation'\n","import {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, useUnique} from 'sanity'\n\ninterface DocumentInspectorMenuItemsResolverProps {\n  documentId: string\n  documentType: string\n  inspectors: DocumentInspector[]\n  onMenuItems: (items: DocumentInspectorMenuItem[]) => void\n}\n\n// The menu item in a document inspector are resolved in a React hook (`useMenuItem`).\n// This means that the menu item needs to be resolved in a React component (in accordance with the rules of hooks).\n// In this component, we map over the configured inspectors and render a `InspectorMenuItem` for each.\n// The `InspectorMenuItem` will resolve the menu item in a React hook and call the `setMenuItem` callback\n// with the resolved menu item and the index of the inspector.\n// Finally, we call the `onMenuItems` callback with the resolved menu items.\nexport function DocumentInspectorMenuItemsResolver(props: DocumentInspectorMenuItemsResolverProps) {\n  const {documentId, documentType, inspectors, onMenuItems} = props\n\n  const len = inspectors.length\n  const [menuItems, setMenuItems] = useState<DocumentInspectorMenuItem[]>(() =>\n    Array.from(new Array(len)),\n  )\n\n  useEffect(() => {\n    if (menuItems.length !== len) {\n      const newFieldActions = Array.from(new Array(len))\n\n      for (let i = 0; i < len; i++) {\n        newFieldActions[i] = menuItems[i]\n      }\n\n      setMenuItems(newFieldActions)\n    }\n  }, [len, menuItems])\n\n  const setMenuItem = useCallback((index: number, node: DocumentInspectorMenuItem) => {\n    setMenuItems((prev) => {\n      const next = [...prev]\n      next[index] = node\n      return next\n    })\n  }, [])\n\n  useEffect(() => {\n    onMenuItems(menuItems.filter(Boolean))\n  }, [menuItems, onMenuItems])\n\n  const InspectorMenuItems = useMemo(() => {\n    return inspectors.map((inspector, index) => {\n      return inspector.useMenuItem\n        ? ([\n            defineInspectorMenuItemComponent({\n              documentId,\n              documentType,\n              index,\n              setMenuItem,\n              useMenuItem: inspector.useMenuItem,\n            }),\n            inspector.name,\n          ] as const)\n        : ([() => null, ''] as const)\n    })\n  }, [documentId, documentType, inspectors, setMenuItem])\n\n  return (\n    <>\n      {InspectorMenuItems.map(([InspectorMenuItem, key]) => key && <InspectorMenuItem key={key} />)}\n    </>\n  )\n}\nDocumentInspectorMenuItemsResolver.displayName = 'DocumentInspectorMenuItemsResolver'\n\nfunction defineInspectorMenuItemComponent({\n  documentId,\n  documentType,\n  index,\n  setMenuItem,\n  useMenuItem,\n}: {\n  documentId: string\n  documentType: string\n  index: number\n  setMenuItem: (index: number, node: DocumentInspectorMenuItem) => void\n  useMenuItem: NonNullable<DocumentInspector['useMenuItem']>\n}) {\n  return memo(function InspectorMenuItem() {\n    const menuItem = useMenuItem({\n      documentId,\n      documentType,\n    })\n    const node = useUnique(menuItem)\n\n    useEffect(() => {\n      setMenuItem(index, node)\n    }, [node])\n\n    return null\n  })\n}\n","import {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\n\n/**\n * useDocumentTitle hook return type.\n *\n * @beta\n * @hidden\n */\ninterface UseDocumentTitle {\n  error?: string\n  title?: string\n}\n\n/**\n * React hook that returns the document title for the current document in the document pane.\n *\n * @beta\n * @hidden\n *\n * @returns The document title or error. See {@link UseDocumentTitle}\n */\nexport function useDocumentTitle(): UseDocumentTitle {\n  const {connectionState, schemaType, title, displayed} = useDocumentPane()\n  const {t} = useTranslation(structureLocaleNamespace)\n  const subscribed = Boolean(displayed)\n\n  const {error, value} = useValuePreview({\n    enabled: subscribed,\n    schemaType,\n    value: displayed,\n  })\n\n  if (connectionState === 'connecting' && !subscribed) {\n    return {error: undefined, title: undefined}\n  }\n\n  if (title) {\n    return {error: undefined, title}\n  }\n\n  if (!displayed) {\n    return {\n      error: undefined,\n      title: t('panes.document-header-title.new.text', {\n        schemaType: schemaType?.title || schemaType?.name,\n      }),\n    }\n  }\n\n  if (error) {\n    return {\n      error: t('panes.document-list-pane.error.text', {error: error.message}),\n      title: undefined,\n    }\n  }\n\n  return {error: undefined, title: value?.title}\n}\n","import {useToast} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useRef} from 'react'\nimport {Translate, useDocumentOperationEvent, useTranslation} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\nimport {useDocumentTitle} from './useDocumentTitle'\n\nconst IGNORE_OPS = ['patch', 'commit']\n\nexport const DocumentOperationResults = memo(function DocumentOperationResults() {\n  const {push: pushToast} = useToast()\n  const {documentId, documentType, value: documentPaneValue} = useDocumentPane()\n  const documentTitleInfo = useDocumentTitle()\n  const titleError = documentTitleInfo.error\n  const event: any = useDocumentOperationEvent(documentId, documentType)\n  const prevEvent = useRef(event)\n  const paneRouter = usePaneRouter()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const title = useMemo(() => {\n    // If title isn't set from document preview, use the title from the document pane value\n    if (\n      !documentTitleInfo.title &&\n      !titleError &&\n      !IGNORE_OPS.includes(event?.op) &&\n      typeof documentPaneValue.title === 'string' &&\n      event?.type === 'success'\n    ) {\n      return documentPaneValue.title\n    }\n    return documentTitleInfo.title\n  }, [documentTitleInfo.title, titleError, event, documentPaneValue.title])\n  //Truncate the document title and add \"...\" if it is over 25 characters\n  const documentTitleBase = title || t('panes.document-operation-results.operation-undefined-title')\n  const documentTitle =\n    documentTitleBase.length > 25 ? `${documentTitleBase.slice(0, 25)}...` : documentTitleBase\n\n  useEffect(() => {\n    if (!event || event === prevEvent.current) return\n\n    let cleanupId: number | undefined\n\n    if (event.type === 'error') {\n      pushToast({\n        closable: true,\n        duration: 30000, // 30s\n        status: 'error',\n        title: t('panes.document-operation-results.operation-error', {context: event.op}),\n        description: (\n          <details>\n            <summary>{t('panes.document-operation-results.error.summary.title')}</summary>\n            {event.error.message}\n          </details>\n        ),\n      })\n    }\n\n    if (event.type === 'success' && !IGNORE_OPS.includes(event.op)) {\n      pushToast({\n        closable: true,\n        status: 'success',\n        title: (\n          <Translate\n            context={event.op}\n            i18nKey=\"panes.document-operation-results.operation-success\"\n            t={t}\n            values={{\n              op: event.op,\n              title: documentTitle,\n            }}\n            components={{\n              Strong: 'strong',\n            }}\n          />\n        ),\n      })\n    }\n\n    /**\n     * If the document was deleted successfully, close the pane.\n     */\n    if (event.type === 'success' && event.op === 'delete') {\n      // Wait until next tick to allow deletion toasts to appear first\n      cleanupId = setTimeout(() => paneRouter.closeCurrentAndAfter(), 0) as any as number\n    }\n\n    prevEvent.current = event\n\n    // eslint-disable-next-line consistent-return\n    return () => clearTimeout(cleanupId)\n  }, [event, paneRouter, pushToast, t, documentTitle])\n\n  return null\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type PreviewValue, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {assignWith} from 'lodash'\nimport {type ReactNode} from 'react'\nimport {combineLatest, type Observable, of} from 'rxjs'\nimport {map, startWith} from 'rxjs/operators'\nimport {type DocumentPreviewStore, getDraftId, getPublishedId} from 'sanity'\n\nimport {type PaneItemPreviewState} from './types'\n\nexport const isLiveEditEnabled = (schemaType: Pick<SchemaType, 'liveEdit'>) =>\n  schemaType.liveEdit === true\n\nexport const getMissingDocumentFallback = (item: SanityDocument) => ({\n  title: <em>{item.title ? String(item.title) : 'Missing document'}</em>,\n  subtitle: <em>{item.title ? `Missing document ID: ${item._id}` : `Document ID: ${item._id}`}</em>,\n  media: () => <WarningOutlineIcon />,\n})\n\nexport const getValueWithFallback = ({\n  value,\n  draft,\n  published,\n}: {\n  value: SanityDocument\n  draft?: Partial<SanityDocument> | PreviewValue | null\n  published?: Partial<SanityDocument> | PreviewValue | null\n}) => {\n  const snapshot = draft || published\n\n  if (!snapshot) {\n    return getMissingDocumentFallback(value)\n  }\n\n  return assignWith({}, snapshot, value, (objValue, srcValue) => {\n    return typeof srcValue === 'undefined' ? objValue : srcValue\n  })\n}\n\nexport function getPreviewStateObservable(\n  documentPreviewStore: DocumentPreviewStore,\n  schemaType: SchemaType,\n  documentId: string,\n  title: ReactNode,\n): Observable<PaneItemPreviewState> {\n  const draft$ = isLiveEditEnabled(schemaType)\n    ? of({snapshot: null})\n    : documentPreviewStore.observeForPreview(\n        {_type: 'reference', _ref: getDraftId(documentId)},\n        schemaType,\n      )\n\n  const published$ = documentPreviewStore.observeForPreview(\n    {_type: 'reference', _ref: getPublishedId(documentId)},\n    schemaType,\n  )\n\n  return combineLatest([draft$, published$]).pipe(\n    map(([draft, published]) => ({\n      draft: draft.snapshot ? {title, ...draft.snapshot} : null,\n      isLoading: false,\n      published: published.snapshot ? {title, ...published.snapshot} : null,\n    })),\n    startWith({draft: null, isLoading: true, published: null}),\n  )\n}\n","import {type SchemaType} from '@sanity/types'\nimport {type EditStateFor, type Workspace} from 'sanity'\n\nimport {isLiveEditEnabled} from './components/paneItem/helpers'\n\nexport interface Context {\n  editState: Pick<EditStateFor, 'ready' | 'draft' | 'published' | 'version'> | null\n  workspace: {\n    document: {\n      drafts: Pick<Workspace['document']['drafts'], 'enabled'>\n    }\n  }\n  schemaType: Pick<SchemaType, 'liveEdit'>\n}\n\n/**\n * Determine whether a document has an obsolete draft. This occurs if a document has a draft while\n * the draft model is inactive, or if a live-edit document has a draft.\n */\nexport function hasObsoleteDraft({editState, workspace, schemaType}: Context):\n  | {\n      result: true\n      reason: 'LIVE_EDIT_ACTIVE' | 'DRAFT_MODEL_INACTIVE'\n    }\n  | {result: false}\n  | {result: undefined} {\n  if (!editState?.ready) {\n    return {\n      result: undefined,\n    }\n  }\n\n  const draftExists = editState.draft !== null\n\n  const {\n    document: {\n      drafts: {enabled: isDraftModelEnabled},\n    },\n  } = workspace\n\n  if (draftExists === false) {\n    return {\n      result: false,\n    }\n  }\n\n  if (!isDraftModelEnabled) {\n    return {\n      result: true,\n      reason: 'DRAFT_MODEL_INACTIVE',\n    }\n  }\n\n  if (isLiveEditEnabled(schemaType)) {\n    return {\n      result: true,\n      reason: 'LIVE_EDIT_ACTIVE',\n    }\n  }\n\n  return {\n    result: false,\n  }\n}\n","import {type EditStateFor, isNewDocument, type isPerspectiveWriteable} from 'sanity'\n\n/**\n * Determine whether the user must choose a new perspective in order to create a document.\n *\n * @returns A boolean reflecting whether the user must choose a new perspective, and `undefined` while indeterminate.\n * @internal\n */\nexport function mustChooseNewDocumentDestination({\n  isSelectedPerspectiveWriteable,\n  editState,\n}: {\n  isSelectedPerspectiveWriteable: ReturnType<typeof isPerspectiveWriteable>\n  editState: Pick<EditStateFor, 'ready' | 'draft' | 'published' | 'version'> | null\n}): boolean | undefined {\n  return isNewDocument(editState) && !isSelectedPerspectiveWriteable.result\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Card, type CardProps, Flex, Text} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport interface DocumentInspectorHeaderProps {\n  as?: CardProps['as']\n  closeButtonLabel: string\n  flex?: CardProps['flex']\n  onClose: () => void\n  title: ReactNode\n}\n\nconst Root = styled(Card)({\n  position: 'relative',\n  zIndex: 1,\n  lineHeight: 0,\n})\n\n/** @internal */\nexport function DocumentInspectorHeader(\n  props: DocumentInspectorHeaderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n  const {as: forwardedAs, children, closeButtonLabel, onClose, title, ...restProps} = props\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  return (\n    <Root {...restProps} as={forwardedAs}>\n      <Flex padding={2}>\n        <Box flex={1} padding={3}>\n          <Text as=\"h1\" size={1} weight=\"medium\">\n            {title}\n          </Text>\n        </Box>\n        <Box flex=\"none\" padding={1}>\n          <Button\n            aria-label={closeButtonLabel}\n            icon={CloseIcon}\n            mode=\"bleed\"\n            onClick={onClose}\n            tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n          />\n        </Box>\n      </Flex>\n      {children}\n    </Root>\n  )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Resizable} from 'sanity'\n\nimport {usePane} from '../../../components'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DOCUMENT_INSPECTOR_MAX_WIDTH, DOCUMENT_INSPECTOR_MIN_WIDTH} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentInspectorPanelProps {\n  documentId: string\n  documentType: string\n  flex?: number | number[]\n}\n\nexport function DocumentInspectorPanel(\n  props: DocumentInspectorPanelProps,\n): React.JSX.Element | null {\n  const {documentId, documentType, flex} = props\n  const {collapsed} = usePane()\n  const {closeInspector, inspector} = useDocumentPane()\n  const {features} = useStructureTool()\n\n  const handleClose = useCallback(() => {\n    if (inspector) closeInspector(inspector.name)\n  }, [closeInspector, inspector])\n\n  if (collapsed || !inspector) return null\n\n  const Component = inspector.component\n  const element = (\n    <Component onClose={handleClose} documentId={documentId} documentType={documentType} />\n  )\n\n  if (features.resizablePanes) {\n    return (\n      <Resizable\n        as=\"aside\"\n        data-ui=\"DocumentInspectorPanel\"\n        flex={flex}\n        resizerPosition=\"left\"\n        maxWidth={DOCUMENT_INSPECTOR_MAX_WIDTH}\n        minWidth={DOCUMENT_INSPECTOR_MIN_WIDTH}\n      >\n        {element}\n      </Resizable>\n    )\n  }\n\n  return (\n    <Box as=\"aside\" data-ui=\"DocumentInspectorPanel\" flex={flex}>\n      {element}\n    </Box>\n  )\n}\n","import {useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useKeyValueStore} from 'sanity'\n\nconst STRUCTURE_TOOL_NAMESPACE = 'studio.structure-tool'\n\n/**\n * @internal\n */\nexport function useStructureToolSetting<ValueType>(\n  namespace: string,\n  key: string | null,\n  defaultValue?: ValueType,\n): [ValueType | undefined, (_value: ValueType) => void] {\n  const keyValueStore = useKeyValueStore()\n\n  const keyValueStoreKey = [STRUCTURE_TOOL_NAMESPACE, namespace, key].filter(Boolean).join('.')\n\n  const value$ = useMemo(() => {\n    return keyValueStore\n      .getKey(keyValueStoreKey)\n      .pipe(map((value) => (value === null ? defaultValue : value)))\n  }, [defaultValue, keyValueStore, keyValueStoreKey])\n\n  const value = useObservable(value$, defaultValue) as ValueType\n  const set = useCallback(\n    (newValue: ValueType) => {\n      if (newValue !== value) {\n        keyValueStore.setKey(keyValueStoreKey, newValue as string)\n      }\n    },\n    [keyValueStore, keyValueStoreKey, value],\n  )\n\n  return useMemo(() => [value, set], [set, value])\n}\n","export const VIEW_MODE_PARSED = {id: 'parsed', title: 'document-inspector.view-mode.parsed'}\nexport const VIEW_MODE_RAW = {id: 'raw', title: 'document-inspector.view-mode.raw-json'}\nexport const VIEW_MODES = [VIEW_MODE_PARSED, VIEW_MODE_RAW]\n","import {type SanityDocumentLike} from '@sanity/types'\nimport LRU from 'quick-lru'\nimport {isRecord, isString} from 'sanity'\n\nconst lru = new LRU({maxSize: 1000})\n\nexport function isExpanded(keyPath: any, value: any): any {\n  const cached = lru.get(keyPath)\n\n  if (cached === undefined) {\n    lru.set(keyPath, Array.isArray(value) || isRecord(value))\n    return isExpanded(keyPath, value)\n  }\n\n  return cached\n}\n\nexport function toggleExpanded(event: any): void {\n  const {path} = event\n  const current = lru.get(path)\n\n  if (current === undefined) {\n    // something is wrong\n    return\n  }\n\n  lru.set(path, !current)\n}\n\nexport function selectElement(element: HTMLElement): void {\n  const sel = window.getSelection()\n\n  if (sel) {\n    const range = document.createRange()\n\n    sel.removeAllRanges()\n    range.selectNodeContents(element)\n    sel.addRange(range)\n  }\n}\n\nexport function select(event: any): void {\n  selectElement(event.currentTarget)\n}\n\nexport function maybeSelectAll(event: any): void {\n  const selectAll = event.keyCode === 65 && (event.metaKey || event.ctrlKey)\n\n  if (!selectAll) {\n    return\n  }\n\n  event.preventDefault()\n\n  selectElement(event.currentTarget)\n}\n\nexport function isDocumentLike(value: unknown): value is SanityDocumentLike {\n  return isRecord(value) && isString(value._id) && isString(value._type)\n}\n","import {rem, type Theme} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const JSONInspectorWrapper = styled.div(({theme}: {theme: Theme}) => {\n  const {color, fonts, space} = theme.sanity\n\n  return css`\n    & .json-inspector,\n    & .json-inspector .json-inspector__selection {\n      font-family: ${fonts.code.family};\n      font-size: ${fonts.code.sizes[1].fontSize}px;\n      line-height: ${fonts.code.sizes[1].lineHeight}px;\n      color: var(--card-code-fg-color);\n    }\n\n    & .json-inspector .json-inspector__leaf {\n      padding-left: ${rem(space[4])};\n    }\n\n    & .json-inspector .json-inspector__leaf.json-inspector__leaf_root {\n      padding-top: ${rem(space[3])};\n      padding-left: 0;\n    }\n\n    & .json-inspector > .json-inspector__leaf_root > .json-inspector__line > .json-inspector__key {\n      display: none;\n    }\n\n    & .json-inspector .json-inspector__line {\n      display: block;\n      position: relative;\n      cursor: default;\n    }\n\n    & .json-inspector .json-inspector__line::after {\n      content: '';\n      position: absolute;\n      top: 0;\n      left: -200px;\n      right: -50px;\n      bottom: 0;\n      z-index: -1;\n      pointer-events: none;\n    }\n\n    & .json-inspector .json-inspector__line:hover::after {\n      background: var(--card-code-bg-color);\n    }\n\n    & .json-inspector .json-inspector__leaf_composite > .json-inspector__line {\n      cursor: pointer;\n    }\n\n    & .json-inspector .json-inspector__leaf_composite > .json-inspector__line::before {\n      content: '▸ ';\n      margin-left: calc(0 - ${rem(space[4])} + 3px);\n      font-size: ${fonts.code.sizes[1].fontSize}px;\n      line-height: ${fonts.code.sizes[1].lineHeight}px;\n    }\n\n    &\n      .json-inspector\n      .json-inspector__leaf_expanded.json-inspector__leaf_composite\n      > .json-inspector__line::before {\n      content: '▾ ';\n      font-size: ${fonts.code.sizes[1].fontSize}px;\n      line-height: ${fonts.code.sizes[1].lineHeight}px;\n    }\n\n    & .json-inspector .json-inspector__radio,\n    & .json-inspector .json-inspector__flatpath {\n      display: none;\n    }\n\n    & .json-inspector .json-inspector__value {\n      margin-left: ${rem(space[4] / 2)};\n    }\n\n    &\n      .json-inspector\n      > .json-inspector__leaf_root\n      > .json-inspector__line\n      > .json-inspector__key\n      + .json-inspector__value {\n      margin: 0;\n    }\n\n    & .json-inspector .json-inspector__key {\n      color: ${color.syntax.property};\n    }\n\n    & .json-inspector .json-inspector__value_helper,\n    & .json-inspector .json-inspector__value_null {\n      color: ${color.syntax.constant};\n    }\n\n    & .json-inspector .json-inspector__not-found {\n      padding-top: ${rem(space[3])};\n    }\n\n    & .json-inspector .json-inspector__value_string {\n      color: ${color.syntax.string};\n    }\n\n    & .json-inspector .json-inspector__value_boolean {\n      color: ${color.syntax.boolean};\n    }\n\n    & .json-inspector .json-inspector__value_number {\n      color: ${color.syntax.number};\n    }\n\n    & .json-inspector .json-inspector__show-original {\n      display: inline-block;\n      padding: 0 6px;\n      cursor: pointer;\n    }\n\n    & .json-inspector .json-inspector__show-original:hover {\n      color: inherit;\n    }\n\n    & .json-inspector .json-inspector__show-original::before {\n      content: '↔';\n    }\n\n    & .json-inspector .json-inspector__show-original:hover::after {\n      content: ' expand';\n    }\n  `\n})\n","import {SearchIcon} from '@sanity/icons'\nimport {TextInput} from '@sanity/ui'\nimport {type ChangeEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport function Search(props: {onChange: (q: string) => void; query: string}) {\n  const {onChange, query} = props\n\n  const handleChange = useCallback(\n    (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value),\n    [onChange],\n  )\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  return (\n    <TextInput\n      icon={SearchIcon}\n      onChange={handleChange}\n      placeholder={t('document-inspector.search.placeholder')}\n      radius={2}\n      value={query || ''}\n    />\n  )\n}\n","import {JsonInspector} from '@rexxars/react-json-inspector'\nimport {type SanityDocument} from '@sanity/types'\nimport {Card, Code, Flex, TabList, TabPanel} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {Dialog, Tab} from '../../../../ui-components'\nimport {DocTitle} from '../../../components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureToolSetting} from '../../../useStructureToolSetting'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {VIEW_MODE_PARSED, VIEW_MODE_RAW, VIEW_MODES} from './constants'\nimport {isDocumentLike, isExpanded, maybeSelectAll, select, toggleExpanded} from './helpers'\nimport {JSONInspectorWrapper} from './InspectDialog.styles'\nimport {Search} from './Search'\n\ninterface InspectDialogProps {\n  value: Partial<SanityDocument> | null\n}\n\nexport function InspectDialog(props: InspectDialogProps) {\n  const {value} = props\n  const {onInspectClose, paneKey} = useDocumentPane()\n  const dialogIdPrefix = `${paneKey}_inspect_`\n\n  /* this creates a view mode (the default that it opens with is the parsed tab) that is saved based on the paneKey\n  where the inspect dialog lives.\n  This also means that when a page is loaded, the state of the tabs remains and doesn't revert to the pane tab */\n  const [viewModeId, onViewModeChange] = useStructureToolSetting(\n    'inspect-view-mode',\n    null,\n    'parsed',\n  )\n\n  /* based on the view mode it shows the right tab content */\n  const viewMode = VIEW_MODES.find((mode) => mode.id === viewModeId)\n\n  const setParsedViewMode = useCallback(() => {\n    onViewModeChange(VIEW_MODE_PARSED.id)\n  }, [onViewModeChange])\n\n  const setRawViewMode = useCallback(() => {\n    onViewModeChange(VIEW_MODE_RAW.id)\n  }, [onViewModeChange])\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  return (\n    <Dialog\n      bodyHeight=\"fill\"\n      id={`${dialogIdPrefix}dialog`}\n      header={\n        isDocumentLike(value) ? (\n          <Translate\n            t={t}\n            i18nKey=\"document-inspector.dialog.title\"\n            components={{\n              DocumentTitle: () => (\n                <em>\n                  <DocTitle document={value} />\n                </em>\n              ),\n            }}\n          />\n        ) : (\n          <em>{t('document-inspector.dialog.title-no-value')}</em>\n        )\n      }\n      onClose={onInspectClose}\n      onClickOutside={onInspectClose}\n      padding={false}\n      width={2}\n    >\n      <Flex direction=\"column\" height=\"fill\">\n        <Card\n          padding={3}\n          paddingTop={0}\n          shadow={1}\n          style={{position: 'sticky', bottom: 0, zIndex: 3}}\n        >\n          <TabList space={1}>\n            <Tab\n              aria-controls={`${dialogIdPrefix}tabpanel`}\n              id={`${dialogIdPrefix}tab-${VIEW_MODE_PARSED.id}`}\n              label={t(VIEW_MODE_PARSED.title)}\n              onClick={setParsedViewMode}\n              selected={viewMode === VIEW_MODE_PARSED}\n            />\n            <Tab\n              aria-controls={`${dialogIdPrefix}tabpanel`}\n              id={`${dialogIdPrefix}tab-${VIEW_MODE_RAW.id}`}\n              label={t(VIEW_MODE_RAW.title)}\n              onClick={setRawViewMode}\n              selected={viewMode === VIEW_MODE_RAW}\n            />\n          </TabList>\n        </Card>\n\n        <TabPanel\n          aria-labelledby={`${dialogIdPrefix}tab-${viewModeId}`}\n          flex={1}\n          id={`${dialogIdPrefix}tabpanel`}\n          overflow=\"auto\"\n          padding={4}\n          style={{outline: 'none'}}\n        >\n          {viewMode === VIEW_MODE_PARSED && (\n            <JSONInspectorWrapper>\n              <JsonInspector\n                data={value}\n                isExpanded={isExpanded}\n                onClick={toggleExpanded}\n                search={Search}\n                filterOptions={{ignoreCase: true}}\n              />\n            </JSONInspectorWrapper>\n          )}\n\n          {viewMode === VIEW_MODE_RAW && (\n            <Code\n              language=\"json\"\n              tabIndex={0}\n              onKeyDown={maybeSelectAll}\n              onDoubleClick={select}\n              onFocus={select}\n              size={1}\n            >\n              {JSON.stringify(value, null, 2)}\n            </Code>\n          )}\n        </TabPanel>\n      </Flex>\n    </Dialog>\n  )\n}\n","import {Box, type ButtonMode, type ButtonTone, Card, type CardTone, Flex, Text} from '@sanity/ui'\nimport {type ComponentType, type ElementType, type ReactNode} from 'react'\n\nimport {Button} from '../../../../../ui-components'\n\ninterface BannerProps {\n  action?: {\n    as?: ElementType | keyof React.JSX.IntrinsicElements\n    icon?: ComponentType\n    onClick?: () => void\n    text: string\n    tone?: ButtonTone\n    disabled?: boolean\n    mode?: ButtonMode\n  }\n  content: ReactNode\n  icon?: ComponentType\n  tone?: CardTone\n  paddingY?: number\n}\n\nexport function Banner(props: BannerProps) {\n  const {action, content, icon: Icon, tone = 'transparent', paddingY = 2, ...rest} = props\n\n  return (\n    <Box padding={1}>\n      <Card radius={3} paddingX={2} paddingY={paddingY} tone={tone} {...rest}>\n        <Flex align=\"center\" gap={3} paddingX={2}>\n          {Icon && (\n            <Text size={0}>\n              <Icon />\n            </Text>\n          )}\n\n          <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n            {content}\n          </Flex>\n\n          {action && (\n            <Button {...action} mode={action.mode || 'ghost'} tone={action.tone || 'default'} />\n          )}\n        </Flex>\n      </Card>\n    </Box>\n  )\n}\n","import {DocumentRemoveIcon, ReadOnlyIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n  isDraftPerspective,\n  isPublishedPerspective,\n  type ReleaseDocument,\n  Translate,\n  useDocumentOperation,\n  usePerspective,\n  useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeletedDocumentBanners() {\n  const {isDeleted, isDeleting, ready} = useDocumentPane()\n  const {selectedPerspective} = usePerspective()\n  if (!ready) return null\n  if (\n    !isPublishedPerspective(selectedPerspective) &&\n    !isDraftPerspective(selectedPerspective) &&\n    selectedPerspective.state === 'archived'\n  ) {\n    return <ArchivedReleaseBanner release={selectedPerspective as ReleaseDocument} />\n  }\n  if (isDeleted && !isDeleting) return <DeletedDocumentBanner />\n}\n\nfunction DeletedDocumentBanner() {\n  const {documentId, documentType} = useDocumentPane()\n  const {restore} = useDocumentOperation(documentId, documentType)\n  const {navigateIntent} = useRouter()\n\n  const handleRestore = useCallback(() => {\n    restore.execute('lastRevision')\n    navigateIntent('edit', {id: documentId, type: documentType})\n  }, [documentId, documentType, navigateIntent, restore])\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  return (\n    <Banner\n      action={{\n        onClick: handleRestore,\n        text: t('banners.deleted-document-banner.restore-button.text'),\n      }}\n      content={\n        <Text size={1} weight=\"medium\">\n          {t('banners.deleted-document-banner.text')}\n        </Text>\n      }\n      data-testid=\"deleted-document-banner\"\n      icon={ReadOnlyIcon}\n    />\n  )\n}\n\nconst ArchivedReleaseBanner = ({release}: {release: ReleaseDocument}) => {\n  const {t} = useTranslation()\n\n  return (\n    <Banner\n      tone=\"caution\"\n      content={\n        <Text size={1} weight=\"medium\">\n          <Translate\n            t={t}\n            i18nKey=\"banners.deleted-release-banner.text\"\n            values={{title: release.metadata?.title || t('release.placeholder-untitled-release')}}\n          />\n        </Text>\n      }\n      data-testid=\"deleted-release-banner\"\n      icon={DocumentRemoveIcon}\n    />\n  )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {isDeprecatedSchemaType, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeprecatedDocumentTypeBanner() {\n  const {schemaType} = useDocumentPane()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (!isDeprecatedSchemaType(schemaType)) {\n    return null\n  }\n\n  return (\n    <Banner\n      content={\n        <Text size={1} weight=\"medium\">\n          <Translate t={t} i18nKey=\"banners.deprecated-document-type-banner.text\" />{' '}\n          {schemaType.deprecated.reason}\n        </Text>\n      }\n      data-testid=\"deprecated-document-type-banner\"\n      icon={ErrorOutlineIcon}\n    />\n  )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/** @internal */\nexport const AskToEditDialogOpened = defineEvent({\n  name: 'Ask To Edit Dialog Opened',\n  version: 1,\n  description: 'User clicked the \"Ask to edit\" button in the document permissions banner',\n})\n\n/** @internal */\nexport const AskToEditRequestSent = defineEvent({\n  name: 'Ask To Edit Request Sent',\n  version: 1,\n  description: 'User sent a role change request from the dialog',\n})\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, DialogProvider, Flex, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useId, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, map, type Observable, of, startWith} from 'rxjs'\nimport {type Role, useClient, useProjectId, useTranslation, useZIndex} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {AskToEditRequestSent} from './__telemetry__/RequestPermissionDialog.telemetry'\nimport {type AccessRequest} from './useRoleRequestsStatus'\n\nconst MAX_NOTE_LENGTH = 150\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n  box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n  align: 'center',\n  direction: 'column',\n  justify: 'center',\n})`\n  height: 110px;\n`\n\n/** @internal */\nexport interface RequestPermissionDialogProps {\n  onClose?: () => void\n  onRequestSubmitted?: () => void\n}\n\n/**\n * A dialog that enables the user to request permission to change their\n * member role from \"Viewer\" to \"Editor\" or \"Admin\" depending on the\n * project's available roles.\n *\n * @internal\n */\nexport function RequestPermissionDialog({\n  onClose,\n  onRequestSubmitted,\n}: RequestPermissionDialogProps) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const telemtry = useTelemetry()\n  const dialogId = `request-permissions-${useId()}`\n  const projectId = useProjectId()\n  const client = useClient({apiVersion: '2024-09-26'})\n  const toast = useToast()\n  const zOffset = useZIndex()\n\n  const [isSubmitting, setIsSubmitting] = useState(false)\n\n  const [note, setNote] = useState('')\n\n  const [msgError, setMsgError] = useState<string | undefined>()\n  const [hasTooManyRequests, setHasTooManyRequests] = useState<boolean>(false)\n  const [hasBeenDenied, setHasBeenDenied] = useState<boolean>(false)\n\n  const requestedRole$: Observable<'administrator' | 'editor'> = useMemo(() => {\n    const adminRole = 'administrator' as const\n    if (!projectId || !client) return of(adminRole)\n    return client.observable\n      .request<(Role & {appliesToUsers?: boolean})[]>({url: `/projects/${projectId}/roles`})\n      .pipe(\n        map((roles) => {\n          const hasEditor = roles\n            .filter((role) => role?.appliesToUsers)\n            .find((role) => role.name === 'editor')\n          return hasEditor ? 'editor' : adminRole\n        }),\n        startWith(adminRole),\n        catchError(() => of(adminRole)),\n      )\n  }, [projectId, client])\n\n  const requestedRole = useObservable(requestedRole$)\n\n  const onSubmit = () => {\n    setIsSubmitting(true)\n    client\n      .request<AccessRequest | null>({\n        url: `/access/project/${projectId}/requests`,\n        method: 'post',\n        body: {note, requestUrl: window?.location.href, requestedRole, type: 'role'},\n      })\n      .then((request) => {\n        if (request) {\n          if (onRequestSubmitted) onRequestSubmitted()\n          telemtry.log(AskToEditRequestSent)\n          toast.push({title: 'Edit access requested'})\n        }\n      })\n      .catch((err) => {\n        const statusCode = err?.response?.statusCode\n        const errMessage = err?.response?.body?.message\n        if (statusCode === 429) {\n          // User is over their cross-project request limit\n          setHasTooManyRequests(true)\n          setMsgError(errMessage)\n        }\n        if (statusCode === 409) {\n          // If we get a 409, user has been denied on this project or has a valid pending request\n          // valid pending request should be handled by GET request above\n          setHasBeenDenied(true)\n          setMsgError(errMessage)\n        } else {\n          toast.push({\n            title: 'There was a problem submitting your request.',\n            status: 'error',\n          })\n        }\n      })\n      .finally(() => {\n        setIsSubmitting(false)\n      })\n  }\n\n  return (\n    <DialogProvider position={'fixed'} zOffset={zOffset.fullscreen}>\n      <Dialog\n        width={1}\n        id={dialogId}\n        header={t('request-permission-dialog.header.text')}\n        footer={{\n          cancelButton: {\n            onClick: onClose,\n            text: t('confirm-dialog.cancel-button.fallback-text'),\n          },\n          confirmButton: {\n            onClick: onSubmit,\n            loading: isSubmitting,\n            disabled: hasTooManyRequests || hasBeenDenied,\n            text: t('request-permission-dialog.confirm-button.text'),\n            tone: 'primary',\n            type: 'submit',\n          },\n        }}\n        onClose={onClose}\n        onClickOutside={onClose}\n      >\n        <DialogBody>\n          <Stack space={4}>\n            <Text>{t('request-permission-dialog.description.text')}</Text>\n            {hasTooManyRequests || hasBeenDenied ? (\n              <Card tone={'caution'} padding={3} radius={2} shadow={1}>\n                <Text size={1}>\n                  {hasTooManyRequests && (\n                    <>{msgError ?? t('request-permission-dialog.warning.limit-reached.text')}</>\n                  )}\n                  {hasBeenDenied && (\n                    <>{msgError ?? t('request-permission-dialog.warning.denied.text')}</>\n                  )}\n                </Text>\n              </Card>\n            ) : (\n              <Stack space={3} paddingBottom={0}>\n                <TextInput\n                  placeholder={t('request-permission-dialog.note-input.placeholder.text')}\n                  disabled={isSubmitting}\n                  onKeyDown={(e) => {\n                    if (e.key === 'Enter') onSubmit()\n                  }}\n                  maxLength={MAX_NOTE_LENGTH}\n                  value={note}\n                  onChange={(e) => {\n                    setNote(e.currentTarget.value)\n                  }}\n                />\n\n                <Text align=\"right\" muted size={1}>{`${note.length}/${MAX_NOTE_LENGTH}`}</Text>\n              </Stack>\n            )}\n          </Stack>\n        </DialogBody>\n      </Dialog>\n    </DialogProvider>\n  )\n}\n","import {addWeeks, isAfter, isBefore} from 'date-fns'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\nimport {catchError, map, startWith} from 'rxjs/operators'\nimport {type SanityClient, useClient, useProjectId} from 'sanity'\n\n/** @internal */\nexport interface AccessRequest {\n  id: string\n  status: 'pending' | 'accepted' | 'declined'\n  resourceId: string\n  resourceType: 'project'\n  createdAt: string\n  updatedAt: string\n  updatedByUserId: string\n  requestedByUserId: string\n  requestedRole: string\n  type: 'access' | 'role'\n  note: string\n}\n\nconst LOADING_STATE = {loading: true, error: false, status: undefined}\nconst EMPTY_STATE = {loading: false, error: false, status: 'none'}\nconst DECLINED_STATE = {loading: false, error: false, status: 'declined'}\nconst PENDING_STATE = {loading: false, error: false, status: 'pending'}\nconst EXPIRED_STATE = {loading: false, error: false, status: 'expired'}\n\n/** @internal */\nexport const useRoleRequestsStatus = () => {\n  const client = useClient({apiVersion: '2024-07-01'})\n  const projectId = useProjectId()\n\n  const checkRoleRequests$ = useMemo(() => {\n    if (!client || !projectId) {\n      return of(EMPTY_STATE)\n    }\n\n    return checkRoleRequests(client, projectId)\n  }, [client, projectId])\n\n  const {loading, error, status} = useObservable(checkRoleRequests$, LOADING_STATE)\n  return {data: status, loading, error}\n}\n\nfunction checkRoleRequests(client: SanityClient, projectId: string) {\n  return client.observable\n    .request<AccessRequest[] | null>({\n      url: '/access/requests/me',\n      tag: 'use-role-requests-status',\n    })\n    .pipe(\n      map((requests) => {\n        if (!requests || requests.length === 0) {\n          return EMPTY_STATE\n        }\n\n        // Filter requests for the specific project and where type is 'role'\n        const projectRequests = requests.filter(\n          (request) => request.resourceId === projectId && request.type === 'role',\n        )\n\n        const declinedRequest = projectRequests.find((request) => request.status === 'declined')\n        if (\n          declinedRequest &&\n          isAfter(addWeeks(new Date(declinedRequest.createdAt), 2), new Date())\n        ) {\n          return DECLINED_STATE\n        }\n\n        const pendingRequest = projectRequests.find(\n          (request) =>\n            request.status === 'pending' &&\n            isAfter(addWeeks(new Date(request.createdAt), 2), new Date()),\n        )\n        if (pendingRequest) {\n          return PENDING_STATE\n        }\n\n        const oldPendingRequest = projectRequests.find(\n          (request) =>\n            request.status === 'pending' &&\n            isBefore(addWeeks(new Date(request.createdAt), 2), new Date()),\n        )\n\n        return oldPendingRequest ? EXPIRED_STATE : EMPTY_STATE\n      }),\n      catchError((err) => {\n        console.error('Failed to fetch access requests', err)\n        return of({loading: false, error: true, status: undefined})\n      }),\n      startWith(LOADING_STATE), // Start with loading state\n    )\n}\n","import {ReadOnlyIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {Translate, useCurrentUser, useListFormat, useTranslation} from 'sanity'\n\nimport {\n  RequestPermissionDialog,\n  useRoleRequestsStatus,\n} from '../../../../components/requestPermissionDialog'\nimport {AskToEditDialogOpened} from '../../../../components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface InsufficientPermissionBannerProps {\n  requiredPermission: 'update' | 'create'\n}\n\nexport function InsufficientPermissionBanner({\n  requiredPermission,\n}: InsufficientPermissionBannerProps) {\n  const currentUser = useCurrentUser()\n\n  const {\n    data: roleRequestStatus,\n    loading: requestStatusLoading,\n    error: requestStatusError,\n  } = useRoleRequestsStatus()\n  const [requestSent, setRequestSent] = useState(false)\n  const requestPending = useMemo(\n    () => roleRequestStatus === 'pending' || roleRequestStatus === 'declined' || requestSent,\n    [roleRequestStatus, requestSent],\n  )\n  const currentUserRoles = currentUser?.roles || []\n  const isOnlyViewer = currentUserRoles.length === 1 && currentUserRoles[0].name === 'viewer'\n  const [showRequestPermissionDialog, setShowRequestPermissionDialog] = useState(false)\n\n  const listFormat = useListFormat({style: 'short'})\n  const {t} = useTranslation(structureLocaleNamespace)\n  const telemetry = useTelemetry()\n\n  const roleTitles = currentUserRoles.map((role) => role.title)\n  const roles = listFormat\n    .formatToParts(roleTitles)\n    .map((part) =>\n      part.type === 'element' ? <code key={part.value}>{part.value}</code> : part.value,\n    )\n\n  return (\n    <>\n      <Banner\n        content={\n          <Text size={1} weight=\"medium\">\n            <Translate\n              t={t}\n              i18nKey=\"banners.permission-check-banner.missing-permission\"\n              components={{Roles: () => <>{roles}</>}}\n              values={{count: roles.length, roles: roleTitles}}\n              context={requiredPermission}\n            />\n          </Text>\n        }\n        action={\n          isOnlyViewer && roleRequestStatus && !requestStatusError && !requestStatusLoading\n            ? {\n                onClick: requestPending\n                  ? undefined\n                  : () => {\n                      setShowRequestPermissionDialog(true)\n                      telemetry.log(AskToEditDialogOpened)\n                    },\n                text: requestPending\n                  ? t('banners.permission-check-banner.request-permission-button.sent')\n                  : t('banners.permission-check-banner.request-permission-button.text'),\n                tone: requestPending ? 'default' : 'primary',\n                disabled: requestPending,\n                mode: requestPending ? 'bleed' : undefined,\n              }\n            : undefined\n        }\n        data-testid=\"permission-check-banner\"\n        icon={ReadOnlyIcon}\n      />\n      {showRequestPermissionDialog && (\n        <RequestPermissionDialog\n          onClose={() => setShowRequestPermissionDialog(false)}\n          onRequestSubmitted={() => {\n            setRequestSent(true)\n            setShowRequestPermissionDialog(false)\n          }}\n        />\n      )}\n    </>\n  )\n}\n","import {CloseIcon, SyncIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {type KeyedSegment, type Reference} from '@sanity/types'\nimport {Text} from '@sanity/ui'\nimport {fromString as pathFromString, get as pathGet} from '@sanity/util/paths'\nimport {memo, useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, type Observable, of} from 'rxjs'\nimport {debounceTime, map} from 'rxjs/operators'\nimport {\n  type DocumentAvailability,\n  getPublishedId,\n  useDocumentPreviewStore,\n  usePerspective,\n  useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {type RouterPaneGroup} from '../../../../types'\nimport {Banner} from './Banner'\n\ninterface ParentReferenceInfo {\n  loading: boolean\n  result?: {\n    availability: {\n      draft: DocumentAvailability\n      published: DocumentAvailability\n      version?: DocumentAvailability\n    }\n    refValue: string | undefined\n  }\n}\n\nexport const ReferenceChangedBanner = memo(() => {\n  const documentPreviewStore = useDocumentPreviewStore()\n  const {selectedReleaseId} = usePerspective()\n  const {params, groupIndex, routerPanesState, replaceCurrent, BackLink} = usePaneRouter()\n  const routerReferenceId = routerPanesState[groupIndex]?.[0].id\n  const parentGroup = routerPanesState[groupIndex - 1] as RouterPaneGroup | undefined\n  const parentSibling = parentGroup?.[0]\n  const parentId = parentSibling?.id\n  const hasHistoryOpen = Boolean(parentSibling?.params?.rev)\n  const parentRefPath = useMemo(() => {\n    return (params?.parentRefPath && pathFromString(params.parentRefPath)) || null\n  }, [params?.parentRefPath])\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  /**\n   * Loads information regarding the reference field of the parent pane. This\n   * is only applicable to child references (aka references-in-place).\n   *\n   * It utilizes the pane ID of the parent pane (which is a document ID) along\n   * with the `parentRefPath` router param on the current pane to find the\n   * current value of the reference field on the parent document.\n   *\n   * This is used to compare with the current pane's document ID. If the IDs\n   * don't match then this banner should reveal itself\n   */\n  const referenceInfoObservable = useMemo((): Observable<ParentReferenceInfo> => {\n    const parentRefPathSegment = parentRefPath?.[0] as string | undefined\n\n    // short-circuit: this document pane is not a child reference pane\n    if (!parentId || !parentRefPathSegment || !parentRefPath) {\n      return of({loading: false})\n    }\n\n    const publishedId = getPublishedId(parentId)\n    const path = pathFromString(parentRefPathSegment)\n\n    // note: observePaths doesn't support keyed path segments, so we need to select the nearest parent\n    const keyedSegmentIndex = path.findIndex(\n      (p): p is KeyedSegment => typeof p == 'object' && '_key' in p,\n    )\n\n    return concat(\n      // emit a loading state instantly\n      of({loading: true}),\n      // then emit the values from watching the published ID's path\n      documentPreviewStore\n        .unstable_observePathsDocumentPair(\n          publishedId,\n          (keyedSegmentIndex === -1 ? path : path.slice(0, keyedSegmentIndex)) as string[][],\n          {\n            version: selectedReleaseId,\n          },\n        )\n        .pipe(\n          // this debounce time is needed to prevent flashing banners due to\n          // the router state updating faster than the content-lake state. we\n          // debounce to wait for more emissions because the value pulled\n          // initially could be stale.\n          debounceTime(750),\n          map(\n            ({draft, published, version}): ParentReferenceInfo => ({\n              loading: false,\n              result: {\n                availability: {\n                  draft: draft.availability,\n                  published: published.availability,\n                  ...(version?.availability\n                    ? {\n                        version: version.availability,\n                      }\n                    : {}),\n                },\n                refValue: pathGet<Reference>(\n                  version?.snapshot || draft.snapshot || published.snapshot,\n                  parentRefPath,\n                )?._ref,\n              },\n            }),\n          ),\n        ),\n    )\n  }, [selectedReleaseId, documentPreviewStore, parentId, parentRefPath])\n  const referenceInfo = useObservable(referenceInfoObservable, {loading: true})\n\n  const handleReloadReference = useCallback(() => {\n    if (referenceInfo.loading) return\n\n    if (referenceInfo.result?.refValue) {\n      replaceCurrent({\n        id: referenceInfo.result.refValue,\n        params: params as Record<string, string>,\n      })\n    }\n  }, [referenceInfo.loading, referenceInfo.result, replaceCurrent, params])\n\n  const shouldHide =\n    // if `parentId` or `parentRefPath` is not present then this banner is n/a\n    !parentId ||\n    !parentRefPath ||\n    // if viewing this pane via history, then hide\n    hasHistoryOpen ||\n    // if loading, hide\n    referenceInfo.loading ||\n    // if the parent document is not available (e.g. due to permission denied or\n    // not found) we don't want to display a warning here, but instead rely on the\n    // parent view to display the appropriate message\n    (!referenceInfo.result?.availability.draft.available &&\n      !referenceInfo.result?.availability.published.available) ||\n    // if the references are the same, then hide the reference changed banner\n    referenceInfo.result?.refValue === routerReferenceId\n\n  if (shouldHide) return null\n\n  return (\n    <Banner\n      action={\n        referenceInfo.result?.refValue\n          ? {\n              onClick: handleReloadReference,\n              icon: SyncIcon,\n              text: t('banners.reference-changed-banner.reason-changed.reload-button.text'),\n            }\n          : {\n              as: BackLink,\n              icon: CloseIcon,\n              text: t('banners.reference-changed-banner.reason-removed.close-button.text'),\n            }\n      }\n      data-testid=\"reference-changed-banner\"\n      content={\n        <Text size={1} weight=\"medium\">\n          {referenceInfo.result?.refValue\n            ? t('banners.reference-changed-banner.reason-changed.text')\n            : t('banners.reference-changed-banner.reason-removed.text')}\n        </Text>\n      }\n      icon={WarningOutlineIcon}\n      tone=\"caution\"\n    />\n  )\n})\n\nReferenceChangedBanner.displayName = 'Memo(ReferenceChangedBanner)'\n","import {Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n  getReleaseIdFromReleaseDocumentId,\n  getVersionInlineBadge,\n  Translate,\n  useArchivedReleases,\n  useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\nexport function ArchivedReleaseDocumentBanner(): React.JSX.Element {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\n  const {data: archivedReleases} = useArchivedReleases()\n\n  const {params, setParams} = usePaneRouter()\n  const handleGoBack = () => {\n    setParams({\n      ...params,\n      rev: params?.historyEvent || undefined,\n      since: undefined,\n      historyVersion: undefined,\n    })\n  }\n\n  const release = useMemo(() => {\n    return archivedReleases.find(\n      (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n    )\n  }, [archivedReleases, params?.historyVersion])\n\n  const description =\n    release?.state === 'published'\n      ? 'banners.published-release.description'\n      : 'banners.archived-release.description'\n\n  const title = release?.metadata.title || tCore('release.placeholder-untitled-release')\n\n  return (\n    <Banner\n      tone=\"caution\"\n      content={\n        <Text size={1}>\n          <Translate\n            t={t}\n            i18nKey={description}\n            values={{\n              title,\n            }}\n            components={{\n              VersionBadge: getVersionInlineBadge(release),\n            }}\n          />\n        </Text>\n      }\n      action={\n        params?.archivedRelease\n          ? undefined\n          : {\n              text: 'Go back to published version',\n              onClick: handleGoBack,\n            }\n      }\n    />\n  )\n}\n","import {ComposeSparklesIcon, InfoOutlineIcon, LaunchIcon} from '@sanity/icons'\nimport {Box, Card, Container, Flex, Heading, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {\n  getDocumentVariantType,\n  useCanvasCompanionDoc,\n  useNavigateToCanvasDoc,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../ui-components'\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nconst Image = styled.img`\n  object-fit: cover;\n  width: 100%;\n  height: 100%;\n  height: 180px;\n  display: flex;\n`\nconst CANVAS_IMAGE_URL =\n  'https://cdn.sanity.io/images/pyrmmpch/production/b47224e2f3a7d1747e43b9da1ac31739250e628b-632x376.png'\n\nconst CANVAS_APP_NAME = 'Canvas'\nconst CanvasPopoverContent = ({onClose}: {onClose: () => void}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const ref = useRef<HTMLDivElement | null>(null)\n  useClickOutsideEvent(onClose, () => [ref.current])\n\n  return (\n    <Card radius={3} overflow={'hidden'} width={0} ref={ref}>\n      <Container width={0}>\n        <Image src={CANVAS_IMAGE_URL} alt={'Canvas'} />\n        <Flex paddingX={4} paddingBottom={4} paddingTop={3} direction={'column'}>\n          <Flex paddingY={1} gap={2}>\n            <Text size={1} weight=\"semibold\">\n              {CANVAS_APP_NAME}\n            </Text>\n            <Text size={1} muted>\n              <ComposeSparklesIcon />\n            </Text>\n          </Flex>\n          <Box paddingTop={3}>\n            <Heading size={1}>{t('canvas.banner.popover-heading')}</Heading>\n          </Box>\n          <Box paddingTop={4}>\n            <Text size={1}>{t('canvas.banner.popover-description')}</Text>\n          </Box>\n        </Flex>\n        <Flex width=\"full\" gap={3} justify=\"flex-end\" paddingX={4} paddingBottom={4}>\n          <Button\n            mode=\"bleed\"\n            text={t('canvas.banner.popover-button-text')}\n            autoFocus\n            tone=\"primary\"\n            href=\"https://snty.link/canvas-docs\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            as=\"a\"\n            iconRight={LaunchIcon}\n          />\n        </Flex>\n      </Container>\n    </Card>\n  )\n}\nconst CanvasLinkedBannerContent = ({documentId}: {documentId: string}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const [open, setOpen] = useState(false)\n  const documentVariantType = getDocumentVariantType(documentId)\n  const variantText = useMemo(() => {\n    if (documentVariantType === 'published') return t('canvas.banner.linked-text.published')\n    if (documentVariantType === 'draft') return t('canvas.banner.linked-text.draft')\n    return t('canvas.banner.linked-text.version')\n  }, [documentVariantType, t])\n\n  const togglePopover = useCallback(() => setOpen((prev) => !prev), [])\n  const onClose = useCallback(() => setOpen(false), [])\n  return (\n    <Flex align={'center'} gap={2}>\n      <Text size={1} weight=\"medium\">\n        {variantText}\n      </Text>\n      <Popover\n        open={open}\n        size={0}\n        tone=\"default\"\n        portal\n        placement=\"bottom-start\"\n        content={<CanvasPopoverContent onClose={onClose} />}\n      >\n        <Button\n          tooltipProps={null}\n          mode=\"bleed\"\n          tone=\"default\"\n          icon={InfoOutlineIcon}\n          onClick={togglePopover}\n        />\n      </Popover>\n    </Flex>\n  )\n}\n\nexport function CanvasLinkedBanner() {\n  const {documentId, displayed} = useDocumentPane()\n  const {t} = useTranslation(structureLocaleNamespace)\n  const id = displayed?._id || documentId\n  const {companionDoc} = useCanvasCompanionDoc(id)\n  const navigateToCanvas = useNavigateToCanvasDoc(companionDoc?.canvasDocumentId, 'banner')\n\n  if (!companionDoc) return null\n\n  return (\n    <Banner\n      tone=\"neutral\"\n      data-test-id=\"canvas-linked-banner\"\n      paddingY={0}\n      content={<CanvasLinkedBannerContent documentId={id} />}\n      action={{\n        mode: 'ghost',\n        text: t('canvas.banner.edit-in-canvas-action'),\n        onClick: navigateToCanvas,\n      }}\n    />\n  )\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ComponentType, useCallback} from 'react'\nimport {\n  getVersionInlineBadge,\n  isPerspectiveWriteable,\n  isReleaseDocument,\n  type PerspectiveNotWriteableReason,\n  ReleasesNav,\n  type ReleasesNavMenuItemPropsGetter,\n  type SelectedPerspective,\n  Translate,\n  useTranslation,\n  useWorkspace,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface Props {\n  schemaType: ObjectSchemaType\n  selectedPerspective: SelectedPerspective\n  reason: PerspectiveNotWriteableReason\n}\n\n/**\n * This banner is displayed when a user attempts to create a new document in a perspective that's\n * not writeable. For example:\n *\n * - The published perspective (unless the schema type supports live-editing).\n * - Any release that's locked.\n */\nexport const ChooseNewDocumentDestinationBanner: ComponentType<Props> = ({\n  schemaType,\n  selectedPerspective,\n  reason,\n}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const {\n    document: {\n      drafts: {enabled: isDraftModelEnabled},\n    },\n  } = useWorkspace()\n\n  const menuItemProps = useCallback<ReleasesNavMenuItemPropsGetter>(\n    ({perspective}) => ({\n      disabled: !isPerspectiveWriteable({\n        selectedPerspective: perspective,\n        isDraftModelEnabled,\n        schemaType,\n      }).result,\n    }),\n    [isDraftModelEnabled, schemaType],\n  )\n\n  return (\n    <Banner\n      tone=\"caution\"\n      icon={WarningOutlineIcon}\n      content={\n        <Flex align=\"center\" gap={2}>\n          <Text size={1}>\n            {reason === 'PUBLISHED_NOT_WRITEABLE' &&\n              t('banners.choose-new-document-destination.cannot-create-published-document')}\n            {reason === 'DRAFTS_NOT_WRITEABLE' &&\n              t('banners.choose-new-document-destination.cannot-create-draft-document')}\n            {reason === 'RELEASE_NOT_ACTIVE' && isReleaseDocument(selectedPerspective) && (\n              <Translate\n                t={t}\n                i18nKey=\"banners.choose-new-document-destination.release-inactive\"\n                values={{\n                  title: selectedPerspective.metadata.title,\n                }}\n                components={{\n                  VersionBadge: getVersionInlineBadge(selectedPerspective),\n                }}\n              />\n            )}\n            <> {t('banners.choose-new-document-destination.choose-destination')}</>\n          </Text>\n          <ReleasesNav menuItemProps={menuItemProps} />\n        </Flex>\n      }\n    />\n  )\n}\n","import {getSanityCreateLinkMetadata, useSanityCreateConfig} from 'sanity'\n\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function CreateLinkedBanner() {\n  const {value} = useDocumentPane()\n  const {documentLinkedBannerContent: CreateLinkedBannerContent} =\n    useSanityCreateConfig().components ?? {}\n  const createLinkMetadata = getSanityCreateLinkMetadata(value)\n\n  if (!CreateLinkedBannerContent || !createLinkMetadata) return null\n\n  return (\n    <Banner\n      tone=\"transparent\"\n      data-test-id=\"sanity-create-read-only-banner\"\n      content={<CreateLinkedBannerContent metadata={createLinkMetadata} />}\n    />\n  )\n}\n","import {Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {\n  getReleaseIdFromReleaseDocumentId,\n  getReleaseTone,\n  getVersionInlineBadge,\n  LATEST,\n  type ReleaseDocument,\n  Translate,\n  useConditionalToast,\n  useTranslation,\n  useVersionOperations,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\n// How long to wait after user hit the \"Add to release\"-button before displaying the \"waiting…\" toast\nconst TOAST_DELAY = 1000\n\ntype VersionCreateState = {\n  status: 'creating' | 'created'\n  lastUpdate: Date\n}\n\nexport function DocumentNotInReleaseBanner({\n  documentId,\n  currentRelease,\n  value,\n  isScheduledRelease,\n}: {\n  documentId: string\n  currentRelease: ReleaseDocument\n  value?: Record<string, unknown>\n  isScheduledRelease?: boolean\n}): React.JSX.Element {\n  const tone = getReleaseTone(currentRelease ?? LATEST)\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\n\n  const {createVersion} = useVersionOperations()\n\n  const [versionCreateState, setVersionCreateState] = useState<VersionCreateState | undefined>()\n  const toast = useToast()\n  const handleAddToRelease = useCallback(async () => {\n    if (currentRelease._id) {\n      setVersionCreateState({status: 'creating', lastUpdate: new Date()})\n      try {\n        await createVersion(\n          getReleaseIdFromReleaseDocumentId(currentRelease._id),\n          documentId,\n          value,\n        )\n        setVersionCreateState({status: 'created', lastUpdate: new Date()})\n      } catch (err) {\n        toast.push({\n          status: 'error',\n          closable: true,\n          title: t('banners.release.error.title'),\n          description: t('banners.release.error.description', {message: err.message}),\n        })\n        // Note: we only want to reset pending state in case of failure, not unconditionally the request completes (i.e. in a finally clause)\n        // this is because the UI won't reflect that the document was successfully added to the release until we get the result back over the listener\n        // once the listener event that adds the document to the release arrives the UI knows that a version exists,\n        // and this banner will not be rendered anymore\n        setVersionCreateState(undefined)\n      }\n    }\n  }, [createVersion, currentRelease._id, documentId, t, toast, value])\n\n  const now = useCurrentTime(200)\n\n  useConditionalToast({\n    status: 'info',\n    id: 'add-document-to-release',\n    enabled: Boolean(\n      versionCreateState?.status === 'created' &&\n        now.getTime() - versionCreateState.lastUpdate.getTime() > TOAST_DELAY,\n    ),\n    closable: true,\n    title: t('banners.release.waiting.title'),\n    description: t('banners.release.waiting.description'),\n  })\n\n  return (\n    <Banner\n      tone={tone}\n      content={\n        <Text size={1}>\n          <Translate\n            i18nKey=\"banners.release.not-in-release\"\n            t={t}\n            values={{\n              title:\n                currentRelease?.metadata?.title || tCore('release.placeholder-untitled-release'),\n            }}\n            components={{\n              VersionBadge: getVersionInlineBadge(currentRelease),\n            }}\n          />\n        </Text>\n      }\n      // Adding to a scheduled release is not allowed\n      action={\n        isScheduledRelease\n          ? undefined\n          : {\n              text: t('banners.release.action.add-to-release'),\n              tone: tone,\n              disabled: Boolean(versionCreateState),\n              onClick: handleAddToRelease,\n              mode: 'default',\n            }\n      }\n    />\n  )\n}\n\nfunction useCurrentTime(updateIntervalMs: number): Date {\n  const [currentTime, setCurrentTime] = useState(new Date())\n  useEffect(() => {\n    const intervalId = setInterval(() => {\n      setCurrentTime(new Date())\n    }, updateIntervalMs)\n    return () => clearInterval(intervalId)\n  }, [updateIntervalMs])\n  return currentTime\n}\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface TypeInfo {\n  liveEditResolveType: 'publish' | 'discard'\n}\n\n/**\n * When a draft in a live edit document is published\n * @internal\n */\nexport const ResolvedLiveEdit = defineEvent<TypeInfo>({\n  name: 'LiveEdit Draft Resolved',\n  version: 1,\n  description: 'User resolved a draft of a live edit document to continue editing',\n})\n","import {type SanityDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ComponentType, useCallback, useEffect, useState} from 'react'\nimport {\n  getDraftId,\n  getPublishedId,\n  type ObjectSchemaType,\n  Translate,\n  useDocumentOperation,\n  useTranslation,\n} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {useDiffViewRouter} from '../../../../diffView/hooks/useDiffViewRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {ResolvedLiveEdit} from './__telemetry__/DraftLiveEditBanner.telemetry'\nimport {Banner} from './Banner'\n\ninterface ObsoleteDraftBannerProps {\n  displayed: Partial<SanityDocument> | null\n  documentId: string\n  schemaType: ObjectSchemaType\n  i18nKey: string\n  /**\n   * Whether the user is blocked from editing the document while an obsolete draft exists.\n   */\n  isEditBlocking?: boolean\n}\n\nexport const ObsoleteDraftBanner: ComponentType<ObsoleteDraftBannerProps> = ({\n  displayed,\n  documentId,\n  schemaType,\n  i18nKey,\n  isEditBlocking,\n}) => {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const [isPublishing, setPublishing] = useState(false)\n  const [isDiscarding, setDiscarding] = useState(false)\n  const telemetry = useTelemetry()\n\n  const {publish, discardChanges} = useDocumentOperation(documentId, displayed?._type || '')\n\n  const handlePublish = useCallback(() => {\n    publish.execute()\n    setPublishing(true)\n    telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'publish'})\n  }, [publish, telemetry])\n\n  const handleDiscard = useCallback(() => {\n    discardChanges.execute()\n    setDiscarding(true)\n    telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'discard'})\n  }, [discardChanges, telemetry])\n\n  useEffect(() => {\n    return () => {\n      setPublishing(false)\n      setDiscarding(false)\n    }\n  })\n\n  const diffViewRouter = useDiffViewRouter()\n\n  const compareDraft = useCallback(() => {\n    if (typeof displayed?._id === 'undefined') {\n      return\n    }\n\n    diffViewRouter.navigateDiffView({\n      mode: 'version',\n      previousDocument: {\n        type: schemaType.name,\n        id: getPublishedId(displayed?._id),\n      },\n      nextDocument: {\n        type: schemaType.name,\n        id: getDraftId(displayed?._id),\n      },\n    })\n  }, [diffViewRouter, displayed?._id, schemaType.name])\n\n  return (\n    <Banner\n      content={\n        <Flex align=\"center\" justify=\"space-between\" gap={2}>\n          <Text size={1} weight=\"medium\">\n            <Translate t={t} i18nKey={i18nKey} values={{schemaType: schemaType.title}} />\n          </Text>\n          <Button\n            text={t('banners.obsolete-draft.actions.compare-draft.text')}\n            mode=\"ghost\"\n            onClick={compareDraft}\n          />\n          <Button\n            onClick={handlePublish}\n            text={t('banners.obsolete-draft.actions.publish-draft.text')}\n            tooltipProps={\n              isEditBlocking\n                ? {\n                    content: t('banners.live-edit-draft-banner.publish.tooltip'),\n                  }\n                : {}\n            }\n            loading={isPublishing}\n            tone=\"positive\"\n          />\n          <Button\n            onClick={handleDiscard}\n            text={t('banners.obsolete-draft.actions.discard-draft.text')}\n            tooltipProps={\n              isEditBlocking\n                ? {\n                    content: t('banners.live-edit-draft-banner.discard.tooltip'),\n                  }\n                : {}\n            }\n            loading={isDiscarding}\n            tone=\"caution\"\n          />\n        </Flex>\n      }\n      data-testid=\"live-edit-type-banner\"\n      icon={ErrorOutlineIcon}\n    />\n  )\n}\n","import {Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {\n  getReleaseIdFromReleaseDocumentId,\n  getReleaseTone,\n  getVersionFromId,\n  isVersionId,\n  Translate,\n  useActiveReleases,\n  useDocumentVersions,\n  useOnlyHasVersions,\n  useSetPerspective,\n  useTranslation,\n  VersionInlineBadge,\n} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\nexport function OpenReleaseToEditBanner({\n  documentId,\n  isPinnedDraftOrPublished,\n}: {\n  documentId: string\n  isPinnedDraftOrPublished: boolean\n}): React.JSX.Element | null {\n  const onlyHasVersions = useOnlyHasVersions({documentId})\n\n  /** this banner should only be rendered in specific cases\n   * 1. when the document is not a draft or published\n   * 2. when the document only has version or versions\n   * 3. when the global perspective is not set (published or draft)\n   */\n\n  if (!isVersionId(documentId)) {\n    return null\n  }\n\n  if (!onlyHasVersions || !isPinnedDraftOrPublished) {\n    return null\n  }\n\n  return <OpenReleaseToEditBannerInner documentId={documentId} />\n}\n\nexport function OpenReleaseToEditBannerInner({\n  documentId,\n}: {\n  documentId: string\n}): React.JSX.Element {\n  const {data: activeReleases} = useActiveReleases()\n  const setPerspective = useSetPerspective()\n  const releaseId = getVersionFromId(documentId) ?? ''\n  const currentVersion = useMemo(\n    () => activeReleases.find((version) => version._id.includes(releaseId)),\n    [activeReleases, releaseId],\n  )\n  const {t: tCore} = useTranslation()\n\n  const {data: documentVersions} = useDocumentVersions({documentId})\n\n  const documentVersionsTitleList = useMemo(\n    () =>\n      activeReleases\n        .filter((version) => {\n          return documentVersions.find((release) => {\n            const r = getVersionFromId(release) ?? ''\n            return getReleaseIdFromReleaseDocumentId(version._id) === r\n          })\n        })\n        .map((version) => version.metadata.title || tCore('release.placeholder-untitled-release')),\n    [activeReleases, documentVersions, tCore],\n  )\n  const tone = currentVersion && getReleaseTone(currentVersion)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const handleGoToEdit = useCallback(async () => {\n    setPerspective(releaseId)\n  }, [releaseId, setPerspective])\n\n  return (\n    <Banner\n      tone={tone}\n      paddingY={0}\n      data-testid=\"open-release-to-edit-banner\"\n      content={\n        <Flex direction={'row'} align=\"center\" justify=\"space-between\" flex={1}>\n          <Text size={1}>\n            <Flex direction={'row'} gap={1}>\n              {documentVersionsTitleList.length > 1 ? (\n                <Translate\n                  t={t}\n                  i18nKey=\"banners.release.navigate-to-edit-description-multiple\"\n                  components={{\n                    VersionBadge: () => (\n                      <VersionInlineBadge> {documentVersionsTitleList[0]}</VersionInlineBadge>\n                    ),\n                  }}\n                  values={{count: documentVersionsTitleList.length - 1}}\n                />\n              ) : (\n                <Translate\n                  t={t}\n                  i18nKey=\"banners.release.navigate-to-edit-description-single\"\n                  components={{\n                    VersionBadge: () => (\n                      <VersionInlineBadge> {documentVersionsTitleList[0]}</VersionInlineBadge>\n                    ),\n                  }}\n                />\n              )}\n            </Flex>\n          </Text>\n\n          <Button\n            text={t('banners.release.action.open-to-edit')}\n            tone={tone}\n            onClick={handleGoToEdit}\n          />\n        </Flex>\n      }\n    />\n  )\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function RevisionNotFoundBanner() {\n  const {revisionNotFound} = useDocumentPane()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (!revisionNotFound) return null\n\n  return (\n    <Banner\n      tone=\"caution\"\n      data-test-id=\"revision-not-found-banner\"\n      icon={WarningOutlineIcon}\n      content={<Text size={1}>{t('banners.revision-not-found.description')}</Text>}\n    />\n  )\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {\n  formatRelativeLocalePublishDate,\n  getReleaseTone,\n  LATEST,\n  type ReleaseDocument,\n  Translate,\n  useTranslation,\n} from 'sanity'\n\nimport {Banner} from './Banner'\n\nexport function ScheduledReleaseBanner({\n  currentRelease,\n}: {\n  currentRelease: ReleaseDocument\n}): React.JSX.Element {\n  const tone = getReleaseTone(currentRelease ?? LATEST)\n\n  const {t: tCore} = useTranslation()\n\n  return (\n    <Banner\n      tone={tone}\n      icon={LockIcon}\n      content={\n        <Text size={1}>\n          <Translate\n            t={tCore}\n            i18nKey=\"release.banner.scheduled-for-publishing-on\"\n            values={{\n              date: formatRelativeLocalePublishDate(currentRelease),\n            }}\n          />\n        </Text>\n      }\n    />\n  )\n}\n","import {UnpublishIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {\n  getVersionInlineBadge,\n  isGoingToUnpublish,\n  isReleaseDocument,\n  Translate,\n  usePerspective,\n  useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function UnpublishedDocumentBanner() {\n  const {value} = useDocumentPane()\n  const {selectedPerspective} = usePerspective()\n  const willBeUnpublished = isGoingToUnpublish(value)\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\n\n  if (isReleaseDocument(selectedPerspective) && willBeUnpublished) {\n    const title =\n      selectedPerspective.metadata?.title || tCore('release.placeholder-untitled-release')\n\n    return (\n      <Banner\n        tone=\"critical\"\n        content={\n          <Text size={1}>\n            <Translate\n              t={t}\n              i18nKey=\"banners.unpublished-release-banner.text\"\n              values={{\n                title,\n              }}\n              components={{\n                VersionBadge: getVersionInlineBadge(selectedPerspective),\n              }}\n            />\n          </Text>\n        }\n        icon={UnpublishIcon}\n      />\n    )\n  }\n  return null\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Heading, Inline, Stack, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\ninterface DocumentHeaderProps {\n  documentId: string\n  schemaType: ObjectSchemaType\n  title?: string\n}\n\n/**\n * Use CSS container queries to conditionally render headings at different sizes.\n * We hide this entire container (including the document type) if container queries\n * not supported in the current browser.\n *\n * Note that usage of container queries in `styled-components` is only supported in `6.x`.\n * As such, studios that include `\"styled-components\": \"<6\"` as a dependency will only see\n * the largest heading size here, even if their browser supports it!\n */\n\nexport const TitleContainer = styled(Stack)`\n  ${({theme}) => {\n    return css`\n      @supports not (container-type: inline-size) {\n        display: none !important;\n      }\n\n      container-type: inline-size;\n\n      [data-heading] {\n        font-size: ${theme.sanity.fonts.heading.sizes[4].fontSize}px;\n        line-height: ${theme.sanity.fonts.heading.sizes[4].lineHeight}px;\n        overflow-wrap: break-word;\n        text-wrap: pretty;\n      }\n\n      @container (max-width: 560px) {\n        [data-heading] {\n          font-size: ${theme.sanity.fonts.heading.sizes[3].fontSize}px;\n          line-height: ${theme.sanity.fonts.heading.sizes[3].lineHeight}px;\n        }\n      }\n\n      @container (max-width: 420px) {\n        [data-heading] {\n          font-size: ${theme.sanity.fonts.heading.sizes[2].fontSize}px;\n          line-height: ${theme.sanity.fonts.heading.sizes[2].lineHeight}px;\n        }\n      }\n    `\n  }}\n`\n\n/**\n * Header containing current document title and type.\n * Document type is hidden if the document `_id` matches the current document `_type`.\n * The entire header is hidden if container queries are not supported.\n */\nexport const FormHeader = ({documentId, schemaType, title}: DocumentHeaderProps) => {\n  const isSingleton = documentId === schemaType.name\n  const description = schemaType.description\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (schemaType.__experimental_formPreviewTitle === false) {\n    return null\n  }\n  return (\n    <TitleContainer marginBottom={6} space={4}>\n      {!isSingleton && (\n        <Inline space={1}>\n          <Text muted size={1}>\n            {schemaType.title ?? schemaType.name}\n          </Text>\n          {description && (\n            <Tooltip content={description} placement=\"right\">\n              <InfoOutlineIcon data-testid=\"schema-description-icon\" />\n            </Tooltip>\n          )}\n        </Inline>\n      )}\n      <Heading as=\"h2\" data-heading muted={!title} data-testid=\"document-panel-document-title\">\n        {title ?? t('document-view.form-view.form-title-fallback')}\n      </Heading>\n    </TitleContainer>\n  )\n}\n","/* eslint-disable no-nested-ternary */\nimport {Box, Container, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport {type FormEvent, forwardRef, useCallback, useEffect, useMemo, useState} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n  createPatchChannel,\n  type DocumentMutationEvent,\n  type DocumentRebaseEvent,\n  FormBuilder,\n  type FormDocumentValue,\n  fromMutationPatches,\n  type PatchMsg,\n  PresenceOverlay,\n  useConditionalToast,\n  useDocumentPresence,\n  useDocumentStore,\n  usePerspective,\n  useTranslation,\n} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {Delay} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentTitle} from '../../useDocumentTitle'\nimport {FormHeader} from './FormHeader'\n\ninterface FormViewProps {\n  hidden: boolean\n  margins: [number, number, number, number]\n}\n\nconst preventDefault = (ev: FormEvent) => ev.preventDefault()\n\nexport const FormView = forwardRef<HTMLDivElement, FormViewProps>(function FormView(props, ref) {\n  const {hidden, margins} = props\n\n  const {\n    collapsedFieldSets,\n    collapsedPaths,\n    displayed: value,\n    editState,\n    documentId,\n    documentType,\n    fieldActions,\n    onChange,\n    validation,\n    ready,\n    formState,\n    onFocus,\n    connectionState,\n    onBlur,\n    onSetCollapsedPath,\n    onPathOpen,\n    onSetCollapsedFieldSet,\n    onSetActiveFieldGroup,\n    openPath,\n  } = useDocumentPane()\n  const {selectedReleaseId} = usePerspective()\n  const documentStore = useDocumentStore()\n  const presence = useDocumentPresence(documentId)\n  const {title} = useDocumentTitle()\n  // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n  // nodes about both remote and local patches.\n  // - Used by the Portable Text input to modify selections.\n  // - Used by `withDocument` to reset value.\n  const [patchChannel] = useState(() => createPatchChannel())\n\n  const isLocked = editState?.transactionSyncLock?.enabled\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const conditionalToastParams = useMemo(\n    () => ({\n      id: `sync-lock`,\n      status: 'warning' as const,\n      enabled: isLocked,\n      title: t('document-view.form-view.sync-lock-toast.title'),\n      description: t('document-view.form-view.sync-lock-toast.description'),\n      closable: true,\n    }),\n    [isLocked, t],\n  )\n\n  useConditionalToast(conditionalToastParams)\n\n  useEffect(() => {\n    const sub = documentStore.pair\n      .documentEvents(documentId, documentType, selectedReleaseId)\n      .pipe(\n        tap((event) => {\n          if (event.type === 'mutation') {\n            patchChannel.publish(prepareMutationEvent(event))\n          }\n\n          if (event.type === 'rebase') {\n            patchChannel.publish(prepareRebaseEvent(event))\n          }\n        }),\n      )\n      .subscribe()\n\n    return () => {\n      sub.unsubscribe()\n    }\n  }, [documentId, documentStore, documentType, patchChannel, selectedReleaseId])\n\n  const hasRev = Boolean(value?._rev)\n  const handleInitialValue = useEffectEvent(() => {\n    // this is a workaround for an issue that caused the document pushed to withDocument to get\n    // stuck at the first initial value.\n    // This effect is triggered only when the document goes from not having a revision, to getting one\n    // so it will kick in as soon as the document is received from the backend\n    patchChannel.publish({\n      type: 'mutation',\n      patches: [],\n      snapshot: value,\n    })\n  })\n  useEffect(() => {\n    if (hasRev) {\n      handleInitialValue()\n    }\n    // React to changes in hasRev only\n  }, [hasRev])\n\n  const [formRef, setFormRef] = useState<null | HTMLDivElement>(null)\n\n  // We only want to run it on first mount\n  const [focusedFirstDescendant, setFocusedFirstDescendant] = useState(false)\n  useEffect(() => {\n    // Only focus on the first descendant if there is not already a focus path\n    // This is to avoid stealing focus from intent links\n    if (!focusedFirstDescendant && ready && !formState?.focusPath.length && formRef) {\n      setFocusedFirstDescendant(true)\n      focusFirstDescendant(formRef)\n    }\n  }, [focusedFirstDescendant, formRef, formState?.focusPath.length, ready])\n\n  const setRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      setFormRef(node)\n      if (typeof ref === 'function') {\n        ref(node)\n      } else if (ref) {\n        ref.current = node\n      }\n    },\n    [ref],\n  )\n\n  const isReadOnly = connectionState === 'reconnecting' || formState?.readOnly || !editState?.ready\n\n  return (\n    <Container\n      hidden={hidden}\n      paddingX={4}\n      paddingTop={5}\n      paddingBottom={9}\n      sizing=\"border\"\n      width={1}\n    >\n      <PresenceOverlay margins={margins}>\n        <Box\n          as=\"form\"\n          onSubmit={preventDefault}\n          ref={setRef}\n          data-testid=\"form-view\"\n          data-read-only={isReadOnly ? 'true' : undefined}\n        >\n          {connectionState === 'connecting' && !editState?.draft && !editState?.published ? (\n            <Delay ms={300}>\n              {/* TODO: replace with loading block */}\n              <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n                <Spinner muted />\n                <Box marginTop={3}>\n                  <Text align=\"center\" muted size={1}>\n                    {t('document-view.form-view.loading')}\n                  </Text>\n                </Box>\n              </Flex>\n            </Delay>\n          ) : formState === null || hidden ? (\n            <Box padding={2}>\n              <Text>{t('document-view.form-view.form-hidden')}</Text>\n            </Box>\n          ) : (\n            <>\n              <FormHeader documentId={documentId} schemaType={formState.schemaType} title={title} />\n              <FormBuilder\n                __internal_fieldActions={fieldActions}\n                __internal_patchChannel={patchChannel}\n                changed={formState.changed}\n                collapsedFieldSets={collapsedFieldSets}\n                collapsedPaths={collapsedPaths}\n                focused={formState.focused}\n                focusPath={formState.focusPath}\n                groups={formState.groups}\n                id=\"root\"\n                members={formState.members}\n                onChange={onChange}\n                onFieldGroupSelect={onSetActiveFieldGroup}\n                onPathBlur={onBlur}\n                onPathFocus={onFocus}\n                onPathOpen={onPathOpen}\n                onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n                onSetPathCollapsed={onSetCollapsedPath}\n                openPath={openPath}\n                presence={presence}\n                readOnly={isReadOnly}\n                schemaType={formState.schemaType}\n                validation={validation}\n                value={\n                  // note: the form state doesn't have a typed concept of a \"document\" value\n                  // but these should be compatible\n                  formState.value as FormDocumentValue\n                }\n              />\n            </>\n          )}\n        </Box>\n      </PresenceOverlay>\n    </Container>\n  )\n})\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n  const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n  return {\n    type: 'mutation',\n    snapshot: event.document,\n    patches: fromMutationPatches(event.origin, patches),\n  }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n  const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n  const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n  return {\n    type: 'rebase',\n    snapshot: event.document,\n    patches: fromMutationPatches('remote', remotePatches).concat(\n      fromMutationPatches('local', localPatches),\n    ),\n  }\n}\n","import {TabList} from '@sanity/ui'\nimport {type ComponentType, type ReactNode, useCallback} from 'react'\n\nimport {Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {useDocumentPane} from '../../useDocumentPane'\n\n/**\n * This component will render the tabs for the document pane, following this rules:\n *  if the view tabs are wider than 200px it collapses to a dropdown\n *  if the header is smaller than 480px it collapses to a dropdown\n * For this we need to first measure the pane header width and then the tabs width.\n *\n * Gotcha, if the tabs are wider han 200px it renders a dropdown and if then the tabs change to be smaller than 200px\n * it will not change back to tabs, this is a limitation of the current implementation but an ok tradeoff to avoid mounting\n * ghost elements just to measure the width.\n */\nexport function DocumentHeaderTabs() {\n  const {activeViewId, paneKey, views} = useDocumentPane()\n\n  const tabPanelId = `${paneKey}tabpanel`\n\n  return (\n    <TabList space={1}>\n      {views.map((view, index) => (\n        <DocumentHeaderTab\n          icon={view.icon}\n          id={`${paneKey}tab-${view.id}`}\n          isActive={activeViewId === view.id}\n          key={view.id}\n          label={view.title}\n          tabPanelId={tabPanelId}\n          viewId={index === 0 ? null : (view.id ?? null)}\n        />\n      ))}\n    </TabList>\n  )\n}\n\nfunction DocumentHeaderTab(props: {\n  icon?: ComponentType | ReactNode\n  id: string\n  isActive: boolean\n  label: string\n  tabPanelId: string\n  viewId: string | null\n}) {\n  const {icon, id, isActive, label, tabPanelId, viewId, ...rest} = props\n  const {ready, editState} = useDocumentPane()\n  const {setView} = usePaneRouter()\n  const handleClick = useCallback(() => setView(viewId), [setView, viewId])\n\n  return (\n    <Tab\n      {...rest} // required to enable <TabList> keyboard navigation\n      aria-controls={tabPanelId}\n      disabled={!ready && !editState?.draft && !editState?.published}\n      icon={icon}\n      id={id}\n      label={label}\n      onClick={handleClick}\n      selected={isActive}\n    />\n  )\n}\n","import {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nexport function DocumentHeaderTitle(): React.JSX.Element {\n  const {connectionState, schemaType, title, value: documentValue} = useDocumentPane()\n  const subscribed = Boolean(documentValue)\n\n  const {error, value} = useValuePreview({\n    enabled: subscribed,\n    schemaType,\n    value: documentValue,\n  })\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (connectionState === 'connecting' && !subscribed) {\n    return <></>\n  }\n\n  if (title) {\n    return <>{title}</>\n  }\n\n  if (!documentValue) {\n    return (\n      <>\n        {t('panes.document-header-title.new.text', {\n          schemaType: schemaType?.title || schemaType?.name,\n        })}\n      </>\n    )\n  }\n\n  if (error) {\n    return <>{t('panes.document-header-title.error.text', {error: error.message})}</>\n  }\n\n  return (\n    <>\n      {value?.title || (\n        <span style={{color: 'var(--card-muted-fg-color)'}}>\n          {t('panes.document-header-title.untitled.text')}\n        </span>\n      )}\n    </>\n  )\n}\n","import {StarFilledIcon, StarIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {type ComponentType} from 'react'\nimport {useManageFavorite, type UseManageFavoriteProps, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\nexport const FavoriteToggle: ComponentType<UseManageFavoriteProps & {documentExists: boolean}> = ({\n  documentExists,\n  ...props\n}) => {\n  const {isFavorited, isReady, favorite, unfavorite} = useManageFavorite(props)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const description = t(\n    isFavorited\n      ? 'document.favorites.remove-from-favorites'\n      : 'document.favorites.add-to-favorites',\n  )\n\n  return (\n    <Button\n      mode=\"bleed\"\n      onClick={isFavorited ? unfavorite : favorite}\n      disabled={!isReady || !documentExists}\n      aria-label={description}\n      aria-live=\"assertive\"\n      tooltipProps={{\n        content: <Text size={1}>{description}</Text>,\n        placement: 'right',\n      }}\n    >\n      <Text size={1}>{isFavorited ? <StarFilledIcon /> : <StarIcon />}</Text>\n    </Button>\n  )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, useMemo} from 'react'\nimport {CapabilityGate, getPublishedId, useActiveWorkspace, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {PaneHeader, usePane, usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTabs} from './DocumentHeaderTabs'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {FavoriteToggle} from './FavoriteToggle'\n\n/**\n * When not collapsed this component will render the title and the tabs.\n * This component will render inside the document panel and not with the DocumentPanelHeader\n */\nexport const DocumentPanelSubHeader = memo(function DocumentPanelHeader() {\n  const {editState, connectionState, views, documentId, displayed} = useDocumentPane()\n  const {features} = useStructureTool()\n  const {index, BackLink} = usePaneRouter()\n  const {activeWorkspace} = useActiveWorkspace()\n  const publishedDocId = getPublishedId(documentId)\n\n  const showTabs = views.length > 1\n\n  const {collapsed, isLast} = usePane()\n  // Prevent focus if this is the last (non-collapsed) pane.\n  const tabIndex = isLast && !collapsed ? -1 : 0\n\n  // show the back button if both the feature is enabled and the current pane\n  // is not the first\n  const showBackButton = features.backButton && index > 0\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const title = useMemo(() => <DocumentHeaderTitle />, [])\n  const tabs = useMemo(() => showTabs && <DocumentHeaderTabs />, [showTabs])\n\n  const backButton = useMemo(\n    () =>\n      showBackButton && (\n        <Button\n          as={BackLink}\n          data-as=\"a\"\n          icon={ArrowLeftIcon}\n          mode=\"bleed\"\n          tooltipProps={{content: t('pane-header.back-button.text')}}\n        />\n      ),\n    [BackLink, showBackButton, t],\n  )\n\n  const favoriteToggle = (\n    <CapabilityGate capability=\"comlink\" condition=\"available\">\n      <FavoriteToggle\n        resourceType=\"studio\"\n        documentId={publishedDocId}\n        documentType={displayed?._type ?? ''}\n        resourceId={[activeWorkspace.projectId, activeWorkspace.dataset].join('.')}\n        schemaName={activeWorkspace.name}\n        projectId={activeWorkspace.projectId}\n        dataset={activeWorkspace.dataset}\n        documentExists={\n          (editState?.ready &&\n            (editState.version ?? editState.draft ?? editState.published) !== null) ??\n          false\n        }\n      />\n    </CapabilityGate>\n  )\n\n  return (\n    <PaneHeader\n      loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n      title={title}\n      tabs={tabs}\n      tabIndex={tabIndex}\n      backButton={backButton}\n      appendTitle={favoriteToggle}\n    />\n  )\n})\n","import {BoundaryElementProvider, Box, Flex, PortalProvider, usePortal} from '@sanity/ui'\nimport {useEffect, useMemo, useRef, useState} from 'react'\nimport {\n  getSanityCreateLinkMetadata,\n  getVersionFromId,\n  isNewDocument,\n  isPerspectiveWriteable,\n  isReleaseDocument,\n  isReleaseScheduledOrScheduling,\n  isSanityCreateLinked,\n  isSystemBundle,\n  LegacyLayerProvider,\n  type ReleaseDocument,\n  ScrollContainer,\n  usePerspective,\n  useWorkspace,\n  VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {PaneContent, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {hasObsoleteDraft} from '../../../hasObsoleteDraft'\nimport {mustChooseNewDocumentDestination} from '../../../mustChooseNewDocumentDestination'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DocumentInspectorPanel} from '../documentInspector'\nimport {InspectDialog} from '../inspectDialog'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {\n  DeletedDocumentBanners,\n  DeprecatedDocumentTypeBanner,\n  InsufficientPermissionBanner,\n  ReferenceChangedBanner,\n} from './banners'\nimport {ArchivedReleaseDocumentBanner} from './banners/ArchivedReleaseDocumentBanner'\nimport {CanvasLinkedBanner} from './banners/CanvasLinkedBanner'\nimport {ChooseNewDocumentDestinationBanner} from './banners/ChooseNewDocumentDestinationBanner'\nimport {CreateLinkedBanner} from './banners/CreateLinkedBanner'\nimport {DocumentNotInReleaseBanner} from './banners/DocumentNotInReleaseBanner'\nimport {ObsoleteDraftBanner} from './banners/ObsoleteDraftBanner'\nimport {OpenReleaseToEditBanner} from './banners/OpenReleaseToEditBanner'\nimport {RevisionNotFoundBanner} from './banners/RevisionNotFoundBanner'\nimport {ScheduledReleaseBanner} from './banners/ScheduledReleaseBanner'\nimport {UnpublishedDocumentBanner} from './banners/UnpublishedDocumentBanner'\nimport {FormView} from './documentViews'\nimport {DocumentPanelSubHeader} from './header/DocumentPanelSubHeader'\n\ninterface DocumentPanelProps {\n  footerHeight: number | null\n  headerHeight: number | null\n  isInspectOpen: boolean\n  rootElement: HTMLDivElement | null\n  setDocumentPanelPortalElement: (el: HTMLElement | null) => void\n  footer: React.ReactNode\n}\n\nconst DocumentBox = styled(Box)({\n  position: 'relative',\n})\n\nconst Scroller = styled(ScrollContainer)<{$disabled: boolean}>(({$disabled}) => {\n  if ($disabled) {\n    return {height: '100%'}\n  }\n\n  return css`\n    height: 100%;\n    overflow: auto;\n    position: relative;\n    scroll-behavior: smooth;\n    outline: none;\n  `\n})\n\nexport const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {\n  const {\n    footerHeight,\n    headerHeight,\n    isInspectOpen,\n    rootElement,\n    setDocumentPanelPortalElement,\n    footer,\n  } = props\n  const {\n    activeViewId,\n    displayed,\n    documentId,\n    editState,\n    inspector,\n    value,\n    views,\n    ready,\n    schemaType,\n    permissions,\n    isPermissionsLoading,\n  } = useDocumentPane()\n  const createLinkMetadata = getSanityCreateLinkMetadata(value)\n  const showCreateBanner = isSanityCreateLinked(createLinkMetadata)\n\n  const {params} = usePaneRouter()\n  const {collapsed: layoutCollapsed} = usePaneLayout()\n  const {collapsed} = usePane()\n  const parentPortal = usePortal()\n  const {features} = useStructureTool()\n  const [_portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n  const [documentScrollElement, setDocumentScrollElement] = useState<HTMLDivElement | null>(null)\n  const formContainerElement = useRef<HTMLDivElement | null>(null)\n  const workspace = useWorkspace()\n\n  const requiredPermission = value._createdAt ? 'update' : 'create'\n\n  const activeView = useMemo(\n    () => views.find((view) => view.id === activeViewId) || views[0] || {type: 'form'},\n    [activeViewId, views],\n  )\n\n  // Use a local portal container when split panes is supported\n  const portalElement: HTMLElement | null = features.splitPanes\n    ? _portalElement || parentPortal.element\n    : parentPortal.element\n\n  // Calculate the height of the header\n  const margins: [number, number, number, number] = useMemo(() => {\n    if (layoutCollapsed) {\n      return [headerHeight || 0, 0, footerHeight ? footerHeight + 2 : 2, 0]\n    }\n\n    return [0, 0, 2, 0]\n  }, [layoutCollapsed, footerHeight, headerHeight])\n\n  const formViewHidden = activeView.type !== 'form'\n\n  const activeViewNode = useMemo(() => {\n    if (activeView.type === 'component' && activeView.component) {\n      const ActiveViewComponent = activeView.component\n      return (\n        <ActiveViewComponent\n          document={{\n            draft: editState?.draft || null,\n            displayed: displayed || value,\n            historical: displayed,\n            published: editState?.published || null,\n          }}\n          documentId={documentId}\n          options={activeView.options}\n          schemaType={schemaType}\n        />\n      )\n    }\n    return false\n  }, [activeView, displayed, documentId, editState?.draft, editState?.published, schemaType, value])\n\n  // Scroll to top as `documentId` changes\n  useEffect(() => {\n    if (!documentScrollElement?.scrollTo) return\n    documentScrollElement.scrollTo(0, 0)\n  }, [documentId, documentScrollElement])\n\n  // Pass portal element to `DocumentPane`\n  useEffect(() => {\n    if (portalElement) {\n      setDocumentPanelPortalElement(portalElement)\n    }\n  }, [portalElement, setDocumentPanelPortalElement])\n\n  const inspectDialog = useMemo(() => {\n    return isInspectOpen ? <InspectDialog value={displayed || value} /> : null\n  }, [isInspectOpen, displayed, value])\n\n  const showInspector = Boolean(!collapsed && inspector)\n  const {selectedPerspective, selectedReleaseId} = usePerspective()\n\n  const banners = useMemo(() => {\n    if (params?.historyVersion) {\n      return <ArchivedReleaseDocumentBanner />\n    }\n\n    const isScheduledRelease =\n      isReleaseDocument(selectedPerspective) && isReleaseScheduledOrScheduling(selectedPerspective)\n\n    const documentInScheduledRelease = Boolean(\n      isScheduledRelease &&\n        displayed?._id &&\n        getVersionFromId(displayed?._id) === selectedReleaseId,\n    )\n\n    const isSelectedPerspectiveWriteable = isPerspectiveWriteable({\n      selectedPerspective,\n      isDraftModelEnabled: workspace.document.drafts.enabled,\n      schemaType,\n    })\n\n    if (\n      mustChooseNewDocumentDestination({\n        isSelectedPerspectiveWriteable,\n        editState,\n      })\n    ) {\n      return (\n        !isSelectedPerspectiveWriteable.result && (\n          <ChooseNewDocumentDestinationBanner\n            schemaType={schemaType}\n            selectedPerspective={selectedPerspective}\n            reason={isSelectedPerspectiveWriteable.reason}\n          />\n        )\n      )\n    }\n\n    if (documentInScheduledRelease) {\n      return <ScheduledReleaseBanner currentRelease={selectedPerspective as ReleaseDocument} />\n    }\n    const isPinnedDraftOrPublish = isSystemBundle(selectedPerspective)\n\n    if (\n      displayed?._id &&\n      getVersionFromId(displayed._id) !== selectedReleaseId &&\n      ready &&\n      !isPinnedDraftOrPublish &&\n      isNewDocument(editState) === false\n    ) {\n      return (\n        <DocumentNotInReleaseBanner\n          documentId={value._id}\n          currentRelease={selectedPerspective as ReleaseDocument}\n          value={displayed || undefined}\n          isScheduledRelease={isScheduledRelease}\n        />\n      )\n    }\n\n    const displayedHasObsoleteDraft = hasObsoleteDraft({\n      editState,\n      workspace,\n      schemaType,\n    })\n\n    if (activeView.type === 'form' && !selectedReleaseId && displayedHasObsoleteDraft.result) {\n      if (displayedHasObsoleteDraft.reason === 'DRAFT_MODEL_INACTIVE') {\n        return (\n          <ObsoleteDraftBanner\n            displayed={displayed}\n            documentId={documentId}\n            schemaType={schemaType}\n            i18nKey=\"banners.obsolete-draft.draft-model-inactive.text\"\n          />\n        )\n      }\n\n      if (displayedHasObsoleteDraft.reason === 'LIVE_EDIT_ACTIVE') {\n        return (\n          <ObsoleteDraftBanner\n            displayed={displayed}\n            documentId={documentId}\n            schemaType={schemaType}\n            i18nKey=\"banners.live-edit-draft-banner.text\"\n            isEditBlocking\n          />\n        )\n      }\n    }\n\n    if (activeView.type !== 'form' || isPermissionsLoading) return null\n\n    return (\n      <>\n        {showCreateBanner && <CreateLinkedBanner />}\n        {!permissions?.granted && (\n          <InsufficientPermissionBanner requiredPermission={requiredPermission} />\n        )}\n        <RevisionNotFoundBanner />\n        <ReferenceChangedBanner />\n        <DeprecatedDocumentTypeBanner />\n        <CanvasLinkedBanner />\n        <DeletedDocumentBanners />\n        <UnpublishedDocumentBanner />\n        <OpenReleaseToEditBanner\n          documentId={displayed?._id ?? documentId}\n          isPinnedDraftOrPublished={isPinnedDraftOrPublish}\n        />\n      </>\n    )\n  }, [\n    params?.historyVersion,\n    selectedPerspective,\n    displayed,\n    selectedReleaseId,\n    editState,\n    ready,\n    activeView.type,\n    isPermissionsLoading,\n    showCreateBanner,\n    permissions?.granted,\n    requiredPermission,\n    documentId,\n    value._id,\n    schemaType,\n    workspace,\n  ])\n  const showFormView = features.resizablePanes || !showInspector\n  return (\n    <PaneContent>\n      <Flex height=\"fill\">\n        {showFormView && (\n          <Flex height=\"fill\" direction=\"column\" width=\"fill\" flex={2}>\n            <LegacyLayerProvider zOffset=\"paneHeader\">\n              {banners}\n              <DocumentPanelSubHeader />\n            </LegacyLayerProvider>\n            <DocumentBox flex={2} overflow=\"hidden\">\n              <PortalProvider\n                element={portalElement}\n                __unstable_elements={{documentScrollElement: documentScrollElement}}\n              >\n                <BoundaryElementProvider element={documentScrollElement}>\n                  <VirtualizerScrollInstanceProvider\n                    scrollElement={documentScrollElement}\n                    containerElement={formContainerElement}\n                  >\n                    <Scroller\n                      $disabled={layoutCollapsed || false}\n                      data-testid=\"document-panel-scroller\"\n                      ref={setDocumentScrollElement}\n                    >\n                      <FormView\n                        hidden={formViewHidden}\n                        margins={margins}\n                        ref={formContainerElement}\n                      />\n                      {activeViewNode}\n                    </Scroller>\n\n                    {inspectDialog}\n\n                    <div data-testid=\"document-panel-portal\" ref={setPortalElement} />\n                  </VirtualizerScrollInstanceProvider>\n                </BoundaryElementProvider>\n              </PortalProvider>\n            </DocumentBox>\n\n            {footer}\n          </Flex>\n        )}\n        {showInspector && (\n          <BoundaryElementProvider element={rootElement}>\n            <DocumentInspectorPanel\n              documentId={documentId}\n              documentType={schemaType.name}\n              flex={1}\n            />\n          </BoundaryElementProvider>\n        )}\n      </Flex>\n    </PaneContent>\n  )\n}\nDocumentPanel.displayName = 'DocumentPanel'\n","/**\n * @internal\n */\nexport const _DEBUG = false\n\nexport const EMPTY_PARAMS = Object.freeze({})\nexport const LOADING_PANE = Symbol('LOADING_PANE')\n\nexport const DOCUMENT_PANEL_PORTAL_ELEMENT = 'documentPanelPortalElement'\n","import {type Placement} from '@sanity/ui'\n\nimport {type DialogProps} from '../../../../../ui-components'\n\nexport const POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['left', 'bottom']\n\nexport const DIALOG_WIDTH_TO_UI_WIDTH: {[key: string]: DialogProps['width']} = {\n  small: 0,\n  medium: 1,\n  large: 2,\n  full: 'auto',\n}\n","import {\n  Box,\n  Button, // eslint-disable-line no-restricted-imports\n  Flex,\n  Grid,\n  Popover, // eslint-disable-line no-restricted-imports\n  Text,\n  useClickOutsideEvent,\n  useGlobalKeyDown,\n  useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionConfirmDialogProps, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function ConfirmDialog(props: {\n  dialog: DocumentActionConfirmDialogProps\n  referenceElement: HTMLElement | null\n}) {\n  const {dialog, referenceElement} = props\n\n  return (\n    <Popover\n      content={<ConfirmDialogContent dialog={dialog} />}\n      fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n      open\n      placement=\"top\"\n      portal\n      preventOverflow\n      referenceElement={referenceElement}\n    />\n  )\n}\n\n/**\n * Dialog rendered by custom document actions of dialog type `confirm`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction ConfirmDialogContent(props: {dialog: DocumentActionConfirmDialogProps}) {\n  const {dialog} = props\n  const {\n    cancelButtonIcon,\n    cancelButtonText,\n    confirmButtonIcon,\n    confirmButtonText,\n    // color,\n    message,\n    onCancel,\n    onConfirm,\n    tone,\n  } = dialog\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {isTopLayer} = useLayer()\n  const ref = useRef<HTMLDivElement | null>(null)\n\n  const handleGlobalKeyDown = useCallback(\n    (event: any) => {\n      if (event.key === 'Escape' && isTopLayer) onCancel()\n    },\n    [isTopLayer, onCancel],\n  )\n\n  useGlobalKeyDown(handleGlobalKeyDown)\n  useClickOutsideEvent(isTopLayer && onCancel, () => [ref.current])\n\n  return (\n    <Flex direction=\"column\" ref={ref} style={{minWidth: 320 - 16, maxWidth: 400}}>\n      <Box flex={1} overflow=\"auto\" padding={4}>\n        <Text>{message}</Text>\n      </Box>\n      <Box paddingX={4} paddingY={3} style={{borderTop: '1px solid var(--card-border-color)'}}>\n        <Grid columns={2} gap={2}>\n          <Button\n            data-testid=\"confirm-dialog-cancel-button\"\n            icon={cancelButtonIcon}\n            onClick={onCancel}\n            mode=\"ghost\"\n            text={cancelButtonText || t('confirm-dialog.cancel-button.fallback-text')}\n          />\n          <Button\n            data-testid=\"confirm-dialog-confirm-button\"\n            icon={confirmButtonIcon}\n            onClick={onConfirm}\n            text={confirmButtonText || t('confirm-dialog.confirm-button.fallback-text')}\n            tone={tone}\n          />\n        </Grid>\n      </Box>\n    </Flex>\n  )\n}\n","import {\n  Box,\n  Dialog, // eslint-disable-line no-restricted-imports\n} from '@sanity/ui'\nimport {useId} from 'react'\nimport {type DocumentActionModalDialogProps, LegacyLayerProvider} from 'sanity'\n\nimport {DIALOG_WIDTH_TO_UI_WIDTH} from './constants'\n\n/**\n * Dialog rendered by custom document actions of dialog type `dialog`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nexport function ModalDialog(props: {dialog: DocumentActionModalDialogProps}) {\n  const {dialog} = props\n  const dialogId = useId()\n\n  const footer = dialog.footer && (\n    <Box paddingX={4} paddingY={3}>\n      {dialog.footer}\n    </Box>\n  )\n\n  return (\n    <LegacyLayerProvider zOffset=\"fullscreen\">\n      <Dialog\n        animate\n        __unstable_hideCloseButton={dialog.showCloseButton === false}\n        footer={footer}\n        header={dialog.header}\n        id={dialogId}\n        // eslint-disable-next-line react/jsx-handler-names\n        onClose={dialog.onClose}\n        // eslint-disable-next-line react/jsx-handler-names\n        onClickOutside={dialog.onClose}\n        width={dialog.width === undefined ? 1 : DIALOG_WIDTH_TO_UI_WIDTH[dialog.width]}\n      >\n        <Box padding={4}>{dialog.content}</Box>\n      </Dialog>\n    </LegacyLayerProvider>\n  )\n}\n","import {\n  Popover, // eslint-disable-line no-restricted-imports\n  useClickOutsideEvent,\n  useGlobalKeyDown,\n  useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionPopoverDialogProps} from 'sanity'\n\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function PopoverDialog(props: {\n  dialog: DocumentActionPopoverDialogProps\n  referenceElement: HTMLElement | null\n}) {\n  const {dialog, referenceElement} = props\n\n  return (\n    <Popover\n      content={<PopoverDialogContent dialog={dialog} />}\n      fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n      open\n      placement=\"top\"\n      portal\n      preventOverflow\n      referenceElement={referenceElement}\n    />\n  )\n}\n\n/**\n * Popover rendered by custom document actions of dialog type `popover`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction PopoverDialogContent(props: {dialog: DocumentActionPopoverDialogProps}) {\n  const {dialog} = props\n  const {content, onClose} = dialog\n  const {isTopLayer} = useLayer()\n  const ref = useRef<HTMLDivElement | null>(null)\n\n  const handleGlobalKeyDown = useCallback(\n    (event: any) => {\n      if (event.key === 'Escape' && isTopLayer) onClose()\n    },\n    [isTopLayer, onClose],\n  )\n\n  useGlobalKeyDown(handleGlobalKeyDown)\n  useClickOutsideEvent(isTopLayer && onClose, () => [ref.current])\n\n  return <div ref={ref}>{content}</div>\n}\n","import {PortalProvider, Text, usePortal} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {type DocumentActionDialogProps} from 'sanity'\n\nimport {Dialog} from '../../../../ui-components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {ConfirmDialog} from './dialogs/ConfirmDialog'\nimport {ModalDialog} from './dialogs/ModalDialog'\nimport {PopoverDialog} from './dialogs/PopoverDialog'\n\nexport interface ActionStateDialogProps {\n  dialog: DocumentActionDialogProps\n  referenceElement?: HTMLElement | null\n}\n\n// A portal provider that uses the document panel portal element if it exists\n// as the portal element so that dialogs are scoped to the document panel\nfunction DocumentActionPortalProvider(props: {children: ReactNode}) {\n  const {children} = props\n  const {element, elements} = usePortal()\n  const portalElement = elements?.[DOCUMENT_PANEL_PORTAL_ELEMENT] || element\n\n  return <PortalProvider element={portalElement}>{children}</PortalProvider>\n}\n\nexport function ActionStateDialog(props: ActionStateDialogProps) {\n  const {dialog, referenceElement = null} = props\n  const modalId = useId()\n\n  if (dialog.type === 'confirm') {\n    return <ConfirmDialog dialog={dialog} referenceElement={referenceElement} />\n  }\n\n  if (dialog.type === 'popover') {\n    return <PopoverDialog dialog={dialog} referenceElement={referenceElement} />\n  }\n\n  if (dialog.type === 'dialog' || !dialog.type) {\n    return (\n      <DocumentActionPortalProvider>\n        <ModalDialog dialog={dialog} />\n      </DocumentActionPortalProvider>\n    )\n  }\n\n  if (dialog.type === 'custom') {\n    return <DocumentActionPortalProvider>{dialog?.component}</DocumentActionPortalProvider>\n  }\n\n  // @todo: add validation?\n  const unknownModal: any = dialog\n\n  // eslint-disable-next-line no-console\n  console.warn(`Unsupported modal type ${unknownModal.type}`)\n\n  return (\n    <Dialog\n      id={modalId}\n      // eslint-disable-next-line react/jsx-handler-names\n      onClose={unknownModal.onClose}\n      // eslint-disable-next-line react/jsx-handler-names\n      onClickOutside={unknownModal.onClose}\n      width={1}\n    >\n      {unknownModal.content || (\n        // eslint-disable-next-line i18next/no-literal-string\n        <Text size={1}>\n          Unexpected modal type (<code>{unknownModal.type}</code>)\n        </Text>\n      )}\n    </Dialog>\n  )\n}\n","import {Menu} from '@sanity/ui'\nimport {memo, type ReactNode, useCallback, useId, useMemo, useState} from 'react'\nimport {\n  ContextMenuButton,\n  type DocumentActionDescription,\n  LegacyLayerProvider,\n  useTranslation,\n} from 'sanity'\n\nimport {MenuButton, MenuItem, type PopoverProps} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {ActionStateDialog} from './ActionStateDialog'\n\nexport interface ActionMenuButtonProps {\n  actionStates: DocumentActionDescription[]\n  disabled: boolean\n}\n\n/**\n * @internal\n */\nexport const ActionDialogWrapper = memo(function ActionDialogWrapper({\n  actionStates,\n  children,\n  referenceElement,\n}: {\n  actionStates: DocumentActionDescription[]\n  children: ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n  referenceElement?: HTMLElement | null\n}) {\n  const [actionIndex, setActionIndex] = useState(-1)\n  const currentAction = useMemo(() => actionStates[actionIndex], [actionIndex, actionStates])\n\n  const handleAction = useCallback((idx: number) => {\n    setActionIndex(idx)\n  }, [])\n\n  const result = useMemo(() => children({handleAction}), [children, handleAction])\n\n  return (\n    <>\n      {currentAction && currentAction.dialog && (\n        <LegacyLayerProvider zOffset=\"paneFooter\">\n          <ActionStateDialog dialog={currentAction.dialog} referenceElement={referenceElement} />\n        </LegacyLayerProvider>\n      )}\n      {result}\n    </>\n  )\n})\n\n/**\n * @internal\n */\nexport function ActionMenuButton(props: ActionMenuButtonProps) {\n  const {actionStates, disabled} = props\n  const idPrefix = useId()\n\n  const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null)\n\n  const popoverProps: PopoverProps = useMemo(\n    () => ({\n      placement: 'top-end',\n      portal: true,\n      preventOverflow: true,\n    }),\n    [],\n  )\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const renderActionDialog = useCallback<\n    ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n  >(\n    ({handleAction}) => (\n      <MenuButton\n        id={`${idPrefix}-action-menu`}\n        button={\n          <ContextMenuButton\n            aria-label={t('buttons.action-menu-button.aria-label')}\n            disabled={disabled}\n            data-testid=\"action-menu-button\"\n            tooltipProps={{content: t('buttons.action-menu-button.tooltip')}}\n          />\n        }\n        menu={\n          <Menu padding={1}>\n            {actionStates.map((actionState, idx) => (\n              <ActionMenuListItem\n                actionState={actionState}\n                disabled={disabled}\n                index={idx}\n                // eslint-disable-next-line react/no-array-index-key\n                key={idx}\n                onAction={handleAction}\n              />\n            ))}\n          </Menu>\n        }\n        popover={popoverProps}\n        ref={setReferenceElement}\n      />\n    ),\n    [actionStates, disabled, idPrefix, popoverProps, t],\n  )\n\n  return (\n    <ActionDialogWrapper actionStates={actionStates} referenceElement={referenceElement}>\n      {renderActionDialog}\n    </ActionDialogWrapper>\n  )\n}\n\ninterface ActionMenuListItemProps {\n  actionState: DocumentActionDescription\n  disabled: boolean\n  index: number\n  onAction: (idx: number) => void\n}\n\nexport function ActionMenuListItem(props: ActionMenuListItemProps) {\n  const {actionState, disabled, index, onAction} = props\n  const {onHandle} = actionState\n\n  const handleClick = useCallback(() => {\n    onAction(index)\n    if (onHandle) onHandle()\n  }, [index, onAction, onHandle])\n\n  const hotkeys = useMemo(() => {\n    return actionState.shortcut\n      ? String(actionState.shortcut)\n          .split('+')\n          .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1))\n      : undefined\n  }, [actionState.shortcut])\n\n  return (\n    <MenuItem\n      data-testid={`action-${actionState.label.replace(' ', '')}`}\n      disabled={disabled || Boolean(actionState.disabled)}\n      hotkeys={hotkeys}\n      icon={actionState.icon}\n      onClick={handleClick}\n      text={actionState.label}\n      tone={actionState.tone}\n      {...(actionState.disabled && {tooltipProps: {content: actionState.title}})}\n    />\n  )\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {TrashIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  InsufficientPermissionsMessage,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_TITLE_KEY = {\n  NOTHING_TO_DELETE: 'action.delete.disabled.nothing-to-delete',\n  NOT_READY: 'action.delete.disabled.not-ready',\n}\n\n/** @internal */\nexport const DeleteAction: DocumentActionComponent = ({id, type, draft, onComplete, release}) => {\n  const {setIsDeleting: paneSetIsDeleting} = useDocumentPane()\n  const {delete: deleteOp} = useDocumentOperation(id, type, release)\n  const [isDeleting, setIsDeleting] = useState(false)\n  const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const handleCancel = useCallback(() => {\n    setConfirmDialogOpen(false)\n    onComplete()\n  }, [onComplete])\n\n  const handleConfirm = useCallback(() => {\n    setIsDeleting(true)\n    setConfirmDialogOpen(false)\n    paneSetIsDeleting(true)\n    deleteOp.execute()\n    onComplete()\n  }, [deleteOp, onComplete, paneSetIsDeleting])\n\n  const handle = useCallback(() => {\n    setConfirmDialogOpen(true)\n  }, [])\n\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    version: release,\n    permission: 'delete',\n  })\n\n  const currentUser = useCurrentUser()\n\n  return useMemo(() => {\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        tone: 'critical',\n        icon: TrashIcon,\n        disabled: true,\n        label: t('action.delete.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"delete-document\" currentUser={currentUser} />\n        ),\n      }\n    }\n\n    return {\n      tone: 'critical',\n      icon: TrashIcon,\n      disabled: isDeleting || Boolean(deleteOp.disabled) || isPermissionsLoading,\n      title: (deleteOp.disabled && t(DISABLED_REASON_TITLE_KEY[deleteOp.disabled])) || '',\n      label: isDeleting ? t('action.delete.running.label') : t('action.delete.label'),\n      shortcut: 'Ctrl+Alt+D',\n      onHandle: handle,\n      dialog: isConfirmDialogOpen && {\n        type: 'custom',\n        component: (\n          <ConfirmDeleteDialog\n            // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n            action=\"delete\"\n            id={draft?._id || id}\n            type={type}\n            onCancel={handleCancel}\n            onConfirm={handleConfirm}\n          />\n        ),\n      },\n    }\n  }, [\n    currentUser,\n    deleteOp.disabled,\n    draft?._id,\n    handle,\n    handleCancel,\n    handleConfirm,\n    id,\n    isConfirmDialogOpen,\n    isDeleting,\n    isPermissionsLoading,\n    permissions?.granted,\n    t,\n    type,\n  ])\n}\n\nDeleteAction.action = 'delete'\nDeleteAction.displayName = 'DeleteAction'\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {ResetIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  type DocumentActionDialogProps,\n  InsufficientPermissionsMessage,\n  isPublishedId,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_KEY = {\n  NO_CHANGES: 'action.discard-changes.disabled.no-change',\n  NOT_PUBLISHED: 'action.discard-changes.disabled.not-published',\n  NOT_READY: 'action.discard-changes.disabled.not-ready',\n} as const\n\n/** @internal */\nexport const DiscardChangesAction: DocumentActionComponent = ({\n  id,\n  type,\n  published,\n  liveEdit,\n  onComplete,\n  release,\n}) => {\n  const {discardChanges} = useDocumentOperation(id, type, release)\n  const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    version: release,\n    permission: 'discardDraft',\n  })\n  const currentUser = useCurrentUser()\n  const {displayed} = useDocumentPane()\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const isPublished = displayed?._id && isPublishedId(displayed?._id)\n\n  const handleConfirm = useCallback(() => {\n    discardChanges.execute()\n    onComplete()\n  }, [discardChanges, onComplete])\n\n  const handle = useCallback(() => {\n    setConfirmDialogOpen(true)\n  }, [])\n\n  const dialog: DocumentActionDialogProps | false = useMemo(\n    () =>\n      isConfirmDialogOpen && {\n        type: 'confirm',\n        tone: 'critical',\n        onCancel: onComplete,\n        onConfirm: handleConfirm,\n        message: t('action.discard-changes.confirm-dialog.confirm-discard-changes'),\n      },\n    [handleConfirm, isConfirmDialogOpen, onComplete, t],\n  )\n\n  return useMemo(() => {\n    if (!published || liveEdit || isPublished) {\n      return null\n    }\n\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        tone: 'critical',\n        icon: ResetIcon,\n        disabled: true,\n        label: t('action.discard-changes.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"discard-changes\" currentUser={currentUser} />\n        ),\n      }\n    }\n\n    return {\n      tone: 'critical',\n      icon: ResetIcon,\n      disabled: Boolean(discardChanges.disabled) || isPermissionsLoading,\n      title: t((discardChanges.disabled && DISABLED_REASON_KEY[discardChanges.disabled]) || ''),\n      label: t('action.discard-changes.label'),\n      onHandle: handle,\n      dialog,\n    }\n  }, [\n    currentUser,\n    dialog,\n    discardChanges.disabled,\n    handle,\n    isPermissionsLoading,\n    isPublished,\n    liveEdit,\n    permissions?.granted,\n    published,\n    t,\n  ])\n}\n\nDiscardChangesAction.action = 'discardChanges'\nDiscardChangesAction.displayName = 'DiscardChangesAction'\n","import {CopyIcon} from '@sanity/icons'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n  type DuplicateDocumentActionComponent,\n  InsufficientPermissionsMessage,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useDocumentStore,\n  useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n  NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n  NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\n/** @internal */\nexport const DuplicateAction: DuplicateDocumentActionComponent = ({\n  id,\n  type,\n  onComplete,\n  release,\n  mapDocument,\n}) => {\n  const documentStore = useDocumentStore()\n  const {duplicate} = useDocumentOperation(id, type, release)\n  const {navigateIntent} = useRouter()\n  const [isDuplicating, setDuplicating] = useState(false)\n\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    version: release,\n    permission: 'duplicate',\n  })\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const currentUser = useCurrentUser()\n\n  const handle = useCallback(async () => {\n    const dupeId = uuid()\n\n    setDuplicating(true)\n\n    // set up the listener before executing\n    const duplicateSuccess = firstValueFrom(\n      documentStore.pair\n        .operationEvents(id, type)\n        .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success')),\n    )\n    duplicate.execute(dupeId, {mapDocument})\n\n    // only navigate to the duplicated document when the operation is successful\n    await duplicateSuccess\n    navigateIntent('edit', {id: dupeId, type})\n\n    onComplete()\n  }, [documentStore.pair, duplicate, id, mapDocument, navigateIntent, onComplete, type])\n\n  return useMemo(() => {\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        icon: CopyIcon,\n        disabled: true,\n        label: t('action.duplicate.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"duplicate-document\" currentUser={currentUser} />\n        ),\n      }\n    }\n\n    return {\n      icon: CopyIcon,\n      disabled: isDuplicating || Boolean(duplicate.disabled) || isPermissionsLoading,\n      label: isDuplicating ? t('action.duplicate.running.label') : t('action.duplicate.label'),\n      title: duplicate.disabled ? t(DISABLED_REASON_KEY[duplicate.disabled]) : '',\n      onHandle: handle,\n    }\n  }, [\n    currentUser,\n    duplicate.disabled,\n    handle,\n    isDuplicating,\n    isPermissionsLoading,\n    permissions?.granted,\n    t,\n  ])\n}\n\nDuplicateAction.action = 'duplicate'\nDuplicateAction.displayName = 'DuplicateAction'\n","import {RevertIcon} from '@sanity/icons'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  type DocumentActionDialogProps,\n  useDocumentOperation,\n  useDocumentOperationEvent,\n  useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\n/** @internal */\nexport const HistoryRestoreAction: DocumentActionComponent = ({\n  id,\n  type,\n  revision,\n  onComplete,\n  release,\n}) => {\n  const {restore} = useDocumentOperation(id, type, release)\n  const {revisionNotFound} = useDocumentPane()\n  const event = useDocumentOperationEvent(id, type)\n  const {navigateIntent} = useRouter()\n  const prevEvent = useRef(event)\n  const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const handleConfirm = useCallback(() => {\n    restore.execute(revision!)\n    onComplete()\n  }, [restore, revision, onComplete])\n\n  /**\n   * If the restore operation is successful, navigate to the document edit view\n   */\n  useEffect(() => {\n    if (!event || event === prevEvent.current) return\n\n    if (event.type === 'success' && event.op === 'restore') {\n      navigateIntent('edit', {id, type})\n    }\n\n    prevEvent.current = event\n  }, [event, id, navigateIntent, type])\n\n  const handle = useCallback(() => {\n    setConfirmDialogOpen(true)\n  }, [])\n\n  const dialog: DocumentActionDialogProps | null = useMemo(() => {\n    if (isConfirmDialogOpen) {\n      return {\n        type: 'confirm',\n        tone: 'critical',\n        onCancel: onComplete,\n        onConfirm: handleConfirm,\n        message: t('action.restore.confirm.message'),\n      }\n    }\n\n    return null\n  }, [handleConfirm, isConfirmDialogOpen, onComplete, t])\n\n  const isRevisionInitial = revision === '@initial'\n  const isRevisionLatest = revision === undefined // undefined means latest revision\n\n  return useMemo(() => {\n    if (isRevisionLatest || revisionNotFound) {\n      return null\n    }\n\n    return {\n      label: t('action.restore.label'),\n      tone: 'caution',\n      onHandle: handle,\n      title: t(\n        isRevisionInitial\n          ? 'action.restore.disabled.cannot-restore-initial'\n          : 'action.restore.tooltip',\n      ),\n      icon: RevertIcon,\n      dialog,\n      disabled: isRevisionInitial,\n    }\n  }, [dialog, handle, isRevisionInitial, isRevisionLatest, revisionNotFound, t])\n}\n\nHistoryRestoreAction.action = 'restore'\nHistoryRestoreAction.displayName = 'HistoryRestoreAction'\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface DocumentPublishedInfo {\n  /**\n   * The document was created and published straight away\n   */\n  publishedImmediately: boolean\n\n  /**\n   * The document had a previously published version when it was published\n   */\n  previouslyPublished: boolean\n}\nexport const DocumentPublished = defineEvent<DocumentPublishedInfo>({\n  name: 'Document Published',\n  version: 1,\n  description: 'User clicked the \"Publish\" button in the document pane',\n})\n","import {PublishIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  InsufficientPermissionsMessage,\n  isPublishedId,\n  type TFunction,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useEditState,\n  useRelativeTime,\n  useSyncState,\n  useTranslation,\n  useValidationStatus,\n} from 'sanity'\n\nimport {structureLocaleNamespace, type StructureLocaleResourceKeys} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\nimport {DocumentPublished} from './__telemetry__/documentActions.telemetry'\n\nconst DISABLED_REASON_TITLE_KEY: Record<string, StructureLocaleResourceKeys> = {\n  LIVE_EDIT_ENABLED: 'action.publish.live-edit.publish-disabled',\n  ALREADY_PUBLISHED: 'action.publish.already-published.no-time-ago.tooltip',\n  NO_CHANGES: 'action.publish.no-changes.tooltip',\n  NOT_READY: 'action.publish.disabled.not-ready',\n} as const\n\nfunction getDisabledReason(\n  reason: keyof typeof DISABLED_REASON_TITLE_KEY,\n  publishedAt: string | undefined,\n  t: TFunction,\n) {\n  if (reason === 'ALREADY_PUBLISHED' && publishedAt) {\n    return <AlreadyPublished publishedAt={publishedAt} />\n  }\n  return t(DISABLED_REASON_TITLE_KEY[reason])\n}\n\nfunction AlreadyPublished({publishedAt}: {publishedAt: string}) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const timeSincePublished = useRelativeTime(publishedAt, {useTemporalPhrase: true})\n  return <span>{t('action.publish.already-published.tooltip', {timeSincePublished})}</span>\n}\n\n/** @internal */\n// eslint-disable-next-line complexity\nexport const PublishAction: DocumentActionComponent = (props) => {\n  const {id, type, liveEdit, draft, published, release} = props\n  const [publishState, setPublishState] = useState<'publishing' | 'published' | null>(null)\n  const {publish} = useDocumentOperation(id, type)\n  const validationStatus = useValidationStatus(id, type)\n  const syncState = useSyncState(id, type)\n  const {changesOpen, documentId, documentType, value} = useDocumentPane()\n  const editState = useEditState(documentId, documentType)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const revision = (editState?.draft || editState?.published || {})._rev\n\n  const hasValidationErrors = validationStatus.validation.some(isValidationErrorMarker)\n  // we use this to \"schedule\" publish after pending tasks (e.g. validation and sync) has completed\n  const [publishScheduled, setPublishScheduled] = useState<boolean>(false)\n  const isSyncing = syncState.isSyncing\n  const isValidating = validationStatus.isValidating\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    permission: 'publish',\n  })\n\n  const currentUser = useCurrentUser()\n\n  // eslint-disable-next-line no-nested-ternary\n  const title = publish.disabled\n    ? getDisabledReason(publish.disabled, (published || {})._updatedAt, t) || ''\n    : hasValidationErrors\n      ? t('action.publish.validation-issues.tooltip')\n      : ''\n\n  const hasDraft = Boolean(draft)\n\n  const doPublish = useCallback(() => {\n    publish.execute()\n    setPublishState('publishing')\n  }, [publish])\n\n  useEffect(() => {\n    // make sure the validation status is about the current revision and not an earlier one\n    const validationComplete =\n      validationStatus.isValidating === false && validationStatus.revision !== revision\n\n    if (!publishScheduled || isSyncing || !validationComplete) {\n      return\n    }\n\n    if (!hasValidationErrors) {\n      doPublish()\n    }\n    setPublishScheduled(false)\n  }, [\n    isSyncing,\n    doPublish,\n    hasValidationErrors,\n    publishScheduled,\n    validationStatus.revision,\n    revision,\n    isValidating,\n    validationStatus.isValidating,\n  ])\n\n  useEffect(() => {\n    const didPublish = publishState === 'publishing' && !hasDraft\n\n    const nextState = didPublish ? 'published' : null\n    const delay = didPublish ? 200 : 4000\n    const timer = setTimeout(() => {\n      setPublishState(nextState)\n    }, delay)\n    return () => clearTimeout(timer)\n  }, [changesOpen, publishState, hasDraft])\n\n  const telemetry = useTelemetry()\n\n  const handle = useCallback(() => {\n    telemetry.log(DocumentPublished, {\n      publishedImmediately: !draft?._createdAt,\n      previouslyPublished: Boolean(published),\n    })\n    if (\n      syncState.isSyncing ||\n      validationStatus.isValidating ||\n      validationStatus.revision !== revision\n    ) {\n      setPublishScheduled(true)\n    } else {\n      doPublish()\n    }\n  }, [\n    telemetry,\n    draft?._createdAt,\n    published,\n    syncState.isSyncing,\n    validationStatus.isValidating,\n    validationStatus.revision,\n    revision,\n    doPublish,\n  ])\n\n  return useMemo(() => {\n    if (release) {\n      // Version documents are not publishable by this action, they should be published as part of a release\n      return null\n    }\n    if (liveEdit) {\n      // Live edit documents are not publishable by this action, they are published automatically\n      return null\n    }\n\n    /**\n     * When draft is null, if not a published or version document\n     * then it means the draft is yet to be saved - in this case don't disabled\n     * the publish button due to ALREADY_PUBLISHED reason\n     */\n    if (isPublishedId(value._id) && draft !== null) {\n      return {\n        tone: 'default',\n        icon: PublishIcon,\n        label: t('action.publish.label'),\n        title: getDisabledReason('ALREADY_PUBLISHED', published?._updatedAt, t),\n        disabled: true,\n      }\n    }\n\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        tone: 'default',\n        icon: PublishIcon,\n        label: t('action.publish.label'),\n        title: (\n          <InsufficientPermissionsMessage context=\"publish-document\" currentUser={currentUser} />\n        ),\n        disabled: true,\n      }\n    }\n\n    const disabled = Boolean(\n      publishScheduled ||\n        editState?.transactionSyncLock?.enabled ||\n        publishState === 'publishing' ||\n        publishState === 'published' ||\n        hasValidationErrors ||\n        publish.disabled,\n    )\n\n    return {\n      disabled: disabled || isPermissionsLoading,\n      tone: 'default',\n      label:\n        // eslint-disable-next-line no-nested-ternary\n        publishState === 'published'\n          ? t('action.publish.published.label')\n          : publishScheduled || publishState === 'publishing'\n            ? t('action.publish.running.label')\n            : t('action.publish.draft.label'),\n      // @todo: Implement loading state, to show a `<Button loading />` state\n      // loading: publishScheduled || publishState === 'publishing',\n      icon: PublishIcon,\n      // eslint-disable-next-line no-nested-ternary\n      title: publishScheduled\n        ? t('action.publish.waiting')\n        : publishState === 'published' || publishState === 'publishing'\n          ? null\n          : title,\n      shortcut: disabled || publishScheduled ? null : 'Ctrl+Alt+P',\n      onHandle: handle,\n    }\n  }, [\n    release,\n    liveEdit,\n    value._id,\n    draft,\n    isPermissionsLoading,\n    permissions?.granted,\n    publishScheduled,\n    editState?.transactionSyncLock?.enabled,\n    publishState,\n    hasValidationErrors,\n    publish.disabled,\n    t,\n    title,\n    handle,\n    published?._updatedAt,\n    currentUser,\n  ])\n}\n\nPublishAction.action = 'publish'\nPublishAction.displayName = 'PublishAction'\n","import {UnpublishIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  type DocumentActionModalDialogProps,\n  InsufficientPermissionsMessage,\n  isDraftId,\n  useCurrentUser,\n  useDocumentOperation,\n  useDocumentPairPermissions,\n  useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_KEY = {\n  NOT_PUBLISHED: 'action.unpublish.disabled.not-published',\n  NOT_READY: 'action.unpublish.disabled.not-ready',\n  LIVE_EDIT_ENABLED: 'action.unpublish.disabled.live-edit-enabled',\n}\n\n/** @internal */\nexport const UnpublishAction: DocumentActionComponent = ({\n  id,\n  type,\n  draft,\n  onComplete,\n  liveEdit,\n  release,\n}) => {\n  const {unpublish} = useDocumentOperation(id, type)\n  const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n  const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n    id,\n    type,\n    permission: 'unpublish',\n  })\n  const currentUser = useCurrentUser()\n  const {displayed} = useDocumentPane()\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const isDraft = displayed?._id && isDraftId(displayed?._id)\n\n  const handleCancel = useCallback(() => {\n    setConfirmDialogOpen(false)\n    onComplete()\n  }, [onComplete])\n\n  const handleConfirm = useCallback(() => {\n    setConfirmDialogOpen(false)\n    unpublish.execute()\n    onComplete()\n  }, [onComplete, unpublish])\n\n  const dialog: DocumentActionModalDialogProps | null = useMemo(() => {\n    if (isConfirmDialogOpen) {\n      return {\n        type: 'dialog',\n        onClose: onComplete,\n        content: (\n          <ConfirmDeleteDialog\n            id={draft?._id || id}\n            type={type}\n            // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n            action=\"unpublish\"\n            onCancel={handleCancel}\n            onConfirm={handleConfirm}\n          />\n        ),\n      }\n    }\n\n    return null\n  }, [draft, id, handleCancel, handleConfirm, isConfirmDialogOpen, onComplete, type])\n\n  return useMemo(() => {\n    if (release || isDraft) {\n      // Version documents cannot be unpublished by this action, they should be unpublished as part of a release\n      // Draft documents can't either\n      return null\n    }\n    if (liveEdit) {\n      return null\n    }\n\n    if (!isPermissionsLoading && !permissions?.granted) {\n      return {\n        tone: 'critical',\n        icon: UnpublishIcon,\n        label: 'Unpublish',\n        title: (\n          <InsufficientPermissionsMessage context=\"unpublish-document\" currentUser={currentUser} />\n        ),\n        disabled: true,\n      }\n    }\n\n    return {\n      tone: 'critical',\n      icon: UnpublishIcon,\n      disabled: Boolean(unpublish.disabled) || isPermissionsLoading,\n      label: t('action.unpublish.label'),\n      title: unpublish.disabled ? t(DISABLED_REASON_KEY[unpublish.disabled]) : '',\n      onHandle: () => setConfirmDialogOpen(true),\n      dialog,\n    }\n  }, [\n    release,\n    isDraft,\n    liveEdit,\n    isPermissionsLoading,\n    permissions?.granted,\n    unpublish.disabled,\n    t,\n    dialog,\n    currentUser,\n  ])\n}\n\nUnpublishAction.action = 'unpublish'\nUnpublishAction.displayName = 'UnpublishAction'\n","/* eslint-disable no-warning-comments */\n/* eslint-disable camelcase */\nimport {Flex, LayerProvider, Stack, Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentActionComponent,\n  type DocumentActionDescription,\n  type DocumentActionProps,\n  Hotkeys,\n  isSanityDefinedAction,\n  usePerspective,\n  useSource,\n} from 'sanity'\n\nimport {Button, Tooltip} from '../../../../ui-components'\nimport {RenderActionCollectionState, type ResolvedAction} from '../../../components'\nimport {HistoryRestoreAction} from '../../../documentActions'\nimport {toLowerCaseNoSpaces} from '../../../util/toLowerCaseNoSpaces'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {ActionMenuButton} from './ActionMenuButton'\nimport {ActionStateDialog} from './ActionStateDialog'\n\ninterface DocumentStatusBarActionsInnerProps {\n  disabled: boolean\n  showMenu: boolean\n  states: ResolvedAction[]\n}\n\nconst DocumentStatusBarActionsInner = memo(function DocumentStatusBarActionsInner(\n  props: DocumentStatusBarActionsInnerProps,\n) {\n  const {disabled, showMenu, states} = props\n  const {__internal_tasks} = useSource()\n  const {editState} = useDocumentPane()\n  const {selectedReleaseId} = usePerspective()\n  const [firstActionState, ...menuActionStates] = states\n  const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n\n  // TODO: This could be refactored to use the tooltip from the button if the firstAction.title was updated to a string.\n  const tooltipContent = useMemo(() => {\n    if (!firstActionState || (!firstActionState.title && !firstActionState.shortcut)) return null\n\n    return (\n      <Flex style={{maxWidth: 300}} align=\"center\" gap={3}>\n        {firstActionState.title && <Text size={1}>{firstActionState.title}</Text>}\n        {firstActionState.shortcut && (\n          <Hotkeys\n            data-testid=\"document-status-bar-hotkeys\"\n            fontSize={1}\n            style={{marginTop: -4, marginBottom: -4}}\n            keys={String(firstActionState.shortcut)\n              .split('+')\n              .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1).toLowerCase())}\n          />\n        )}\n      </Flex>\n    )\n  }, [firstActionState])\n  const showFirstActionButton = selectedReleaseId\n    ? // If the first action is a custom action and we are in a version document show it.\n      firstActionState && !isSanityDefinedAction(firstActionState)\n    : firstActionState && !editState?.liveEdit\n\n  const sideMenuItems = useMemo(() => {\n    return showFirstActionButton ? menuActionStates : [firstActionState, ...menuActionStates]\n  }, [showFirstActionButton, firstActionState, menuActionStates])\n\n  return (\n    <Flex align=\"center\" gap={1}>\n      {__internal_tasks && __internal_tasks.footerAction}\n      {showFirstActionButton && (\n        <LayerProvider zOffset={200}>\n          <Tooltip disabled={!tooltipContent} content={tooltipContent} placement=\"top\">\n            <Stack>\n              <Button\n                data-testid={`action-${toLowerCaseNoSpaces(firstActionState.label)}`}\n                disabled={disabled || Boolean(firstActionState.disabled)}\n                icon={firstActionState.icon}\n                // eslint-disable-next-line react/jsx-handler-names\n                onClick={firstActionState.onHandle}\n                ref={setButtonElement}\n                text={firstActionState.label}\n                tone={firstActionState.tone || 'primary'}\n              />\n            </Stack>\n          </Tooltip>\n        </LayerProvider>\n      )}\n      {showMenu && menuActionStates.length > 0 && (\n        <ActionMenuButton actionStates={sideMenuItems} disabled={disabled} />\n      )}\n      {firstActionState && firstActionState.dialog && (\n        <ActionStateDialog dialog={firstActionState.dialog} referenceElement={buttonElement} />\n      )}\n    </Flex>\n  )\n})\n\nexport const DocumentStatusBarActions = memo(function DocumentStatusBarActions() {\n  const {\n    actions: allActions,\n    connectionState,\n    documentId,\n    editState,\n    isInitialValueLoading,\n  } = useDocumentPane()\n\n  // The restore action has a dedicated place in the UI; it's only visible when the user is viewing\n  // a different document revision. It must be omitted from this collection.\n  const actions = useMemo(\n    () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n    [allActions],\n  )\n  const actionProps: Omit<DocumentActionProps, 'onComplete'> | null = useMemo(\n    () => (editState ? {...editState, initialValueResolved: !isInitialValueLoading} : null),\n    [editState, isInitialValueLoading],\n  )\n\n  const renderDocumentStatusBarActions = useCallback<\n    (props: {states: ResolvedAction[]}) => React.ReactNode\n  >(\n    ({states}) => (\n      <DocumentStatusBarActionsInner\n        disabled={connectionState !== 'connected'}\n        showMenu={actions.length > 1}\n        states={states}\n        // Use document ID as key to make sure that the actions state is reset when the document changes\n        key={documentId}\n      />\n    ),\n    [actions.length, connectionState, documentId],\n  )\n\n  if (actions.length === 0 || !actionProps) {\n    return null\n  }\n\n  return (\n    <RenderActionCollectionState actions={actions} actionProps={actionProps} group=\"default\">\n      {renderDocumentStatusBarActions}\n    </RenderActionCollectionState>\n  )\n})\n\nexport const HistoryStatusBarActions = memo(function HistoryStatusBarActions() {\n  const {\n    actions,\n    connectionState,\n    editState,\n    revisionId: revision,\n    isInitialValueLoading,\n  } = useDocumentPane()\n\n  const disabled = (editState?.draft || editState?.published || {})._rev === revision\n  const actionProps: Omit<DocumentActionProps, 'onComplete'> | null = useMemo(\n    () =>\n      editState\n        ? {\n            ...editState,\n            revision: revision || undefined,\n            initialValueResolved: !isInitialValueLoading,\n          }\n        : null,\n    [editState, revision, isInitialValueLoading],\n  )\n\n  // If multiple `restore` actions are defined, ensure only the final one is used.\n  const historyActions = useMemo(() => (actions ?? []).filter(isRestoreAction).slice(-1), [actions])\n\n  const renderDocumentStatusBarActions = useCallback<\n    (props: {states: DocumentActionDescription[]}) => React.ReactNode\n  >(\n    ({states}) => (\n      <DocumentStatusBarActionsInner\n        disabled={connectionState !== 'connected' || Boolean(disabled)}\n        showMenu={false}\n        states={states}\n      />\n    ),\n    [connectionState, disabled],\n  )\n  if (!actionProps) {\n    return null\n  }\n  return (\n    <RenderActionCollectionState actions={historyActions} actionProps={actionProps} group=\"default\">\n      {renderDocumentStatusBarActions}\n    </RenderActionCollectionState>\n  )\n})\n\nexport function isRestoreAction(\n  action: DocumentActionComponent,\n): action is DocumentActionComponent & {action: 'restore'} {\n  return action.action === HistoryRestoreAction.action\n}\n","import {useEffect, useState} from 'react'\n\n/**\n * This hook is used to determine if the gradient should be shown on the chip scroll container.\n * It uses an IntersectionObserver to observe the last child of the container and sets the showGradient state based on the intersection.\n * @param containerRef - The ref to the container that contains all the chips\n * @returns showGradient - A boolean that determines if the gradient should be shown\n * @internal\n */\nexport function useChipScrollPosition(containerRef: React.RefObject<HTMLDivElement | null>) {\n  const [showGradient, setShowGradient] = useState(false)\n\n  useEffect(() => {\n    const checkOverflow = () => {\n      // container is the parent that contains all the chips\n      const container = containerRef.current\n      if (!container) return\n      const {scrollWidth, clientWidth} = container\n      const needsScrolling = scrollWidth > clientWidth\n\n      if (!needsScrolling) {\n        setShowGradient(false)\n        return\n      }\n\n      // Check if scrolled to the end\n      // becausee it doesn't need to show the gradient then\n      const {scrollLeft} = container\n      const isAtEnd = scrollLeft + clientWidth >= scrollWidth\n      setShowGradient(!isAtEnd)\n    }\n\n    function setupObservers() {\n      checkOverflow()\n      // container is the parent that contains all the chips\n      const container = containerRef.current\n      if (!container) return {intersectionObserver: null, mutationObserver: null}\n\n      const intersectionObserver = new IntersectionObserver((entries) => {\n        const entry = entries[0]\n\n        if (entry) {\n          setShowGradient(!entry.isIntersecting)\n        }\n      })\n\n      const updateLastChipObserver = () => {\n        // Disconnect previous observation\n        intersectionObserver.disconnect()\n\n        // Get the new last child\n        const lastChip = container.children[container.children.length - 1]\n        intersectionObserver.observe(lastChip)\n      }\n\n      // Set up initial observation\n      updateLastChipObserver()\n\n      // Set up mutation observer to watch for changes to children\n      // this is needed because sometimes the list of releases takes some time to be rendered\n      // otherwise it could accidentally set the last child as the \"drafts\" / \"published\" chip\n      const mutationObserver = new MutationObserver(() => {\n        updateLastChipObserver()\n        checkOverflow()\n      })\n\n      mutationObserver.observe(container, {\n        childList: true,\n        subtree: false,\n      })\n\n      return {intersectionObserver, mutationObserver}\n    }\n\n    const {intersectionObserver, mutationObserver} = setupObservers()\n\n    return () => {\n      intersectionObserver?.disconnect()\n      mutationObserver?.disconnect()\n    }\n  }, [containerRef])\n\n  return showGradient\n}\n","import {Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo} from 'react'\nimport {\n  formatRelativeLocalePublishDate,\n  getReleaseIdFromReleaseDocumentId,\n  getReleaseTone,\n  getVersionFromId,\n  isDraftId,\n  isPublishedId,\n  isPublishedPerspective,\n  isReleaseScheduledOrScheduling,\n  isVersionId,\n  type ReleaseDocument,\n  Translate,\n  useActiveReleases,\n  useDateTimeFormat,\n  type UseDateTimeFormatOptions,\n  useOnlyHasVersions,\n  usePerspective,\n  useSchema,\n  useSetPerspective,\n  useTranslation,\n  useWorkspace,\n  VersionChip,\n} from 'sanity'\n\nimport {isLiveEditEnabled} from '../../../../../components/paneItem/helpers'\nimport {usePaneRouter} from '../../../../../components/paneRouter/usePaneRouter'\nimport {useFilteredReleases} from '../../../../../hooks/useFilteredReleases'\nimport {useDocumentPane} from '../../../useDocumentPane'\n\nconst TooltipContent = ({release}: {release: ReleaseDocument}) => {\n  const {t} = useTranslation()\n\n  if (release.state === 'archived') {\n    return <Text size={1}>{t('release.chip.tooltip.archived')}</Text>\n  }\n  if (release.metadata.releaseType === 'asap') {\n    return <Text size={1}>{t('release.type.asap')}</Text>\n  }\n  if (release.metadata.releaseType === 'scheduled') {\n    const isActive = release.state === 'active'\n\n    return (\n      release.metadata.intendedPublishAt && (\n        <Text size={1}>\n          {isActive ? (\n            <Translate\n              t={t}\n              i18nKey=\"release.chip.tooltip.intended-for-date\"\n              values={{\n                date: formatRelativeLocalePublishDate(release),\n              }}\n            />\n          ) : (\n            <Translate\n              t={t}\n              i18nKey=\"release.chip.tooltip.scheduled-for-date\"\n              values={{\n                date: formatRelativeLocalePublishDate(release),\n              }}\n            />\n          )}\n        </Text>\n      )\n    )\n  }\n\n  if (release.metadata.releaseType === 'undecided') {\n    return <Text size={1}>{t('release.type.undecided')}</Text>\n  }\n  return null\n}\n\nconst DATE_TIME_FORMAT: UseDateTimeFormatOptions = {\n  dateStyle: 'medium',\n  timeStyle: 'short',\n}\n\nexport const DocumentPerspectiveList = memo(function DocumentPerspectiveList() {\n  const {selectedReleaseId, selectedPerspectiveName} = usePerspective()\n  const {t} = useTranslation()\n  const setPerspective = useSetPerspective()\n  const {params, setParams} = usePaneRouter()\n  const dateTimeFormat = useDateTimeFormat(DATE_TIME_FORMAT)\n  const {loading} = useActiveReleases()\n  const schema = useSchema()\n  const {editState, displayed, documentType, documentId} = useDocumentPane()\n  const isCreatingDocument = displayed && !displayed._createdAt\n  const filteredReleases = useFilteredReleases({displayed, documentId})\n  const onlyHasVersions = useOnlyHasVersions({documentId})\n  const workspace = useWorkspace()\n\n  const handlePerspectiveChange = useCallback(\n    (perspective: Parameters<typeof setPerspective>[0]) => () => {\n      if (perspective === 'published' && params?.historyVersion) {\n        setParams({\n          ...params,\n          rev: params?.historyEvent || undefined,\n          since: undefined,\n          historyVersion: undefined,\n        })\n      }\n      setPerspective(perspective)\n    },\n    [setPerspective, setParams, params],\n  )\n\n  const schemaType = schema.get(documentType)\n  const isLiveEdit = schemaType ? isLiveEditEnabled(schemaType) : false\n\n  const isPublishedChipDisabled = useMemo(() => {\n    // If it's a live edit document the only option to edit it is through\n    // the published perspective, users should be able to select it.\n    if (isLiveEdit && !selectedReleaseId) return false\n\n    // If it's not live edit, we want to check for the existence of the published doc.\n    return !editState?.published\n  }, [isLiveEdit, selectedReleaseId, editState?.published])\n\n  const getReleaseChipState = useCallback(\n    (release: ReleaseDocument): {selected: boolean; disabled?: boolean} => {\n      if (!params?.historyVersion)\n        return {\n          selected:\n            getReleaseIdFromReleaseDocumentId(release._id) ===\n            getVersionFromId(displayed?._id || ''),\n        }\n\n      const isReleaseHistoryMatch =\n        getReleaseIdFromReleaseDocumentId(release._id) === params.historyVersion\n\n      return {selected: isReleaseHistoryMatch, disabled: isReleaseHistoryMatch}\n    },\n    [displayed?._id, params?.historyVersion],\n  )\n\n  const isPublishSelected: boolean = useMemo(() => {\n    /**\n     * The publish perspective is selected when:\n     *  - the document is live edit and there is no draft\n     *  - the document is published and the selected perspective is published\n     */\n    if (isLiveEdit && !editState?.draft?._id && !selectedReleaseId) return true\n    if (\n      isPublishedId(displayed?._id || '') &&\n      isPublishedPerspective(selectedPerspectiveName || '')\n    ) {\n      return true\n    }\n    return false\n  }, [\n    displayed?._id,\n    editState?.draft?._id,\n    isLiveEdit,\n    selectedPerspectiveName,\n    selectedReleaseId,\n  ])\n\n  const isDraftSelected: boolean = useMemo(() => {\n    const displayedId = displayed?._id || ''\n    /** the draft is selected when:\n     * not viewing a historical version,\n     * when the document displayed is a draft,\n     * when the perspective is null,\n     * when the document is not published and the displayed version is draft,\n     * when there is no draft (new document),\n     */\n    if (isPublishSelected) return false\n    if (params?.historyVersion) return false\n    if (selectedPerspectiveName) return false\n    if (isVersionId(displayedId)) return false\n    if (isDraftId(displayedId)) return true\n    if (\n      isPublishedId(displayedId) &&\n      editState?.published &&\n      isPublishedPerspective(selectedPerspectiveName || '')\n    )\n      return false\n    return true\n  }, [\n    displayed?._id,\n    editState?.published,\n    isPublishSelected,\n    params?.historyVersion,\n    selectedPerspectiveName,\n  ])\n\n  const isDraftDisabled: boolean = useMemo(() => {\n    // Draft is disabled when the document has no published or draft but has versions\n    if (onlyHasVersions || (isCreatingDocument && selectedReleaseId)) {\n      return true\n    }\n\n    // Draft is disabled when we are creating a new document inside a release\n    // or when the document is live edit and there is no draft\n    if (!editState?.draft && !isLiveEdit) {\n      return false\n    }\n\n    if (isCreatingDocument && selectedReleaseId) return true\n    if (isLiveEdit) return true\n    return false\n  }, [editState?.draft, isCreatingDocument, isLiveEdit, onlyHasVersions, selectedReleaseId])\n\n  const isDraftModelEnabled = workspace.document.drafts?.enabled\n\n  return (\n    <>\n      <VersionChip\n        tooltipContent={\n          <Text size={1}>\n            {editState?.published && editState?.published?._updatedAt ? (\n              <Translate\n                t={t}\n                i18nKey=\"release.chip.tooltip.published-date\"\n                values={{date: dateTimeFormat.format(new Date(editState?.published._updatedAt))}}\n              />\n            ) : (\n              <>{t('release.chip.tooltip.not-published')}</>\n            )}\n          </Text>\n        }\n        disabled={isPublishedChipDisabled}\n        onClick={handlePerspectiveChange('published')}\n        selected={isPublishSelected}\n        text={t('release.chip.published')}\n        tone=\"positive\"\n        contextValues={{\n          documentId: editState?.published?._id || editState?.id || '',\n          menuReleaseId: editState?.published?._id || editState?.id || '',\n          releases: filteredReleases.notCurrentReleases,\n          releasesLoading: loading,\n          documentType,\n          fromRelease: 'published',\n          isVersion: false,\n          disabled: !editState?.published,\n        }}\n      />\n      {isDraftModelEnabled && (\n        <VersionChip\n          tooltipContent={\n            <Text size={1}>\n              {editState?.draft ? (\n                <>\n                  {editState?.draft._updatedAt ? (\n                    <Translate\n                      t={t}\n                      i18nKey=\"release.chip.tooltip.edited-date\"\n                      values={{date: dateTimeFormat.format(new Date(editState?.draft._updatedAt))}}\n                    />\n                  ) : (\n                    <Translate\n                      t={t}\n                      i18nKey=\"release.chip.tooltip.created-date\"\n                      values={{date: dateTimeFormat.format(new Date(editState?.draft._createdAt))}}\n                    />\n                  )}\n                </>\n              ) : (\n                <>\n                  {isLiveEdit\n                    ? t('release.chip.tooltip.draft-disabled.live-edit')\n                    : t('release.chip.tooltip.no-edits')}\n                </>\n              )}\n            </Text>\n          }\n          selected={isDraftSelected}\n          disabled={isDraftDisabled}\n          text={t('release.chip.draft')}\n          tone={editState?.draft ? 'caution' : 'neutral'}\n          onClick={handlePerspectiveChange('drafts')}\n          contextValues={{\n            documentId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n            menuReleaseId:\n              editState?.draft?._id || editState?.published?._id || editState?.id || '',\n            releases: filteredReleases.notCurrentReleases,\n            releasesLoading: loading,\n            documentType: documentType,\n            fromRelease: 'draft',\n            isVersion: false,\n            disabled: !editState?.draft,\n          }}\n        />\n      )}\n      {filteredReleases.inCreation && (\n        <VersionChip\n          tooltipContent={<TooltipContent release={filteredReleases.inCreation} />}\n          selected\n          onClick={() => {}}\n          locked={false}\n          tone={getReleaseTone(filteredReleases.inCreation)}\n          text={\n            filteredReleases.inCreation.metadata.title || t('release.placeholder-untitled-release')\n          }\n          contextValues={{\n            disabled: true, // disable the chip context menu, this one is in creation\n            documentId: displayed?._id || '',\n            menuReleaseId: filteredReleases.inCreation._id,\n            releases: filteredReleases.notCurrentReleases,\n            releasesLoading: loading,\n            documentType,\n            fromRelease: getReleaseIdFromReleaseDocumentId(filteredReleases.inCreation._id),\n            releaseState: filteredReleases.inCreation.state,\n            isVersion: true,\n          }}\n        />\n      )}\n\n      {displayed &&\n        filteredReleases.currentReleases?.map((release) => (\n          <VersionChip\n            key={release._id}\n            tooltipContent={<TooltipContent release={release} />}\n            {...getReleaseChipState(release)}\n            onClick={handlePerspectiveChange(getReleaseIdFromReleaseDocumentId(release._id))}\n            text={release.metadata.title || t('release.placeholder-untitled-release')}\n            tone={getReleaseTone(release)}\n            locked={isReleaseScheduledOrScheduling(release)}\n            contextValues={{\n              documentId: displayed?._id || '',\n              menuReleaseId: release._id,\n              releases: filteredReleases.notCurrentReleases,\n              releasesLoading: loading,\n              documentType: documentType,\n              fromRelease: getReleaseIdFromReleaseDocumentId(release._id),\n              releaseState: release.state,\n              isVersion: true,\n            }}\n          />\n        ))}\n    </>\n  )\n})\n","import {ArrowLeftIcon, CloseIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {Box, Card, Flex} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, rgba} from '@sanity/ui/theme'\nimport {\n  type ForwardedRef,\n  forwardRef,\n  memo,\n  useCallback,\n  useDeferredValue,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport {type DocumentActionDescription, useFieldActions, useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {\n  PaneContextMenuButton,\n  PaneHeader,\n  PaneHeaderActionButton,\n  RenderActionCollectionState,\n  usePane,\n  usePaneRouter,\n} from '../../../../components'\nimport {type _PaneMenuNode} from '../../../../components/pane/types'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../../../menuNodes'\nimport {type PaneMenuItem} from '../../../../types'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {ActionDialogWrapper, ActionMenuListItem} from '../../statusBar/ActionMenuButton'\nimport {isRestoreAction} from '../../statusBar/DocumentStatusBarActions'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {useChipScrollPosition} from './hook/useChipScrollPosition'\nimport {DocumentPerspectiveList} from './perspective/DocumentPerspectiveList'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface DocumentPanelHeaderProps {\n  menuItems: PaneMenuItem[]\n}\n\nconst HorizontalScroller = styled(Card)<{$showGradient: boolean}>((props) => {\n  const theme = getTheme_v2(props.theme)\n\n  return css`\n    scrollbar-width: none;\n    z-index: 1;\n    flex: 1;\n    position: relative;\n    > div {\n      &::-webkit-scrollbar {\n        width: 0;\n        height: 0;\n      }\n    }\n\n    ${props.$showGradient &&\n    css`\n      &::after {\n        content: '';\n        display: block;\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        width: 150px;\n        background: linear-gradient(to right, ${rgba(theme.color.bg, 0)}, var(--card-bg-color));\n        transition: 'opacity 300ms ease-out';\n        pointer-events: none;\n      }\n    `}\n  `\n})\n\nexport const DocumentPanelHeader = memo(\n  forwardRef(function DocumentPanelHeader(\n    _props: DocumentPanelHeaderProps,\n    ref: ForwardedRef<HTMLDivElement>,\n  ) {\n    const {menuItems} = _props\n    const {\n      actions: allActions,\n      editState,\n      onMenuAction,\n      isInitialValueLoading,\n      onPaneClose,\n      onPaneSplit,\n      menuItemGroups,\n      schemaType,\n      connectionState,\n      views,\n      unstable_languageFilter,\n    } = useDocumentPane()\n    const {features} = useStructureTool()\n    const {index, BackLink, hasGroupSiblings} = usePaneRouter()\n    const {actions: fieldActions} = useFieldActions()\n    const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n    const scrollContainerRef = useRef<HTMLDivElement>(null)\n    const showGradient = useChipScrollPosition(scrollContainerRef)\n\n    // The restore action has a dedicated place in the UI; it's only visible when the user is\n    // viewing a different document revision. It must be omitted from this collection.\n    const actions = useMemo(\n      () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n      [allActions],\n    )\n\n    const menuNodes = useMemo(\n      () =>\n        resolveMenuNodes({actionHandler: onMenuAction, fieldActions, menuItems, menuItemGroups}),\n      [onMenuAction, fieldActions, menuItemGroups, menuItems],\n    )\n\n    const menuButtonNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n    const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n    const showTabs = views.length > 1\n\n    const {collapsed, isLast} = usePane()\n    // Prevent focus if this is the last (non-collapsed) pane.\n    const tabIndex = isLast && !collapsed ? -1 : 0\n\n    // there are three kinds of buttons possible:\n    //\n    // 1. split pane - creates a new split pane\n    // 2. close split pane — closes the current split pane\n    // 3. close pane group — closes the current pane group\n\n    // show the split pane button if they're enabled and there is more than one\n    // view available to use to create a split view\n    const showSplitPaneButton = features.splitViews && onPaneSplit && views.length > 1\n\n    // show the split pane button close button if the split button is showing\n    // and there is more than one split pane open (aka has-siblings)\n    const showSplitPaneCloseButton = showSplitPaneButton && hasGroupSiblings\n\n    // show the back button if both the feature is enabled and the current pane\n    // is not the first\n    const showBackButton = features.backButton && index > 0\n\n    // show the pane group close button if the `showSplitPaneCloseButton` is\n    // _not_ showing (the split pane button replaces the group close button)\n    // and if the back button is not showing (the back button and the close\n    // button do the same thing and shouldn't be shown at the same time)\n    // and if a BackLink component was provided\n    const showPaneGroupCloseButton = !showSplitPaneCloseButton && !showBackButton && !!BackLink\n\n    const {t} = useTranslation(structureLocaleNamespace)\n\n    const renderPaneActions = useCallback<\n      (props: {states: DocumentActionDescription[]}) => React.ReactNode\n    >(\n      ({states}) => (\n        <DocumentPanelHeaderActionDialogDeferred\n          contextMenuNodes={contextMenuNodes}\n          setReferenceElement={setReferenceElement}\n          referenceElement={referenceElement}\n          states={states}\n        />\n      ),\n      [contextMenuNodes, referenceElement],\n    )\n\n    const title = useMemo(() => <DocumentHeaderTitle />, [])\n    const backButton = useMemo(\n      () =>\n        showBackButton && (\n          <Button\n            as={BackLink}\n            data-as=\"a\"\n            icon={ArrowLeftIcon}\n            mode=\"bleed\"\n            tooltipProps={{content: t('pane-header.back-button.text')}}\n          />\n        ),\n      [BackLink, showBackButton, t],\n    )\n    const renderedActions = useMemo(\n      () => (\n        <Flex align=\"center\" gap={1}>\n          {unstable_languageFilter.length > 0 && (\n            <>\n              {unstable_languageFilter.map((LanguageFilterComponent, idx) => {\n                return (\n                  <LanguageFilterComponent\n                    // eslint-disable-next-line react/no-array-index-key\n                    key={`language-filter-${idx}`}\n                    schemaType={schemaType}\n                  />\n                )\n              })}\n            </>\n          )}\n\n          {menuButtonNodes.map((item) => (\n            <PaneHeaderActionButton key={item.key} node={item} />\n          ))}\n          {editState && (\n            <RenderActionCollectionState\n              actions={actions}\n              actionProps={{...editState, initialValueResolved: !isInitialValueLoading}}\n              group=\"paneActions\"\n            >\n              {renderPaneActions}\n            </RenderActionCollectionState>\n          )}\n\n          {showSplitPaneButton && (\n            <Button\n              aria-label={t('buttons.split-pane-button.aria-label')}\n              icon={SplitVerticalIcon}\n              key=\"split-pane-button\"\n              mode=\"bleed\"\n              onClick={onPaneSplit}\n              tooltipProps={{content: t('buttons.split-pane-button.tooltip')}}\n            />\n          )}\n\n          {showSplitPaneCloseButton && (\n            <Button\n              icon={CloseIcon}\n              key=\"close-view-button\"\n              mode=\"bleed\"\n              onClick={onPaneClose}\n              tooltipProps={{content: t('buttons.split-pane-close-button.title')}}\n            />\n          )}\n\n          {showPaneGroupCloseButton && (\n            <Button\n              icon={CloseIcon}\n              key=\"close-view-button\"\n              mode=\"bleed\"\n              tooltipProps={{content: t('buttons.split-pane-close-group-button.title')}}\n              as={BackLink}\n            />\n          )}\n        </Flex>\n      ),\n      [\n        BackLink,\n        actions,\n        editState,\n        isInitialValueLoading,\n        menuButtonNodes,\n        onPaneClose,\n        onPaneSplit,\n        renderPaneActions,\n        schemaType,\n        showPaneGroupCloseButton,\n        showSplitPaneButton,\n        showSplitPaneCloseButton,\n        t,\n        unstable_languageFilter,\n      ],\n    )\n\n    return (\n      <TooltipDelayGroupProvider>\n        {collapsed ? (\n          <PaneHeader\n            border\n            ref={ref}\n            loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n            title={title}\n            tabIndex={tabIndex}\n            backButton={backButton}\n          />\n        ) : (\n          <Card hidden={collapsed} style={{lineHeight: 0}} borderBottom>\n            <Flex gap={3} paddingY={3}>\n              <HorizontalScroller $showGradient={showGradient}>\n                <Flex\n                  flex={1}\n                  gap={1}\n                  overflow=\"auto\"\n                  paddingX={3}\n                  data-testid=\"document-perspective-list\"\n                  ref={scrollContainerRef}\n                >\n                  <DocumentPerspectiveList />\n                </Flex>\n              </HorizontalScroller>\n\n              <Box flex=\"none\" paddingRight={3}>\n                {renderedActions}\n              </Box>\n            </Flex>\n          </Card>\n        )}\n      </TooltipDelayGroupProvider>\n    )\n  }),\n)\n\nconst DocumentPanelHeaderActionDialogDeferred = memo(\n  function DocumentPanelHeaderActionDialogDeferred(props: {\n    states: DocumentActionDescription[]\n    setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n    referenceElement: HTMLElement | null\n    contextMenuNodes: _PaneMenuNode[]\n  }) {\n    const {setReferenceElement, referenceElement, contextMenuNodes} = props\n    /**\n     * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n     * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n     */\n    const states = useDeferredValue(props.states)\n\n    return (\n      <DocumentPanelHeaderActionDialog\n        setReferenceElement={setReferenceElement}\n        referenceElement={referenceElement}\n        contextMenuNodes={contextMenuNodes}\n        states={states}\n      />\n    )\n  },\n)\n\nconst DocumentPanelHeaderActionDialog = memo(function DocumentPanelHeaderActionDialog(props: {\n  states: DocumentActionDescription[]\n  setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n  referenceElement: HTMLElement | null\n  contextMenuNodes: _PaneMenuNode[]\n}) {\n  const {states, setReferenceElement, contextMenuNodes, referenceElement} = props\n\n  const renderActionDialog = useCallback<\n    ({handleAction}: {handleAction: (idx: number) => void}) => React.ReactNode\n  >(\n    ({handleAction}) => (\n      <div ref={setReferenceElement}>\n        <PaneContextMenuButton\n          nodes={contextMenuNodes}\n          key=\"context-menu\"\n          actionsNodes={\n            states.length > 0\n              ? states.map((actionState, actionIndex) => (\n                  <ActionMenuListItem\n                    key={actionState.label}\n                    actionState={actionState}\n                    disabled={Boolean(actionState.disabled)}\n                    index={actionIndex}\n                    onAction={handleAction}\n                  />\n                ))\n              : undefined\n          }\n        />\n      </div>\n    ),\n    [contextMenuNodes, setReferenceElement, states],\n  )\n\n  return (\n    <ActionDialogWrapper actionStates={states} referenceElement={referenceElement}>\n      {renderActionDialog}\n    </ActionDialogWrapper>\n  )\n})\n","import {Button, type ButtonProps} from '../../../ui-components'\n\ninterface SpacerButtonProps {\n  size?: ButtonProps['size']\n}\n\n/**\n * This renders a visually hidden <Button> component that is still contributes\n * to document layout.\n *\n * It's used to simplify padding in Sanity UI components that contain buttons which\n * may not always be rendered.\n *\n * TODO: let's find a more elegant solve to this layout shift problem\n *\n * @internal\n */\nexport function SpacerButton({size}: SpacerButtonProps) {\n  return (\n    <Button\n      aria-hidden\n      disabled\n      size={size}\n      style={{\n        pointerEvents: 'none',\n        visibility: 'hidden',\n        width: 0,\n      }}\n      text=\"-\"\n    />\n  )\n}\n","import {Badge, type BadgeTone, Inline} from '@sanity/ui'\nimport {memo, useCallback, useDeferredValue} from 'react'\nimport {type DocumentBadgeDescription} from 'sanity'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {RenderBadgeCollectionState} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentBadgesInnerProps {\n  states: DocumentBadgeDescription[]\n}\n\nconst BADGE_TONES: Record<string, BadgeTone | undefined> = {\n  primary: 'primary',\n  success: 'positive',\n  warning: 'caution',\n  danger: 'critical',\n}\n\nconst DocumentBadgesInner = memo(function DocumentBadgesInner({states}: DocumentBadgesInnerProps) {\n  if (states.length === 0) {\n    return null\n  }\n  return (\n    <Inline space={1}>\n      {states.map((badge, index) => (\n        <Tooltip\n          content={badge.title}\n          disabled={!badge.title}\n          key={`${badge.label}-${index}`}\n          placement=\"top\"\n          portal\n        >\n          <Badge\n            fontSize={1}\n            mode=\"outline\"\n            paddingX={2}\n            paddingY={1}\n            radius={4}\n            tone={badge.color ? BADGE_TONES[badge.color] : undefined}\n            style={{whiteSpace: 'nowrap'}}\n          >\n            {badge.label}\n          </Badge>\n        </Tooltip>\n      ))}\n    </Inline>\n  )\n})\n\nconst DocumentBadgesDeferred = memo(function DocumentBadgesDeferred(\n  props: DocumentBadgesInnerProps,\n) {\n  /**\n   * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n   * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n   */\n  const states = useDeferredValue(props.states)\n  return <DocumentBadgesInner states={states} />\n})\n\nexport function DocumentBadges() {\n  const {badges, editState} = useDocumentPane()\n\n  const renderDocumentBadges = useCallback<\n    (props: {states: DocumentBadgeDescription[]}) => React.ReactNode\n  >(({states}) => <DocumentBadgesDeferred states={states} />, [])\n\n  if (!editState || !badges) return null\n\n  return (\n    <RenderBadgeCollectionState badges={badges} badgeProps={editState}>\n      {renderDocumentBadges}\n    </RenderBadgeCollectionState>\n  )\n}\n","import {\n  AddIcon,\n  CloseIcon,\n  EditIcon,\n  type IconComponent,\n  PublishIcon,\n  TrashIcon,\n  UnpublishIcon,\n} from '@sanity/icons'\n\nexport const TIMELINE_ICON_COMPONENTS: {[key: string]: IconComponent | undefined} = {\n  create: AddIcon,\n  delete: TrashIcon,\n  discardDraft: CloseIcon,\n  initial: AddIcon,\n  editDraft: EditIcon,\n  editLive: EditIcon,\n  publish: PublishIcon,\n  unpublish: UnpublishIcon,\n}\n","import {type IconComponent} from '@sanity/icons'\nimport {type ChunkType} from 'sanity'\n\nimport {TIMELINE_ICON_COMPONENTS} from './constants'\n\nexport function getTimelineEventIconComponent(type: ChunkType): IconComponent | undefined {\n  return TIMELINE_ICON_COMPONENTS[type]\n}\n","import {ChevronLeftIcon} from '@sanity/icons'\nimport {type MouseEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {TIMELINE_LIST_WRAPPER_ID} from './timeline'\n\n/**\n * This is a hack to force the scrollbar to not appear when the list is expanding,\n * if we don't do this the scrollbar will appear for a brief moment when the list is expanding and then disappear\n * when the list is fully expanded.\n */\nfunction hideScrollbarOnExpand(isExpanded: boolean) {\n  // Do nothing if the list is already expanded\n  if (isExpanded) return\n\n  const listWrapper = document.getElementById(TIMELINE_LIST_WRAPPER_ID)\n\n  if (listWrapper) {\n    const firstChildren = listWrapper.children[0] as HTMLElement\n    const hasScrollbar = firstChildren.scrollHeight > firstChildren.clientHeight\n    if (!hasScrollbar) {\n      //\n      const currentStyle = getComputedStyle(firstChildren).overflowY\n      // Add overflow hidden to the listWrapper to avoid the scrollbar to appear when expanding\n      firstChildren.style.overflowY = 'hidden'\n      setTimeout(() => {\n        // Reset the overflow style after the list is expanded\n        firstChildren.style.overflowY = currentStyle\n      }, 0)\n    }\n  }\n}\n\nconst FlipIcon = styled(ChevronLeftIcon)`\n  transition: transform 200ms;\n  &[data-expanded='true'] {\n    transform: rotate(-90deg);\n  }\n`\n\nexport function ExpandableTimelineItemButton({\n  isExpanded,\n  onExpand,\n}: {\n  isExpanded: boolean\n  onExpand: () => void\n}) {\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const handleExpandClick = useCallback(\n    (e: MouseEvent<HTMLButtonElement>) => {\n      e.stopPropagation()\n      hideScrollbarOnExpand(isExpanded)\n      onExpand()\n    },\n    [onExpand, isExpanded],\n  )\n\n  return (\n    <Button\n      mode=\"bleed\"\n      icon={<FlipIcon data-expanded={isExpanded} />}\n      tooltipProps={{\n        content: isExpanded\n          ? t('timeline-item.menu.action-collapse')\n          : t('timeline-item.menu.action-expand'),\n      }}\n      onClick={handleExpandClick}\n    />\n  )\n}\n","import {Box, Flex, Stack} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const StackWrapper = styled(Stack)`\n  max-width: 200px;\n`\n\nexport const ListWrapper = styled(Flex)<{$maxHeight: string}>`\n  max-height: ${(props) => props.$maxHeight};\n  min-width: 244px;\n`\n\nexport const Root = styled(Box)<{$visible?: boolean}>(({$visible}) => {\n  return css`\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.2s;\n\n    ${$visible &&\n    css`\n      opacity: 1;\n      pointer-events: auto;\n    `}\n  `\n})\n","import {type ChunkType, type StudioLocaleResourceKeys} from 'sanity'\n\n/**\n * Maps from a chunk type to an i18n key for the operation\n *\n * @internal\n */\nexport const TIMELINE_ITEM_I18N_KEY_MAPPING: Record<ChunkType, StudioLocaleResourceKeys> = {\n  initial: 'timeline.operation.created-initial',\n  create: 'timeline.operation.created',\n  publish: 'timeline.operation.published',\n  editLive: 'timeline.operation.edited-live',\n  editDraft: 'timeline.operation.edited-draft',\n  unpublish: 'timeline.operation.unpublished',\n  discardDraft: 'timeline.operation.draft-discarded',\n  delete: 'timeline.operation.deleted',\n}\n","import {type AvatarSize, AvatarStack} from '@sanity/ui'\nimport {UserAvatar} from 'sanity'\n\ninterface UserAvatarStackProps {\n  maxLength?: number\n  userIds: string[]\n  size?: AvatarSize\n  withTooltip?: boolean\n}\n\nexport function UserAvatarStack({\n  maxLength,\n  userIds,\n  size,\n  withTooltip = true,\n}: UserAvatarStackProps) {\n  return (\n    <AvatarStack maxLength={maxLength} size={size}>\n      {userIds.map((userId) => (\n        <UserAvatar key={userId} user={userId} withTooltip={withTooltip} />\n      ))}\n    </AvatarStack>\n  )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {type MouseEvent, useCallback, useMemo} from 'react'\nimport {\n  AvatarSkeleton,\n  type ChunkType,\n  type RelativeTimeOptions,\n  useDateTimeFormat,\n  UserAvatar,\n  useRelativeTime,\n  useTranslation,\n  useUser,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {getTimelineEventIconComponent} from './helpers'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\nimport {UserAvatarStack} from './userAvatarStack'\nimport {type ChunksWithCollapsedDrafts} from './utils'\n\nexport const IconBox = styled(Flex)<{$color: ThemeColorAvatarColorKey}>((props) => {\n  const theme = getTheme_v2(props.theme)\n  const color = props.$color\n\n  return css`\n    --card-icon-color: ${theme.color.avatar[color].fg};\n    background-color: ${theme.color.avatar[color].bg};\n    box-shadow: 0 0 0 1px var(--card-bg-color);\n\n    position: absolute;\n    width: ${theme.avatar.sizes[0].size}px;\n    height: ${theme.avatar.sizes[0].size}px;\n    right: -3px;\n    bottom: -3px;\n    border-radius: 50%;\n  `\n})\n\nconst TIMELINE_ITEM_EVENT_TONE: Record<ChunkType | 'withinSelection', ThemeColorAvatarColorKey> = {\n  initial: 'blue',\n  create: 'blue',\n  publish: 'green',\n  editLive: 'green',\n  editDraft: 'yellow',\n  unpublish: 'orange',\n  discardDraft: 'orange',\n  delete: 'red',\n  withinSelection: 'magenta',\n}\n\nexport interface TimelineItemProps {\n  chunk: ChunksWithCollapsedDrafts\n  isSelected: boolean\n  onSelect: (chunk: ChunksWithCollapsedDrafts) => void\n  collaborators?: Set<string>\n  optionsMenu?: React.ReactNode\n}\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {\n  minimal: true,\n  useTemporalPhrase: true,\n}\n\nconst NameSkeleton = styled(Skeleton)((props) => {\n  const theme = getTheme_v2(props.theme)\n  return css`\n    width: 6ch;\n    height: ${theme.font.text.sizes[0].lineHeight}px;\n  `\n})\n\nconst UserLine = ({userId}: {userId: string}) => {\n  const [user, loading] = useUser(userId)\n\n  return (\n    <Flex align=\"center\" gap={2} key={userId} padding={1}>\n      <Box>{loading || !user ? <AvatarSkeleton animated /> : <UserAvatar user={user} />}</Box>\n      <Box>\n        {loading || !user?.displayName ? (\n          <Text size={1}>\n            <NameSkeleton animated />\n          </Text>\n        ) : (\n          <Text muted size={1}>\n            {user.displayName}\n          </Text>\n        )}\n      </Box>\n    </Flex>\n  )\n}\nconst TooltipContent = ({collaborators}: {collaborators: string[]}) => {\n  const {t} = useTranslation('studio')\n  return (\n    <Stack paddingBottom={1}>\n      <Box padding={1} paddingBottom={2}>\n        <Text size={1} weight=\"medium\">\n          {t('timeline.changes.title')}\n        </Text>\n      </Box>\n      {collaborators.map((userId) => (\n        <UserLine key={userId} userId={userId} />\n      ))}\n    </Stack>\n  )\n}\nexport function TimelineItem({\n  chunk,\n  isSelected,\n  onSelect,\n  collaborators,\n  optionsMenu,\n}: TimelineItemProps) {\n  const {t} = useTranslation('studio')\n  const {type, endTimestamp: timestamp} = chunk\n  const IconComponent = getTimelineEventIconComponent(type)\n  const authorUserIds = Array.from(chunk.authors)\n  const collaboratorsUsersIds = collaborators ? Array.from(collaborators) : []\n  const isSelectable = type !== 'delete'\n  const dateFormat = useDateTimeFormat({dateStyle: 'medium', timeStyle: 'short'})\n  const date = new Date(timestamp)\n\n  const updatedTimeAgo = useRelativeTime(date || '', RELATIVE_TIME_OPTIONS)\n\n  const formattedTimestamp = useMemo(() => {\n    const parsedDate = new Date(timestamp)\n    const formattedDate = dateFormat.format(parsedDate)\n\n    return formattedDate\n  }, [timestamp, dateFormat])\n\n  const handleClick = useCallback(\n    (evt: MouseEvent<HTMLDivElement>) => {\n      evt.preventDefault()\n      evt.stopPropagation()\n\n      if (isSelectable) {\n        onSelect(chunk)\n      }\n    },\n    [onSelect, chunk, isSelectable],\n  )\n\n  return (\n    <Flex align=\"center\" gap={1}>\n      <Card\n        as=\"button\"\n        onClick={handleClick}\n        padding={2}\n        pressed={isSelected}\n        radius={2}\n        data-ui=\"timelineItem\"\n        data-testid=\"timeline-item-button\"\n        data-chunk-id={chunk.id}\n      >\n        <Flex align=\"center\" gap={3}>\n          <div style={{position: 'relative'}}>\n            <UserAvatarStack maxLength={3} userIds={authorUserIds} size={2} />\n            <IconBox align=\"center\" justify=\"center\" $color={TIMELINE_ITEM_EVENT_TONE[type]}>\n              <Text size={0}>{IconComponent && <IconComponent />}</Text>\n            </IconBox>\n          </div>\n          <Stack space={2}>\n            <Text size={1} weight=\"medium\">\n              {t(TIMELINE_ITEM_I18N_KEY_MAPPING[type]) || <code>{type}</code>}\n            </Text>\n\n            <Text as=\"time\" size={1} muted dateTime={timestamp} title={formattedTimestamp}>\n              {updatedTimeAgo}\n            </Text>\n          </Stack>\n\n          {collaboratorsUsersIds.length > 0 && (\n            <Flex flex={1} justify=\"flex-end\" align=\"center\">\n              <Tooltip\n                placement=\"top\"\n                content={<TooltipContent collaborators={collaboratorsUsersIds} />}\n                portal\n              >\n                <Box paddingLeft={2} paddingY={2}>\n                  <UserAvatarStack\n                    maxLength={3}\n                    userIds={collaboratorsUsersIds}\n                    size={0}\n                    withTooltip={false}\n                  />\n                </Box>\n              </Tooltip>\n            </Flex>\n          )}\n        </Flex>\n      </Card>\n      {optionsMenu}\n    </Flex>\n  )\n}\n","import {type Chunk, type ChunkType} from 'sanity'\n\nexport type NonPublishChunk = Omit<Chunk, 'type'> & {\n  type: Exclude<ChunkType, 'publish'>\n  parentId?: string\n}\n\nexport type PublishChunk = Omit<Chunk, 'type'> & {\n  type: 'publish'\n  children: string[]\n  collaborators: Set<string>\n}\n\nexport const isNonPublishChunk = (chunk: Chunk): chunk is NonPublishChunk =>\n  chunk.type !== 'publish'\n\nexport const isPublishChunk = (chunk: Chunk): chunk is PublishChunk => chunk.type === 'publish'\n\n/**\n * searches for the previous publish action in the list of chunks\n * e.g. chunks = [publish, edit, publish, edit, edit] it needs to return the second publish action\n * e.g. chunks = [publish, edit, delete, edit, edit] it returns undefined\n */\n\nfunction getPreviousPublishAction(chunks: Chunk[]) {\n  let previousPublish: PublishChunk | null = null\n  // We need to iterate from the end to the start of the list\n  for (let index = chunks.length - 1; index >= 0; index--) {\n    const chunk = chunks[index]\n    if (isPublishChunk(chunk)) {\n      previousPublish = chunk\n      break\n    }\n    if (chunk.type === 'editDraft') {\n      continue\n    } else break\n  }\n\n  return previousPublish\n}\nexport type ChunksWithCollapsedDrafts = NonPublishChunk | PublishChunk\n\n/**\n * Takes an array of chunks and adds them metadata necessary for the timeline view.\n * for draft chunks, it will add the parentId of the published chunk if this draft action is now published\n * for published, it will add the children array and the collaborators array\n */\nexport function addChunksMetadata(chunks: Chunk[]): ChunksWithCollapsedDrafts[] {\n  const result: ChunksWithCollapsedDrafts[] = []\n\n  for (const chunk of chunks) {\n    if (isPublishChunk(chunk)) {\n      result.push({\n        ...chunk,\n        type: 'publish',\n        children: [],\n        collaborators: new Set(), // Initialize the collaborators array\n      })\n      continue\n    }\n    if (isNonPublishChunk(chunk)) {\n      const previousPublish = getPreviousPublishAction(result)\n      if (chunk.type === 'editDraft' && previousPublish?.type === 'publish') {\n        Array.from(chunk.authors).forEach((id) => {\n          previousPublish.collaborators.add(id)\n        })\n        previousPublish.children.push(chunk.id)\n        result.push({\n          ...chunk,\n          parentId: previousPublish.id,\n        })\n        continue\n      }\n    }\n    if (isNonPublishChunk(chunk)) {\n      result.push(chunk)\n    }\n  }\n\n  return result\n}\n","import {Box, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n  type Chunk,\n  CommandList,\n  type CommandListRenderItemCallback,\n  LoadingBlock,\n  useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from './expandableTimelineItemButton'\nimport {ListWrapper, Root, StackWrapper} from './timeline.styled'\nimport {TimelineItem} from './timelineItem'\nimport {\n  addChunksMetadata,\n  type ChunksWithCollapsedDrafts,\n  isNonPublishChunk,\n  isPublishChunk,\n} from './utils'\n\ninterface TimelineProps {\n  chunks: Chunk[]\n  hasMoreChunks: boolean | null\n  lastChunk?: Chunk | null\n  onLoadMore: () => void\n  onSelect: (chunk: Chunk) => void\n  /**\n   * The list needs a predefined max height for the scroller to work.\n   */\n  listMaxHeight?: string\n}\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const Timeline = ({\n  chunks,\n  hasMoreChunks,\n  lastChunk: selectedChunk,\n  onLoadMore,\n  onSelect,\n  listMaxHeight = 'calc(100vh - 280px)',\n}: TimelineProps) => {\n  const [mounted, setMounted] = useState(false)\n  const {t} = useTranslation('studio')\n  const selectedChunkId = selectedChunk?.id\n  const chunksWithMetadata = useMemo(() => addChunksMetadata(chunks), [chunks])\n\n  const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n    if (selectedChunkId) {\n      // If the selected chunk is a draft, we need to expand its parent\n      const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n      if (selected && isNonPublishChunk(selected) && selected.parentId) {\n        return new Set([selected.parentId])\n      }\n    }\n    return new Set()\n  })\n\n  useEffect(() => {\n    // This effect ensures that when we reload the timeline with a selected draft, we expand its parent.\n    if (selectedChunkId) {\n      const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n      if (selected && isNonPublishChunk(selected) && selected.parentId) {\n        const parentId = selected.parentId\n        setExpandedParents((prev) => {\n          if (prev.has(parentId)) return prev\n          const next = new Set(prev)\n          next.add(parentId)\n          return next\n        })\n      }\n    }\n  }, [chunksWithMetadata, selectedChunkId])\n\n  const filteredChunks = useMemo(() => {\n    return chunksWithMetadata.filter((chunk) => {\n      if (isPublishChunk(chunk) || !chunk.parentId) return true\n      // If the chunk has a parent id keep it hidden until the parent is expanded.\n      return expandedParents.has(chunk.parentId)\n    })\n  }, [chunksWithMetadata, expandedParents])\n\n  useEffect(() => {\n    // This effect ensures that we load more chunks if the list is not long enough.\n    // This could happen if a parent chunk has multiple drafts, so you could end with a list of 50 transactions but only\n    // 1 parent chunk, the publish, which squashed all the changes.\n    // In that case, users will see the loading block at the bottom, but nothing will really be happening. Because they haven't reach the end of the list.\n    if (filteredChunks.length < 16 && hasMoreChunks) {\n      onLoadMore()\n    }\n  }, [filteredChunks, hasMoreChunks, onLoadMore])\n\n  const handleExpandParent = useCallback(\n    (parentId: string) => () =>\n      setExpandedParents((prev) => {\n        const next = new Set(prev)\n\n        if (prev.has(parentId)) next.delete(parentId)\n        else next.add(parentId)\n\n        return next\n      }),\n    [],\n  )\n\n  const selectedIndex = useMemo(\n    () =>\n      selectedChunkId ? filteredChunks.findIndex((chunk) => chunk.id === selectedChunkId) : -1,\n    [selectedChunkId, filteredChunks],\n  )\n  const handleSelectChunk = useCallback(\n    (chunk: ChunksWithCollapsedDrafts) => {\n      const timelineChunk = chunks.find((c) => c.id === chunk.id)\n      if (timelineChunk) onSelect(timelineChunk)\n      else {\n        console.error('TimelineItem: chunk not found')\n        onSelect(chunk)\n      }\n    },\n    [chunks, onSelect],\n  )\n\n  const renderItem = useCallback<CommandListRenderItemCallback<(typeof filteredChunks)[number]>>(\n    (chunk, {activeIndex}) => {\n      const isFirst = activeIndex === 0\n\n      return (\n        <Box\n          paddingBottom={1}\n          paddingTop={isFirst ? 1 : 0}\n          paddingRight={1}\n          paddingLeft={isNonPublishChunk(chunk) && chunk.parentId ? 4 : 1}\n        >\n          <TimelineItem\n            chunk={chunk}\n            isSelected={selectedChunkId === chunk.id}\n            onSelect={handleSelectChunk}\n            collaborators={isPublishChunk(chunk) ? chunk.collaborators : undefined}\n            optionsMenu={\n              isPublishChunk(chunk) && chunk.children.length > 0 ? (\n                <ExpandableTimelineItemButton\n                  isExpanded={expandedParents.has(chunk.id)}\n                  onExpand={handleExpandParent(chunk.id)}\n                />\n              ) : null\n            }\n          />\n          {activeIndex === filteredChunks.length - 1 && hasMoreChunks && <LoadingBlock />}\n        </Box>\n      )\n    },\n    [\n      expandedParents,\n      filteredChunks.length,\n      handleExpandParent,\n      handleSelectChunk,\n      hasMoreChunks,\n      selectedChunkId,\n    ],\n  )\n\n  useEffect(() => setMounted(true), [])\n\n  return (\n    <Root\n      /**\n       * We delay initial rendering if `selectedIndex` is present.\n       * This is a _temporary_ workaround to allow the virtual <CommandList>\n       * to scroll to a specific index prior to being displayed.\n       *\n       * Without this, there'll be a noticeable 'flash' where the virtual list\n       * will render with its child items at the top and then scroll into position.\n       */\n      $visible={!selectedIndex || mounted}\n      data-ui=\"timeline\"\n    >\n      {filteredChunks.length === 0 && (\n        <StackWrapper padding={3} space={3}>\n          <Text size={1} weight=\"medium\">\n            {t('timeline.error.no-document-history-title')}\n          </Text>\n          <Text muted size={1}>\n            {t('timeline.error.no-document-history-description')}\n          </Text>\n        </StackWrapper>\n      )}\n\n      {filteredChunks.length > 0 && (\n        <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n          <CommandList\n            activeItemDataAttr=\"data-hovered\"\n            ariaLabel={t('timeline.list.aria-label')}\n            autoFocus=\"list\"\n            initialIndex={selectedIndex}\n            initialScrollAlign=\"center\"\n            itemHeight={57}\n            items={filteredChunks}\n            onEndReached={onLoadMore}\n            onEndReachedIndexOffset={20}\n            overscan={5}\n            renderItem={renderItem}\n            wrapAround={false}\n          />\n        </ListWrapper>\n      )}\n    </Root>\n  )\n}\n\nTimeline.displayName = 'Timeline'\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Flex, Stack} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nexport function TimelineError({versionError}: {versionError?: boolean}) {\n  const {t} = useTranslation('studio')\n\n  return (\n    <Flex align=\"flex-start\" gap={3} padding={4}>\n      <TextWithTone tone=\"critical\">\n        <ErrorOutlineIcon />\n      </TextWithTone>\n      <Stack space={4}>\n        <TextWithTone size={1} tone=\"critical\" weight=\"medium\">\n          {versionError\n            ? t('timeline.error.load-document-changes-version-title')\n            : t('timeline.error.load-document-changes-title')}\n        </TextWithTone>\n        <TextWithTone size={1} tone=\"critical\">\n          {versionError\n            ? t('timeline.error.load-document-changes-version-description')\n            : t('timeline.error.load-document-changes-description')}\n        </TextWithTone>\n      </Stack>\n    </Flex>\n  )\n}\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n  Flex,\n  type Placement,\n  PortalProvider,\n  useClickOutsideEvent,\n  useGlobalKeyDown,\n  useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Chunk, useTimelineSelector, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../ui-components'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {Timeline} from './timeline'\nimport {TimelineError} from './TimelineError'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\n\ninterface TimelineMenuProps {\n  chunk: Chunk | null\n  mode: 'rev' | 'since'\n  placement?: Placement\n}\n\nconst Root = styled(Popover)`\n  overflow: hidden;\n  overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nexport function TimelineMenu({chunk, mode, placement}: TimelineMenuProps) {\n  const {setTimelineRange, timelineError, ready, timelineStore} = useDocumentPane()\n  const [open, setOpen] = useState(false)\n  const [button, setButton] = useState<HTMLButtonElement | null>(null)\n  const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n\n  const toast = useToast()\n\n  const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n  const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n  const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n  const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n  const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n\n  const {t} = useTranslation('studio')\n\n  const handleOpen = useCallback(() => {\n    setOpen(true)\n  }, [])\n\n  const handleClose = useCallback(() => {\n    setOpen(false)\n  }, [])\n\n  const handleGlobalKeyDown = useCallback(\n    (event: KeyboardEvent) => {\n      if (open && (event.key === 'Escape' || event.key === 'Tab')) {\n        handleClose()\n        button?.focus()\n      }\n    },\n    [button, handleClose, open],\n  )\n\n  useGlobalKeyDown(handleGlobalKeyDown)\n  useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n  const selectRev = useCallback(\n    (revChunk: Chunk) => {\n      try {\n        const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n        setTimelineRange(sinceId, revId)\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [setTimelineRange, t, timelineStore, toast],\n  )\n\n  const selectSince = useCallback(\n    (sinceChunk: Chunk) => {\n      try {\n        const [sinceId, revId] = timelineStore?.findRangeForSince(sinceChunk) || [null, null]\n        setTimelineRange(sinceId, revId)\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [setTimelineRange, t, timelineStore, toast],\n  )\n\n  const handleLoadMore = useCallback(() => {\n    if (!loading) {\n      timelineStore?.loadMore()\n    }\n  }, [loading, timelineStore])\n\n  const content = useMemo(() => {\n    if (timelineError) return <TimelineError />\n\n    if (mode === 'rev') {\n      return (\n        <Timeline\n          chunks={chunks}\n          hasMoreChunks={hasMoreChunks}\n          lastChunk={realRevChunk}\n          onLoadMore={handleLoadMore}\n          onSelect={selectRev}\n        />\n      )\n    }\n\n    const filteredChunks = realRevChunk\n      ? chunks.filter((c) => c.index < realRevChunk.index)\n      : chunks\n    return (\n      <Timeline\n        chunks={filteredChunks}\n        hasMoreChunks={hasMoreChunks}\n        lastChunk={sinceTime}\n        onLoadMore={handleLoadMore}\n        onSelect={selectSince}\n      />\n    )\n  }, [\n    chunks,\n    handleLoadMore,\n    hasMoreChunks,\n    mode,\n    realRevChunk,\n    selectRev,\n    selectSince,\n    sinceTime,\n    timelineError,\n  ])\n\n  const formatParams = {\n    timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n  }\n\n  const revLabel = chunk\n    ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[chunk.type], {\n        context: 'timestamp',\n        timestamp: new Date(chunk?.endTimestamp),\n        formatParams,\n      })\n    : t('timeline.latest-revision')\n\n  const sinceLabel = chunk\n    ? t('timeline.since', {\n        timestamp: new Date(chunk?.endTimestamp),\n        formatParams,\n      })\n    : t('timeline.since-version-missing')\n\n  const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n  return (\n    <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n      <Root\n        data-testid=\"timeline-menu\"\n        constrainSize\n        content={open && content}\n        data-ui=\"versionMenu\"\n        open={open}\n        placement={placement}\n        matchReferenceWidth\n        portal\n        ref={setPopoverRef}\n      >\n        <Flex width={'fill'}>\n          <Button\n            data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n            disabled={!ready}\n            mode=\"ghost\"\n            onClick={open ? handleClose : handleOpen}\n            ref={setButton}\n            selected={open}\n            width=\"fill\"\n            tooltipProps={null}\n            justify={'space-between'}\n            style={{\n              maxWidth: '100%',\n            }}\n            iconRight={ChevronDownIcon}\n            text={ready ? buttonLabel : t('timeline.loading-history')}\n          />\n        </Flex>\n      </Root>\n    </PortalProvider>\n  )\n}\n","import {motion} from 'framer-motion'\nimport {type ComponentProps} from 'react'\nimport {keyframes, styled} from 'styled-components'\n\nconst StyledMotionPath = styled(motion.path)`\n  transform-origin: center;\n`\n\ntype MotionCircleProps = Omit<ComponentProps<typeof motion.circle>, 'd'>\ntype MotionPathProps = Omit<ComponentProps<typeof motion.path>, 'd' | 'ref'>\n\nconst Circle = (props: MotionCircleProps) => (\n  <motion.circle fill=\"none\" r=\"8\" cx=\"12.5\" cy=\"12.5\" strokeWidth=\"1.2\" {...props} />\n)\nconst Arrows = (props: MotionPathProps) => (\n  <StyledMotionPath\n    fill=\"none\"\n    d=\"M14 17.5619L11.5 20.5L14.5 23.0619M11 7.43811L13.5 4.50001L10.5 1.93811\"\n    {...props}\n  />\n)\nconst Checkmark = (props: MotionPathProps) => (\n  <motion.path d=\"M9.5 12.1316L11.7414 14.5L16 10\" {...props} />\n)\n\nconst rotateAnimation = keyframes`\n  0% {\n    transform: rotate(0);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n`\nconst RotateGroup = styled.g`\n  transform-origin: center;\n\n  &[data-rotate] {\n    animation: ${rotateAnimation} 1s ease-in-out infinite;\n  }\n`\n\nconst root = {\n  syncing: {\n    scale: 1,\n    transition: {\n      duration: 0,\n    },\n  },\n  saved: {\n    scale: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1.05, 0.99, 1],\n    transition: {\n      duration: 0.5,\n      delay: 0.2,\n    },\n  },\n  changes: {transition: {duration: 0}},\n}\n\nconst circle = {\n  syncing: {\n    strokeDasharray: '0, 0, 23, 3, 23, 3',\n    strokeDashoffset: 10,\n    opacity: 1,\n    transition: {\n      duration: 0,\n    },\n  },\n  saved: {\n    strokeDasharray: '0, 0, 23, 0, 23, 0',\n    strokeDashoffset: 10,\n    opacity: 1,\n    transition: {\n      duration: 0.2,\n    },\n  },\n  changes: {\n    strokeDasharray: '0, 60, 23, 0, 23, 0',\n    strokeDashoffset: 0,\n    opacity: 0,\n    transition: {\n      duration: 0.5,\n    },\n  },\n}\n\nconst arrows = {\n  syncing: {\n    opacity: 1,\n    transition: {\n      duration: 0,\n    },\n  },\n  saved: {\n    opacity: 0,\n    transition: {\n      duration: 0.2,\n    },\n  },\n  changes: {\n    opacity: 0,\n  },\n}\n\nconst checkmark = {\n  syncing: {\n    pathLength: 0,\n    transition: {duration: 0},\n  },\n  saved: {\n    pathLength: 1,\n    transition: {\n      delay: 0.4,\n      duration: 0.3,\n    },\n  },\n  changes: {\n    pathLength: 0,\n    transition: {\n      duration: 0.2,\n    },\n  },\n}\n\ninterface AnimatedStatusIconProps {\n  status?: 'changes' | 'saved' | 'syncing'\n}\n\nexport function AnimatedStatusIcon(props: AnimatedStatusIconProps) {\n  const {status} = props\n\n  if (!status) {\n    return null\n  }\n\n  return (\n    <svg\n      width=\"1em\"\n      height=\"1em\"\n      viewBox=\"0 0 25 25\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeWidth=\"1.2\"\n      data-sanity-icon=\"animated-status-icon\"\n    >\n      <motion.g variants={root} initial={status} animate={status}>\n        <RotateGroup data-rotate={status === 'changes' ? undefined : ''}>\n          <Arrows variants={arrows} initial={status} animate={status} />\n          <Circle variants={circle} initial={status} animate={status} />\n        </RotateGroup>\n        <Checkmark variants={checkmark} initial={status} animate={status} />\n      </motion.g>\n    </svg>\n  )\n}\n","import {type ButtonTone, Flex, Text} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {AnimatedStatusIcon} from './AnimatedStatusIcon'\n\ntype StatusType = 'saved' | 'syncing'\ninterface ReviewChangesButtonProps {\n  status?: StatusType\n}\n\nconst STATUS_DICTIONARY: Record<StatusType, {i18nKey: string; tone: ButtonTone}> = {\n  saved: {\n    i18nKey: 'status-bar.document-status-pulse.status.saved.text',\n    tone: 'positive',\n  },\n  syncing: {\n    i18nKey: 'status-bar.document-status-pulse.status.syncing.text',\n    tone: 'default',\n  },\n}\n\nexport const DocumentStatusPulse = (props: ReviewChangesButtonProps) => {\n  const {status} = props\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (status !== 'saved' && status !== 'syncing') {\n    return null\n  }\n\n  const currentStatus = STATUS_DICTIONARY[status]\n\n  return (\n    <Flex align=\"center\" gap={2} data-testid=\"pane-footer-document-status-pulse\">\n      <TextWithTone size={1} tone={currentStatus.tone}>\n        <AnimatedStatusIcon status={status} />\n      </TextWithTone>\n\n      <Text muted size={1}>\n        {t(currentStatus.i18nKey)}\n      </Text>\n    </Flex>\n  )\n}\n","import {\n  Box,\n  // eslint-disable-next-line no-restricted-imports\n  Button,\n  Flex,\n  Skeleton,\n  Text,\n} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'framer-motion'\nimport {useEffect, useLayoutEffect, useMemo, useState} from 'react'\nimport {\n  AvatarSkeleton,\n  isPublishedPerspective,\n  TIMELINE_ITEM_I18N_KEY_MAPPING,\n  useEvents,\n  usePerspective,\n  UserAvatar,\n  useRelativeTime,\n  useSource,\n  useSyncState,\n  useTimelineSelector,\n  useTranslation,\n} from 'sanity'\n\nimport {HISTORY_INSPECTOR_NAME} from '../constants'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING as TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY} from '../timeline'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {DocumentStatusPulse} from './DocumentStatusPulse'\n\nconst RELATIVE_TIME_OPTIONS = {\n  minimal: true,\n  useTemporalPhrase: true,\n} as const\n\nconst MotionButton = motion.create(Button)\nconst MotionBox = motion.create(Box)\n\nconst ButtonSkeleton = () => {\n  return (\n    <Flex align=\"center\" gap={3} paddingLeft={1} paddingRight={2} paddingY={2}>\n      <div style={{margin: -5}}>\n        <AvatarSkeleton $size={0} animated />\n      </div>\n      <Skeleton animated style={{width: '80px', height: '15px'}} radius={2} />\n    </Flex>\n  )\n}\n\nconst DocumentStatusButton = ({\n  author,\n  translationKey,\n  timestamp = '',\n}: {\n  author: string\n  translationKey: string\n  timestamp?: string\n}) => {\n  const {onHistoryOpen, inspector, onHistoryClose} = useDocumentPane()\n  const {t} = useTranslation()\n  const relativeTime = useRelativeTime(timestamp, RELATIVE_TIME_OPTIONS)\n\n  return (\n    <MotionButton\n      data-testid=\"pane-footer-document-status\"\n      animate={{opacity: 1}}\n      initial={{opacity: 0}}\n      exit={{opacity: 0}}\n      mode=\"bleed\"\n      onClick={inspector?.name === HISTORY_INSPECTOR_NAME ? onHistoryClose : onHistoryOpen}\n      padding={2}\n      muted\n    >\n      <Flex align=\"center\" flex=\"none\" gap={3}>\n        {author && (\n          <div style={{margin: -5}}>\n            <UserAvatar user={author} size={0} />\n          </div>\n        )}\n        <Text muted size={1}>\n          {t(translationKey)} {relativeTime}\n        </Text>\n      </Flex>\n    </MotionButton>\n  )\n}\n\nconst FallbackStatus = () => {\n  const {editState} = useDocumentPane()\n  const {selectedPerspective} = usePerspective()\n\n  const status = useMemo(() => {\n    if (isPublishedPerspective(selectedPerspective) && editState?.published?._updatedAt) {\n      return {\n        translationKey: TIMELINE_ITEM_I18N_KEY_MAPPING.published.createDocumentVersion,\n        timestamp: editState.published._updatedAt,\n      }\n    }\n    if (editState?.version?._updatedAt) {\n      return {\n        translationKey:\n          editState?.version?._updatedAt === editState?.version?._createdAt\n            ? TIMELINE_ITEM_I18N_KEY_MAPPING.version.createDocumentVersion\n            : TIMELINE_ITEM_I18N_KEY_MAPPING.version.editDocumentVersion,\n        timestamp: editState.version._updatedAt,\n      }\n    }\n    if (editState?.draft?._updatedAt) {\n      return {\n        translationKey:\n          editState?.draft?._updatedAt === editState?.draft?._createdAt\n            ? TIMELINE_ITEM_I18N_KEY_MAPPING.draft.createDocumentVersion\n            : TIMELINE_ITEM_I18N_KEY_MAPPING.draft.editDocumentVersion,\n        timestamp: editState.draft._updatedAt,\n      }\n    }\n    return null\n  }, [\n    selectedPerspective,\n    editState?.published?._updatedAt,\n    editState?.version?._updatedAt,\n    editState?.version?._createdAt,\n    editState?.draft?._updatedAt,\n    editState?.draft?._createdAt,\n  ])\n  if (!status) {\n    return null\n  }\n  return (\n    <DocumentStatusButton\n      author=\"\"\n      translationKey={status.translationKey}\n      timestamp={status.timestamp}\n    />\n  )\n}\n\nconst EventsStatus = () => {\n  const {events, loading} = useEvents()\n  const event = events?.[0]\n\n  if (!event && loading) {\n    return <ButtonSkeleton />\n  }\n  if (!event) {\n    return <FallbackStatus />\n  }\n\n  return (\n    <DocumentStatusButton\n      author={event.author}\n      translationKey={TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type]}\n      timestamp={event.timestamp}\n    />\n  )\n}\n\nconst TimelineStatus = () => {\n  const {timelineStore} = useDocumentPane()\n  const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n  const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n  const event = chunks?.[0]\n\n  if (!event && loading) {\n    return <ButtonSkeleton />\n  }\n  if (!event) {\n    return <FallbackStatus />\n  }\n\n  const author = Array.from(event.authors)[0]\n  return (\n    <DocumentStatusButton\n      author={author}\n      translationKey={TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY[event.type]}\n      timestamp={event.endTimestamp}\n    />\n  )\n}\n\nconst SYNCING_TIMEOUT = 1000\nconst SAVED_TIMEOUT = 3000\n\nexport function DocumentStatusLine() {\n  const {documentId, documentType, editState, value} = useDocumentPane()\n  const [status, setStatus] = useState<'saved' | 'syncing' | null>(null)\n  const source = useSource()\n  const eventsEnabled = source.beta?.eventsAPI?.documents\n\n  const syncState = useSyncState(documentId, documentType, editState?.release)\n\n  const lastUpdated = value?._updatedAt\n\n  // eslint-disable-next-line consistent-return\n  useEffect(() => {\n    // Schedule an update to set the status to 'saved' when status changed to 'syncing.\n    // We use `syncState.isSyncing` here to avoid the status being set to 'saved' when the document is syncing.\n    if (status === 'syncing' && !syncState.isSyncing) {\n      const timerId = setTimeout(() => setStatus('saved'), SYNCING_TIMEOUT)\n      return () => clearTimeout(timerId)\n    }\n    // Schedule an update to clear the status when status changed to 'saved'\n    if (status === 'saved') {\n      const timerId = setTimeout(() => setStatus(null), SAVED_TIMEOUT)\n      return () => clearTimeout(timerId)\n    }\n  }, [status, lastUpdated, syncState.isSyncing])\n\n  // Clear the status when documentId changes to make sure we don't show the wrong status when opening a new document\n  useLayoutEffect(() => {\n    setStatus(null)\n  }, [documentId])\n\n  // Set status to 'syncing' when lastUpdated changes and we go from not syncing to syncing\n  useLayoutEffect(() => {\n    if (syncState.isSyncing) {\n      setStatus('syncing')\n    }\n  }, [syncState.isSyncing, lastUpdated])\n\n  return (\n    <AnimatePresence>\n      {status ? (\n        <MotionBox\n          paddingLeft={2}\n          animate={{opacity: 1}}\n          initial={{opacity: 0}}\n          exit={{opacity: 0}}\n        >\n          <DocumentStatusPulse status={status || undefined} />\n        </MotionBox>\n      ) : (\n        <>{eventsEnabled ? <EventsStatus /> : <TimelineStatus />}</>\n      )}\n    </AnimatePresence>\n  )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport {Translate, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport const StatusText = styled(Text)`\n  color: var(--card-muted-fg-color);\n\n  em {\n    color: var(--card-fg-color);\n    font-weight: 500;\n    font-style: normal;\n  }\n`\n\nexport function RevisionStatusLine(): React.JSX.Element {\n  const {displayed, revisionNotFound} = useDocumentPane()\n  const {t} = useTranslation()\n  const date = displayed?._updatedAt || displayed?._createdAt\n\n  const message = {\n    name: 'revision',\n    text: date ? (\n      <Translate\n        t={t}\n        i18nKey=\"document-status.revision-from\"\n        values={{\n          date: format(new Date(date), `MMM d, yyyy '@' pp`),\n        }}\n      />\n    ) : null,\n    tone: 'caution',\n  }\n\n  return (\n    <>\n      <Flex flex={1} gap={3} padding={2}>\n        <Box flex=\"none\">\n          <Text size={1}>\n            <RestoreIcon />\n          </Text>\n        </Box>\n        <Box flex={1}>\n          <StatusText size={1} textOverflow=\"ellipsis\">\n            {revisionNotFound ? (\n              <Translate t={t} i18nKey=\"document-status.revision-not-found\" />\n            ) : (\n              message.text\n            )}\n          </StatusText>\n        </Box>\n      </Flex>\n    </>\n  )\n}\n","import {useLayoutEffect} from 'react'\nimport {resizeObserver} from 'sanity'\n\nexport function useResizeObserver({\n  element,\n  onResize,\n}: {\n  element?: HTMLDivElement | null\n  onResize: (event: ResizeObserverEntry) => void\n}): void {\n  useLayoutEffect(() => {\n    if (element) {\n      resizeObserver.observe(element, onResize)\n    }\n\n    return () => {\n      if (element) {\n        resizeObserver.unobserve(element)\n      }\n    }\n  }, [element, onResize])\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type Ref, useCallback, useMemo, useState} from 'react'\nimport {\n  type CreateLinkMetadata,\n  isPublishedPerspective,\n  isReleaseDocument,\n  isSanityCreateLinked,\n  usePerspective,\n  useSanityCreateConfig,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {SpacerButton} from '../../../components/spacerButton'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {EMPTY_PARAMS} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {useDocumentTitle} from '../useDocumentTitle'\nimport {DocumentBadges} from './DocumentBadges'\nimport {DocumentStatusBarActions, HistoryStatusBarActions} from './DocumentStatusBarActions'\nimport {DocumentStatusLine} from './DocumentStatusLine'\nimport {RevisionStatusLine} from './RevisionStatusLine'\nimport {useResizeObserver} from './useResizeObserver'\n\nexport interface DocumentStatusBarProps {\n  actionsBoxRef?: Ref<HTMLDivElement>\n  createLinkMetadata?: CreateLinkMetadata\n}\n\nconst CONTAINER_BREAKPOINT = 480 // px\n\nconst AnimatedCard = motion.create(Card)\n\nexport function DocumentStatusBar(props: DocumentStatusBarProps) {\n  const {actionsBoxRef, createLinkMetadata} = props\n  const {editState, onChange: onDocumentChange, revisionNotFound} = useDocumentPane()\n  const {params = EMPTY_PARAMS} = usePaneRouter()\n  const {selectedPerspective} = usePerspective()\n  const {title} = useDocumentTitle()\n\n  const CreateLinkedActions = useSanityCreateConfig().components?.documentLinkedActions\n\n  const showingRevision = Boolean(params.rev)\n  const [collapsed, setCollapsed] = useState<boolean | null>(null)\n  const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n  const handleResize = useCallback((event: ResizeObserverEntry) => {\n    setCollapsed(event.contentRect.width < CONTAINER_BREAKPOINT)\n  }, [])\n\n  useResizeObserver({element: rootElement, onResize: handleResize})\n\n  const shouldRender = useMemo(() => {\n    const isReady = Boolean(editState?.ready && typeof collapsed === 'boolean')\n    if (selectedPerspective) {\n      if (isPublishedPerspective(selectedPerspective)) {\n        return isReady && Boolean(editState?.published)\n      }\n      if (isReleaseDocument(selectedPerspective)) {\n        return isReady && Boolean(editState?.version)\n      }\n    }\n    return isReady\n  }, [collapsed, editState?.published, editState?.ready, editState?.version, selectedPerspective])\n\n  let actions: React.JSX.Element | null = null\n  if (createLinkMetadata && isSanityCreateLinked(createLinkMetadata) && CreateLinkedActions) {\n    actions = (\n      <CreateLinkedActions\n        metadata={createLinkMetadata}\n        panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n        onDocumentChange={onDocumentChange}\n        documentTitle={title}\n      />\n    )\n  } else if (showingRevision) {\n    actions = <HistoryStatusBarActions />\n  } else {\n    actions = <DocumentStatusBarActions />\n  }\n\n  if (showingRevision && revisionNotFound) {\n    return null\n  }\n\n  return (\n    <AnimatedCard\n      key={showingRevision ? 'revision' : 'published'}\n      initial={{opacity: 0.2}}\n      animate={{opacity: 1, transition: {duration: 0.3}}}\n      tone={showingRevision ? 'caution' : undefined}\n      radius={3}\n      ref={setRootElement}\n      sizing=\"border\"\n      padding={2}\n    >\n      {shouldRender && (\n        <Flex\n          align=\"stretch\"\n          gap={1}\n          justify=\"space-between\"\n          paddingLeft={showingRevision ? 0 : 1}\n          paddingRight={showingRevision ? 0 : 1}\n        >\n          <Flex align=\"center\" flex={1} gap={collapsed ? 2 : 3} wrap=\"wrap\" paddingRight={3}>\n            <Flex align=\"center\">\n              {showingRevision ? <RevisionStatusLine /> : <DocumentStatusLine />}\n              <SpacerButton />\n            </Flex>\n            <DocumentBadges />\n          </Flex>\n\n          <Flex\n            align=\"flex-start\"\n            justify=\"flex-end\"\n            ref={actionsBoxRef}\n            style={{flexShrink: 0, marginLeft: 'auto'}}\n          >\n            <SpacerButton />\n            {actions}\n          </Flex>\n        </Flex>\n      )}\n    </AnimatedCard>\n  )\n}\n","import {isHotkey} from 'is-hotkey-esm'\nimport {\n  type ElementType,\n  type HTMLProps,\n  memo,\n  type Ref,\n  useCallback,\n  useMemo,\n  useState,\n} from 'react'\nimport {type DocumentActionDescription, type DocumentActionProps, LegacyLayerProvider} from 'sanity'\n\nimport {RenderActionCollectionState} from '../../../components'\nimport {ActionStateDialog} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport interface KeyboardShortcutResponderProps {\n  actionsBoxElement: HTMLElement | null\n  activeIndex: number\n  as?: ElementType\n  currentMinWidth?: number\n  flex?: number\n  id: string\n  minWidth?: number\n  onActionStart: (index: number) => void\n  rootRef: Ref<HTMLDivElement>\n  states: DocumentActionDescription[]\n}\n\nconst KeyboardShortcutResponder = memo(function KeyboardShortcutResponder(\n  props: KeyboardShortcutResponderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n) {\n  const {\n    actionsBoxElement,\n    activeIndex,\n    as: As = 'div',\n    children,\n    id,\n    onActionStart,\n    onKeyDown,\n    rootRef,\n    states,\n    ...rest\n  } = props\n\n  const activeAction = states[activeIndex]\n\n  const handleKeyDown = useCallback(\n    (event: any) => {\n      const matchingStates = states.filter(\n        (state) => state.shortcut && isHotkey(state.shortcut, event),\n      )\n\n      const matchingState = matchingStates[0]\n\n      if (matchingStates.length > 1) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `Keyboard shortcut conflict: More than one document action matches the shortcut \"${matchingState.shortcut}\"`,\n        )\n      }\n\n      if (matchingState && !matchingState.disabled && matchingState.onHandle) {\n        event.preventDefault()\n        matchingState.onHandle()\n        onActionStart(states.indexOf(matchingState))\n        return\n      }\n\n      if (onKeyDown) {\n        onKeyDown(event)\n      }\n    },\n    [onActionStart, onKeyDown, states],\n  )\n\n  return (\n    <As id={id} onKeyDown={handleKeyDown} tabIndex={-1} {...rest} ref={rootRef}>\n      {children}\n      {activeAction && activeAction.dialog && (\n        <LegacyLayerProvider zOffset=\"paneFooter\">\n          <ActionStateDialog dialog={activeAction.dialog} referenceElement={actionsBoxElement} />\n        </LegacyLayerProvider>\n      )}\n    </As>\n  )\n})\n\nexport interface DocumentActionShortcutsProps {\n  actionsBoxElement: HTMLElement | null\n  as?: ElementType\n  currentMinWidth?: number\n  debug?: boolean\n  flex: number\n  id: string\n  minWidth: number\n  rootRef: Ref<HTMLDivElement>\n}\n\nexport const DocumentActionShortcuts = memo(\n  (props: DocumentActionShortcutsProps & Omit<HTMLProps<HTMLDivElement>, 'as'>) => {\n    const {actionsBoxElement, as = 'div', children, ...rest} = props\n    const {actions, editState, isInitialValueLoading, revisionId} = useDocumentPane()\n    const [activeIndex, setActiveIndex] = useState(-1)\n\n    const onActionStart = useCallback((idx: number) => {\n      setActiveIndex(idx)\n    }, [])\n\n    const actionProps: DocumentActionProps | null = useMemo(\n      () =>\n        editState && {\n          ...editState,\n\n          // @todo: what to call here?\n          onComplete: () => undefined,\n\n          revision: revisionId || undefined,\n          initialValueResolved: !isInitialValueLoading,\n        },\n      [editState, isInitialValueLoading, revisionId],\n    )\n\n    const renderDocumentActionShortcuts = useCallback<\n      (props: {states: DocumentActionDescription[]}) => React.ReactNode\n    >(\n      ({states}) => (\n        <KeyboardShortcutResponder\n          {...rest}\n          activeIndex={activeIndex}\n          actionsBoxElement={actionsBoxElement}\n          as={as}\n          onActionStart={onActionStart}\n          states={states}\n        >\n          {children}\n        </KeyboardShortcutResponder>\n      ),\n      [actionsBoxElement, activeIndex, as, children, onActionStart, rest],\n    )\n\n    if (!actionProps || !actions) return null\n\n    return (\n      <RenderActionCollectionState actionProps={actionProps} actions={actions}>\n        {renderDocumentActionShortcuts}\n      </RenderActionCollectionState>\n    )\n  },\n)\n\nDocumentActionShortcuts.displayName = 'Memo(DocumentActionShortcuts)'\n","import {EarthAmericasIcon, JsonIcon, LinkIcon, TransferIcon} from '@sanity/icons'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, type TFunction} from 'sanity'\n\nimport {type DocumentIdStack} from '../../hooks/useDocumentIdStack'\nimport {type PaneMenuItem, type StructureToolFeatures} from '../../types'\nimport {INSPECT_ACTION_PREFIX} from './constants'\n\ninterface GetMenuItemsParams {\n  currentInspector?: DocumentInspector\n  features: StructureToolFeatures\n  hasValue: boolean\n  inspectors: DocumentInspector[]\n  previewUrl?: string | null\n  documentIdStack?: DocumentIdStack\n  inspectorMenuItems: DocumentInspectorMenuItem[]\n  t: TFunction\n}\n\nfunction getInspectorItems({\n  currentInspector,\n  hasValue,\n  inspectors,\n  inspectorMenuItems,\n}: GetMenuItemsParams): PaneMenuItem[] {\n  return inspectors\n    .map((inspector, index) => {\n      const menuItem = inspectorMenuItems[index]\n\n      if (!menuItem || menuItem.hidden) return null\n\n      return {\n        action: `${INSPECT_ACTION_PREFIX}${inspector.name}`,\n        group: menuItem.showAsAction ? undefined : 'inspectors',\n        icon: menuItem.icon,\n        disabled: !hasValue,\n        selected: currentInspector?.name === inspector.name,\n        shortcut: menuItem.hotkeys?.join('+'),\n        showAsAction: menuItem.showAsAction,\n        title: menuItem.title,\n        tone: menuItem.tone,\n      }\n    })\n    .filter(Boolean) as PaneMenuItem[]\n}\n\nfunction getInspectItem({hasValue, t}: GetMenuItemsParams): PaneMenuItem {\n  return {\n    action: 'inspect',\n    group: 'inspectors',\n    title: t('document-inspector.menu-item.title'),\n    icon: JsonIcon,\n    disabled: !hasValue,\n    shortcut: 'Ctrl+Alt+I',\n  }\n}\n\nfunction getCompareVersionsItem({documentIdStack, t}: GetMenuItemsParams): PaneMenuItem | null {\n  const disabled = typeof documentIdStack?.previousId === 'undefined' && {\n    reason: t('compare-versions.menu-item.disabled-reason'),\n  }\n\n  return {\n    action: 'compareVersions',\n    group: 'inspectors',\n    title: t('compare-versions.menu-item.title'),\n    icon: TransferIcon,\n    disabled,\n  }\n}\n\nexport function getProductionPreviewItem({previewUrl, t}: GetMenuItemsParams): PaneMenuItem | null {\n  if (!previewUrl) return null\n\n  return {\n    action: 'production-preview',\n    group: 'links',\n    title: t('production-preview.menu-item.title'),\n    icon: EarthAmericasIcon,\n    shortcut: 'Ctrl+Alt+O',\n  }\n}\n\nexport function getMenuItems(params: GetMenuItemsParams): PaneMenuItem[] {\n  const inspectorItems = getInspectorItems(params)\n  const items = [\n    // Get production preview item\n    getProductionPreviewItem(params),\n    getCompareVersionsItem(params),\n  ].filter(Boolean) as PaneMenuItem[]\n\n  return [\n    // Always present document menu item to copy current url to clipboard\n    {\n      action: 'copy-document-url',\n      showAsAction: true,\n      title: params.t('action.copy-document-url.label'),\n      icon: LinkIcon,\n    },\n    ...inspectorItems,\n\n    // TODO: convert to inspector or document view?\n    getInspectItem(params),\n\n    ...items,\n  ]\n}\n","import {Card, Code, Stack, Text} from '@sanity/ui'\nimport {isDev, Translate, useTranslation} from 'sanity'\n\nimport {ErrorPane} from '../../error'\n\ninterface DocumentLayoutErrorProps {\n  currentMinWidth?: number\n  documentType?: string\n  minWidth?: number\n  paneKey: string\n  value?: Record<string, unknown>\n}\n\nexport function DocumentLayoutError(props: DocumentLayoutErrorProps) {\n  const {documentType, value, currentMinWidth, paneKey, minWidth} = props\n  const {t} = useTranslation()\n\n  return (\n    <ErrorPane\n      currentMinWidth={currentMinWidth}\n      flex={2.5}\n      minWidth={minWidth}\n      paneKey={paneKey}\n      title={\n        <Translate\n          t={t}\n          i18nKey=\"panes.document-pane.document-unknown-type.title\"\n          values={{documentType}}\n        />\n      }\n      tone=\"caution\"\n    >\n      <Stack space={4}>\n        {documentType && (\n          <Text as=\"p\">\n            <Translate\n              t={t}\n              i18nKey=\"panes.document-pane.document-unknown-type.text\"\n              values={{documentType}}\n            />\n          </Text>\n        )}\n\n        {!documentType && (\n          <Text as=\"p\">{t('panes.document-pane.document-unknown-type.without-schema.text')}</Text>\n        )}\n\n        {isDev && value && (\n          /* eslint-disable i18next/no-literal-string */\n          <>\n            <Text as=\"p\">Here is the JSON representation of the document:</Text>\n\n            <Card padding={3} overflow=\"auto\" radius={2} shadow={1} tone=\"inherit\">\n              <Code language=\"json\" size={[1, 1, 2]}>\n                {JSON.stringify(value, null, 2)}\n              </Code>\n            </Card>\n          </>\n          /* eslint-enable i18next/no-literal-string */\n        )}\n      </Stack>\n    </ErrorPane>\n  )\n}\n","import {DialogProvider, type DialogProviderProps, PortalProvider} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useMemo} from 'react'\nimport {getSanityCreateLinkMetadata, useZIndex} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {PaneFooter} from '../../../components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {DocumentStatusBar} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n  // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n  'fixed',\n  'fixed',\n  // And we use the `position: absolute` strategy (within panes) on wide screens.\n  'absolute',\n]\n\nexport function DocumentLayoutFooter({\n  documentPanelPortalElement,\n  setFooterElement,\n  setActionsBoxElement,\n}: {\n  documentPanelPortalElement: HTMLElement | null\n  setFooterElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n  setActionsBoxElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n}) {\n  const zOffsets = useZIndex()\n\n  const {value} = useDocumentPane()\n  const portalElements = useMemo(\n    () => ({[DOCUMENT_PANEL_PORTAL_ELEMENT]: documentPanelPortalElement}),\n    [documentPanelPortalElement],\n  )\n\n  const createLinkMetadata = getSanityCreateLinkMetadata(value)\n  return (\n    // These providers are added because we want the dialogs in `DocumentStatusBar` to be scoped to the document pane\n    // The portal element comes from `DocumentPanel`.\n    <PortalProvider __unstable_elements={portalElements}>\n      <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.portal}>\n        <PaneFooter ref={setFooterElement} padding={1}>\n          <TooltipDelayGroupProvider>\n            <DocumentStatusBar\n              actionsBoxRef={setActionsBoxElement}\n              createLinkMetadata={createLinkMetadata}\n            />\n          </TooltipDelayGroupProvider>\n        </PaneFooter>\n      </DialogProvider>\n    </PortalProvider>\n  )\n}\n","import {DialogProvider, type DialogProviderProps, Flex, useElementRect} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  ChangeConnectorRoot,\n  type DocumentFieldActionNode,\n  type DocumentInspectorMenuItem,\n  FieldActionsProvider,\n  FieldActionsResolver,\n  GetFormValueProvider,\n  type Path,\n  useGlobalCopyPasteElementHandler,\n  useTranslation,\n  useZIndex,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Pane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {useDocumentIdStack} from '../../../hooks/useDocumentIdStack'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {\n  DOCUMENT_INSPECTOR_MIN_WIDTH,\n  DOCUMENT_PANEL_INITIAL_MIN_WIDTH,\n  DOCUMENT_PANEL_MIN_WIDTH,\n} from '../constants'\nimport {DocumentInspectorMenuItemsResolver} from '../DocumentInspectorMenuItemsResolver'\nimport {DocumentOperationResults} from '../DocumentOperationResults'\nimport {DocumentPanel} from '../documentPanel'\nimport {DocumentPanelHeader} from '../documentPanel/header'\nimport {DocumentActionShortcuts} from '../keyboardShortcuts'\nimport {getMenuItems} from '../menuItems'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {DocumentLayoutError} from './DocumentLayoutError'\nimport {DocumentLayoutFooter} from './DocumentLayoutFooter'\n\nconst EMPTY_ARRAY: [] = []\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n  // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n  'fixed',\n  'fixed',\n  // And we use the `position: absolute` strategy (within panes) on wide screens.\n  'absolute',\n]\n\nconst StyledChangeConnectorRoot = styled(ChangeConnectorRoot)`\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  min-height: 0;\n  min-width: 0;\n`\n\nexport function DocumentLayout() {\n  const {\n    changesOpen,\n    displayed,\n    documentId,\n    documentType,\n    editState,\n    fieldActions,\n    focusPath,\n    inspectOpen,\n    inspector,\n    inspectors,\n    onFocus,\n    onHistoryOpen,\n    onMenuAction,\n    onPathOpen,\n    paneKey,\n    schemaType,\n    value,\n    isInitialValueLoading,\n    ready,\n    previewUrl,\n  } = useDocumentPane()\n  const {params: paneParams} = usePaneRouter()\n  const {features} = useStructureTool()\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {collapsed: layoutCollapsed} = usePaneLayout()\n\n  const zOffsets = useZIndex()\n\n  const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n  const [footerElement, setFooterElement] = useState<HTMLDivElement | null>(null)\n  const [headerElement, setHeaderElement] = useState<HTMLDivElement | null>(null)\n\n  const [actionsBoxElement, setActionsBoxElement] = useState<HTMLDivElement | null>(null)\n  const [documentPanelPortalElement, setDocumentPanelPortalElement] = useState<HTMLElement | null>(\n    null,\n  )\n\n  useGlobalCopyPasteElementHandler({\n    element: rootElement,\n    focusPath,\n    value,\n  })\n\n  const [inspectorMenuItems, setInspectorMenuItems] = useState<DocumentInspectorMenuItem[]>([])\n  const [rootFieldActionNodes, setRootFieldActionNodes] = useState<DocumentFieldActionNode[]>([])\n\n  const footerRect = useElementRect(footerElement)\n  const headerRect = useElementRect(headerElement)\n  const footerHeight = footerRect?.height\n  const headerHeight = headerRect?.height\n  const currentMinWidth =\n    DOCUMENT_PANEL_INITIAL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n  const minWidth = DOCUMENT_PANEL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n\n  const currentInspector = useMemo(\n    () => inspectors?.find((i) => i.name === inspector?.name),\n    [inspectors, inspector?.name],\n  )\n\n  const documentIdStack = useDocumentIdStack({displayed, documentId, editState})\n\n  const hasValue = Boolean(value)\n\n  const menuItems = useMemo(\n    () =>\n      getMenuItems({\n        currentInspector,\n        features,\n        hasValue,\n        inspectorMenuItems,\n        inspectors,\n        previewUrl,\n        documentIdStack,\n        t,\n      }),\n    [\n      currentInspector,\n      documentIdStack,\n      features,\n      hasValue,\n      inspectorMenuItems,\n      inspectors,\n      previewUrl,\n      t,\n    ],\n  )\n\n  const handleKeyUp = useCallback(\n    (event: React.KeyboardEvent<HTMLDivElement>) => {\n      for (const item of menuItems) {\n        if (item.shortcut) {\n          if (isHotkey(item.shortcut, event)) {\n            event.preventDefault()\n            event.stopPropagation()\n            onMenuAction(item)\n            return\n          }\n        }\n      }\n    },\n    [onMenuAction, menuItems],\n  )\n\n  const onConnectorSetFocus = useCallback(\n    (path: Path) => {\n      onPathOpen(path)\n      onFocus(path)\n    },\n    [onPathOpen, onFocus],\n  )\n\n  if (!schemaType) {\n    return (\n      <DocumentLayoutError\n        currentMinWidth={currentMinWidth}\n        documentType={documentType}\n        minWidth={minWidth}\n        paneKey={paneKey}\n        value={value}\n      />\n    )\n  }\n\n  return (\n    <GetFormValueProvider value={value}>\n      {inspectors.length > 0 && (\n        <DocumentInspectorMenuItemsResolver\n          documentId={documentId}\n          documentType={documentType}\n          inspectors={inspectors}\n          onMenuItems={setInspectorMenuItems}\n        />\n      )}\n\n      {fieldActions.length > 0 && schemaType && (\n        <FieldActionsResolver\n          actions={fieldActions}\n          documentId={documentId}\n          documentType={documentType}\n          onActions={setRootFieldActionNodes}\n          path={EMPTY_ARRAY}\n          schemaType={schemaType}\n        />\n      )}\n\n      <FieldActionsProvider actions={rootFieldActionNodes} path={EMPTY_ARRAY}>\n        <DocumentActionShortcuts\n          actionsBoxElement={actionsBoxElement}\n          as={Pane}\n          currentMinWidth={currentMinWidth}\n          data-testid=\"document-pane\"\n          flex={2.5}\n          id={paneKey}\n          minWidth={minWidth}\n          onKeyUp={handleKeyUp}\n          rootRef={setRootElement}\n        >\n          <DocumentPanelHeader ref={setHeaderElement} menuItems={menuItems} />\n          <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.paneDialog}>\n            <Flex direction=\"column\" flex={1} height={layoutCollapsed ? undefined : 'fill'}>\n              <StyledChangeConnectorRoot\n                data-testid=\"change-connector-root\"\n                isReviewChangesOpen={changesOpen && paneParams?.changesInspectorTab === 'review'}\n                onOpenReviewChanges={onHistoryOpen}\n                onSetFocus={onConnectorSetFocus}\n              >\n                <DocumentPanel\n                  footerHeight={footerHeight || null}\n                  headerHeight={headerHeight || null}\n                  isInspectOpen={inspectOpen}\n                  rootElement={rootElement}\n                  setDocumentPanelPortalElement={setDocumentPanelPortalElement}\n                  footer={\n                    <DocumentLayoutFooter\n                      documentPanelPortalElement={documentPanelPortalElement}\n                      setFooterElement={setFooterElement}\n                      setActionsBoxElement={setActionsBoxElement}\n                    />\n                  }\n                />\n              </StyledChangeConnectorRoot>\n            </Flex>\n          </DialogProvider>\n          <DocumentOperationResults />\n        </DocumentActionShortcuts>\n      </FieldActionsProvider>\n    </GetFormValueProvider>\n  )\n}\n","import {type ComponentType} from 'react'\nimport {type DocumentLayoutProps, useMiddlewareComponents} from 'sanity'\n\nimport {DocumentLayout} from './DocumentLayout'\nimport {pickDocumentLayoutComponent} from './pickDocumentLayoutComponent'\n\n/**\n * A hook that returns the document layout composed\n * by the Components API (`document.components.layout`).\n */\nexport function useDocumentLayoutComponent(): ComponentType<\n  Omit<DocumentLayoutProps, 'renderDefault'>\n> {\n  return useMiddlewareComponents({\n    pick: pickDocumentLayoutComponent,\n    defaultComponent: DocumentLayout,\n  })\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/**\n * @internal\n */\nexport const DocumentURLCopied = defineEvent({\n  name: 'DocumentURLCopied',\n  version: 1,\n  description: 'User copied document URL to clipboard',\n})\n","import {type Template} from 'sanity'\n\ninterface InitialValueOptions {\n  documentType: string\n  panePayload?: unknown\n  templateName?: string\n  templateParams?: Record<string, unknown>\n  urlTemplate?: string\n}\n\n/**\n * @internal\n */\nexport function getInitialValueTemplateOpts(\n  templates: Template[],\n  opts: InitialValueOptions,\n): {templateName: string; templateParams: Record<string, unknown>} {\n  const payload = opts.panePayload || {}\n  const structureNodeTemplate = opts.templateName\n\n  if (opts.urlTemplate && structureNodeTemplate && structureNodeTemplate !== opts.urlTemplate) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      `Conflicting templates: URL says \"${opts.urlTemplate}\", structure node says \"${structureNodeTemplate}\". Using \"${structureNodeTemplate}\".`,\n    )\n  }\n\n  const template = structureNodeTemplate || opts.urlTemplate\n  const typeTemplates = templates.filter((t) => t.schemaType === opts.documentType)\n\n  const templateParams = {\n    ...opts.templateParams,\n    ...(typeof payload === 'object' ? payload || {} : {}),\n  }\n\n  let templateName = template\n\n  // If we have not specified a specific template, and we only have a single\n  // template available for a schema type, use it\n  if (!template && typeTemplates.length === 1) {\n    templateName = typeTemplates[0].id\n  }\n\n  return {templateName: templateName!, templateParams}\n}\n","import {useMemo} from 'react'\nimport {useInitialValue, useTemplates, useUnique} from 'sanity'\n\nimport {type PaneRouterContextValue, usePaneRouter} from '../../components'\nimport {type DocumentPaneNode} from '../../types'\nimport {getInitialValueTemplateOpts} from './getInitialValueTemplateOpts'\n\nexport const useDocumentPaneInitialValue = ({\n  paneOptions,\n  documentType,\n  documentId,\n  params,\n}: {\n  paneOptions: DocumentPaneNode['options']\n  documentType: string\n  documentId: string\n  params: NonNullable<PaneRouterContextValue['params']>\n}) => {\n  const templates = useTemplates()\n  const paneRouter = usePaneRouter()\n  const panePayload = useUnique(paneRouter.payload)\n\n  const {templateName, templateParams} = useMemo(\n    () =>\n      getInitialValueTemplateOpts(templates, {\n        documentType,\n        templateName: paneOptions.template,\n        templateParams: paneOptions.templateParameters,\n        panePayload,\n        urlTemplate: params.template,\n      }),\n    [documentType, paneOptions, params.template, panePayload, templates],\n  )\n\n  const initialValueRaw = useInitialValue({\n    documentId,\n    documentType,\n    templateName,\n    templateParams,\n    version: params.version,\n  })\n\n  const initialValue = useUnique(initialValueRaw)\n  return initialValue\n}\n","import {omit} from 'lodash'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type DocumentInspector, useSource} from 'sanity'\n\nimport {type PaneRouterContextValue} from '../../components'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {HISTORY_INSPECTOR_NAME, INSPECT_ACTION_PREFIX} from './constants'\n\nexport function useDocumentPaneInspector({\n  documentId,\n  documentType,\n  params,\n  setParams,\n}: {\n  params: NonNullable<PaneRouterContextValue['params']>\n  documentId: string\n  documentType: string\n  setParams: (params: Record<string, string | undefined>) => void\n}) {\n  const {features} = useStructureTool()\n  const source = useSource()\n  const inspectorsResolver = source.document.inspectors\n\n  const inspectors: DocumentInspector[] = useMemo(\n    () => inspectorsResolver({documentId, documentType}),\n    [documentId, documentType, inspectorsResolver],\n  )\n\n  const [inspectorName, setInspectorName] = useState<string | null>(() => params.inspect || null)\n\n  // Handle inspector name changes from URL\n  const inspectParamRef = useRef<string | undefined>(params.inspect)\n  useEffect(() => {\n    if (inspectParamRef.current !== params.inspect) {\n      inspectParamRef.current = params.inspect\n      setInspectorName(params.inspect || null)\n    }\n  }, [params.inspect])\n\n  const currentInspector = useMemo(\n    () => inspectors?.find((i) => i.name === inspectorName),\n    [inspectors, inspectorName],\n  )\n  const historyInspector = useMemo(\n    () => inspectors.find((i) => i.name === HISTORY_INSPECTOR_NAME),\n    [inspectors],\n  )\n\n  const changesOpen = currentInspector?.name === HISTORY_INSPECTOR_NAME\n\n  const closeInspector = useCallback(\n    (closeInspectorName?: string) => {\n      const inspector = closeInspectorName && inspectors.find((i) => i.name === closeInspectorName)\n\n      if (closeInspectorName && !inspector) {\n        console.warn(`No inspector named \"${closeInspectorName}\"`)\n        return\n      }\n\n      if (!currentInspector) {\n        return\n      }\n\n      if (inspector) {\n        const result = inspector.onClose?.({params}) ?? {params}\n\n        setInspectorName(null)\n        inspectParamRef.current = undefined\n\n        setParams({...result.params, inspect: undefined})\n\n        return\n      }\n\n      if (currentInspector) {\n        const result = currentInspector.onClose?.({params}) ?? {params}\n\n        setInspectorName(null)\n        inspectParamRef.current = undefined\n\n        setParams({...result.params, inspect: undefined})\n      }\n    },\n    [currentInspector, inspectors, params, setParams],\n  )\n\n  const openInspector = useCallback(\n    (nextInspectorName: string, paneParams?: Record<string, string>) => {\n      const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n      if (!nextInspector) {\n        console.warn(`No inspector named \"${nextInspectorName}\"`)\n        return\n      }\n\n      // if the inspector is already open, only update params\n      if (currentInspector?.name === nextInspector.name) {\n        setParams({...params, ...paneParams, inspect: nextInspector.name})\n        return\n      }\n\n      let currentParams = params\n\n      if (currentInspector) {\n        const closeResult = nextInspector.onClose?.({params: currentParams}) ?? {\n          params: currentParams,\n        }\n\n        currentParams = closeResult.params\n      }\n\n      const result = nextInspector.onOpen?.({params: currentParams}) ?? {params: currentParams}\n\n      setInspectorName(nextInspector.name)\n      inspectParamRef.current = nextInspector.name\n\n      setParams({...result.params, ...paneParams, inspect: nextInspector.name})\n    },\n    [currentInspector, inspectors, params, setParams],\n  )\n  const handleHistoryClose = useCallback(() => {\n    if (historyInspector) {\n      closeInspector(historyInspector.name)\n    }\n  }, [closeInspector, historyInspector])\n\n  const handleHistoryOpen = useCallback(() => {\n    if (!features.reviewChanges) {\n      return\n    }\n\n    if (historyInspector) {\n      openInspector(historyInspector.name, {changesInspectorTab: 'review'})\n    }\n  }, [features.reviewChanges, openInspector, historyInspector])\n\n  const inspectOpen = params.inspect === 'on'\n\n  const toggleLegacyInspect = useCallback(\n    (toggle = !inspectOpen) => {\n      if (toggle) {\n        setParams({...params, inspect: 'on'})\n      } else {\n        setParams(omit(params, 'inspect'))\n      }\n    },\n    [inspectOpen, params, setParams],\n  )\n\n  const handleLegacyInspectClose = useCallback(\n    () => toggleLegacyInspect(false),\n    [toggleLegacyInspect],\n  )\n\n  const handleInspectorAction = useCallback(\n    (item: PaneMenuItem) => {\n      if (item.action === 'inspect') {\n        toggleLegacyInspect(true)\n        return true\n      }\n\n      if (typeof item.action !== 'string') return false\n      const nextInspectorName = item.action.slice(INSPECT_ACTION_PREFIX.length)\n      const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n      if (nextInspector) {\n        if (nextInspector.name === inspectorName) {\n          closeInspector(nextInspector.name)\n        } else {\n          openInspector(nextInspector.name)\n        }\n        return true\n      }\n      return false\n    },\n    [closeInspector, inspectorName, inspectors, openInspector, toggleLegacyInspect],\n  )\n\n  return {\n    changesOpen,\n    currentInspector,\n    inspectors,\n    closeInspector,\n    openInspector,\n    handleHistoryClose,\n    handleHistoryOpen,\n    handleInspectorAction,\n    // TODO: Deprecate this legacy inspect toggle it's used to render the <InspectDialog /> component\n    handleLegacyInspectClose,\n    inspectOpen,\n  }\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useEffect, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {BehaviorSubject, from, of} from 'rxjs'\nimport {catchError, debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators'\nimport {isRecord, useSource} from 'sanity'\n\nconst isSanityDocument = (value: unknown): value is SanityDocument =>\n  isRecord(value) && typeof value._id === 'string' && typeof value._type === 'string'\n\nexport function usePreviewUrl(value: Partial<SanityDocument> | undefined): string | undefined {\n  const {resolveProductionUrl} = useSource().document\n  const subject = useMemo(\n    () => new BehaviorSubject<Partial<SanityDocument> | undefined>(undefined),\n    [],\n  )\n\n  useEffect(() => {\n    subject.next(value)\n  }, [subject, value])\n\n  const resolvedUrlObservable = useMemo(() => {\n    return subject.asObservable().pipe(\n      // this so that the preview URL isn't fetched on every keystroke\n      distinctUntilChanged(),\n      debounceTime(500),\n      switchMap((document) =>\n        isSanityDocument(document) ? from(resolveProductionUrl({document})) : of(undefined),\n      ),\n      distinctUntilChanged(),\n      catchError((err) => {\n        const message =\n          isRecord(err) && typeof err.message === 'string' ? err.message : 'Unknown error'\n        throw new Error(`An error was thrown while trying to get your preview url: ${message}`)\n      }),\n    )\n  }, [resolveProductionUrl, subject])\n\n  return useObservable(resolvedUrlObservable)\n}\n","/* eslint-disable camelcase */\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {type ObjectSchemaType, type SanityDocument, type SanityDocumentLike} from '@sanity/types'\nimport {useToast} from '@sanity/ui'\nimport {fromString as pathFromString, resolveKeyedPath} from '@sanity/util/paths'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n  type DocumentActionsContext,\n  type DocumentActionsVersionType,\n  type DocumentFieldAction,\n  type EditStateFor,\n  EMPTY_ARRAY,\n  getPublishedId,\n  isPerspectiveWriteable,\n  isVersionId,\n  type PartialContext,\n  useCopyPaste,\n  useDocumentForm,\n  usePerspective,\n  useSchema,\n  useSource,\n  useStudioUrl,\n  useTranslation,\n  useUnique,\n  useWorkspace,\n} from 'sanity'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {usePaneRouter} from '../../components'\nimport {useDiffViewRouter} from '../../diffView/hooks/useDiffViewRouter'\nimport {useDocumentIdStack} from '../../hooks/useDocumentIdStack'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type PaneMenuItem} from '../../types'\nimport {DocumentURLCopied} from './__telemetry__'\nimport {DEFAULT_MENU_ITEM_GROUPS, EMPTY_PARAMS, INSPECT_ACTION_PREFIX} from './constants'\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\nimport {\n  type DocumentPaneProviderProps as DocumentPaneProviderWrapperProps,\n  type HistoryStoreProps,\n} from './types'\nimport {useDocumentPaneInitialValue} from './useDocumentPaneInitialValue'\nimport {useDocumentPaneInspector} from './useDocumentPaneInspector'\nimport {usePreviewUrl} from './usePreviewUrl'\n\ninterface DocumentPaneProviderProps extends DocumentPaneProviderWrapperProps {\n  historyStore: HistoryStoreProps\n}\n\n/**\n * @internal\n */\n// eslint-disable-next-line complexity, max-statements\nexport const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => {\n  const {children, index, pane, paneKey, onFocusPath, forcedVersion, historyStore} = props\n  const {\n    store: timelineStore,\n    error: timelineError,\n    ready: timelineReady,\n    revisionDocument,\n    onOlderRevision,\n    sinceDocument,\n    isPristine,\n    revisionId,\n    lastNonDeletedRevId,\n  } = historyStore\n\n  const schema = useSchema()\n  const {setDocumentMeta} = useCopyPaste()\n  const {\n    document: {\n      actions: documentActions,\n      badges: documentBadges,\n      unstable_fieldActions: fieldActionsResolver,\n      unstable_languageFilter: languageFilterResolver,\n      drafts: {enabled: draftsEnabled},\n    },\n  } = useSource()\n  const telemetry = useTelemetry()\n  const paneRouter = usePaneRouter()\n  const setPaneParams = paneRouter.setParams\n  const {push: pushToast} = useToast()\n  const {\n    options,\n    menuItemGroups = DEFAULT_MENU_ITEM_GROUPS,\n    title = null,\n    views: viewsProp = [],\n  } = pane\n  const paneOptions = useUnique(options)\n  const documentIdRaw = paneOptions.id\n  const documentId = getPublishedId(documentIdRaw)\n  const documentType = options.type\n  const params = useUnique(paneRouter.params) || EMPTY_PARAMS\n  const {buildStudioUrl} = useStudioUrl()\n\n  const perspective = usePerspective()\n\n  const {\n    document: {\n      drafts: {enabled: isDraftModelEnabled},\n    },\n  } = useWorkspace()\n\n  const {selectedReleaseId, selectedPerspectiveName} = useMemo(() => {\n    // TODO: COREL - Remove this after updating sanity-assist to use <PerspectiveProvider>\n    if (forcedVersion) {\n      return forcedVersion\n    }\n    return {\n      selectedPerspectiveName: perspective.selectedPerspectiveName,\n      selectedReleaseId: perspective.selectedReleaseId,\n    }\n  }, [forcedVersion, perspective.selectedPerspectiveName, perspective.selectedReleaseId])\n\n  const diffViewRouter = useDiffViewRouter()\n\n  const initialValue = useDocumentPaneInitialValue({\n    paneOptions,\n    documentId,\n    documentType,\n    params,\n  })\n\n  const isInitialValueLoading = initialValue.loading\n  const {\n    changesOpen,\n    currentInspector,\n    inspectors,\n    closeInspector,\n    openInspector,\n    handleHistoryClose,\n    handleHistoryOpen,\n    handleInspectorAction,\n    inspectOpen,\n    handleLegacyInspectClose,\n  } = useDocumentPaneInspector({documentId, documentType, params, setParams: setPaneParams})\n\n  const [isDeleting, setIsDeleting] = useState(false)\n\n  /**\n   * Determine if the current document is deleted.\n   *\n   * When the timeline is available – we check for the absence of an editable document pair\n   * (both draft + published versions) as well as a non 'pristine' timeline (i.e. a timeline that consists\n   * of at least one chunk).\n   *\n   * In the _very rare_ case where the timeline cannot be loaded – we skip this check and always assume\n   * the document is NOT deleted. Since we can't accurately determine document deleted status without history,\n   * skipping this check means that in these cases, users will at least be able to create new documents\n   * without them being incorrectly marked as deleted.\n   */\n  const getIsDeleted = useCallback(\n    (editState: EditStateFor) => {\n      if (!timelineReady) return false\n      return (\n        Boolean(!editState?.draft && !editState?.published && !editState?.version) && !isPristine\n      )\n    },\n    [timelineReady, isPristine],\n  )\n\n  const getComparisonValue = useCallback(\n    (editState: EditStateFor) => {\n      return changesOpen ? sinceDocument || editState?.published : editState?.published || null\n    },\n    [changesOpen, sinceDocument],\n  )\n\n  const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n\n  const getIsReadOnly = useCallback(\n    (editState: EditStateFor): boolean => {\n      const isDeleted = getIsDeleted(editState)\n      const seeingHistoryDocument = Boolean(params.rev)\n      return (\n        seeingHistoryDocument ||\n        isDeleting ||\n        isDeleted ||\n        !isPerspectiveWriteable({\n          selectedPerspective: perspective.selectedPerspective,\n          isDraftModelEnabled,\n          schemaType,\n        }).result\n      )\n    },\n    [\n      getIsDeleted,\n      isDeleting,\n      isDraftModelEnabled,\n      params.rev,\n      perspective.selectedPerspective,\n      schemaType,\n    ],\n  )\n\n  const getDisplayed = useCallback(\n    (value: SanityDocumentLike) => {\n      if (onOlderRevision) {\n        return revisionDocument || {_id: value._id, _type: value._type}\n      }\n      return value\n    },\n    [onOlderRevision, revisionDocument],\n  )\n\n  const {\n    editState,\n    connectionState,\n    focusPath,\n    onChange,\n    validation,\n    ready: formReady,\n    value,\n    formState,\n    permissions,\n    onPathOpen,\n    isPermissionsLoading,\n    formStateRef,\n    onProgrammaticFocus,\n\n    collapsedFieldSets,\n    collapsedPaths,\n    onBlur,\n    onFocus,\n    onSetActiveFieldGroup,\n    onSetCollapsedPath,\n    onSetCollapsedFieldSet,\n    openPath,\n  } = useDocumentForm({\n    documentType,\n    documentId,\n    initialValue: initialValue,\n    comparisonValue: getComparisonValue,\n    releaseId: selectedReleaseId,\n    selectedPerspectiveName,\n    initialFocusPath: params.path ? pathFromString(params.path) : EMPTY_ARRAY,\n    readOnly: getIsReadOnly,\n    onFocusPath,\n    getFormDocumentValue: getDisplayed,\n  })\n\n  const getDocumentVersionType = useCallback(() => {\n    let version: DocumentActionsVersionType\n    switch (true) {\n      case Boolean(params.rev):\n        version = 'revision'\n        break\n      case selectedReleaseId && isVersionId(value._id):\n        version = 'version'\n        break\n      case selectedPerspectiveName === 'published':\n        version = 'published'\n        break\n      case draftsEnabled:\n        version = 'draft'\n        break\n      default:\n        version = 'published'\n    }\n\n    return version\n  }, [params.rev, selectedReleaseId, value._id, selectedPerspectiveName, draftsEnabled])\n\n  const actionsPerspective = useMemo(() => getDocumentVersionType(), [getDocumentVersionType])\n\n  const documentActionsProps: PartialContext<DocumentActionsContext> = useMemo(\n    () => ({\n      schemaType: documentType,\n      documentId,\n      versionType: actionsPerspective,\n      releaseId: selectedReleaseId,\n    }),\n    [documentType, documentId, actionsPerspective, selectedReleaseId],\n  )\n\n  // Resolve document actions\n  const actions = useMemo(\n    () => documentActions(documentActionsProps),\n    [documentActions, documentActionsProps],\n  )\n\n  // Resolve document badges\n  const badges = useMemo(\n    () => documentBadges({schemaType: documentType, documentId}),\n    [documentBadges, documentId, documentType],\n  )\n\n  // Resolve document language filter\n  const languageFilter = useMemo(\n    () => languageFilterResolver({schemaType: documentType, documentId}),\n    [documentId, documentType, languageFilterResolver],\n  )\n\n  const views = useUnique(viewsProp)\n\n  const activeViewId = params.view || (views[0] && views[0].id) || null\n\n  // TODO: this may cause a lot of churn. May be a good idea to prevent these\n  // requests unless the menu is open somehow\n  const previewUrl = usePreviewUrl(value)\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const fieldActions: DocumentFieldAction[] = useMemo(\n    () => (schemaType ? fieldActionsResolver({documentId, documentType, schemaType}) : []),\n    [documentId, documentType, fieldActionsResolver, schemaType],\n  )\n\n  /**\n   * Note that in addition to connection and edit state, we also wait for a valid document timeline\n   * range to be loaded. This means if we're loading an older revision, the full transaction range must\n   * be loaded in full prior to the document being displayed.\n   *\n   * Previously, visiting studio URLs with timeline params would display the 'current' document and then\n   * 'snap' in the older revision, which was disorienting and could happen mid-edit.\n   *\n   * In the event that the timeline cannot be loaded due to TimelineController errors or blocked requests,\n   * we skip this readiness check to ensure that users aren't locked out of editing. Trying to select\n   * a timeline revision in this instance will display an error localized to the popover itself.\n   */\n  const ready = formReady && (!params.rev || timelineReady || !!timelineError)\n\n  const displayed: Partial<SanityDocument> | undefined = useMemo(\n    () => getDisplayed(value),\n    [getDisplayed, value],\n  )\n\n  const {previousId} = useDocumentIdStack({displayed, documentId, editState})\n\n  const setTimelineRange = useCallback(\n    (newSince: string, newRev: string | null) => {\n      setPaneParams({\n        ...params,\n        since: newSince,\n        rev: newRev || undefined,\n      })\n    },\n    [params, setPaneParams],\n  )\n\n  const handlePaneClose = useCallback(() => paneRouter.closeCurrent(), [paneRouter])\n\n  const handlePaneSplit = useCallback(() => paneRouter.duplicateCurrent(), [paneRouter])\n\n  const handleMenuAction = useCallback(\n    async (item: PaneMenuItem) => {\n      if (item.action === 'production-preview' && previewUrl) {\n        window.open(previewUrl)\n        return true\n      }\n\n      if (item.action === 'copy-document-url' && navigator) {\n        telemetry.log(DocumentURLCopied)\n        // Chose to copy the user's current URL instead of\n        // the document's edit intent link because\n        // of bugs when resolving a document that has\n        // multiple access paths within Structure\n        const copyUrl = buildStudioUrl({\n          coreUi: (url) => `${url}/intent/edit/id=${documentId};type=${documentType}`,\n        })\n        await navigator.clipboard.writeText(copyUrl)\n        pushToast({\n          id: 'copy-document-url',\n          status: 'info',\n          title: t('panes.document-operation-results.operation-success_copy-url'),\n        })\n        return true\n      }\n\n      if (item.action === 'reviewChanges') {\n        handleHistoryOpen()\n        return true\n      }\n\n      if (\n        item.action === 'inspect' ||\n        (typeof item.action === 'string' && item.action.startsWith(INSPECT_ACTION_PREFIX))\n      ) {\n        handleInspectorAction(item)\n      }\n\n      if (item.action === 'compareVersions' && typeof previousId !== 'undefined') {\n        diffViewRouter.navigateDiffView({\n          mode: 'version',\n          previousDocument: {\n            type: documentType,\n            id: previousId,\n          },\n          nextDocument: {\n            type: documentType,\n            id: value._id,\n          },\n        })\n        return true\n      }\n\n      return false\n    },\n    [\n      previewUrl,\n      previousId,\n      telemetry,\n      buildStudioUrl,\n      pushToast,\n      t,\n      documentId,\n      documentType,\n      handleHistoryOpen,\n      handleInspectorAction,\n      diffViewRouter,\n      value._id,\n    ],\n  )\n\n  useEffect(() => {\n    setDocumentMeta({\n      documentId,\n      documentType,\n      schemaType: schemaType!,\n      onChange,\n    })\n  }, [documentId, documentType, schemaType, onChange, setDocumentMeta])\n\n  const compareValue = useMemo(() => getComparisonValue(editState), [editState, getComparisonValue])\n  const isDeleted = useMemo(() => getIsDeleted(editState), [editState, getIsDeleted])\n  const revisionNotFound = onOlderRevision && !revisionDocument\n\n  const documentPane: DocumentPaneContextValue = useMemo(\n    () =>\n      ({\n        actions,\n        activeViewId,\n        badges,\n        changesOpen,\n        closeInspector,\n        collapsedFieldSets,\n        collapsedPaths,\n        compareValue,\n        connectionState,\n        displayed,\n        documentId,\n        documentIdRaw,\n        documentType,\n        editState,\n        fieldActions,\n        focusPath,\n        inspector: currentInspector || null,\n        inspectors,\n        onBlur,\n        onChange,\n        onFocus,\n        onPathOpen,\n        onHistoryClose: handleHistoryClose,\n        onHistoryOpen: handleHistoryOpen,\n        onInspectClose: handleLegacyInspectClose,\n        onMenuAction: handleMenuAction,\n        onPaneClose: handlePaneClose,\n        onPaneSplit: handlePaneSplit,\n        onSetActiveFieldGroup,\n        onSetCollapsedPath,\n        onSetCollapsedFieldSet,\n        openInspector,\n        openPath,\n        index,\n        inspectOpen,\n        validation,\n        menuItemGroups: menuItemGroups || [],\n        paneKey,\n        previewUrl,\n        ready,\n        schemaType: schemaType!,\n        isPermissionsLoading,\n        isInitialValueLoading,\n        permissions,\n        setTimelineRange,\n        setIsDeleting,\n        isDeleting,\n        isDeleted,\n        timelineError,\n        timelineStore,\n        title,\n        value,\n        selectedReleaseId,\n        views,\n        formState,\n        unstable_languageFilter: languageFilter,\n        revisionId,\n        revisionNotFound,\n        lastNonDeletedRevId,\n      }) satisfies DocumentPaneContextValue,\n    [\n      actions,\n      activeViewId,\n      badges,\n      changesOpen,\n      closeInspector,\n      collapsedFieldSets,\n      collapsedPaths,\n      compareValue,\n      connectionState,\n      displayed,\n      documentId,\n      documentIdRaw,\n      documentType,\n      editState,\n      fieldActions,\n      focusPath,\n      currentInspector,\n      inspectors,\n      onBlur,\n      onChange,\n      onFocus,\n      onPathOpen,\n      handleHistoryClose,\n      handleHistoryOpen,\n      handleLegacyInspectClose,\n      handleMenuAction,\n      handlePaneClose,\n      handlePaneSplit,\n      onSetActiveFieldGroup,\n      onSetCollapsedPath,\n      onSetCollapsedFieldSet,\n      openInspector,\n      openPath,\n      index,\n      inspectOpen,\n      validation,\n      menuItemGroups,\n      paneKey,\n      previewUrl,\n      ready,\n      schemaType,\n      isPermissionsLoading,\n      isInitialValueLoading,\n      permissions,\n      setTimelineRange,\n      isDeleting,\n      isDeleted,\n      timelineError,\n      timelineStore,\n      title,\n      value,\n      selectedReleaseId,\n      views,\n      formState,\n      languageFilter,\n      revisionId,\n      revisionNotFound,\n      lastNonDeletedRevId,\n    ],\n  )\n\n  // Reset `focusPath` when `documentId` or `params.path` changes\n  useEffect(() => {\n    if (ready && params.path) {\n      const {path, ...restParams} = params\n      const pathFromUrl = resolveKeyedPath(formStateRef.current?.value, pathFromString(path))\n      onProgrammaticFocus(pathFromUrl)\n\n      // remove the `path`-param from url after we have consumed it as the initial focus path\n      paneRouter.setParams(restParams)\n    }\n\n    return undefined\n  }, [formStateRef, onProgrammaticFocus, paneRouter, params, ready])\n\n  return (\n    <DocumentPaneContext.Provider value={documentPane}>{children}</DocumentPaneContext.Provider>\n  )\n})\n\nDocumentPaneProvider.displayName = 'Memo(DocumentPaneProvider)'\n","import {type ObjectSchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\nimport {\n  EMPTY_ARRAY,\n  EventsProvider,\n  getDraftId,\n  getPublishedId,\n  getReleaseIdFromReleaseDocumentId,\n  getVersionId,\n  isDeleteDocumentGroupEvent,\n  isDeleteDocumentVersionEvent,\n  PerspectiveProvider,\n  useArchivedReleases,\n  useEditState,\n  useEventsStore,\n  usePerspective,\n  useSchema,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentEventsPane = (props: DocumentPaneProviderProps) => {\n  const {params = EMPTY_PARAMS} = usePaneRouter()\n  const options = usePaneOptions(props.pane.options, params)\n  const schema = useSchema()\n  const documentType = options.type\n  const schemaType = schema.get(options.type) as ObjectSchemaType | undefined\n  const liveEdit = Boolean(schemaType?.liveEdit)\n\n  const {selectedPerspectiveName, selectedReleaseId, selectedPerspective} = usePerspective()\n  const {data: archivedReleases} = useArchivedReleases()\n  const editState = useEditState(\n    getPublishedId(options.id),\n    documentType,\n    'default',\n    selectedReleaseId,\n  )\n\n  const showingPublishedOnDraft = liveEdit && selectedPerspective === 'drafts' && !editState?.draft\n  const {rev, since} = params\n  const historyVersion = params.historyVersion\n\n  const documentId = useMemo(() => {\n    if (showingPublishedOnDraft) {\n      return getPublishedId(options.id)\n    }\n    if (\n      historyVersion &&\n      archivedReleases.some(\n        (release) => getReleaseIdFromReleaseDocumentId(release._id) === historyVersion,\n      )\n    ) {\n      // Check if we have a release that matches with this historyVersion\n      return getVersionId(options.id, historyVersion)\n    }\n    if (typeof selectedPerspectiveName === 'undefined') {\n      return getDraftId(options.id)\n    }\n    if (selectedPerspectiveName === 'published') {\n      return getPublishedId(options.id)\n    }\n    if (selectedReleaseId) {\n      return getVersionId(options.id, selectedPerspectiveName)\n    }\n    return options.id\n  }, [\n    archivedReleases,\n    historyVersion,\n    selectedPerspectiveName,\n    options.id,\n    showingPublishedOnDraft,\n    selectedReleaseId,\n  ])\n\n  const eventsStore = useEventsStore({documentId, documentType: options.type, rev, since})\n\n  const historyStoreProps = useMemo(\n    () => ({\n      error: eventsStore.error,\n      revisionId: eventsStore.revision?.revisionId || null,\n      onOlderRevision: Boolean(rev && !eventsStore.revision?.loading),\n      revisionDocument: eventsStore.revision?.document || null,\n      sinceDocument: eventsStore.sinceRevision?.document || null,\n      ready: !eventsStore.loading,\n      isPristine: Boolean(eventsStore.events.length === 0),\n      lastNonDeletedRevId:\n        eventsStore.events.find(\n          (e) => !isDeleteDocumentGroupEvent(e) && !isDeleteDocumentVersionEvent(e),\n        )?.id || null,\n    }),\n    [eventsStore, rev],\n  )\n\n  const value = useMemo(() => eventsStore, [eventsStore])\n\n  return (\n    <EventsProvider value={value}>\n      {historyVersion ? (\n        <PerspectiveProvider\n          selectedPerspectiveName={historyVersion}\n          excludedPerspectives={EMPTY_ARRAY}\n        >\n          <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n        </PerspectiveProvider>\n      ) : (\n        <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n      )}\n    </EventsProvider>\n  )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useMemo, useState} from 'react'\nimport {getPublishedId, useTimelineSelector, useTimelineStore} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentPaneWithLegacyTimelineStore = (props: DocumentPaneProviderProps) => {\n  const {pane} = props\n  const paneRouter = usePaneRouter()\n  const options = usePaneOptions(pane.options, paneRouter.params)\n\n  const params = paneRouter.params || EMPTY_PARAMS\n\n  const [timelineError, setTimelineError] = useState<Error | null>(null)\n\n  const store = useTimelineStore({\n    documentId: getPublishedId(options.id),\n    documentType: options.type,\n    onError: setTimelineError,\n    rev: params.rev,\n    since: params.since,\n  })\n\n  const onOlderRevision = useTimelineSelector(store, (state) => state.onOlderRevision)\n  const revTime = useTimelineSelector(store, (state) => state.revTime)\n  const sinceAttributes = useTimelineSelector(store, (state) => state.sinceAttributes)\n  const timelineDisplayed = useTimelineSelector(store, (state) => state.timelineDisplayed)\n  const timelineReady = useTimelineSelector(store, (state) => state.timelineReady)\n  const isPristine = useTimelineSelector(store, (state) => state.isPristine)\n  const lastNonDeletedRevId = useTimelineSelector(store, (state) => state.lastNonDeletedRevId)\n\n  const historyStoreProps = useMemo(\n    () => ({\n      store,\n      error: timelineError,\n      revisionId: revTime?.id || null,\n      onOlderRevision: onOlderRevision,\n      revisionDocument: timelineDisplayed as SanityDocument | null,\n      sinceDocument: sinceAttributes as SanityDocument | null,\n      ready: timelineReady,\n      isPristine: Boolean(isPristine),\n      lastNonDeletedRevId,\n    }),\n    [\n      store,\n      timelineError,\n      revTime?.id,\n      onOlderRevision,\n      timelineDisplayed,\n      sinceAttributes,\n      timelineReady,\n      isPristine,\n      lastNonDeletedRevId,\n    ],\n  )\n  return <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n}\n","import {memo} from 'react'\nimport {useSource} from 'sanity'\n\nimport {DocumentEventsPane} from './DocumentEventsPane'\nimport {DocumentPaneWithLegacyTimelineStore} from './DocumentPaneLegacyTimeline'\nimport {type DocumentPaneProviderProps} from './types'\n\n/**\n * @internal\n */\nexport const DocumentPaneProviderWrapper = memo((props: DocumentPaneProviderProps) => {\n  const source = useSource()\n  if (source.beta?.eventsAPI?.documents) {\n    return <DocumentEventsPane {...props} />\n  }\n  return <DocumentPaneWithLegacyTimelineStore {...props} />\n})\nDocumentPaneProviderWrapper.displayName = 'Memo(DocumentPaneProviderWrapper)'\n","import {useEffect, useRef} from 'react'\nimport {usePerspective} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\n\n/**\n * This hooks takes care of resetting the history related params when the perspective changes.\n * It needs to be placed in a stable component, like the `DocumentPane`, which won't be unmounted when the perspective changes.\n */\nexport function useResetHistoryParams() {\n  const {params = EMPTY_PARAMS, setParams} = usePaneRouter()\n\n  const {selectedPerspectiveName} = usePerspective()\n  const isMounted = useRef(false)\n\n  const updateHistoryParams = useEffectEvent((_perspective?: string) => {\n    // Check if any of the history related params are set, and reset them, don't unnecessarily update the params\n    const PARAMS_TO_UPDATE = ['since', 'historyVersion', 'rev', 'preserveRev']\n    const shouldUpdateParams = PARAMS_TO_UPDATE.some((param) => params[param])\n    if (!shouldUpdateParams) return\n\n    setParams({\n      ...params,\n      // Reset the history related params when the perspective changes, as they don't make sense\n      // in the context of the new perspective - preserveRev is used when setting draft revision.\n      rev: params.preserveRev === 'true' ? params.rev : undefined,\n      preserveRev: undefined,\n      since: undefined,\n      historyVersion: undefined,\n    })\n  })\n  useEffect(() => {\n    // Skip the first run to avoid resetting the params on initial load\n    if (isMounted.current) {\n      updateHistoryParams(selectedPerspectiveName)\n    }\n  }, [selectedPerspectiveName])\n\n  useEffect(() => {\n    isMounted.current = true\n    return () => {\n      isMounted.current = false\n    }\n  }, [])\n}\n","import {type Path} from '@sanity/types'\nimport {Stack, Text} from '@sanity/ui'\nimport {fromString as pathFromString} from '@sanity/util/paths'\nimport {memo, useMemo} from 'react'\nimport {\n  CopyPasteProvider,\n  ReferenceInputOptionsProvider,\n  SourceProvider,\n  Translate,\n  useDocumentType,\n  usePerspective,\n  useSource,\n  useTemplatePermissions,\n  useTemplates,\n  useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {DiffViewDocumentLayout} from '../../diffView/plugin/DiffViewDocumentLayout'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type DocumentPaneNode} from '../../types'\nimport {ErrorPane} from '../error'\nimport {LoadingPane} from '../loading'\nimport {CommentsWrapper} from './comments'\nimport {useDocumentLayoutComponent} from './document-layout'\nimport {DocumentPaneProviderWrapper} from './DocumentPaneProviderWrapper'\nimport {type DocumentPaneProviderProps} from './types'\nimport {useResetHistoryParams} from './useResetHistoryParams'\n\ntype DocumentPaneOptions = DocumentPaneNode['options']\n\n/**\n * @internal\n */\nexport const DocumentPane = memo(function DocumentPane(props: DocumentPaneProviderProps) {\n  const {name: parentSourceName} = useSource()\n\n  return (\n    <SourceProvider name={props.pane.source || parentSourceName}>\n      <CopyPasteProvider>\n        <DocumentPaneInner {...props} />\n      </CopyPasteProvider>\n    </SourceProvider>\n  )\n})\n\nfunction DocumentPaneInner(props: DocumentPaneProviderProps) {\n  const {pane, paneKey} = props\n  const {resolveNewDocumentOptions} = useSource().document\n  const {selectedPerspectiveName} = usePerspective()\n  const paneRouter = usePaneRouter()\n  const options = usePaneOptions(pane.options, paneRouter.params)\n  const {documentType, isLoaded: isDocumentLoaded} = useDocumentType(options.id, options.type)\n  useResetHistoryParams()\n  const DocumentLayout = useDocumentLayoutComponent()\n\n  // The templates that should be creatable from inside this document pane.\n  // For example, from the \"Create new\" menu in reference inputs.\n  const templateItems = useMemo(() => {\n    return resolveNewDocumentOptions({\n      type: 'document',\n      documentId: options.id,\n      schemaType: options.type,\n    })\n  }, [options.id, options.type, resolveNewDocumentOptions])\n\n  const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n    templateItems,\n  })\n  const isLoaded = isDocumentLoaded && !isTemplatePermissionsLoading\n\n  const providerProps = useMemo(() => {\n    return isLoaded && documentType && options.type !== documentType\n      ? mergeDocumentType(props, options, documentType)\n      : props\n  }, [props, documentType, isLoaded, options])\n\n  const {ReferenceChildLink, handleEditReference, groupIndex, routerPanesState} = paneRouter\n  const childParams = routerPanesState[groupIndex + 1]?.[0].params || {}\n  const routerPanesStateLength = routerPanesState.length\n  const {parentRefPath} = childParams\n\n  const activePath: {path: Path; state: 'selected' | 'pressed' | 'none'} = useMemo(() => {\n    return parentRefPath\n      ? {\n          path: pathFromString(parentRefPath),\n          state:\n            // eslint-disable-next-line no-nested-ternary\n            groupIndex >= routerPanesStateLength - 1\n              ? 'none'\n              : groupIndex >= routerPanesStateLength - 2\n                ? 'selected'\n                : 'pressed',\n        }\n      : {path: [], state: 'none'}\n  }, [parentRefPath, groupIndex, routerPanesStateLength])\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  if (options.type === '*' && !isLoaded) {\n    return (\n      <LoadingPane\n        flex={2.5}\n        minWidth={320}\n        paneKey={paneKey}\n        title={t('panes.document-pane.document-not-found.loading')}\n      />\n    )\n  }\n\n  if (!documentType) {\n    return (\n      <ErrorPane\n        flex={2.5}\n        minWidth={320}\n        paneKey={paneKey}\n        title={t('panes.document-pane.document-not-found.title')}\n      >\n        <Stack space={4}>\n          <Text as=\"p\">\n            <Translate\n              t={t}\n              i18nKey=\"panes.document-pane.document-not-found.text\"\n              values={{id: options.id}}\n              components={{Code: ({children}) => <code>{children}</code>}}\n            />\n          </Text>\n        </Stack>\n      </ErrorPane>\n    )\n  }\n\n  return (\n    <DocumentPaneProviderWrapper\n      // this needs to be here to avoid formState from being re-used across (incompatible) document types\n      // see https://github.com/sanity-io/sanity/discussions/3794 for a description of the problem\n      key={`${documentType}-${options.id}-${selectedPerspectiveName || ''}`}\n      {...providerProps}\n    >\n      {/* NOTE: this is a temporary location for this provider until we */}\n      {/* stabilize the reference input options formally in the form builder */}\n      {/* eslint-disable-next-line react/jsx-pascal-case */}\n      <ReferenceInputOptionsProvider\n        EditReferenceLinkComponent={ReferenceChildLink}\n        onEditReference={handleEditReference}\n        initialValueTemplateItems={templatePermissions}\n        activePath={activePath}\n      >\n        <DiffViewDocumentLayout documentId={options.id} documentType={options.type}>\n          <CommentsWrapper documentId={options.id} documentType={options.type}>\n            <DocumentLayout documentId={options.id} documentType={options.type} />\n          </CommentsWrapper>\n        </DiffViewDocumentLayout>\n      </ReferenceInputOptionsProvider>\n    </DocumentPaneProviderWrapper>\n  )\n}\n\n/**\n * @internal\n */\nexport function usePaneOptions(\n  options: DocumentPaneOptions,\n  params: Record<string, string | undefined> = {},\n): DocumentPaneOptions {\n  const templates = useTemplates()\n\n  return useMemo(() => {\n    // The document type is provided, so return\n    if (options.type && options.type !== '*') {\n      return options\n    }\n\n    // Attempt to derive document type from the template configuration\n    const templateName = options.template || params.template\n    const template = templateName ? templates.find((t) => t.id === templateName) : undefined\n    const documentType = template?.schemaType\n\n    // No document type was found in a template\n    if (!documentType) {\n      return options\n    }\n\n    // The template provided the document type, so modify the pane’s `options` property\n    return {...options, type: documentType}\n  }, [options, params.template, templates])\n}\n\nfunction mergeDocumentType(\n  props: DocumentPaneProviderProps,\n  options: DocumentPaneOptions,\n  documentType: string,\n): DocumentPaneProviderProps {\n  return {\n    ...props,\n    pane: {\n      ...props.pane,\n      options: {...options, type: documentType},\n    },\n  }\n}\n","import {type SortOrder} from './types'\n\nexport const PARTIAL_PAGE_LIMIT = 100\nexport const FULL_LIST_LIMIT = 2000\nexport const DEFAULT_ORDERING: SortOrder = {by: [{field: '_updatedAt', direction: 'desc'}]}\nexport const EMPTY_RECORD: Record<string, unknown> = {}\n\nexport const ENABLE_LRU_MEMO = true\n","import {type SanityDocument} from '@sanity/types'\nimport {Box, Container, Flex, Heading, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n  CommandList,\n  type CommandListRenderItemCallback,\n  ErrorActions,\n  type GeneralPreviewLayoutKey,\n  getPublishedId,\n  isDev,\n  LoadingBlock,\n  SanityDefaultPreview,\n  Translate,\n  useSchema,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay, PaneContent, PaneItem, usePane, usePaneLayout} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {FULL_LIST_LIMIT} from './constants'\nimport {type DocumentListPaneItem, type LoadingVariant} from './types'\n\nconst RootBox = styled(Box)<{$opacity?: number}>`\n  position: relative;\n  opacity: ${(props) => props.$opacity || 1};\n  transition: opacity 0.4s;\n`\n\nconst CommandListBox = styled(Box)`\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 0;\n  bottom: 0;\n`\n\ninterface DocumentListPaneContentProps {\n  childItemId?: string\n  error: {message: string} | null\n  filterIsSimpleTypeConstraint: boolean\n  hasMaxItems?: boolean\n  muted?: boolean\n  hasSearchQuery: boolean\n  isActive?: boolean\n  isLazyLoading: boolean\n  isLoading: boolean\n  isConnected?: boolean\n  autoRetry?: boolean\n  canRetry: boolean\n  retryCount?: number\n  isRetrying?: boolean\n  items: DocumentListPaneItem[]\n  layout?: GeneralPreviewLayoutKey\n  loadingVariant?: LoadingVariant\n  onEndReached: () => void\n  onRetry?: () => void\n  paneTitle: string\n  searchInputElement: HTMLInputElement | null\n  showIcons: boolean\n}\n\nconst SKELETON_ITEMS = [...Array(30).keys()]\n\nfunction LoadingView(props: {layout?: GeneralPreviewLayoutKey}) {\n  const {layout} = props\n\n  return (\n    <Stack paddingX={3} paddingY={2} paddingTop={0} space={1}>\n      {SKELETON_ITEMS.map((num) => (\n        <SanityDefaultPreview isPlaceholder layout={layout} key={num} />\n      ))}\n    </Stack>\n  )\n}\n\nexport function DocumentListPaneContent(props: DocumentListPaneContentProps) {\n  const {\n    childItemId,\n    error,\n    isRetrying,\n    autoRetry,\n    filterIsSimpleTypeConstraint,\n    hasMaxItems,\n    hasSearchQuery,\n    isActive,\n    isLazyLoading,\n    muted,\n    isLoading,\n    isConnected,\n    retryCount,\n    canRetry,\n    items,\n    layout,\n    loadingVariant,\n    onEndReached,\n    onRetry,\n    paneTitle,\n    searchInputElement,\n    showIcons,\n  } = props\n\n  const schema = useSchema()\n\n  const {collapsed: layoutCollapsed} = usePaneLayout()\n  const {collapsed, index} = usePane()\n  const [shouldRender, setShouldRender] = useState(!collapsed)\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  const handleEndReached = useCallback(() => {\n    if (shouldRender) {\n      onEndReached()\n    }\n  }, [onEndReached, shouldRender])\n\n  useEffect(() => {\n    if (collapsed) return undefined\n\n    const timer = setTimeout(() => {\n      setShouldRender(true)\n    }, 0)\n\n    return () => {\n      clearTimeout(timer)\n    }\n  }, [collapsed, items])\n\n  const renderItem = useCallback<CommandListRenderItemCallback<SanityDocument>>(\n    (item, {activeIndex}) => {\n      const publishedId = getPublishedId(item._id)\n      const isSelected = childItemId === publishedId\n      const pressed = !isActive && isSelected\n      const selected = isActive && isSelected\n      const isLastItem = activeIndex === items.length - 1\n      const showSpinner = isLastItem && isLazyLoading\n      const showMaxItemsMessage = isLastItem && hasMaxItems\n\n      return (\n        <>\n          <PaneItem\n            icon={showIcons === false ? false : undefined}\n            id={publishedId}\n            layout={layout}\n            marginBottom={1}\n            pressed={pressed}\n            schemaType={schema.get(item._type)}\n            selected={selected}\n            value={item}\n          />\n\n          {showSpinner && <LoadingBlock />}\n\n          {showMaxItemsMessage && (\n            <Box marginY={1} paddingX={3} paddingY={4}>\n              <Text align=\"center\" muted size={1}>\n                {t('panes.document-list-pane.max-items.text', {limit: FULL_LIST_LIMIT})}\n              </Text>\n            </Box>\n          )}\n        </>\n      )\n    },\n    [childItemId, isActive, items.length, layout, schema, showIcons, hasMaxItems, isLazyLoading, t],\n  )\n\n  const noDocumentsContent = useMemo(() => {\n    if (hasSearchQuery) {\n      return (\n        <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n          <Container width={1}>\n            <Box paddingX={4} paddingY={5}>\n              <Text align=\"center\" muted>\n                {t('panes.document-list-pane.no-documents.text')}\n              </Text>\n            </Box>\n          </Container>\n        </Flex>\n      )\n    }\n\n    return (\n      <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n        <Container width={1}>\n          <Box paddingX={4} paddingY={5}>\n            <Text align=\"center\" muted>\n              {filterIsSimpleTypeConstraint\n                ? t('panes.document-list-pane.no-documents-of-type.text')\n                : t('panes.document-list-pane.no-matching-documents.text')}\n            </Text>\n          </Box>\n        </Container>\n      </Flex>\n    )\n  }, [filterIsSimpleTypeConstraint, hasSearchQuery, t])\n\n  const mainContent = useMemo(() => {\n    if (!shouldRender) {\n      return null\n    }\n\n    const isOnline = window.navigator.onLine\n    if (error) {\n      return (\n        <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n          <Container width={1}>\n            <Stack paddingX={4} paddingY={5} space={4}>\n              <Heading as=\"h3\">{t('panes.document-list-pane.error.title')}</Heading>\n              <Text as=\"p\">\n                {isDev ? (\n                  <Translate\n                    t={t}\n                    i18nKey=\"panes.document-list-pane.error.text.dev\"\n                    values={{error: error.message}}\n                    components={{Code: ({children}) => <code>{children}</code>}}\n                  />\n                ) : isOnline ? (\n                  t('panes.document-list-pane.error.text')\n                ) : (\n                  t('panes.document-list-pane.error.text.offline')\n                )}\n              </Text>\n              <ErrorActions\n                error={error}\n                eventId={null}\n                onRetry={isOnline && canRetry ? onRetry : undefined}\n                isRetrying={isRetrying}\n              />\n              {canRetry ? (\n                <Text as=\"p\" muted size={1}>\n                  {isRetrying\n                    ? t('panes.document-list-pane.error.retrying', {count: retryCount})\n                    : autoRetry\n                      ? t('panes.document-list-pane.error.will-retry-automatically', {\n                          count: retryCount,\n                        })\n                      : t('panes.document-list-pane.error.max-retries-attempted', {\n                          count: retryCount,\n                        })}\n                </Text>\n              ) : null}\n            </Stack>\n          </Container>\n        </Flex>\n      )\n    }\n\n    if (isConnected && !isLoading && items.length === 0) {\n      return noDocumentsContent\n    }\n\n    if (loadingVariant === 'initial' && isLoading) {\n      return (\n        <Delay ms={300}>\n          <LoadingView layout={layout} />\n        </Delay>\n      )\n    }\n\n    if (loadingVariant === 'spinner' && isLoading) {\n      return null\n    }\n\n    // prevents bug when panes won't render if first rendered while collapsed\n    const key = `${index}-${collapsed}`\n\n    return (\n      <RootBox overflow=\"hidden\" height=\"fill\" $opacity={muted ? 0.8 : 1}>\n        <CommandListBox>\n          <CommandList\n            activeItemDataAttr=\"data-hovered\"\n            ariaLabel={paneTitle}\n            canReceiveFocus\n            inputElement={searchInputElement}\n            itemHeight={51}\n            items={items}\n            key={key}\n            onEndReached={handleEndReached}\n            onlyShowSelectionWhenActive\n            overscan={10}\n            paddingBottom={1}\n            paddingX={3}\n            renderItem={renderItem}\n            wrapAround={false}\n          />\n        </CommandListBox>\n      </RootBox>\n    )\n  }, [\n    autoRetry,\n    canRetry,\n    collapsed,\n    error,\n    handleEndReached,\n    index,\n    isConnected,\n    isLoading,\n    isRetrying,\n    items,\n    layout,\n    loadingVariant,\n    muted,\n    noDocumentsContent,\n    onRetry,\n    paneTitle,\n    renderItem,\n    retryCount,\n    searchInputElement,\n    shouldRender,\n    t,\n  ])\n\n  return (\n    <PaneContent\n      data-testid=\"document-list-pane\"\n      overflow={layoutCollapsed || loadingVariant === 'initial' ? 'hidden' : 'auto'}\n    >\n      {mainContent}\n    </PaneContent>\n  )\n}\n","import {\n  isIndexSegment,\n  isKeySegment,\n  isReferenceSchemaType,\n  type ObjectField,\n  type ObjectFieldType,\n  type ObjectSchemaType,\n  type SanityDocumentLike,\n  type SchemaType,\n} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ExprNode, parse} from 'groq-js'\nimport {collate, getPublishedId} from 'sanity'\n\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\nexport function getDocumentKey(value: DocumentListPaneItem, index: number): string {\n  return value._id ? getPublishedId(value._id) : `item-${index}`\n}\n\nexport function removePublishedWithDrafts(documents: SanityDocumentLike[]): DocumentListPaneItem[] {\n  return collate(documents).map((entry) => {\n    const doc = entry.draft || entry.published || entry.versions[0]\n    const hasDraft = Boolean(entry.draft)\n\n    return {\n      ...doc,\n      hasPublished: !!entry.published,\n      hasDraft,\n    }\n  }) as any\n}\n\nexport function applyOrderingFunctions(order: SortOrder, schemaType: ObjectSchemaType): SortOrder {\n  const orderBy = order.by.map((by) => {\n    // Skip those that already have a mapper\n    if (by.mapWith) {\n      return by\n    }\n\n    const fieldType = tryResolveSchemaTypeForPath(schemaType, by.field)\n    if (!fieldType) {\n      return by\n    }\n\n    // Note: order matters here, since the jsonType of a date field is `string`,\n    // but we want to apply `datetime()`, not `lower()`\n    if (fieldExtendsType(fieldType, 'datetime')) {\n      return {...by, mapWith: 'dateTime'}\n    }\n\n    if (fieldType.jsonType === 'string') {\n      return {...by, mapWith: 'lower'}\n    }\n\n    return by\n  })\n\n  return orderBy.every((item, index) => item === order.by[index]) ? order : {...order, by: orderBy}\n}\n\nfunction tryResolveSchemaTypeForPath(baseType: SchemaType, path: string): SchemaType | undefined {\n  const pathSegments = PathUtils.fromString(path)\n\n  let current: SchemaType | undefined = baseType\n  for (const segment of pathSegments) {\n    if (!current) {\n      return undefined\n    }\n\n    if (typeof segment === 'string') {\n      current = getFieldTypeByName(current, segment)\n      continue\n    }\n\n    const isArrayAccessor = isKeySegment(segment) || isIndexSegment(segment)\n    if (!isArrayAccessor || current.jsonType !== 'array') {\n      return undefined\n    }\n\n    const [memberType, otherType] = current.of || []\n    if (otherType || !memberType) {\n      // Can't figure out the type without knowing the value\n      return undefined\n    }\n\n    if (!isReferenceSchemaType(memberType)) {\n      current = memberType\n      continue\n    }\n\n    const [refType, otherRefType] = memberType.to || []\n    if (otherRefType || !refType) {\n      // Can't figure out the type without knowing the value\n      return undefined\n    }\n\n    current = refType\n  }\n\n  return current\n}\n\nfunction getFieldTypeByName(type: SchemaType, fieldName: string): SchemaType | undefined {\n  if (!('fields' in type)) {\n    return undefined\n  }\n\n  const fieldType = type.fields.find((field) => field.name === fieldName)\n  return fieldType ? fieldType.type : undefined\n}\n\nexport function fieldExtendsType(field: ObjectField | ObjectFieldType, ofType: string): boolean {\n  let current: SchemaType | undefined = field.type\n  while (current) {\n    if (current.name === ofType) {\n      return true\n    }\n\n    if (!current.type && current.jsonType === ofType) {\n      return true\n    }\n\n    current = current.type\n  }\n\n  return false\n}\n\n/**\n * Recursively extract static `_type`s from GROQ filter expressions. If the\n * types can't be statically determined then it will return `null`.\n */\n// eslint-disable-next-line complexity\nfunction findTypes(node: ExprNode): Set<string> | null {\n  switch (node.type) {\n    case 'OpCall': {\n      const {left, right} = node\n\n      switch (node.op) {\n        // e.g. `a == b`\n        case '==': {\n          // e.g. `_type == 'value'`\n          if (left.type === 'AccessAttribute' && left.name === '_type' && !left.base) {\n            if (right.type !== 'Value' || typeof right.value !== 'string') return null\n            return new Set([right.value])\n          }\n\n          // e.g. `'value' == _type`\n          if (right.type === 'AccessAttribute' && right.name === '_type' && !right.base) {\n            if (left.type !== 'Value' || typeof left.value !== 'string') return null\n            return new Set([left.value])\n          }\n\n          // otherwise, we can't determine the types statically\n          return null\n        }\n\n        // e.g. `a in b`\n        case 'in': {\n          // if `_type` is not on the left hand side of `in` then it can't be determined\n          if (left.type !== 'AccessAttribute' || left.name !== '_type' || left.base) return null\n          // if the right hand side is not an array then the types can't be determined\n          if (right.type !== 'Array') return null\n\n          const types = new Set<string>()\n          // iterate through all the types\n          for (const element of right.elements) {\n            // if we find a splat, then early return, we can't determine the types\n            if (element.isSplat) return null\n            // if the array element is not just a simple value, then early return\n            if (element.value.type !== 'Value') return null\n            // if the array element value is not a string, then early return\n            if (typeof element.value.value !== 'string') return null\n            // otherwise add the element value to the set of types\n            types.add(element.value.value)\n          }\n\n          // if there were any elements in the types set, return it\n          if (types.size) return types\n          // otherwise, the set of types cannot be determined\n          return null\n        }\n\n        default: {\n          return null\n        }\n      }\n    }\n\n    // groups can just be unwrapped, the AST preserves the order\n    case 'Group': {\n      return findTypes(node.base)\n    }\n\n    // e.g. `_type == 'a' || _type == 'b'`\n    // with Or nodes, if we can't determine the types for either the left or\n    // right hand side then we can't determine the types for any\n    // e.g. `_type == 'a' || isActive`\n    // — can't determine types because `isActive` could be true on another types\n    case 'Or': {\n      const left = findTypes(node.left)\n      if (!left) return null\n\n      const right = findTypes(node.right)\n      if (!right) return null\n\n      return new Set([...left, ...right])\n    }\n\n    // e.g. `_type == 'a' && isActive`\n    // with And nodes, we can determine the types as long as we can determine\n    // the types for one side. We can't determine the types if both are `null`.\n    case 'And': {\n      const left = findTypes(node.left)\n      const right = findTypes(node.right)\n\n      if (!left && !right) return null\n      return new Set([...(left || []), ...(right || [])])\n    }\n\n    default: {\n      return null\n    }\n  }\n}\n\nexport function findStaticTypesInFilter(\n  filter: string,\n  params: Record<string, unknown> = {},\n): string[] | null {\n  try {\n    const types = findTypes(parse(filter, {params}))\n    if (!types) return null\n\n    return Array.from(types).sort()\n  } catch {\n    // if we couldn't parse the filter, just return `null`\n    return null\n  }\n}\n","import {type ClientPerspective, type SanityClient} from '@sanity/client'\nimport {\n  asyncScheduler,\n  defer,\n  filter,\n  map,\n  merge,\n  mergeMap,\n  type Observable,\n  of,\n  partition,\n  share,\n  throttleTime,\n  throwError,\n  timer,\n} from 'rxjs'\nimport {scan} from 'rxjs/operators'\nimport {exhaustMapWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {\n  createSearch,\n  createSWR,\n  getSearchableTypes,\n  type SanityDocumentLike,\n  type Schema,\n  type SearchOptions,\n  type SearchStrategy,\n} from 'sanity'\n\nimport {getExtendedProjection} from '../../structureBuilder/util/getExtendedProjection'\nimport {type SortOrder} from './types'\n\ninterface ListenQueryOptions {\n  client: SanityClient\n  filter: string\n  limit: number\n  params: Record<string, unknown>\n  schema: Schema\n  searchQuery: string\n  sort: SortOrder\n  perspective?: ClientPerspective\n  staticTypeNames?: string[] | null\n  maxFieldDepth?: number\n  searchStrategy?: SearchStrategy\n}\n\nexport type SearchQueryEvent =\n  | {\n      type: 'reconnect'\n    }\n  | {type: 'result'; documents: SanityDocumentLike[]}\n\nexport interface SearchQueryState {\n  connected: boolean\n  fromCache: boolean\n  documents: SanityDocumentLike[]\n}\n\nconst swr = createSWR<{connected: boolean; documents: SanityDocumentLike[]}>({maxSize: 100})\n\nexport function listenSearchQuery(options: ListenQueryOptions): Observable<SearchQueryState> {\n  const {\n    client,\n    schema,\n    sort,\n    perspective,\n    limit,\n    params,\n    filter: groqFilter,\n    searchQuery,\n    staticTypeNames,\n    maxFieldDepth,\n    searchStrategy,\n  } = options\n  const sortBy = sort.by\n  const extendedProjection = sort?.extendedProjection\n\n  // Listen for changes with the given filter and params, and whenever a change occurs, we want to\n  // re-fetch the documents that match the search query (see below).\n  // We use a separate listener since the search query is too large to use in a listen query.\n  const events$ = defer(() => {\n    return client.listen(`*[${groqFilter}]`, params, {\n      events: ['welcome', 'mutation', 'reconnect'],\n      includeAllVersions: true,\n      includeResult: false,\n      visibility: 'query',\n      tag: 'listen-search-query',\n    })\n  }).pipe(\n    mergeMap((ev, i) => {\n      const isFirst = i === 0\n      // If we can't establish a connection to the /listen endpoint, the first event we receive will be 'reconnect'\n      // So if we get \"reconnect\" as the first event actually means \"Connection can't be established\"\n      if (isFirst && ev.type === 'reconnect') {\n        // if it's neither welcome nor reconnect, something unexpected has happened.\n        return throwError(() => new Error(`Failed to establish EventSource connection`))\n      }\n      // When a connection is successfully established, the first event will be 'welcome'\n      if (isFirst && ev.type !== 'welcome') {\n        // if it's neither welcome nor reconnect, something unexpected has happened.\n        return throwError(() => new Error(`Received unexpected type of first event \"${ev.type}\"`))\n      }\n      return of(ev)\n    }),\n    share(),\n  )\n\n  const [welcome$, mutationAndReconnect$] = partition(events$, (ev) => ev.type === 'welcome')\n\n  const swrKey = JSON.stringify({\n    fiilter: groqFilter,\n    limit,\n    params,\n    searchQuery,\n    perspective,\n    sort,\n    staticTypeNames,\n  })\n\n  return merge(\n    welcome$,\n    mutationAndReconnect$.pipe(throttleTime(1000, asyncScheduler, {leading: true, trailing: true})),\n  ).pipe(\n    exhaustMapWithTrailing((event): Observable<SearchQueryEvent> => {\n      // Get the types names to use for searching.\n      // If we have a static list of types, we can skip fetching the types and use the static list.\n      const typeNames$ = staticTypeNames\n        ? of(staticTypeNames)\n        : client.observable.fetch(`array::unique(*[${groqFilter}][]._type)`, params)\n\n      // Use the type names to create a search query and fetch the documents that match the query.\n      return typeNames$.pipe(\n        mergeMap((typeNames: string[]) => {\n          const types = getSearchableTypes(schema, staticTypeNames || []).filter((type) => {\n            if (typeNames.includes(type.name)) {\n              // make a call to getExtendedProjection in strict mode to verify that all fields are\n              // known. This method will throw an exception if there are any unknown fields specified\n              // in the sort by list\n              getExtendedProjection(type, sort.by, true)\n              return true\n            }\n            return false\n          })\n\n          const search = createSearch(types, client, {\n            filter: groqFilter,\n            params,\n            strategy: searchStrategy,\n            maxDepth: maxFieldDepth,\n          })\n\n          const doFetch = () => {\n            const searchTerms = {\n              query: searchQuery || '',\n              types,\n            }\n\n            const searchOptions: SearchOptions = {\n              __unstable_extendedProjection: extendedProjection,\n              comments: [`findability-source: ${searchQuery ? 'list-query' : 'list'}`],\n              limit,\n              skipSortByScore: true,\n              sort: sortBy,\n              perspective,\n            }\n\n            return search(searchTerms, searchOptions).pipe(\n              map((result) =>\n                // eslint-disable-next-line max-nested-callbacks\n                result.hits.map(({hit}) => hit),\n              ),\n              map((hits) => ({type: 'result' as const, documents: hits})),\n            )\n          }\n\n          if (event.type === 'mutation' && event.visibility !== 'query') {\n            // Even though the listener request specifies visibility=query, the events are not guaranteed to be delivered with visibility=query\n            // If the event we are responding to arrives with visibility != query, we add a little delay to allow for the updated document to be available for queries\n            // See https://www.sanity.io/docs/listening#visibility-c4786e55c3ff\n            return timer(1200).pipe(mergeMap(doFetch))\n          }\n          if (event.type === 'reconnect') {\n            return of(event)\n          }\n          return doFetch()\n        }),\n      )\n    }),\n    scan(\n      (\n        acc: null | {connected: boolean; documents: SanityDocumentLike[]},\n        event: SearchQueryEvent,\n      ) => ({\n        connected: event.type !== 'reconnect',\n        documents: event.type === 'result' ? event.documents : acc?.documents || [],\n      }),\n      null as null | {connected: boolean; documents: SanityDocumentLike[]},\n    ),\n    filter((v) => v !== null),\n    swr(swrKey),\n    map(({fromCache, value}): SearchQueryState => ({fromCache, ...value})),\n  )\n}\n","import {ChannelError, ClientError, type ClientPerspective, ServerError} from '@sanity/client'\nimport {observableCallback} from 'observable-callback'\nimport {useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, fromEvent, merge, NEVER, of, timer} from 'rxjs'\nimport {\n  filter,\n  map,\n  mergeMap,\n  scan,\n  share,\n  shareReplay,\n  switchMap,\n  take,\n  takeUntil,\n  withLatestFrom,\n} from 'rxjs/operators'\nimport {\n  catchWithCount,\n  DEFAULT_STUDIO_CLIENT_OPTIONS,\n  useClient,\n  useSchema,\n  useSearchMaxFieldDepth,\n  useWorkspace,\n} from 'sanity'\n\nimport {DEFAULT_ORDERING, FULL_LIST_LIMIT, PARTIAL_PAGE_LIMIT} from './constants'\nimport {findStaticTypesInFilter, removePublishedWithDrafts} from './helpers'\nimport {listenSearchQuery} from './listenSearchQuery'\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\ninterface UseDocumentListOpts {\n  apiVersion?: string\n  filter: string\n  perspective?: ClientPerspective\n  params: Record<string, unknown>\n  searchQuery: string | null\n  sortOrder?: SortOrder\n}\n\ninterface DocumentListState {\n  error: {message: string} | null\n  isLoadingFullList: boolean\n  isLoading: boolean\n  connected?: boolean\n  isRetrying: boolean\n  autoRetry: boolean\n  canRetry: boolean\n  retryCount: number\n  fromCache?: boolean\n  items: DocumentListPaneItem[]\n}\n\nconst INITIAL_QUERY_STATE: DocumentListState = {\n  error: null,\n  isRetrying: false,\n  retryCount: 0,\n  autoRetry: false,\n  canRetry: false,\n  isLoading: true,\n  isLoadingFullList: false,\n  fromCache: false,\n  items: [],\n}\n\ninterface UseDocumentListHookValue extends DocumentListState {\n  onRetry: () => void\n  onLoadFullList: () => void\n}\n\n/**\n * Determine whether an error should be possible to retry\n * @param error - Any caught error\n */\nfunction isRetriableError(error: unknown) {\n  if (error instanceof ChannelError) {\n    // Usually indicative of a bad or malformed request\n    return false\n  }\n  if (error instanceof ServerError) {\n    // >= 500\n    return true\n  }\n  if (error instanceof ClientError) {\n    // >= 400\n    // note: 403 Forbidden makes sense to retry, because it's a potentially passing condition\n    return error.statusCode === 403\n  }\n  return true\n}\n\n/**\n * @internal\n */\nexport function useDocumentList(opts: UseDocumentListOpts): UseDocumentListHookValue {\n  const {\n    filter: searchFilter,\n    params: paramsProp,\n    sortOrder,\n    searchQuery,\n    perspective,\n    apiVersion,\n  } = opts\n  const client = useClient({\n    ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n    apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n  })\n  const {strategy: searchStrategy} = useWorkspace().search\n  const schema = useSchema()\n  const maxFieldDepth = useSearchMaxFieldDepth()\n\n  // Get the type name from the filter, if it is a simple type filter.\n  const typeNameFromFilter = useMemo(\n    () => findStaticTypesInFilter(searchFilter, paramsProp),\n    [searchFilter, paramsProp],\n  )\n\n  const [[onRetry$, onRetry]] = useState(() => observableCallback())\n  const [[onFetchFullList$, onLoadFullList]] = useState(() => observableCallback())\n\n  const queryResults$ = useMemo(() => {\n    const listenSearchQueryArgs = {\n      client,\n      filter: searchFilter,\n      limit: PARTIAL_PAGE_LIMIT,\n      params: paramsProp,\n      schema,\n      perspective,\n      searchQuery: searchQuery || '',\n      sort: sortOrder || DEFAULT_ORDERING,\n      staticTypeNames: typeNameFromFilter,\n      maxFieldDepth,\n      searchStrategy,\n    }\n\n    const partialList$ = listenSearchQuery(listenSearchQueryArgs).pipe(\n      shareReplay({refCount: true, bufferSize: 1}),\n    )\n\n    // we want to fetch the full list if the last result of the partial list is at the limit\n    const fullList$ = onFetchFullList$.pipe(\n      withLatestFrom(partialList$),\n      filter(([, result]) => result?.documents.length === PARTIAL_PAGE_LIMIT),\n      // we want to set up the full list listener only once\n      take(1),\n      mergeMap(() =>\n        concat(\n          of({type: 'loadFullList' as const}),\n          listenSearchQuery({...listenSearchQueryArgs, limit: FULL_LIST_LIMIT}).pipe(\n            map((result) => ({type: 'result' as const, result})),\n          ),\n        ),\n      ),\n      share(),\n    )\n\n    // The combined search results from both partial page and full list\n    return merge(\n      partialList$.pipe(\n        map((result) => ({\n          type: 'result' as const,\n          result,\n        })),\n        // when the full list listener kicks off, we want to stop the partial list listener\n        takeUntil(fullList$),\n      ),\n      fullList$,\n    ).pipe(\n      catchWithCount((lastError, retryCount, caught$) => {\n        const error = safeError(lastError)\n        const isOnline = window.navigator.onLine\n        const canRetry = isOnline && isRetriableError(lastError)\n        const autoRetry = retryCount < 10\n        const retries = merge(\n          isOnline ? onRetry$ : fromEvent(window, 'online'),\n          isOnline && autoRetry ? timer(retryCount * 1_000) : NEVER,\n        ).pipe(\n          take(1),\n          switchMap(() =>\n            merge(\n              of({\n                type: 'error' as const,\n                error,\n                retrying: true,\n                autoRetry,\n                canRetry,\n                retryCount,\n              }),\n              caught$,\n            ),\n          ),\n        )\n        return concat(\n          of({\n            type: 'error' as const,\n            error,\n            retrying: false,\n            autoRetry,\n            canRetry,\n            retryCount,\n          }),\n          retries,\n        )\n      }),\n      scan((prev, event) => {\n        if (event.type === 'error') {\n          return {\n            ...prev,\n            error: event.error,\n            retryCount: event.retryCount,\n            isRetrying: event.retrying,\n            autoRetry: event.autoRetry,\n            canRetry: event.canRetry,\n          }\n        }\n        if (event.type === 'result') {\n          return {\n            ...prev,\n            error: null,\n            isRetrying: false,\n            fromCache: event.result.fromCache,\n            connected: event.result.connected,\n            isLoading: false,\n            items: removePublishedWithDrafts(event.result.documents),\n            isLoadingFullList: false,\n          }\n        }\n        if (event.type === 'loadFullList') {\n          return {\n            ...prev,\n            error: null,\n            isLoadingFullList: true,\n          }\n        }\n        // @ts-expect-error - all cases should be covered\n        throw new Error(`Unexpected event type: ${event.type}`)\n      }, INITIAL_QUERY_STATE),\n    )\n  }, [\n    client,\n    searchFilter,\n    paramsProp,\n    schema,\n    perspective,\n    searchQuery,\n    sortOrder,\n    typeNameFromFilter,\n    maxFieldDepth,\n    searchStrategy,\n    onFetchFullList$,\n    onRetry$,\n  ])\n\n  const {\n    error,\n    items,\n    isLoading,\n    fromCache,\n    connected,\n    canRetry,\n    isLoadingFullList,\n    isRetrying,\n    autoRetry,\n    retryCount,\n  } = useObservable(queryResults$, INITIAL_QUERY_STATE)\n\n  return {\n    error,\n    onRetry,\n    isLoading,\n    items,\n    isRetrying,\n    canRetry,\n    retryCount,\n    autoRetry,\n    connected,\n    fromCache,\n    onLoadFullList,\n    isLoadingFullList,\n  }\n}\n\n// todo: candidate for re-use\nconst nonErrorThrownWarning = `[WARNING: This was thrown as a non-error. Only Error instances should be thrown]`\nfunction safeError(thrown: unknown): Error {\n  if (thrown instanceof Error) {\n    return thrown\n  }\n  if (typeof thrown === 'object' && thrown !== null) {\n    if ('message' in thrown && typeof thrown.message === 'string') {\n      return new Error(`${thrown.message} ${nonErrorThrownWarning}`)\n    }\n    return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n  }\n  return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n}\n","import {SearchIcon, SpinnerIcon} from '@sanity/icons'\nimport {Box, TextInput} from '@sanity/ui'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservableEvent} from 'react-rx'\nimport {debounce, map, type Observable, of, tap, timer} from 'rxjs'\nimport {\n  type GeneralPreviewLayoutKey,\n  useActiveReleases,\n  useI18nText,\n  usePerspective,\n  useReconnectingToast,\n  useSchema,\n  useTranslation,\n  useUnique,\n} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {EMPTY_RECORD, FULL_LIST_LIMIT} from './constants'\nimport {DocumentListPaneContent} from './DocumentListPaneContent'\nimport {applyOrderingFunctions, findStaticTypesInFilter} from './helpers'\nimport {useShallowUnique} from './PaneContainer'\nimport {type LoadingVariant, type SortOrder} from './types'\nimport {useDocumentList} from './useDocumentList'\n\n/**\n * @internal\n */\nexport type DocumentListPaneProps = BaseStructureToolPaneProps<'documentList'> & {\n  sortOrder?: SortOrder\n  layout?: Exclude<GeneralPreviewLayoutKey, 'sheetList'>\n}\n\nconst rotate = keyframes`\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n`\n\nconst fadeIn = keyframes`\n  0% {\n    opacity: 0;\n  }\n  50% {\n    opacity: 0.1;\n  }\n  100% {\n    opacity: 0.4;\n  }\n`\n\nconst AnimatedSpinnerIcon = styled(SpinnerIcon)`\n  animation: ${rotate} 500ms linear infinite;\n`\n\nconst SubtleSpinnerIcon = styled(SpinnerIcon)`\n  animation: ${rotate} 1500ms linear infinite;\n  opacity: 0.4;\n`\n\nconst DelayedSubtleSpinnerIcon = styled(SpinnerIcon)`\n  animation:\n    ${rotate} 1500ms linear infinite,\n    ${fadeIn} 1000ms linear;\n  opacity: 0.4;\n`\n\n/**\n * @internal\n */\n\nexport const DocumentListPane = memo(function DocumentListPane(props: DocumentListPaneProps) {\n  const {childItemId, isActive, pane, paneKey, sortOrder: sortOrderRaw, layout} = props\n  const schema = useSchema()\n  const releases = useActiveReleases()\n  const {perspectiveStack} = usePerspective()\n  const {displayOptions, options} = pane\n  const {apiVersion, filter} = options\n  const params = useShallowUnique(options.params || EMPTY_RECORD)\n  const typeName = useMemo(() => {\n    const staticTypes = findStaticTypesInFilter(filter, params)\n    if (staticTypes?.length === 1) return staticTypes[0]\n    return null\n  }, [filter, params])\n\n  const showIcons = displayOptions?.showIcons !== false\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {title} = useI18nText(pane)\n\n  const [searchQuery, setSearchQuery] = useState<string>('')\n  const [searchInputValue, setSearchInputValue] = useState<string>('')\n  const [searchInputElement, setSearchInputElement] = useState<HTMLInputElement | null>(null)\n\n  const sortWithOrderingFn =\n    typeName && sortOrderRaw\n      ? applyOrderingFunctions(sortOrderRaw, schema.get(typeName) as any)\n      : sortOrderRaw\n\n  const sortOrder = useUnique(sortWithOrderingFn)\n\n  const {\n    error,\n    isLoadingFullList,\n    isLoading: documentListIsLoading,\n    items,\n    fromCache,\n    isRetrying,\n    autoRetry,\n    canRetry,\n    retryCount,\n    connected,\n    onLoadFullList,\n    onRetry,\n  } = useDocumentList({\n    apiVersion,\n    filter,\n    perspective: perspectiveStack,\n    params,\n    searchQuery: searchQuery?.trim(),\n    sortOrder,\n  })\n\n  const isLoading = documentListIsLoading || releases.loading\n\n  const handleQueryChange = useObservableEvent(\n    (event$: Observable<React.ChangeEvent<HTMLInputElement>>) => {\n      return event$.pipe(\n        map((event) => event.target.value),\n        tap(setSearchInputValue),\n        debounce((value) => (value === '' ? of('') : timer(300))),\n        tap(setSearchQuery),\n      )\n    },\n  )\n\n  const handleClearSearch = useCallback(() => {\n    setSearchQuery('')\n    setSearchInputValue('')\n  }, [])\n\n  const handleSearchKeyDown = useCallback(\n    (event: React.KeyboardEvent<HTMLInputElement>) => {\n      if (event.key === 'Escape') {\n        handleClearSearch()\n      }\n    },\n    [handleClearSearch],\n  )\n\n  const [enableSearchSpinner, setEnableSearchSpinner] = useState<string | void>()\n\n  useEffect(() => {\n    if (!enableSearchSpinner && !isLoading) {\n      setEnableSearchSpinner(paneKey)\n    }\n  }, [enableSearchSpinner, isLoading, paneKey])\n\n  useEffect(() => {\n    // Clear search field and disable search spinner\n    // when switching between panes (i.e. when paneKey changes).\n    handleClearSearch()\n    setEnableSearchSpinner()\n  }, [paneKey, handleClearSearch])\n\n  const loadingVariant: LoadingVariant = useMemo(() => {\n    if (connected && isLoading && enableSearchSpinner === paneKey) {\n      return 'spinner'\n    }\n    if (connected && fromCache) {\n      return 'subtle'\n    }\n\n    return 'initial'\n  }, [connected, enableSearchSpinner, fromCache, isLoading, paneKey])\n\n  const textInputIcon = useMemo(() => {\n    if (loadingVariant === 'spinner') {\n      return AnimatedSpinnerIcon\n    }\n    if (searchInputValue && loadingVariant === 'subtle') {\n      return SubtleSpinnerIcon\n    }\n    return SearchIcon\n  }, [loadingVariant, searchInputValue])\n\n  useReconnectingToast(!connected)\n\n  return (\n    <>\n      <Box paddingX={3} paddingBottom={3}>\n        <TextInput\n          aria-label={t('panes.document-list-pane.search-input.aria-label')}\n          autoComplete=\"off\"\n          border={false}\n          clearButton={Boolean(searchQuery)}\n          fontSize={[2, 2, 1]}\n          icon={textInputIcon}\n          iconRight={\n            !connected || (loadingVariant === 'subtle' && !searchInputValue)\n              ? DelayedSubtleSpinnerIcon\n              : null\n          }\n          onChange={handleQueryChange}\n          onClear={handleClearSearch}\n          onKeyDown={handleSearchKeyDown}\n          padding={2}\n          placeholder={t('panes.document-list-pane.search-input.placeholder')}\n          radius={2}\n          ref={setSearchInputElement}\n          spellCheck={false}\n          value={searchInputValue}\n        />\n      </Box>\n      <DocumentListPaneContent\n        childItemId={childItemId}\n        error={error}\n        filterIsSimpleTypeConstraint={!!typeName}\n        hasMaxItems={items.length === FULL_LIST_LIMIT}\n        hasSearchQuery={Boolean(searchQuery)}\n        isActive={isActive}\n        isLazyLoading={isLoadingFullList}\n        isLoading={isLoading}\n        autoRetry={autoRetry}\n        canRetry={canRetry}\n        retryCount={retryCount}\n        isRetrying={isRetrying}\n        isConnected={connected}\n        items={items}\n        key={paneKey}\n        layout={layout}\n        muted={loadingVariant === 'subtle'}\n        loadingVariant={loadingVariant}\n        onEndReached={onLoadFullList}\n        onRetry={onRetry}\n        paneTitle={title}\n        searchInputElement={searchInputElement}\n        showIcons={showIcons}\n      />\n    </>\n  )\n})\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, type ReactNode, useMemo} from 'react'\nimport {type GeneralPreviewLayoutKey, type InitialValueTemplateItem} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../ui-components'\nimport {\n  BackLink,\n  PaneHeader as StructurePaneHeader,\n  PaneHeaderActions,\n  usePane,\n} from '../../components'\nimport {\n  type PaneMenuItem,\n  type PaneMenuItemGroup,\n  type StructureToolPaneActionHandler,\n} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {type SortOrder} from './types'\n\ninterface PaneHeaderProps {\n  contentAfter?: ReactNode\n  index: number\n  initialValueTemplates?: InitialValueTemplateItem[]\n  menuItemGroups?: PaneMenuItemGroup[]\n  menuItems?: PaneMenuItem[]\n  setLayout: (layout: GeneralPreviewLayoutKey) => void\n  setSortOrder: (sortOrder: SortOrder) => void\n  title: string\n}\n\nexport const PaneHeader = memo(\n  ({\n    contentAfter,\n    index,\n    initialValueTemplates = [],\n    menuItemGroups = [],\n    menuItems = [],\n    setLayout,\n    setSortOrder,\n    title,\n  }: PaneHeaderProps) => {\n    const {features} = useStructureTool()\n    const {collapsed, isLast} = usePane()\n    // Prevent focus if this is the last (non-collapsed) pane.\n    const tabIndex = isLast && !collapsed ? -1 : 0\n\n    const actionHandlers = useMemo((): Record<string, StructureToolPaneActionHandler> => {\n      return {\n        setLayout: ({layout: value}: {layout: GeneralPreviewLayoutKey}) => {\n          setLayout(value)\n        },\n        setSortOrder: (sort: SortOrder) => {\n          setSortOrder(sort)\n        },\n      }\n    }, [setLayout, setSortOrder])\n\n    return (\n      <TooltipDelayGroupProvider>\n        <StructurePaneHeader\n          actions={\n            <PaneHeaderActions\n              initialValueTemplateItems={initialValueTemplates}\n              actionHandlers={actionHandlers}\n              menuItemGroups={menuItemGroups}\n              menuItems={menuItems}\n            />\n          }\n          backButton={\n            features.backButton &&\n            index > 0 && (\n              <Button\n                as={BackLink}\n                data-as=\"a\"\n                icon={ArrowLeftIcon}\n                mode=\"bleed\"\n                tooltipProps={{content: 'Back'}}\n              />\n            )\n          }\n          contentAfter={contentAfter}\n          tabIndex={tabIndex}\n          title={title}\n        />\n      </TooltipDelayGroupProvider>\n    )\n  },\n)\n\nPaneHeader.displayName = 'Memo(PaneHeader)'\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {type SanityDocument} from '@sanity/client'\nimport {Checkbox} from '@sanity/ui'\nimport {type CellContext} from '@tanstack/react-table'\nimport {type MouseEvent, useCallback} from 'react'\n\nexport function DocumentSheetListSelect(props: CellContext<SanityDocument, unknown>) {\n  const {row, table} = props\n\n  const {selectedAnchor, setSelectedAnchor} = table.options.meta || {}\n\n  const handleOnClick = useCallback(\n    (e: MouseEvent<HTMLInputElement>) => {\n      if (e.shiftKey && selectedAnchor !== null && selectedAnchor !== undefined) {\n        const shiftClickIndex = row.index\n        const lowerIndex = shiftClickIndex < selectedAnchor ? shiftClickIndex : selectedAnchor\n        const upperIndex = shiftClickIndex < selectedAnchor ? selectedAnchor : shiftClickIndex\n\n        const additionalSelectedRows = table\n          .getRowModel()\n          .flatRows.slice(lowerIndex, upperIndex + 1)\n          .map(({id}) => id)\n\n        const currentSelectedRows = table.getSelectedRowModel().rows.map(({id}) => id)\n        table.setRowSelection(() =>\n          [...additionalSelectedRows, ...currentSelectedRows].reduce(\n            (nextSelectedRows, rowId) => ({...nextSelectedRows, [rowId]: true}),\n            {},\n          ),\n        )\n      } else if (setSelectedAnchor) {\n        const isRowCurrentlySelected = row.getIsSelected()\n        if (isRowCurrentlySelected) {\n          // about to unselect so invalidate current anchor\n          setSelectedAnchor(null)\n        } else {\n          // override anchor with new selection index\n          setSelectedAnchor(row.index)\n        }\n\n        row.toggleSelected()\n      }\n    },\n    [selectedAnchor, row, setSelectedAnchor, table],\n  )\n\n  return (\n    <Checkbox\n      style={{paddingLeft: 4}}\n      checked={props.row.getIsSelected()}\n      disabled={!props.row.getCanSelect()}\n      // onChange doesn't have shiftKey in event, but want to control this checkbox\n      // need to define noop onChange to suppress the warning\n      // eslint-disable-next-line react/jsx-no-bind\n      onChange={() => null}\n      onClick={handleOnClick}\n    />\n  )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {type Table} from '@tanstack/react-table'\nimport {type ReactNode, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {DocumentSheetListContext} from 'sanity/_singletons'\n\ninterface DocumentSheetListProviderProps {\n  children?: ReactNode\n  table: Table<SanityDocument>\n}\n\ntype SelectedCellDetails = {\n  colId: string\n  rowIndex: number\n  state: 'focused' | 'selected'\n} | null\n\n/** @internal */\nexport interface DocumentSheetListContextValue {\n  focusAnchorCell: () => void\n  resetFocusSelection: () => void\n  setSelectedAnchorCell: (colId: string, rowIndex: number) => void\n  getStateByCellId: (\n    colId: string,\n    rowIndex: number,\n  ) => 'focused' | 'selectedAnchor' | 'selectedRange' | null\n  submitFocusedCell: () => void\n}\n\n/** @internal */\nexport const useDocumentSheetListContext = (): DocumentSheetListContextValue => {\n  const context = useContext(DocumentSheetListContext)\n\n  if (context === undefined) {\n    throw new Error('useDocumentSheetListContext must be used within an DocumentSheetListProvider')\n  }\n  return context\n}\n\n/** @internal */\nexport function DocumentSheetListProvider({\n  children,\n  table,\n}: DocumentSheetListProviderProps): ReactNode {\n  const [selectedAnchorCellDetails, setSelectedAnchorCellDetails] =\n    useState<SelectedCellDetails>(null)\n  const [selectedRangeCellIndexes, setSelectedRangeCellIndexes] = useState<number[]>([])\n\n  const clearAndSetFocusSelection = useCallback(\n    (nextAnchorDetails: SelectedCellDetails = null) => {\n      if (\n        selectedAnchorCellDetails?.state === 'focused' &&\n        document.activeElement instanceof HTMLElement\n      ) {\n        document.activeElement.blur()\n      }\n\n      setSelectedAnchorCellDetails(nextAnchorDetails)\n      setSelectedRangeCellIndexes([])\n    },\n    [selectedAnchorCellDetails],\n  )\n\n  const resetFocusSelection = useCallback(\n    () => clearAndSetFocusSelection(),\n    [clearAndSetFocusSelection],\n  )\n\n  const changeSelectionColumn = useCallback(\n    (direction: 'left' | 'right') => {\n      if (!selectedAnchorCellDetails) return\n\n      const visibleColumns = table.getVisibleLeafColumns()\n      const columnIndexAfterMove =\n        visibleColumns.findIndex((col) => col.id === selectedAnchorCellDetails.colId) +\n        (direction === 'left' ? -1 : 1)\n\n      if (columnIndexAfterMove < 0 || columnIndexAfterMove >= visibleColumns.length) return\n\n      clearAndSetFocusSelection({\n        colId: visibleColumns[columnIndexAfterMove].id,\n        rowIndex: selectedAnchorCellDetails.rowIndex,\n        state: 'selected',\n      })\n    },\n    [clearAndSetFocusSelection, selectedAnchorCellDetails, table],\n  )\n\n  const changeSelectionRange = useCallback(\n    (direction: 'up' | 'down') => {\n      if (!selectedAnchorCellDetails) return\n\n      setSelectedRangeCellIndexes((previousSelection) => {\n        const {rowIndex: anchorIndex} = selectedAnchorCellDetails\n        const getNextIndex = (startingIndex: number) =>\n          startingIndex + (direction === 'down' ? 1 : -1)\n        // if no cells are selected, select the cell in the direction\n        if (!previousSelection.length) {\n          const firstSelectedIndex = getNextIndex(anchorIndex)\n          if (firstSelectedIndex < 0) return []\n          return [firstSelectedIndex]\n        }\n        const lastIndexSelected = previousSelection[previousSelection.length - 1]\n        const nextIndex = getNextIndex(lastIndexSelected)\n\n        // if the cell in the direction is out of bounds, return the previous selection\n        if (nextIndex < 0) return previousSelection\n\n        // if the cell in the direction is the same as the focused cell, deselect all cells\n        if (nextIndex === anchorIndex) return []\n\n        // if the cell in the direction is already selected, deselect the last selected cell\n        if (previousSelection.includes(nextIndex)) {\n          return previousSelection.slice(0, -1)\n        }\n\n        return [...previousSelection, nextIndex]\n      })\n    },\n    [selectedAnchorCellDetails],\n  )\n\n  const setSelectedAnchorCell = useCallback(\n    (colId: string, rowIndex: number) => {\n      clearAndSetFocusSelection({colId, rowIndex, state: 'selected'})\n    },\n    [clearAndSetFocusSelection],\n  )\n\n  const handleEscapePress = useCallback(() => {\n    if (!selectedAnchorCellDetails) return\n    if (selectedRangeCellIndexes.length) {\n      // only clear selected range if it exists\n      setSelectedRangeCellIndexes([])\n    } else {\n      const nextAnchorCellDetails: SelectedCellDetails =\n        selectedAnchorCellDetails.state === 'selected'\n          ? null\n          : {\n              ...selectedAnchorCellDetails,\n              state: 'selected',\n            }\n      clearAndSetFocusSelection(nextAnchorCellDetails)\n    }\n  }, [clearAndSetFocusSelection, selectedAnchorCellDetails, selectedRangeCellIndexes.length])\n\n  const handleUpDownKey = useCallback(\n    (isShiftKey: boolean, key: string) => {\n      if (!selectedAnchorCellDetails) return\n\n      const direction = key === 'ArrowDown' ? 'down' : 'up'\n      const offset = direction === 'down' ? 1 : -1\n\n      if (isShiftKey) {\n        changeSelectionRange(direction)\n      } else {\n        const newSelectedCellRowIndex = selectedAnchorCellDetails.rowIndex + offset\n        if (newSelectedCellRowIndex < 0) return\n\n        setSelectedAnchorCell(selectedAnchorCellDetails.colId, newSelectedCellRowIndex)\n      }\n    },\n    [changeSelectionRange, selectedAnchorCellDetails, setSelectedAnchorCell],\n  )\n\n  const handleAnchorKeydown = useCallback(\n    (event: KeyboardEvent) => {\n      if (!selectedAnchorCellDetails) return\n\n      const {key, shiftKey} = event\n\n      switch (key) {\n        case 'Shift':\n          break // shift allow should do nothing\n\n        case 'Escape':\n          handleEscapePress()\n          break\n\n        case 'ArrowDown':\n        case 'ArrowUp':\n          event.preventDefault()\n          handleUpDownKey(shiftKey, key)\n          break\n\n        case 'ArrowLeft':\n        case 'ArrowRight':\n          // when cell is focused, arrows should have default behavior\n          // only prevent default when cell is selected\n          if (selectedAnchorCellDetails.state === 'selected') {\n            event.preventDefault()\n            changeSelectionColumn(key === 'ArrowLeft' ? 'left' : 'right')\n          }\n          break\n\n        default:\n          break\n      }\n    },\n    [selectedAnchorCellDetails, handleEscapePress, handleUpDownKey, changeSelectionColumn],\n  )\n\n  const handleAnchorClick = useCallback(\n    (event: MouseEvent) => {\n      if (!selectedAnchorCellDetails) return\n      const isClickInAnchorCell = document\n        .getElementById(\n          `cell-${selectedAnchorCellDetails.colId}-${selectedAnchorCellDetails.rowIndex}`,\n        )\n        ?.contains(event.target as Node)\n\n      if (!isClickInAnchorCell) resetFocusSelection()\n    },\n    [resetFocusSelection, selectedAnchorCellDetails],\n  )\n\n  useEffect(() => {\n    if (selectedAnchorCellDetails) {\n      document.addEventListener('keydown', handleAnchorKeydown)\n      document.addEventListener('click', handleAnchorClick)\n    }\n\n    return () => {\n      if (selectedAnchorCellDetails) {\n        document.removeEventListener('keydown', handleAnchorKeydown)\n        document.removeEventListener('click', handleAnchorClick)\n      }\n    }\n  }, [handleAnchorClick, handleAnchorKeydown, selectedAnchorCellDetails])\n\n  const focusAnchorCell = useCallback(\n    () =>\n      setSelectedAnchorCellDetails((anchorCellDetails) => {\n        if (!anchorCellDetails) return null\n\n        return {...anchorCellDetails, state: 'focused'}\n      }),\n    [],\n  )\n\n  const getStateByCellId = useCallback(\n    (colId: string, rowIndex: number) => {\n      if (selectedAnchorCellDetails?.colId !== colId) return null\n\n      if (selectedAnchorCellDetails.rowIndex === rowIndex)\n        return selectedAnchorCellDetails.state === 'focused' ? 'focused' : 'selectedAnchor'\n\n      if (selectedRangeCellIndexes.includes(rowIndex)) return 'selectedRange'\n\n      return null\n    },\n    [selectedAnchorCellDetails, selectedRangeCellIndexes],\n  )\n\n  const submitFocusedCell = useCallback(() => {\n    if (!selectedAnchorCellDetails) return\n\n    clearAndSetFocusSelection({\n      colId: selectedAnchorCellDetails.colId,\n      rowIndex: selectedAnchorCellDetails.rowIndex + 1,\n      state: 'selected',\n    })\n  }, [clearAndSetFocusSelection, selectedAnchorCellDetails])\n\n  const value = useMemo<DocumentSheetListContextValue>(\n    () => ({\n      focusAnchorCell,\n      resetFocusSelection,\n      setSelectedAnchorCell,\n      getStateByCellId,\n      submitFocusedCell,\n    }),\n    [\n      focusAnchorCell,\n      resetFocusSelection,\n      setSelectedAnchorCell,\n      getStateByCellId,\n      submitFocusedCell,\n    ],\n  )\n\n  return (\n    <DocumentSheetListContext.Provider value={value}>{children}</DocumentSheetListContext.Provider>\n  )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\nimport {type ObjectFieldType} from '@sanity/types'\nimport {Select, TextInput} from '@sanity/ui'\nimport {type Cell, type CellContext, flexRender} from '@tanstack/react-table'\nimport {type MouseEventHandler, useCallback, useEffect, useRef, useState} from 'react'\nimport {type SanityDocument} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentSheetListContext} from './DocumentSheetListProvider'\n\nconst DataCell = styled.td<{width: number}>`\n  display: flex;\n  overflow: hidden;\n  box-sizing: border-box;\n  width: ${({width}) => width}px;\n  border-top: 1px solid var(--card-border-color);\n  background-color: var(--card-bg-color);\n`\n\nconst PinnedDataCell = styled(DataCell)`\n  position: sticky;\n  z-index: 2;\n`\n\ninterface SheetListCellInnerProps extends CellContext<SanityDocument, unknown> {\n  fieldType: ObjectFieldType\n}\n\ntype CellInputElement = HTMLInputElement | HTMLSelectElement\ntype InputRef = CellInputElement | null\n\n/** @internal */\nexport function SheetListCellInner(props: SheetListCellInnerProps) {\n  const {getValue, column, row, fieldType} = props\n  const cellId = `cell-${column.id}-${row.index}`\n  const [renderValue, setRenderValue] = useState<string>(getValue() as string)\n  const [isDirty, setIsDirty] = useState(false)\n  const inputRef = useRef<InputRef>(null)\n  const {\n    focusAnchorCell,\n    resetFocusSelection,\n    setSelectedAnchorCell,\n    getStateByCellId,\n    submitFocusedCell,\n  } = useDocumentSheetListContext()\n  const cellState = getStateByCellId(column.id, row.index)\n\n  const handleOnFocus = useCallback(() => {\n    // reselect in cases where focus achieved without initial mousedown\n    setSelectedAnchorCell(column.id, row.index)\n    focusAnchorCell()\n  }, [column.id, focusAnchorCell, row.index, setSelectedAnchorCell])\n  const {patchDocument} = props.table.options.meta || {}\n\n  const handleProgrammaticFocus = () => {\n    inputRef.current?.focus()\n    if (inputRef.current instanceof HTMLInputElement) {\n      inputRef.current.select()\n    }\n  }\n\n  const handleOnMouseDown: MouseEventHandler<CellInputElement> = (event) => {\n    if (event.detail === 2) {\n      handleProgrammaticFocus()\n    } else {\n      event.preventDefault()\n      setSelectedAnchorCell(column.id, row.index)\n    }\n  }\n\n  const handleOnEnterDown = useCallback(\n    (event: KeyboardEvent) => {\n      const {key} = event\n      if (key === 'Enter') {\n        if (cellState === 'selectedAnchor') handleProgrammaticFocus()\n        if (cellState === 'focused') submitFocusedCell()\n      }\n    },\n    [cellState, submitFocusedCell],\n  )\n\n  const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setIsDirty(true)\n    setRenderValue(event.target.value)\n  }\n\n  const handleOnBlur = () => {\n    if (isDirty) {\n      patchDocument?.(row.id, column.id, renderValue)\n      setIsDirty(false)\n    }\n    resetFocusSelection()\n  }\n\n  const handlePaste = useCallback(\n    (event: ClipboardEvent) => {\n      const clipboardData = event.clipboardData?.getData('Text')\n\n      if (typeof clipboardData === 'string' || typeof clipboardData === 'number') {\n        setRenderValue(clipboardData)\n        // patch immediately when pasting\n        patchDocument?.(row.id, column.id, clipboardData)\n      }\n    },\n    [column.id, patchDocument, row.id],\n  )\n\n  const handleCopy = useCallback(() => {\n    navigator.clipboard.writeText(renderValue.toString())\n  }, [renderValue])\n\n  useEffect(() => {\n    if (cellState === 'selectedAnchor' || cellState === 'focused')\n      // only listen for enter key when cell is focused or anchor\n      document.addEventListener('keydown', handleOnEnterDown)\n    if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n      // if cell is selected, paste events should be handled\n      document.addEventListener('paste', handlePaste)\n\n    if (cellState === 'selectedAnchor')\n      // only allow copying when cell is selected anchor\n      document.addEventListener('copy', handleCopy)\n\n    return () => {\n      if (cellState === 'selectedAnchor' || cellState === 'focused')\n        document.removeEventListener('keydown', handleOnEnterDown)\n      if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n        document.removeEventListener('paste', handlePaste)\n      if (cellState === 'selectedAnchor') document.removeEventListener('copy', handleCopy)\n    }\n  }, [\n    cellId,\n    cellState,\n    column.id,\n    getStateByCellId,\n    handleCopy,\n    handleOnEnterDown,\n    handlePaste,\n    row.index,\n  ])\n\n  const getBorderStyle = () => {\n    if (cellState === 'focused') return '2px solid blue'\n    if (cellState === 'selectedRange') return '1px solid green'\n    if (cellState === 'selectedAnchor') return '1px solid blue'\n\n    return '1px solid transparent'\n  }\n\n  const inputProps = {\n    'onFocus': handleOnFocus,\n    'onBlur': handleOnBlur,\n    'onMouseDown': handleOnMouseDown,\n    'aria-selected': !!cellState,\n    'data-testid': cellId,\n    'id': cellId,\n    'ref': (ref: InputRef) => {\n      inputRef.current = ref\n    },\n  }\n\n  if (fieldType.name === 'boolean') {\n    return (\n      <Select\n        {...inputProps}\n        onChange={() => null}\n        radius={0}\n        style={{\n          boxShadow: 'none',\n          border: getBorderStyle(),\n          padding: 0,\n        }}\n        value={JSON.stringify(renderValue)}\n      >\n        <option value=\"True\">True</option>\n        <option value=\"False\">False</option>\n      </Select>\n    )\n  }\n\n  return (\n    <TextInput\n      {...inputProps}\n      size={0}\n      radius={0}\n      border={false}\n      style={{\n        border: getBorderStyle(),\n        padding: '22px 16px',\n      }}\n      value={\n        typeof renderValue === 'string' || typeof renderValue === 'number'\n          ? renderValue\n          : JSON.stringify(renderValue)\n      }\n      onChange={handleOnChange}\n    />\n  )\n}\n\n/** @internal */\nexport function SheetListCell(cell: Cell<SanityDocument, unknown>) {\n  const isPinned = cell.column.getIsPinned()\n  const Cell = isPinned ? PinnedDataCell : DataCell\n  const borderWidth = isPinned && cell.column.getIsLastColumn('left') ? 2 : 1\n\n  return (\n    <Cell\n      key={cell.row.original._id + cell.id}\n      style={{\n        left: cell.column.getStart('left') ?? undefined,\n        borderRight: `${borderWidth}px solid var(--card-border-color)`,\n      }}\n      width={cell.column.getSize()}\n    >\n      {flexRender(cell.column.columnDef.cell, cell.getContext?.())}\n    </Cell>\n  )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isObjectSchemaType, type ObjectSchemaType} from '@sanity/types'\nimport {Box, Checkbox, Flex, Text} from '@sanity/ui'\nimport {\n  type AccessorKeyColumnDef,\n  createColumnHelper,\n  type GroupColumnDef,\n  type VisibilityState,\n} from '@tanstack/react-table'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n  type DocumentPreviewStore,\n  DocumentStatusIndicator,\n  getPreviewStateObservable,\n  type SanityDocument,\n  type SchemaType,\n  useDocumentPreviewStore,\n  useDocumentVersionInfo,\n} from 'sanity'\n\nimport {DocumentSheetListSelect} from './DocumentSheetListSelect'\nimport {SheetListCellInner} from './SheetListCell'\n\nexport const VISIBLE_COLUMN_LIMIT = 5\n\nconst PreviewCell = (props: {\n  documentPreviewStore: DocumentPreviewStore\n  schemaType: SchemaType\n  row: {\n    original: SanityDocument\n  }\n}) => {\n  const {documentPreviewStore, row, schemaType} = props\n  const previewStateObservable = useMemo(\n    () => getPreviewStateObservable(documentPreviewStore, schemaType, row.original._id),\n    [documentPreviewStore, row.original._id, schemaType],\n  )\n\n  const versionsInfo = useDocumentVersionInfo(row.original._id)\n\n  const {snapshot, isLoading} = useObservable(previewStateObservable, {\n    snapshot: null,\n    isLoading: true,\n  })\n  if (isLoading) {\n    return (\n      <Text size={1} muted>\n        Loading...\n      </Text>\n    )\n  }\n  const displayValue = (snapshot?.title ?? 'Untitled') as string\n\n  return (\n    <Flex align=\"center\" gap={3}>\n      <DocumentStatusIndicator\n        draft={versionsInfo.draft}\n        published={versionsInfo.published}\n        versions={undefined}\n      />\n      <Text size={1}>{displayValue}</Text>\n    </Flex>\n  )\n}\n\nconst columnHelper = createColumnHelper<SanityDocument>()\nconst SUPPORTED_FIELDS = ['string', 'number', 'boolean']\n\ntype Columns = (\n  | AccessorKeyColumnDef<SanityDocument, unknown>\n  | GroupColumnDef<SanityDocument, unknown>\n)[]\n\nconst getColsFromSchemaType = (schemaType: ObjectSchemaType, parentalField?: string): Columns => {\n  return schemaType.fields.reduce<Columns>((tableColumns: Columns, field) => {\n    const {type, name} = field\n    if (SUPPORTED_FIELDS.includes(type.name)) {\n      const nextCol = columnHelper.accessor(\n        // accessor must use dot notation for internal tanstack method of reading cell data\n        parentalField ? `${parentalField}.${field.name}` : field.name,\n        {\n          id: parentalField ? `${parentalField}_${field.name}` : field.name,\n          header: field.type.title,\n          enableHiding: true,\n          cell: (info) => <SheetListCellInner {...info} fieldType={type} />,\n        },\n      )\n\n      return [...tableColumns, nextCol]\n    }\n\n    // if first layer nested object\n    if (type.name === 'object' && isObjectSchemaType(type) && !parentalField) {\n      return [\n        ...tableColumns,\n        columnHelper.group({header: name, columns: getColsFromSchemaType(type, field.name)}),\n      ]\n    }\n\n    return tableColumns\n  }, [])\n}\n\n// Type guard function to check if a column is of type GroupColumnDef\nfunction isAccessorKeyColumnDef(\n  column: Columns[number],\n): column is AccessorKeyColumnDef<SanityDocument, unknown> {\n  return 'accessorKey' in column\n}\nfunction isGroupColumnDef(\n  column: AccessorKeyColumnDef<SanityDocument, unknown> | GroupColumnDef<SanityDocument, unknown>,\n): column is GroupColumnDef<SanityDocument, unknown> {\n  return 'columns' in column\n}\n\nconst flatColumns = (cols: Columns): AccessorKeyColumnDef<SanityDocument, unknown>[] => {\n  return cols.flatMap((col) => {\n    if (isAccessorKeyColumnDef(col)) {\n      return col\n    }\n    if (isGroupColumnDef(col)) {\n      return col.columns ? flatColumns(col.columns) : []\n    }\n    return []\n  })\n}\n\nexport function useDocumentSheetColumns(documentSchemaType?: ObjectSchemaType) {\n  const documentPreviewStore = useDocumentPreviewStore()\n\n  const columns: Columns = useMemo(() => {\n    if (!documentSchemaType) {\n      return []\n    }\n    return [\n      columnHelper.display({\n        id: 'selected',\n        enableHiding: false,\n        header: (info) => (\n          <Box>\n            <Checkbox\n              style={{paddingLeft: 4}}\n              indeterminate={info.table.getIsSomeRowsSelected()}\n              onChange={info.table.getToggleAllPageRowsSelectedHandler()}\n            />\n            {/* eslint-disable-next-line i18next/no-literal-string */}\n            {info.table.getSelectedRowModel().rows.length} selected\n          </Box>\n        ),\n        cell: DocumentSheetListSelect,\n      }),\n      columnHelper.accessor('Preview', {\n        enableHiding: false,\n        id: 'Preview',\n        cell: (info) => {\n          return (\n            <PreviewCell\n              {...info}\n              documentPreviewStore={documentPreviewStore}\n              schemaType={documentSchemaType}\n            />\n          )\n        },\n      }),\n      ...getColsFromSchemaType(documentSchemaType),\n    ]\n  }, [documentPreviewStore, documentSchemaType])\n\n  const [initialColumnsVisibility]: [VisibilityState, number] = useMemo(\n    () =>\n      flatColumns(columns).reduce<[VisibilityState, number]>(\n        ([accCols, countAllowedVisible], column) => {\n          if (!column.id) throw new Error('Column must have an id')\n          const visibilityKey = column.id\n\n          // this column is always visible\n          if (!column.enableHiding) {\n            return [{...accCols, [visibilityKey]: true}, countAllowedVisible]\n          }\n\n          // have already reached column visibility limit, hide column by default\n          if (countAllowedVisible === VISIBLE_COLUMN_LIMIT) {\n            return [{...accCols, [visibilityKey]: false}, countAllowedVisible]\n          }\n\n          return [{...accCols, [visibilityKey]: true}, countAllowedVisible + 1]\n        },\n        [{}, 0],\n      ),\n    [columns],\n  )\n\n  return {columns, initialColumnsVisibility}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {Box, Checkbox, Flex, Menu, Stack, Text} from '@sanity/ui'\nimport {type Column, type Table} from '@tanstack/react-table'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useTranslation} from 'sanity'\n\nimport {Button, MenuButton} from '../../../../ui-components'\nimport {VISIBLE_COLUMN_LIMIT} from './useDocumentSheetColumns'\n\ntype ColumnsControlProps = {\n  table: Table<SanityDocument>\n}\n\nexport function ColumnsControl({table}: ColumnsControlProps) {\n  const {t} = useTranslation()\n  const isVisibleLimitReached =\n    table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length >= VISIBLE_COLUMN_LIMIT\n\n  const setInitialColumns = useCallback(() => {\n    table.resetColumnVisibility()\n  }, [table])\n\n  const handleColumnOnChange = (column: Column<SanityDocument, unknown>) => () => {\n    column.toggleVisibility()\n  }\n\n  const getColumnVisibilityDisabled = (column: Column<SanityDocument, unknown>) => {\n    const isColumnVisible = column.getIsVisible()\n    const isSingleColumnVisible =\n      table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length === 1\n\n    return (isVisibleLimitReached && !isColumnVisible) || (isSingleColumnVisible && isColumnVisible)\n  }\n\n  return (\n    <MenuButton\n      button={<Button mode=\"bleed\" text={t('sheet-list.edit-columns')} />}\n      id=\"columns-control\"\n      menu={\n        <Menu padding={3} paddingTop={4} style={{width: 240}}>\n          <Flex direction=\"column\" height=\"fill\" gap={3}>\n            <Text weight=\"semibold\" size={1}>\n              {t('sheet-list.select-fields')}\n            </Text>\n            <Flex style={{flex: '1 1 auto', maxHeight: 320, overflowY: 'scroll'}}>\n              <Stack>\n                {table\n                  .getAllLeafColumns()\n                  .filter((column) => column.getCanHide())\n                  .map((column) => (\n                    <Flex key={column.id} marginY={2} align=\"center\">\n                      <Checkbox\n                        readOnly={getColumnVisibilityDisabled(column)}\n                        checked={column.getIsVisible()}\n                        onChange={handleColumnOnChange(column)}\n                        id={`col-visibility-${column.id}`}\n                        style={{display: 'block'}}\n                      />\n                      <Box flex={1} paddingLeft={3}>\n                        <Text size={1}>\n                          <label htmlFor={`col-visibility-${column.id}`}>\n                            {column.columnDef.header?.toString()}\n                          </label>\n                        </Text>\n                      </Box>\n                    </Flex>\n                  ))}\n              </Stack>\n            </Flex>\n            <Button\n              width=\"fill\"\n              mode=\"ghost\"\n              text={t('sheet-list.reset-columns')}\n              onClick={setInitialColumns}\n            />\n          </Flex>\n        </Menu>\n      }\n      placement=\"bottom\"\n      popover={{portal: true}}\n    />\n  )\n}\n","import {Flex} from '@sanity/ui'\nimport {Filters, SearchHeader, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst SearchContainer = styled(Flex)`\n  flex-shrink: 0;\n`\n\nexport function DocumentSheetListFilter() {\n  const {\n    state: {filtersVisible},\n  } = useSearchState()\n\n  return (\n    <SearchContainer>\n      <SearchHeader />\n      {filtersVisible && <Filters showTypeFilter={false} />}\n    </SearchContainer>\n  )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {CloseIcon, EllipsisHorizontalIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Menu, Text} from '@sanity/ui'\nimport {flexRender, type Header as HeaderType, type HeaderGroup} from '@tanstack/react-table'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem, Tooltip} from '../../../../ui-components'\n\nconst Header = styled.th<{width: number}>`\n  margin: 16px;\n  z-index: 1;\n  padding: 22px 0px;\n  border-top: 1px solid var(--card-border-color);\n  background-color: var(--card-badge-default-bg-color);\n  box-sizing: border-box;\n  text-align: left;\n  width: ${({width}) => width}px;\n  max-width: ${({width}) => width}px;\n`\n\nconst PinnedHeader = styled(Header)`\n  position: sticky;\n  z-index: 2;\n`\n\nconst HoverMenu = styled.div`\n  visibility: hidden;\n\n  ${Header}:hover & {\n    visibility: visible;\n  }\n`\n\ntype DocumentSheetListHeaderProps = {\n  header: HeaderType<SanityDocument, unknown>\n  headerGroup: HeaderGroup<SanityDocument>\n}\n\nexport function DocumentSheetListHeader(props: DocumentSheetListHeaderProps) {\n  const {header, headerGroup} = props\n  const {t} = useTranslation()\n\n  const isPinned = header.column.getIsPinned()\n\n  const headerTitle =\n    headerGroup.depth > 0 && !header.column.parent ? null : (\n      <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n        {flexRender(header.column.columnDef.header, header.getContext())}\n      </Text>\n    )\n\n  const HeaderTag = isPinned ? PinnedHeader : Header\n\n  const canShowHeaderMenu =\n    header.column.getCanHide() &&\n    (headerGroup.depth === 0 ? !header.column.columns.length : header.column.parent)\n\n  const borderWidth = isPinned && header.column.getIsLastColumn('left') ? 2 : 1\n\n  return (\n    <HeaderTag\n      style={{\n        left: header.column.getStart('left') ?? undefined,\n        borderRight: `${borderWidth}px solid var(--card-border-color)`,\n      }}\n      key={header.id}\n      data-testid={`header-${header.id}`}\n      width={header.getSize()}\n    >\n      <Flex justify=\"space-between\" marginX={2} align=\"baseline\">\n        <Tooltip delay={500} content={headerTitle}>\n          <Box style={{boxSizing: 'border-box'}} marginLeft={3} marginRight={3}>\n            {headerTitle}\n          </Box>\n        </Tooltip>\n        {canShowHeaderMenu && (\n          <HoverMenu>\n            <MenuButton\n              button={\n                <Button\n                  tooltipProps={{content: 'Open field menu'}}\n                  mode=\"bleed\"\n                  icon={EllipsisHorizontalIcon}\n                  data-testid=\"field-menu-button\"\n                />\n              }\n              id=\"field menu\"\n              popover={{placement: 'bottom-end'}}\n              menu={\n                <Menu>\n                  <MenuItem\n                    text={t('sheet-list.hide-field')}\n                    icon={CloseIcon}\n                    onClick={() => header.column.toggleVisibility()}\n                  />\n                </Menu>\n              }\n            />\n          </HoverMenu>\n        )}\n      </Flex>\n    </HeaderTag>\n  )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\n/* eslint-disable @sanity/i18n/no-attribute-string-literals */\n/* eslint-disable react/jsx-no-bind */\nimport {\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  DoubleChevronLeftIcon,\n  DoubleChevronRightIcon,\n} from '@sanity/icons'\nimport {Flex, Text} from '@sanity/ui'\nimport {type Table} from '@tanstack/react-table'\nimport {type SanityDocument} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../ui-components'\n\nexport function DocumentSheetListPaginator({table}: {table: Table<SanityDocument>}) {\n  return (\n    <TooltipDelayGroupProvider>\n      <Flex gap={3} align={'center'}>\n        <Button\n          onClick={() => table.setPageIndex(0)}\n          disabled={!table.getCanPreviousPage()}\n          icon={DoubleChevronLeftIcon}\n          tooltipProps={{\n            content: 'Go to first page',\n          }}\n        />\n        <Button\n          onClick={() => table.previousPage()}\n          disabled={!table.getCanPreviousPage()}\n          icon={ChevronLeftIcon}\n          tooltipProps={{\n            content: 'Go to previous page',\n          }}\n        />\n        <Text style={{whiteSpace: 'nowrap'}}>\n          {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n        </Text>\n\n        <Button\n          onClick={() => table.nextPage()}\n          disabled={!table.getCanNextPage()}\n          icon={ChevronRightIcon}\n          tooltipProps={{\n            content: 'Go to next page',\n          }}\n        />\n        <Button\n          onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n          disabled={!table.getCanNextPage()}\n          icon={DoubleChevronRightIcon}\n          tooltipProps={{\n            content: 'Go to last page',\n          }}\n        />\n        <select\n          value={table.getState().pagination.pageSize}\n          onChange={(e) => {\n            table.setPageSize(Number(e.target.value))\n          }}\n        >\n          {[25, 50, 100].map((pageSize) => (\n            <option key={pageSize} value={pageSize}>\n              {pageSize}\n            </option>\n          ))}\n        </select>\n      </Flex>\n    </TooltipDelayGroupProvider>\n  )\n}\n","import {type ListenEvent, type ListenOptions} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useReducer, useState} from 'react'\nimport {catchError, of} from 'rxjs'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS, getDraftId, type SanityDocument, useClient} from 'sanity'\n\ninterface DocumentDeletedAction {\n  id: string\n  type: 'DOCUMENT_DELETED'\n}\n\ninterface DocumentUpdatedAction {\n  payload: SanityDocument\n  type: 'DOCUMENT_UPDATED'\n}\n\ninterface DocumentsSetAction {\n  documents: SanityDocument[]\n  type: 'DOCUMENTS_SET'\n}\n\ninterface DocumentReceivedAction {\n  payload: SanityDocument\n  type: 'DOCUMENT_RECEIVED'\n}\n\nexport type DocumentsReducerAction =\n  | DocumentDeletedAction\n  | DocumentUpdatedAction\n  | DocumentsSetAction\n  | DocumentReceivedAction\n\nexport interface DocumentsReducerState {\n  documents: Record<string, SanityDocument>\n}\n\nfunction createDocumentsSet(documents: SanityDocument[]) {\n  const documentsById = documents.reduce((acc, doc) => ({...acc, [doc._id]: doc}), {})\n  return documentsById\n}\n\nfunction documentsReducer(\n  state: DocumentsReducerState,\n  action: DocumentsReducerAction,\n): DocumentsReducerState {\n  switch (action.type) {\n    case 'DOCUMENTS_SET': {\n      // Create an object with the documents id as key\n      const documents = createDocumentsSet(action.documents)\n\n      return {\n        ...state,\n        documents: documents,\n      }\n    }\n\n    case 'DOCUMENT_RECEIVED': {\n      const nextDocumentResult = action.payload as SanityDocument\n\n      return {\n        ...state,\n        documents: {\n          ...state.documents,\n          [nextDocumentResult._id]: nextDocumentResult,\n        },\n      }\n    }\n\n    case 'DOCUMENT_DELETED': {\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      const {[action.id]: _, ...restDocuments} = state.documents\n\n      return {\n        ...state,\n        documents: restDocuments,\n      }\n    }\n\n    case 'DOCUMENT_UPDATED': {\n      const updatedDocument = action.payload\n      const id = updatedDocument._id as string\n      const document = state.documents[id]\n\n      const nextDocument = {\n        // Add existing document data\n        ...document,\n        // Add incoming document data\n        ...updatedDocument,\n      } satisfies SanityDocument\n\n      return {\n        ...state,\n        documents: {\n          ...state.documents,\n          [id]: nextDocument,\n        },\n      }\n    }\n\n    default:\n      return state\n  }\n}\n\nconst LISTEN_OPTIONS: ListenOptions = {\n  events: ['welcome', 'mutation', 'reconnect'],\n  includeResult: true,\n  visibility: 'query',\n  includeAllVersions: true,\n  tag: 'document-sheet-list-store',\n}\n\n/**\n * TODO:\n * [] Lazy load more documents, reduce initial fetch.\n * [] Add support for sorting and filtering.\n * []  Make a projection of the query according to the schema. e.g. get only the primitive fields and the _id to reduce the data payload.\n */\nexport function useDocumentSheetListStore({\n  filter,\n  params,\n  apiVersion,\n}: {\n  filter: string\n  params?: Record<string, unknown>\n  apiVersion?: string\n}) {\n  const QUERY = `*[${filter}][0...2000]`\n  const client = useClient({\n    ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n    apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n  })\n  const [state, dispatch] = useReducer(documentsReducer, {\n    documents: {},\n  })\n  const [isLoading, setIsLoading] = useState<boolean>(client !== null)\n  const [error, setError] = useState<Error | null>(null)\n\n  const initialFetch = useCallback(async () => {\n    if (!client) {\n      setIsLoading(false)\n      return\n    }\n    try {\n      const res = await client.fetch(QUERY, params)\n      dispatch({type: 'DOCUMENTS_SET', documents: res})\n      setIsLoading(false)\n    } catch (err) {\n      setError(err)\n    }\n  }, [client, params, QUERY])\n\n  const handleListenerEvent = useCallback(\n    async (event: ListenEvent<Record<string, SanityDocument>>) => {\n      // Fetch all documents on initial connection\n      if (event.type === 'welcome') {\n        setIsLoading(true)\n        await initialFetch()\n        setIsLoading(false)\n      }\n\n      // The reconnect event means that we are trying to reconnect to the realtime listener.\n      // In this case we set loading to true to indicate that we're trying to\n      // reconnect. Once a connection has been established, the welcome event\n      // will be received and we'll fetch all documents again (above).\n      if (event.type === 'reconnect') {\n        setIsLoading(true)\n      }\n\n      // Handle mutations (create, update, delete) from the realtime listener\n      // and update the documents store accordingly\n      if (event.type === 'mutation') {\n        if (event.transition === 'appear') {\n          const nextDocument = event.result as SanityDocument | undefined\n\n          if (nextDocument) {\n            dispatch({\n              type: 'DOCUMENT_RECEIVED',\n              payload: nextDocument,\n            })\n          }\n        }\n\n        if (event.transition === 'disappear') {\n          dispatch({type: 'DOCUMENT_DELETED', id: event.documentId})\n        }\n\n        if (event.transition === 'update') {\n          const updatedDocument = event.result as SanityDocument | undefined\n\n          if (updatedDocument) {\n            dispatch({\n              type: 'DOCUMENT_UPDATED',\n              payload: updatedDocument,\n            })\n          }\n        }\n      }\n    },\n    [initialFetch],\n  )\n\n  const listener$ = useMemo(() => {\n    if (!client) return of()\n\n    const events$ = client.observable.listen(QUERY, params, LISTEN_OPTIONS).pipe(\n      catchError((err) => {\n        setError(err)\n        return of(err)\n      }),\n    )\n\n    return events$\n  }, [client, params, QUERY])\n\n  useEffect(() => {\n    const sub = listener$.subscribe(handleListenerEvent)\n\n    return () => {\n      sub?.unsubscribe()\n    }\n  }, [handleListenerEvent, listener$])\n\n  // Contemplate that we could have drafts and live documents here, merge them.\n  const dataAsArray = useMemo(() => {\n    // Joins the drafts and the live documents\n    const uniques = Object.keys(state.documents).reduce(\n      (acc: {[key: string]: SanityDocument}, key) => {\n        const document = state.documents[key]\n        const isDraft = document._id === getDraftId(document._id)\n        const id = isDraft ? document._id : getDraftId(document._id)\n        // If we already have the document, and this document is not the draft one, it means\n        // the draft hast already been added to the list, so we skip it.\n        if (acc[id] && !isDraft) {\n          return acc\n        }\n        acc[id] = document\n        return acc\n      },\n      {},\n    )\n    return Object.values(uniques)\n  }, [state.documents])\n\n  return {\n    data: dataAsArray,\n    isLoading,\n    error,\n  }\n}\n","import {useMemo} from 'react'\nimport {getPublishedId, useSearchState} from 'sanity'\n\nimport {useDocumentSheetListStore} from './useDocumentSheetListStore'\n\ninterface DocumentSheetListOptions {\n  /** The schemaType.name  */\n  typeName: string\n}\n\nexport function useDocumentSheetList({typeName}: DocumentSheetListOptions) {\n  const {state} = useSearchState()\n\n  const items = useMemo(() => {\n    const map = new Map()\n    state.result.hits.forEach((h) => map.set(getPublishedId(h.hit._id), h.hit))\n    return map\n  }, [state.result.hits])\n\n  // The store is listening to all the documents that match with the _type filter.\n  const {data, isLoading} = useDocumentSheetListStore({\n    filter: `_type == \"${typeName}\"`,\n  })\n\n  // Only return the documents that match with the serverSide filter items.\n  const documents = useMemo(() => {\n    return data.filter((doc) => items.has(getPublishedId(doc._id)))\n  }, [data, items])\n\n  return {data: documents, isLoading}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isDocumentSchemaType, type ObjectSchemaType, type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  type Row,\n  useReactTable,\n} from '@tanstack/react-table'\nimport {useCallback, useEffect, useState} from 'react'\nimport {SearchProvider, useSchema, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {type BaseStructureToolPaneProps} from '../../types'\nimport {ColumnsControl} from './ColumnsControl'\nimport {DocumentSheetListFilter} from './DocumentSheetListFilter'\nimport {DocumentSheetListHeader} from './DocumentSheetListHeader'\nimport {DocumentSheetListPaginator} from './DocumentSheetListPaginator'\nimport {DocumentSheetListProvider} from './DocumentSheetListProvider'\nimport {SheetListCell} from './SheetListCell'\nimport {useDocumentSheetColumns} from './useDocumentSheetColumns'\nimport {useDocumentSheetList} from './useDocumentSheetList'\n\ntype DocumentSheetListPaneProps = BaseStructureToolPaneProps<'documentList'>\n\nconst PaneContainer = styled(Flex)`\n  height: 100%;\n`\nconst TableContainer = styled.div`\n  overflow: auto; //our scrollable table container\n  position: relative; //needed for sticky header\n`\nconst Table = styled.table`\n  border-collapse: separate;\n  border-spacing: 0;\n  font-family: arial, sans-serif;\n  white-space: nowrap;\n  width: 100%;\n  border: 1px solid lightgray;\n\n  thead {\n    display: grid;\n    position: sticky;\n    top: 0;\n    z-index: 10;\n  }\n  tr {\n    padding: 0;\n  }\n  tr:last-child {\n    border-bottom: none;\n  }\n`\n\nfunction DocumentSheetListPaneInner({\n  documentSchemaType,\n}: DocumentSheetListPaneProps & {documentSchemaType: ObjectSchemaType}) {\n  const {dispatch, state} = useSearchState()\n  const {columns, initialColumnsVisibility} = useDocumentSheetColumns(documentSchemaType)\n  const {data} = useDocumentSheetList({\n    typeName: documentSchemaType.name,\n  })\n  const [selectedAnchor, setSelectedAnchor] = useState<number | null>(null)\n\n  const totalRows = state.result.hits.length\n  const table = useReactTable({\n    data,\n    columns,\n    getCoreRowModel: getCoreRowModel(),\n    getFilteredRowModel: getFilteredRowModel(),\n    getPaginationRowModel: getPaginationRowModel(),\n    // Avoids resetting the page index when the data changes, e.g. a mutation is received\n    autoResetPageIndex: false,\n    initialState: {\n      columnPinning: {left: ['selected', 'Preview']},\n      pagination: {pageSize: 25},\n      columnVisibility: initialColumnsVisibility,\n    },\n    getRowId: (row) => row._id,\n    meta: {\n      selectedAnchor,\n      setSelectedAnchor,\n      patchDocument: (documentId, fieldId, value) => null,\n    },\n  })\n\n  const {rows} = table.getRowModel()\n\n  useEffect(() => {\n    dispatch({type: 'TERMS_TYPE_ADD', schemaType: documentSchemaType})\n    return () => {\n      dispatch({type: 'TERMS_TYPE_REMOVE', schemaType: documentSchemaType})\n    }\n  }, [documentSchemaType, dispatch])\n\n  const renderRow = useCallback((row: Row<SanityDocument>) => {\n    return (\n      <Box\n        as=\"tr\"\n        key={row.original._id + row.id}\n        paddingY={2}\n        style={{display: 'flex', width: '100%'}}\n      >\n        {row.getVisibleCells().map((cell) => (\n          <SheetListCell {...cell} key={row.original._id + cell.id} />\n        ))}\n      </Box>\n    )\n  }, [])\n\n  const rowsCount = `Total: ${totalRows} rows, showing ${rows.length} rows`\n  return (\n    <PaneContainer direction=\"column\" paddingX={3} data-testid=\"document-sheet-list-pane\">\n      <Flex direction=\"row\" align=\"center\" paddingY={3} paddingX={1} justify=\"space-between\">\n        <Flex direction=\"row\" align=\"center\">\n          <DocumentSheetListFilter />\n          <Text size={0} muted>\n            {rowsCount}\n          </Text>\n        </Flex>\n        <ColumnsControl table={table} />\n      </Flex>\n      <TableContainer>\n        <DocumentSheetListProvider table={table}>\n          <Table>\n            <thead>\n              {table.getHeaderGroups().map((headerGroup) => (\n                <Box as=\"tr\" key={headerGroup.id}>\n                  {headerGroup.headers.map((header) => (\n                    <DocumentSheetListHeader\n                      key={header.id}\n                      header={header}\n                      headerGroup={headerGroup}\n                    />\n                  ))}\n                </Box>\n              ))}\n            </thead>\n            <tbody>{table.getRowModel().rows.map(renderRow)}</tbody>\n          </Table>\n        </DocumentSheetListProvider>\n      </TableContainer>\n      <Flex justify={'flex-end'} padding={3} gap={4} paddingY={5}>\n        <DocumentSheetListPaginator table={table} />\n      </Flex>\n    </PaneContainer>\n  )\n}\n\nexport function DocumentSheetListPane(props: DocumentSheetListPaneProps) {\n  const schema = useSchema()\n  const typeName = props.pane.schemaTypeName\n\n  const schemaType = schema.get(typeName)\n  if (!schemaType || !isDocumentSchemaType(schemaType)) {\n    throw new Error(`Schema type \"${typeName}\" not found or not a document schema`)\n  }\n  return (\n    <SearchProvider>\n      <DocumentSheetListPaneInner {...props} documentSchemaType={schemaType} />\n    </SearchProvider>\n  )\n}\n","import {Card, Code} from '@sanity/ui'\nimport {isEqual} from 'lodash'\nimport {memo, useMemo, useState} from 'react'\nimport {\n  EMPTY_ARRAY,\n  type GeneralDocumentListLayoutKey,\n  SourceProvider,\n  useI18nText,\n  useSource,\n} from 'sanity'\nimport shallowEquals from 'shallow-equals'\n\nimport {Pane} from '../../components/pane'\nimport {_DEBUG} from '../../constants'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureToolSetting} from '../../useStructureToolSetting'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {DEFAULT_ORDERING, EMPTY_RECORD} from './constants'\nimport {DocumentListPane} from './DocumentListPane'\nimport {findStaticTypesInFilter} from './helpers'\nimport {PaneHeader} from './PaneHeader'\nimport {DocumentSheetListPane} from './sheetList/DocumentSheetListPane'\nimport {type SortOrder} from './types'\n\nconst addSelectedStateToMenuItems = (options: {\n  menuItems?: PaneMenuItem[]\n  sortOrderRaw?: SortOrder\n  layout?: GeneralDocumentListLayoutKey\n}) => {\n  const {menuItems, sortOrderRaw, layout} = options\n\n  return menuItems?.map((item) => {\n    if (item.params?.layout) {\n      return {\n        ...item,\n        selected: layout === item.params?.layout,\n      }\n    }\n\n    if (item?.params?.by) {\n      return {\n        ...item,\n        selected: isEqual(sortOrderRaw?.by, item?.params?.by || EMPTY_ARRAY),\n      }\n    }\n\n    return {...item, selected: false}\n  })\n}\n\nexport function useShallowUnique<ValueType>(value: ValueType): ValueType {\n  const [previous, setPrevious] = useState<ValueType>(value)\n  if (!shallowEquals(previous, value)) {\n    setPrevious(value)\n    return value\n  }\n  return previous\n}\n\n/**\n * @internal\n */\nexport const PaneContainer = memo(function PaneContainer(\n  props: BaseStructureToolPaneProps<'documentList'>,\n) {\n  const {index, isSelected, pane, paneKey} = props\n  const {name: parentSourceName} = useSource()\n\n  const {\n    defaultLayout = 'default',\n    initialValueTemplates = EMPTY_ARRAY,\n    menuItemGroups,\n    menuItems,\n    options,\n  } = pane\n  const {defaultOrdering = EMPTY_ARRAY, filter} = options\n  const params = useShallowUnique(options.params || EMPTY_RECORD)\n  const sourceName = pane.source\n  const typeName = useMemo(() => {\n    const staticTypes = findStaticTypesInFilter(filter, params)\n    if (staticTypes?.length === 1) return staticTypes[0]\n    return null\n  }, [filter, params])\n\n  const [layout, setLayout] = useStructureToolSetting<GeneralDocumentListLayoutKey>(\n    'layout',\n    typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n    defaultLayout,\n  )\n\n  const {title} = useI18nText(pane)\n\n  // Ensure that we use the defaultOrdering value from structure builder if any as the default\n  const defaultSortOrder = useMemo(() => {\n    return defaultOrdering?.length > 0 ? {by: defaultOrdering} : DEFAULT_ORDERING\n  }, [defaultOrdering])\n\n  const [sortOrderRaw, setSortOrder] = useStructureToolSetting<SortOrder>(\n    'sort-order',\n    typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n    defaultSortOrder,\n  )\n\n  const menuItemsWithSelectedState = useMemo(\n    () =>\n      addSelectedStateToMenuItems({\n        menuItems,\n        sortOrderRaw,\n        layout,\n      }),\n    [layout, menuItems, sortOrderRaw],\n  )\n\n  const isSheetListLayout = layout === 'sheetList'\n  const paneLayout = isSheetListLayout ? (\n    <DocumentSheetListPane {...props} key={props.pane.id} />\n  ) : (\n    <DocumentListPane {...props} sortOrder={sortOrderRaw} layout={layout} />\n  )\n\n  return (\n    <SourceProvider name={sourceName || parentSourceName}>\n      <Pane\n        data-ui=\"DocumentListPane\"\n        id={paneKey}\n        minWidth={320}\n        {...(isSheetListLayout ? {} : {currentMaxWidth: 350, maxWidth: 640})}\n        selected={isSelected}\n      >\n        {_DEBUG && (\n          <Card padding={4} tone=\"transparent\">\n            <Code>{pane.source || '(none)'}</Code>\n          </Card>\n        )}\n\n        <PaneHeader\n          index={index}\n          initialValueTemplates={initialValueTemplates}\n          menuItemGroups={menuItemGroups}\n          menuItems={menuItemsWithSelectedState}\n          setLayout={setLayout}\n          setSortOrder={setSortOrder}\n          title={title}\n        />\n        {paneLayout}\n      </Pane>\n    </SourceProvider>\n  )\n})\nPaneContainer.displayName = 'Memo(PaneContainer)'\n","import {type DocumentBadgeComponent} from 'sanity'\n\n/** @internal */\nexport const LiveEditBadge: DocumentBadgeComponent = (props) => {\n  const {liveEditSchemaType, version} = props\n\n  if (liveEditSchemaType && !version) {\n    return {\n      label: 'Live',\n      color: 'danger',\n    }\n  }\n\n  return null\n}\nLiveEditBadge.displayName = 'LiveEditBadge'\n","import {uuid} from '@sanity/uuid'\n\nimport {EMPTY_PARAMS, type LOADING_PANE} from './constants'\nimport {type PaneNode, type RouterPanes} from './types'\n\nconst state: {\n  activePanes: Array<PaneNode | typeof LOADING_PANE>\n} = {activePanes: []}\n\nexport function setActivePanes(panes: Array<PaneNode | typeof LOADING_PANE>): void {\n  state.activePanes = panes\n}\n\n/**\n * This function looks at the _active panes_ to resolve an intent. this type of\n * intent resolution is faster and does not cause the panes to reset\n *\n * @internal\n */\nexport function getIntentState(\n  intent: string,\n  params: Record<string, string>,\n  routerState: {panes?: RouterPanes} | undefined,\n  payload: unknown,\n): {panes: RouterPanes} | {intent: string; params: Record<string, string>; payload: unknown} {\n  const panes = routerState?.panes || []\n  const activePanes = state.activePanes || []\n  const editDocumentId = params.id || uuid()\n\n  // Loop through open panes and see if any of them can handle the intent\n  for (let i = activePanes.length - 1; i >= 0; i--) {\n    const pane = activePanes[i]\n\n    if (typeof pane !== 'object') continue\n\n    // NOTE: if you update this logic, please also update the similar handler in\n    // `resolveIntent.ts`\n    if (\n      pane.canHandleIntent?.(intent, params, {\n        pane,\n        index: i,\n      }) ||\n      // see `resolveIntent.ts` for more info\n      (pane.type === 'documentList' &&\n        pane.schemaTypeName === params.type &&\n        pane.options.filter === '_type == $type')\n    ) {\n      const paneParams = getPaneParams(intent, params)\n\n      return {\n        panes: panes\n          .slice(0, i)\n          .concat([[{id: editDocumentId, params: paneParams, payload}]]) as RouterPanes,\n      }\n    }\n  }\n\n  return {intent: intent, params, payload}\n}\n\nfunction getPaneParams(\n  intent: string,\n  {template, version}: Record<string, string>,\n): {template?: string; version?: string} {\n  if (intent !== 'create') return EMPTY_PARAMS\n  if (template && version) return {template, version}\n  if (template) return {template}\n  if (version) return {version}\n  return EMPTY_PARAMS\n}\n","import {type ObjectDiff} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {\n  ChangeFieldWrapper,\n  ChangeList,\n  type DocumentChangeContextInstance,\n  LoadingBlock,\n  NoChanges,\n  type ObjectSchemaType,\n  ScrollContainer,\n  usePerspective,\n  useTimelineSelector,\n  useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TimelineMenu} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n  height: 100%;\n  overflow: auto;\n  position: relative;\n  scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n  &:not([hidden]) {\n    display: grid;\n  }\n  grid-template-columns: 48px 1fr;\n  align-items: center;\n  gap: 0.25em;\n`\n\nexport function ChangesInspector({showChanges}: {showChanges: boolean}): React.JSX.Element {\n  const {documentId, schemaType, timelineError, timelineStore, value} = useDocumentPane()\n  const {selectedReleaseId} = usePerspective()\n\n  const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n  const rev = useTimelineSelector(timelineStore, (state) => state.revTime)\n  const diff = useTimelineSelector(timelineStore, (state) => state.diff)\n  const onOlderRevision = useTimelineSelector(timelineStore, (state) => state.onOlderRevision)\n  const selectionState = useTimelineSelector(timelineStore, (state) => state.selectionState)\n  const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n  const loading = selectionState === 'loading'\n  const isComparingCurrent = !onOlderRevision\n\n  // Note that we are using the studio core namespace here, as changes theoretically should\n  // be part of Sanity core (needs to be moved from structure at some point)\n  const {t: structureT} = useTranslation(structureLocaleNamespace)\n\n  const documentContext: DocumentChangeContextInstance = useMemo(\n    () => ({\n      documentId,\n      schemaType,\n      FieldWrapper: (props) => <ChangeFieldWrapper {...props} hasRevertHover={false} />,\n      rootDiff: diff,\n      isComparingCurrent,\n      value,\n      showFromValue: true,\n    }),\n    [documentId, diff, isComparingCurrent, schemaType, value],\n  )\n\n  if (selectedReleaseId) {\n    return (\n      <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n        <Card flex={1} padding={2} paddingTop={0}>\n          <TimelineError versionError />\n        </Card>\n      </Flex>\n    )\n  }\n\n  return (\n    <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n      <Box padding={3}>\n        <Grid paddingX={2} paddingBottom={2}>\n          <Text size={1} muted>\n            {structureT('changes.from.label')}\n          </Text>\n\n          <TimelineMenu mode=\"since\" chunk={sinceTime} placement=\"bottom-start\" />\n          <Text size={1} muted>\n            {structureT('changes.to.label')}\n          </Text>\n          <TimelineMenu chunk={rev} mode=\"rev\" placement=\"bottom-end\" />\n        </Grid>\n      </Box>\n\n      <Card flex={1} paddingX={2} paddingY={2}>\n        <BoundaryElementProvider element={scrollRef}>\n          <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n            <Box flex={1} paddingX={3} height=\"fill\">\n              {showChanges && (\n                <Content\n                  diff={diff}\n                  documentContext={documentContext}\n                  error={timelineError}\n                  loading={loading}\n                  schemaType={schemaType}\n                />\n              )}\n            </Box>\n          </Scroller>\n        </BoundaryElementProvider>\n      </Card>\n    </Flex>\n  )\n}\n\nfunction Content({\n  error,\n  diff,\n  documentContext,\n  loading,\n  schemaType,\n}: {\n  error?: Error | null\n  diff: ObjectDiff<any> | null\n  documentContext: DocumentChangeContextInstance\n  loading: boolean\n  schemaType: ObjectSchemaType\n}) {\n  if (error) {\n    return <NoChanges />\n  }\n\n  if (loading) {\n    return <LoadingBlock showText />\n  }\n\n  if (!diff) {\n    return <NoChanges />\n  }\n\n  return (\n    <DocumentChangeContext.Provider value={documentContext}>\n      <ChangeList diff={diff} schemaType={schemaType} />\n    </DocumentChangeContext.Provider>\n  )\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {\n  type DocumentGroupEvent,\n  Event,\n  isDeleteDocumentGroupEvent,\n  isDeleteDocumentVersionEvent,\n  isScheduleDocumentVersionEvent,\n  isUnpublishDocumentEvent,\n  isUnscheduleDocumentVersionEvent,\n  useTranslation,\n} from 'sanity'\n\nimport {Tooltip} from '../../../../../ui-components'\n\nexport interface TimelineItemProps {\n  event: DocumentGroupEvent\n  isSelected: boolean\n  onSelect: (chunk: DocumentGroupEvent) => void\n  optionsMenu?: React.ReactNode\n}\n\nconst getIsSelectable = (event: DocumentGroupEvent) => {\n  return (\n    !isDeleteDocumentVersionEvent(event) &&\n    !isDeleteDocumentGroupEvent(event) &&\n    !isUnpublishDocumentEvent(event) &&\n    !isScheduleDocumentVersionEvent(event) &&\n    !isUnscheduleDocumentVersionEvent(event)\n  )\n}\n\nexport function EventTimelineItem({event, isSelected, onSelect, optionsMenu}: TimelineItemProps) {\n  const {t} = useTranslation('studio')\n  const isSelectable = getIsSelectable(event)\n  const handleClick = useCallback(\n    (evt: MouseEvent<HTMLDivElement>) => {\n      evt.preventDefault()\n      evt.stopPropagation()\n\n      if (isSelectable) {\n        onSelect(event)\n      }\n    },\n    [onSelect, event, isSelectable],\n  )\n  return (\n    <Flex gap={1}>\n      <Tooltip content={isSelectable ? '' : t('changes.not-selectable')} disabled={isSelectable}>\n        <Card\n          as={isSelectable ? 'button' : 'div'}\n          onClick={handleClick}\n          padding={2}\n          pressed={isSelected}\n          radius={2}\n          data-ui=\"timelineItem\"\n          data-testid=\"timeline-item-button\"\n          data-chunk-timestamp={event.timestamp}\n          style={{\n            cursor: isSelectable ? 'pointer' : 'default',\n            width: '100%',\n          }}\n        >\n          <Event event={event} showChangesBy=\"tooltip\" />\n        </Card>\n      </Tooltip>\n      {optionsMenu}\n    </Flex>\n  )\n}\n","import {\n  Flex,\n  Menu,\n  // eslint-disable-next-line no-restricted-imports\n  MenuItem,\n  Text,\n  usePortal,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n  ContextMenuButton,\n  getReleaseIdFromReleaseDocumentId,\n  getReleaseTone,\n  getVersionFromId,\n  isReleaseDocument,\n  type PublishDocumentVersionEvent,\n  RELEASES_INTENT,\n  Translate,\n  useSetPerspective,\n  useTranslation,\n  VersionInlineBadge,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {MenuButton} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TIMELINE_MENU_PORTAL} from '../timelineMenu'\n\nexport function PublishedEventMenu({event}: {event: PublishDocumentVersionEvent}) {\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\n  const portalContext = usePortal()\n  const {params, setParams} = usePaneRouter()\n  const setPerspective = useSetPerspective()\n\n  const handleOpenReleaseDocument = useCallback(() => {\n    setParams({\n      ...params,\n      rev: event.versionRevisionId || '@lastPublished',\n      since: undefined,\n      historyEvent: event.id,\n      historyVersion: getVersionFromId(event.versionId),\n    })\n  }, [setParams, params, event])\n\n  const handleOpenDraftDocument = useCallback(() => {\n    setParams({\n      ...params,\n      rev: event.versionRevisionId,\n      preserveRev: 'true',\n      since: undefined,\n    })\n    setTimeout(() => {\n      // A bug is generated when we change the perspective and the params at the same time\n      // Resetting the params to the value it had before, because the paneRouter uses the previous value\n      setPerspective('drafts')\n    }, 100)\n  }, [setParams, params, event.versionRevisionId, setPerspective])\n\n  const VersionBadge = ({children}: {children: React.ReactNode}) => {\n    return (\n      <VersionInlineBadge\n        $tone={\n          event.release\n            ? isReleaseDocument(event.release)\n              ? getReleaseTone(event.release)\n              : 'default'\n            : undefined\n        }\n      >\n        {children}\n      </VersionInlineBadge>\n    )\n  }\n  const isMenuDisabled = event.release && !isReleaseDocument(event.release)\n  return (\n    <MenuButton\n      id={`timeline-item-menu-button-${event.versionId}`}\n      button={\n        <ContextMenuButton\n          aria-label={t('timeline-item.menu-button.aria-label')}\n          tooltipProps={{\n            content: isMenuDisabled\n              ? t('timeline-item.not-found-release.tooltip', {\n                  releaseId: event.release?._id\n                    ? getReleaseIdFromReleaseDocumentId(event.release._id)\n                    : undefined,\n                })\n              : t('timeline-item.menu-button.tooltip'),\n          }}\n          disabled={isMenuDisabled}\n        />\n      }\n      menu={\n        <Menu padding={1}>\n          {event.release ? (\n            <>\n              <IntentLink\n                intent={RELEASES_INTENT}\n                params={{id: getReleaseIdFromReleaseDocumentId(event.release._id)}}\n                style={{textDecoration: 'none'}}\n              >\n                <MenuItem padding={3}>\n                  <Flex align={'center'} justify=\"flex-start\">\n                    <Text size={1} style={{textDecoration: 'none'}}>\n                      <Translate\n                        components={{\n                          VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n                        }}\n                        i18nKey=\"events.open.release\"\n                        values={{\n                          releaseTitle:\n                            event.release.metadata?.title ||\n                            tCore('release.placeholder-untitled-release'),\n                        }}\n                        t={t}\n                      />\n                    </Text>\n                  </Flex>\n                </MenuItem>\n              </IntentLink>\n              <MenuItem onClick={handleOpenReleaseDocument}>\n                <Flex align={'center'} justify=\"flex-start\">\n                  <Text size={1}>\n                    <Translate\n                      components={{\n                        VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n                      }}\n                      i18nKey=\"events.inspect.release\"\n                      values={{\n                        releaseTitle:\n                          event.release.metadata?.title ||\n                          tCore('release.placeholder-untitled-release'),\n                      }}\n                      t={t}\n                    />\n                  </Text>\n                </Flex>\n              </MenuItem>\n            </>\n          ) : (\n            <MenuItem onClick={handleOpenDraftDocument} disabled={!event.versionRevisionId}>\n              <Flex align={'center'}>\n                <Text size={1}>\n                  <Translate\n                    components={{\n                      VersionBadge: ({children}) => (\n                        <VersionInlineBadge $tone=\"caution\">{children}</VersionInlineBadge>\n                      ),\n                    }}\n                    i18nKey=\"events.open.draft\"\n                    t={t}\n                  />\n                </Text>\n              </Flex>\n            </MenuItem>\n          )}\n        </Menu>\n      }\n      popover={{\n        // when used inside the timeline menu we want to keep the element inside the popover, to avoid closing the popover when clicking expand.\n        portal: portalContext.elements?.[TIMELINE_MENU_PORTAL] ? TIMELINE_MENU_PORTAL : true,\n        placement: 'bottom',\n        fallbackPlacements: ['bottom-end', 'bottom-start'],\n      }}\n    />\n  )\n}\n","import {Box, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion, type Variants} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n  CommandList,\n  type CommandListRenderItemCallback,\n  type DocumentGroupEvent,\n  getDocumentVariantType,\n  isCreateDocumentVersionEvent,\n  isDeleteDocumentVersionEvent,\n  isEditDocumentVersionEvent,\n  isPublishDocumentVersionEvent,\n  LoadingBlock,\n  useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from '../expandableTimelineItemButton'\nimport {ListWrapper, Root} from '../timeline.styled'\nimport {EventTimelineItem} from './EventTimelineItem'\nimport {PublishedEventMenu} from './PublishedEventMenu'\n\ninterface TimelineProps {\n  events: DocumentGroupEvent[]\n  hasMoreEvents: boolean | null\n  selectedEventId?: string\n  onLoadMore: () => void\n  onSelect: (event: DocumentGroupEvent) => void\n  fetchEventChildren: (event: DocumentGroupEvent) => Promise<void>\n  /**\n   * The list needs a predefined max height for the scroller to work.\n   */\n  listMaxHeight?: string\n}\n\nconst TimelineItemWrapper = motion.create(Box)\nconst CHILDREN_ITEMS_VARIANTS: Variants = {\n  initial: {\n    opacity: 0,\n  },\n  animate: {\n    opacity: 1,\n  },\n  exit: {\n    opacity: 0,\n  },\n}\n\nconst ITEM_HEIGHT = 57\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const EventsTimeline = ({\n  events: allEvents,\n  hasMoreEvents,\n  selectedEventId,\n  onLoadMore,\n  onSelect,\n  listMaxHeight = 'calc(100vh - 280px)',\n  fetchEventChildren,\n}: TimelineProps) => {\n  const [mounted, setMounted] = useState(false)\n  const {t} = useTranslation('studio')\n  const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n    if (selectedEventId) {\n      // Find that event and if it has a parent, expand the parent.\n      const selectedEvent = allEvents.find((event) => event.id === selectedEventId)\n      if (selectedEvent && 'parentId' in selectedEvent && selectedEvent.parentId) {\n        return new Set([selectedEvent.parentId])\n      }\n    }\n    return new Set()\n  })\n  const [expandingParents, setExpandingParents] = useState<Set<string>>(new Set())\n\n  const events = useMemo(() => {\n    return allEvents.filter((event) => {\n      if (isCreateDocumentVersionEvent(event) && event.parentId) {\n        // Check if it's the last event in the list, in that case, we want to show it\n        const isLastEvent = allEvents[allEvents.length - 1].id === event.id\n        if (isLastEvent) return true\n        return expandedParents.has(event.parentId)\n      }\n      if (isEditDocumentVersionEvent(event) && event.parentId) {\n        return expandedParents.has(event.parentId)\n      }\n      return true\n    })\n  }, [expandedParents, allEvents])\n\n  const handleExpandParent = useCallback(\n    (event: DocumentGroupEvent) => async () => {\n      const parentId = event.id\n\n      let isExpanding = false\n      setExpandedParents((prev) => {\n        const next = new Set(prev)\n\n        if (prev.has(parentId)) next.delete(parentId)\n        else {\n          isExpanding = true\n          next.add(parentId)\n        }\n\n        return next\n      })\n      if (isExpanding) {\n        setExpandingParents((prev) => {\n          const next = new Set(prev)\n          next.add(parentId)\n          return next\n        })\n        await fetchEventChildren(event)\n        setExpandingParents((prev) => {\n          const next = new Set(prev)\n          next.delete(parentId)\n          return next\n        })\n      }\n    },\n    [fetchEventChildren, setExpandingParents],\n  )\n\n  const handleSelectChunk = useCallback(\n    (event: DocumentGroupEvent) => {\n      onSelect(event)\n    },\n    [onSelect],\n  )\n\n  const renderOptionsMenu = useCallback(\n    (event: DocumentGroupEvent) => {\n      const documentVariantType = getDocumentVariantType(event.documentId)\n      if (isPublishDocumentVersionEvent(event) && documentVariantType === 'published') {\n        return <PublishedEventMenu event={event} />\n      }\n      if (\n        (isPublishDocumentVersionEvent(event) &&\n          documentVariantType === 'draft' &&\n          event.creationEvent) ||\n        (isDeleteDocumentVersionEvent(event) && event.creationEvent)\n      ) {\n        return (\n          <ExpandableTimelineItemButton\n            isExpanded={expandedParents.has(event.id)}\n            onExpand={handleExpandParent(event)}\n          />\n        )\n      }\n      return null\n    },\n    [expandedParents, handleExpandParent],\n  )\n\n  const renderItem = useCallback<CommandListRenderItemCallback<DocumentGroupEvent[][number]>>(\n    (event, {activeIndex}) => {\n      /**\n       * The create version event will be present while expanding (loading the edits), so we are attaching to it the loading block at the top.\n       * - publishEvent (expanding?)\n       * --- loadingBlock  ~createEvent~\n       * */\n      const showExpandingLoader =\n        isCreateDocumentVersionEvent(event) &&\n        event.parentId &&\n        expandingParents.has(event.parentId)\n\n      const isLastEvent = activeIndex === events.length - 1\n      if (showExpandingLoader) {\n        return (\n          <TimelineItemWrapper\n            animate={{opacity: 1}}\n            initial={{opacity: 0}}\n            transition={{duration: 0.2, delay: 0.2}}\n          >\n            {/* We need this item to match the same height as the rest of the list items, which is 57px */}\n            <Flex align=\"center\" justify=\"center\" style={{height: ITEM_HEIGHT}}>\n              <Spinner />\n            </Flex>\n          </TimelineItemWrapper>\n        )\n      }\n      return (\n        <TimelineItemWrapper\n          paddingBottom={1}\n          paddingRight={1}\n          key={event.timestamp}\n          animate=\"animate\"\n          exit=\"exit\"\n          initial=\"initial\"\n          variants={'parentId' in event ? CHILDREN_ITEMS_VARIANTS : undefined}\n          paddingLeft={\n            (isEditDocumentVersionEvent(event) || isCreateDocumentVersionEvent(event)) &&\n            event.parentId &&\n            !isLastEvent\n              ? 4\n              : 1\n          }\n        >\n          <EventTimelineItem\n            event={event}\n            isSelected={event.id === selectedEventId}\n            onSelect={handleSelectChunk}\n            optionsMenu={renderOptionsMenu(event)}\n          />\n\n          {isLastEvent && hasMoreEvents && <LoadingBlock />}\n        </TimelineItemWrapper>\n      )\n    },\n    [\n      expandingParents,\n      selectedEventId,\n      handleSelectChunk,\n      renderOptionsMenu,\n      events.length,\n      hasMoreEvents,\n    ],\n  )\n\n  useEffect(() => setMounted(true), [])\n  const selectedIndex = events.findIndex((event) => event.id === selectedEventId)\n\n  return (\n    <Root\n      /**\n       * We delay initial rendering if `selectedIndex` is present.\n       * This is a _temporary_ workaround to allow the virtual <CommandList>\n       * to scroll to a specific index prior to being displayed.\n       *\n       * Without this, there'll be a noticeable 'flash' where the virtual list\n       * will render with its child items at the top and then scroll into position.\n       */\n      $visible={!selectedIndex || mounted}\n      data-ui=\"timeline\"\n    >\n      {events.length > 0 ? (\n        <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n          <CommandList\n            activeItemDataAttr=\"data-hovered\"\n            ariaLabel={t('timeline.list.aria-label')}\n            autoFocus=\"list\"\n            initialIndex={selectedIndex}\n            initialScrollAlign=\"center\"\n            itemHeight={ITEM_HEIGHT}\n            items={events}\n            onEndReached={onLoadMore}\n            onEndReachedIndexOffset={20}\n            overscan={5}\n            renderItem={renderItem}\n            wrapAround={false}\n          />\n        </ListWrapper>\n      ) : (\n        <Stack padding={3} space={3}>\n          <Text size={1} weight=\"medium\">\n            {t('timeline.error.no-document-history-title')}\n          </Text>\n          <Text muted size={1}>\n            {t('timeline.error.no-document-history-description')}\n          </Text>\n        </Stack>\n      )}\n    </Root>\n  )\n}\n\nEventsTimeline.displayName = 'EventsTimeline'\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n  Flex,\n  type Placement,\n  PortalProvider,\n  useClickOutsideEvent,\n  useGlobalKeyDown,\n  useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n  type DocumentGroupEvent,\n  isDeleteDocumentGroupEvent,\n  isDeleteDocumentVersionEvent,\n  isScheduleDocumentVersionEvent,\n  isUnpublishDocumentEvent,\n  isUnscheduleDocumentVersionEvent,\n  TIMELINE_ITEM_I18N_KEY_MAPPING,\n  useEvents,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../../ui-components'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {TimelineError} from '../TimelineError'\nimport {EventsTimeline} from './EventsTimeline'\n\ninterface TimelineMenuProps {\n  event: DocumentGroupEvent | null\n  events: DocumentGroupEvent[]\n  mode: 'rev' | 'since'\n  placement?: Placement\n}\n\nconst Root = styled(Popover)`\n  overflow: hidden;\n  overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nconst formatParams = {\n  timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n}\n\nexport function EventsTimelineMenu({event, events, mode, placement}: TimelineMenuProps) {\n  const {setTimelineRange} = useDocumentPane()\n  const [open, setOpen] = useState(false)\n  const [button, setButton] = useState<HTMLButtonElement | null>(null)\n  const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n  const toast = useToast()\n  const {\n    nextCursor,\n    loading,\n    error: eventsError,\n    findRangeForRevision,\n    findRangeForSince,\n    loadMoreEvents,\n    expandEvent,\n  } = useEvents()\n\n  const {t} = useTranslation('studio')\n\n  const handleOpen = useCallback(() => {\n    setOpen(true)\n  }, [])\n\n  const handleClose = useCallback(() => {\n    setOpen(false)\n  }, [])\n\n  const handleGlobalKeyDown = useCallback(\n    (e: KeyboardEvent) => {\n      if (open && (e.key === 'Escape' || e.key === 'Tab')) {\n        handleClose()\n        button?.focus()\n      }\n    },\n    [button, handleClose, open],\n  )\n\n  useGlobalKeyDown(handleGlobalKeyDown)\n  useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n  const selectRev = useCallback(\n    (revEvent: DocumentGroupEvent) => {\n      try {\n        if (\n          isDeleteDocumentVersionEvent(revEvent) ||\n          isDeleteDocumentGroupEvent(revEvent) ||\n          isUnpublishDocumentEvent(revEvent) ||\n          isScheduleDocumentVersionEvent(revEvent) ||\n          isUnscheduleDocumentVersionEvent(revEvent)\n        ) {\n          console.error('Event is not selectable')\n          return\n        }\n        const [since, rev] = findRangeForRevision(revEvent?.id)\n        setTimelineRange(since, rev)\n        handleClose()\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [t, toast, setTimelineRange, findRangeForRevision, handleClose],\n  )\n\n  const selectSince = useCallback(\n    (sinceEvent: DocumentGroupEvent) => {\n      try {\n        const [since, rev] = findRangeForSince(sinceEvent.id)\n        setTimelineRange(since, rev)\n        handleClose()\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [findRangeForSince, setTimelineRange, toast, t, handleClose],\n  )\n\n  const handleLoadMore = useCallback(() => {\n    if (!loading && nextCursor) {\n      loadMoreEvents()\n    }\n  }, [loading, loadMoreEvents, nextCursor])\n\n  const content = useMemo(() => {\n    if (eventsError) return <TimelineError />\n\n    return (\n      <EventsTimeline\n        events={events}\n        fetchEventChildren={expandEvent}\n        hasMoreEvents={Boolean(nextCursor)}\n        selectedEventId={event?.id}\n        onLoadMore={handleLoadMore}\n        onSelect={mode === 'rev' ? selectRev : selectSince}\n      />\n    )\n  }, [\n    eventsError,\n    mode,\n    expandEvent,\n    events,\n    nextCursor,\n    event?.id,\n    handleLoadMore,\n    selectSince,\n    selectRev,\n  ])\n\n  const revLabel = event\n    ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n        context: 'timestamp',\n        timestamp: new Date(event.timestamp),\n        formatParams,\n      })\n    : t('timeline.latest-revision')\n\n  // eslint-disable-next-line no-nested-ternary\n  const sinceLabel = event\n    ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n        context: 'timestamp',\n        timestamp: new Date(event.timestamp),\n        formatParams,\n      })\n    : events.length > 0\n      ? t('timeline.since-version-missing')\n      : t('timeline.no-previous-events')\n\n  const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n  return (\n    <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n      <Root\n        data-testid=\"timeline-menu\"\n        constrainSize\n        content={open && content}\n        data-ui=\"versionMenu\"\n        open={open}\n        placement={placement}\n        matchReferenceWidth\n        portal\n        ref={setPopoverRef}\n      >\n        <Flex width={'fill'}>\n          <Button\n            data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n            disabled={loading || !events.length}\n            mode=\"ghost\"\n            onClick={open ? handleClose : handleOpen}\n            ref={setButton}\n            selected={open}\n            width=\"fill\"\n            tooltipProps={null}\n            justify={'space-between'}\n            style={{\n              maxWidth: '100%',\n            }}\n            iconRight={ChevronDownIcon}\n            text={loading ? t('timeline.loading-history') : buttonLabel}\n          />\n        </Flex>\n      </Root>\n    </PortalProvider>\n  )\n}\n","import {diffInput, wrap} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type ReactElement, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n  ChangeFieldWrapper,\n  ChangeList,\n  ChangesError,\n  type DocumentChangeContextInstance,\n  type DocumentGroupEvent,\n  isReleaseDocument,\n  LoadingBlock,\n  NoChanges,\n  type ObjectDiff,\n  type ObjectSchemaType,\n  ScrollContainer,\n  Translate,\n  useEvents,\n  usePerspective,\n  useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {EventsTimelineMenu} from '../../timeline/events/EventsTimelineMenu'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n  height: 100%;\n  overflow: auto;\n  position: relative;\n  scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n  &:not([hidden]) {\n    display: grid;\n  }\n  grid-template-columns: 48px 1fr;\n  align-items: center;\n  gap: 0.25em;\n`\n\nconst SpinnerContainer = styled(Flex)`\n  width: 100%;\n  position: absolute;\n  bottom: -4px;\n`\n\nconst DIFF_INITIAL_VALUE = {\n  diff: null,\n  loading: true,\n  error: null,\n}\n\nconst CompareWithPublishedView = () => {\n  const {documentId, schemaType, editState, displayed} = useDocumentPane()\n  const {selectedPerspective, selectedPerspectiveName, selectedReleaseId} = usePerspective()\n  const {t} = useTranslation(structureLocaleNamespace)\n  const rootDiff = useMemo(() => {\n    const diff = diffInput(\n      wrap(editState?.published ?? {}, {author: ''}),\n      wrap(displayed ?? {}, {author: ''}),\n    ) as ObjectDiff\n\n    return diff\n  }, [editState?.published, displayed])\n\n  if (selectedReleaseId && !editState?.version) {\n    return null\n  }\n  if (selectedPerspective === 'drafts' && !editState?.draft) {\n    return null\n  }\n  if (selectedPerspectiveName === 'published' || !displayed?._rev) {\n    return null\n  }\n  return (\n    <Stack space={2} marginBottom={3}>\n      <Card borderBottom paddingBottom={3}>\n        <Stack space={3} paddingTop={1}>\n          <Text size={1} weight=\"medium\">\n            {t('events.compare-with-published.title')}\n          </Text>\n          <Text size={1} muted>\n            <Translate\n              i18nKey=\"events.compare-with-published.description\"\n              t={t}\n              values={{\n                version: isReleaseDocument(selectedPerspective)\n                  ? selectedPerspective.metadata?.title\n                  : 'draft',\n              }}\n            />\n          </Text>\n        </Stack>\n      </Card>\n      <DocumentChangeContext.Provider\n        value={{\n          documentId,\n          schemaType,\n          rootDiff,\n          isComparingCurrent: true,\n          FieldWrapper: (props) => props.children,\n          value: displayed,\n          showFromValue: true,\n        }}\n      >\n        <Box paddingY={1}>\n          <ChangeList diff={rootDiff} schemaType={schemaType} />\n        </Box>\n      </DocumentChangeContext.Provider>\n    </Stack>\n  )\n}\nexport function EventsInspector({showChanges}: {showChanges: boolean}): ReactElement {\n  const {documentId, schemaType, timelineError, value, formState} = useDocumentPane()\n  const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n  const {events, revision, sinceRevision, getChangesList} = useEvents()\n\n  const isComparingCurrent = !revision?.revisionId\n  const changesList$ = useMemo(() => getChangesList(), [getChangesList])\n  const {\n    diff,\n    loading: diffLoading,\n    error: diffError,\n  } = useObservable(changesList$, DIFF_INITIAL_VALUE)\n\n  const {t} = useTranslation('studio')\n\n  const documentContext: DocumentChangeContextInstance = useMemo(() => {\n    return {\n      documentId,\n      schemaType,\n      FieldWrapper: (props) =>\n        props.path.length > 0 ? <ChangeFieldWrapper {...props} /> : props.children,\n      rootDiff: diff,\n      isComparingCurrent: isComparingCurrent && !formState?.readOnly,\n      value,\n      showFromValue: true,\n    }\n  }, [diff, documentId, isComparingCurrent, formState?.readOnly, schemaType, value])\n\n  const [sinceEvent, toEvent] = useMemo(() => {\n    if (!events) return [null, null]\n    return [\n      events.find((e) => e.id === sinceRevision?.revisionId) || null,\n      events.find((e) => e.id === revision?.revisionId) || events[0],\n    ]\n  }, [events, revision?.revisionId, sinceRevision?.revisionId])\n\n  const sinceEvents = useMemo(() => {\n    // The sinceEvents need to account the toEvent showing only events that are older than the toEvent\n    if (!toEvent) return events.slice(1)\n    return events.slice(events.indexOf(toEvent) + 1).map((event) => {\n      // If the to event has a parent id, we need to remove the parent id from the since events or they won't be rendered, as they have no parent to expand.\n      if (\n        ('parentId' in toEvent && 'parentId' in event && event.parentId === toEvent.parentId) ||\n        ('parentId' in event && toEvent.id === event.parentId)\n      ) {\n        return {...event, parentId: undefined}\n      }\n      return event\n    })\n  }, [events, toEvent])\n  if (!events.length) {\n    return (\n      <Box paddingX={2}>\n        <Stack padding={3} space={3}>\n          <Text size={1} weight=\"medium\">\n            {t('timeline.error.no-document-history-title')}\n          </Text>\n          <Text muted size={1}>\n            {t('timeline.error.no-document-history-description')}\n          </Text>\n        </Stack>\n      </Box>\n    )\n  }\n  return (\n    <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n      <Box padding={3} style={{position: 'relative'}}>\n        <Grid paddingX={2} paddingBottom={2}>\n          <Text size={1} muted>\n            {t('changes.inspector.from-label')}\n          </Text>\n          <EventsTimelineMenu\n            event={sinceEvent || null}\n            events={sinceEvents}\n            mode=\"since\"\n            placement=\"bottom-start\"\n          />\n          <Text size={1} muted>\n            {t('changes.inspector.to-label')}\n          </Text>\n          <EventsTimelineMenu\n            event={toEvent || null}\n            events={events}\n            mode=\"rev\"\n            placement=\"bottom-end\"\n          />\n        </Grid>\n        {diffLoading && (\n          <motion.div\n            animate={{opacity: 1}}\n            initial={{opacity: 0}}\n            transition={{delay: 0.2, duration: 0.2}}\n          >\n            <SpinnerContainer justify=\"center\" align=\"center\" gap={2}>\n              <Text muted size={0}>\n                {t('changes.loading-changes')}\n              </Text>\n              <Spinner size={0} />\n            </SpinnerContainer>\n          </motion.div>\n        )}\n      </Box>\n\n      <Card flex={1} paddingX={2} paddingY={2}>\n        <BoundaryElementProvider element={scrollRef}>\n          <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n            <Box flex={1} paddingX={3} height=\"fill\">\n              {showChanges && (\n                <Content\n                  documentContext={documentContext}\n                  error={timelineError || diffError}\n                  loading={revision?.loading || sinceRevision?.loading || false}\n                  schemaType={schemaType}\n                  sameRevisionSelected={sinceEvent?.id === toEvent?.id}\n                  sinceEvent={sinceEvent}\n                />\n              )}\n            </Box>\n          </Scroller>\n        </BoundaryElementProvider>\n      </Card>\n    </Flex>\n  )\n}\n\nfunction Content({\n  error,\n  documentContext,\n  loading,\n  schemaType,\n  sameRevisionSelected,\n  sinceEvent,\n}: {\n  error?: Error | null\n  documentContext: DocumentChangeContextInstance\n  loading: boolean\n  schemaType: ObjectSchemaType\n  sameRevisionSelected: boolean\n  sinceEvent: DocumentGroupEvent | null\n}) {\n  if (error) {\n    return (\n      <>\n        <CompareWithPublishedView />\n        {sinceEvent?.type !== 'historyCleared' && <ChangesError error={error} />}\n      </>\n    )\n  }\n\n  if (loading) {\n    return <LoadingBlock showText />\n  }\n  if (sameRevisionSelected) {\n    return <SameRevisionSelected />\n  }\n\n  if (!documentContext.rootDiff) {\n    return (\n      <motion.div\n        animate={{opacity: 1}}\n        initial={{opacity: 0}}\n        transition={{delay: 0.2, duration: 0.2}}\n      >\n        <NoChanges />\n      </motion.div>\n    )\n  }\n\n  return (\n    <DocumentChangeContext.Provider value={documentContext}>\n      <Box paddingY={1}>\n        <ChangeList diff={documentContext.rootDiff} schemaType={schemaType} />\n      </Box>\n    </DocumentChangeContext.Provider>\n  )\n}\n\nfunction SameRevisionSelected() {\n  const {t} = useTranslation('')\n  return (\n    <motion.div\n      animate={{opacity: 1}}\n      initial={{opacity: 0}}\n      transition={{delay: 0.2, duration: 0.2}}\n    >\n      <Stack space={3} paddingTop={2}>\n        <Text size={1} weight=\"medium\" as=\"h3\">\n          {t('changes.same-revision-selected-title')}\n        </Text>\n        <Text as=\"p\" size={1} muted>\n          <Translate i18nKey=\"changes.same-revision-selected-description\" t={t} />\n        </Text>\n      </Stack>\n    </motion.div>\n  )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n  type DocumentGroupEvent,\n  isDeleteDocumentGroupEvent,\n  isDeleteDocumentVersionEvent,\n  isScheduleDocumentVersionEvent,\n  isUnpublishDocumentEvent,\n  isUnscheduleDocumentVersionEvent,\n  LoadingBlock,\n  ScrollContainer,\n  useEvents,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {EventsTimeline} from '../../timeline/events/EventsTimeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n  height: 100%;\n  overflow: auto;\n  position: relative;\n  scroll-behavior: smooth;\n`\n\nexport function EventsSelector({showList}: {showList: boolean}) {\n  const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n  const [listHeight, setListHeight] = useState(0)\n  const {setTimelineRange} = useDocumentPane()\n  const getScrollerRef = useCallback(\n    (el: HTMLDivElement | null) => {\n      if (!listHeight && el) {\n        /**\n         * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n         * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n         * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n         */\n        setListHeight(el.clientHeight ? el.clientHeight - 1 : 0)\n        setScrollRef(el)\n      }\n    },\n    [listHeight],\n  )\n  const {\n    events,\n    nextCursor,\n    loading,\n    error,\n    revision,\n    loadMoreEvents,\n    findRangeForRevision,\n    expandEvent,\n  } = useEvents()\n\n  const {t} = useTranslation('studio')\n  const toast = useToast()\n\n  const selectRev = useCallback(\n    (event: DocumentGroupEvent) => {\n      try {\n        if (\n          isDeleteDocumentVersionEvent(event) ||\n          isDeleteDocumentGroupEvent(event) ||\n          isUnpublishDocumentEvent(event) ||\n          isScheduleDocumentVersionEvent(event) ||\n          isUnscheduleDocumentVersionEvent(event)\n        ) {\n          console.error('Event is not selectable')\n          return\n        }\n        const [since, rev] = findRangeForRevision(event.id)\n        setTimelineRange(since, rev)\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [t, toast, setTimelineRange, findRangeForRevision],\n  )\n\n  const initialLoad = loading && !events.length\n  return (\n    <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n      <Card flex={1} padding={2} paddingTop={0}>\n        {error ? (\n          <TimelineError />\n        ) : (\n          <BoundaryElementProvider element={scrollRef}>\n            <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n              {listHeight &&\n              // This forces the list to unmount and remount, which is needed to reset the scroll position\n              showList &&\n              !initialLoad ? (\n                <EventsTimeline\n                  events={events}\n                  fetchEventChildren={expandEvent}\n                  hasMoreEvents={Boolean(nextCursor)}\n                  // If we have a revision, we select it, otherwise we select the first event\n                  selectedEventId={revision?.revisionId || events[0]?.id}\n                  onLoadMore={loadMoreEvents}\n                  onSelect={selectRev}\n                  listMaxHeight={`${listHeight}px`}\n                />\n              ) : null}\n              {loading && <LoadingBlock />}\n            </Scroller>\n          </BoundaryElementProvider>\n        )}\n      </Card>\n    </Flex>\n  )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n  type Chunk,\n  ScrollContainer,\n  usePerspective,\n  useTimelineSelector,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Timeline} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n  height: 100%;\n  overflow: auto;\n  position: relative;\n  scroll-behavior: smooth;\n`\n\nexport function HistorySelector({showList}: {showList: boolean}) {\n  const {timelineError, setTimelineRange, timelineStore} = useDocumentPane()\n  const {selectedReleaseId} = usePerspective()\n  const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n  const [listHeight, setListHeight] = useState(0)\n\n  const getScrollerRef = useCallback((el: HTMLDivElement | null) => {\n    if (!el?.clientHeight) return\n    /**\n     * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n     * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n     * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n     */\n    setListHeight(el.clientHeight - 1)\n    setScrollRef(el)\n  }, [])\n\n  const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n  const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n  const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n  const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n\n  const {t} = useTranslation('studio')\n  const toast = useToast()\n  const selectRev = useCallback(\n    (revChunk: Chunk) => {\n      try {\n        const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n        setTimelineRange(sinceId, revId)\n      } catch (err) {\n        toast.push({\n          closable: true,\n          description: err.message,\n          status: 'error',\n          title: t('timeline.error.unable-to-load-revision'),\n        })\n      }\n    },\n    [setTimelineRange, t, timelineStore, toast],\n  )\n\n  const handleLoadMore = useCallback(() => {\n    // If updated, be sure to update the TimeLineMenu component as well\n    if (!loading) {\n      timelineStore?.loadMore()\n    }\n  }, [loading, timelineStore])\n\n  return (\n    <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n      <Card flex={1} padding={2} paddingTop={0}>\n        {timelineError || selectedReleaseId ? (\n          <TimelineError versionError={Boolean(selectedReleaseId)} />\n        ) : (\n          <BoundaryElementProvider element={scrollRef}>\n            <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n              {listHeight &&\n              // This forces the list to unmount and remount, which is needed to reset the scroll position\n              showList ? (\n                <Timeline\n                  chunks={chunks}\n                  hasMoreChunks={hasMoreChunks}\n                  lastChunk={realRevChunk}\n                  onLoadMore={handleLoadMore}\n                  onSelect={selectRev}\n                  listMaxHeight={`${listHeight}px`}\n                />\n              ) : null}\n            </Scroller>\n          </BoundaryElementProvider>\n        )}\n      </Card>\n    </Flex>\n  )\n}\n","import {CloseIcon, InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Flex, TabList, TabPanel, Text} from '@sanity/ui'\nimport {useState} from 'react'\nimport {\n  type DocumentInspectorProps,\n  isReleaseDocument,\n  Translate,\n  usePerspective,\n  useSource,\n  useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Tab, Tooltip} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesInspector} from './ChangesInspector'\nimport {EventsInspector} from './EventsInspector'\nimport {EventsSelector} from './EventsSelector'\nimport {HistorySelector} from './HistorySelector'\n\nconst FadeInFlex = styled(Flex)`\n  opacity: 0;\n  transition: opacity 200ms;\n  &[data-ready] {\n    opacity: 1;\n  }\n`\nconst TABS = ['history', 'review'] as const\nconst isValidTab = (tab: string | undefined): tab is (typeof TABS)[number] =>\n  // @ts-expect-error TS doesn't understand the type guard\n  tab && TABS.includes(tab)\n\nexport function ChangesTabs(props: DocumentInspectorProps) {\n  const {params, setParams} = usePaneRouter()\n  const source = useSource()\n  const [parentRef, setParentRef] = useState<HTMLDivElement | null>(null)\n  const {t} = useTranslation(structureLocaleNamespace)\n  const isReady = params?.inspect === HISTORY_INSPECTOR_NAME\n  const {selectedPerspective} = usePerspective()\n\n  const paneRouterTab = isValidTab(params?.changesInspectorTab)\n    ? params.changesInspectorTab\n    : TABS[0]\n\n  const setPaneRouterTab = (tab: (typeof TABS)[number]) =>\n    setParams({\n      ...params,\n      changesInspectorTab: tab,\n      // Reset the since when changing the tab, as it's not relevant for the history tab\n      since: tab === 'history' ? undefined : params?.since,\n    })\n\n  // eslint-disable-next-line no-nested-ternary\n  const perspectiveName = isReleaseDocument(selectedPerspective)\n    ? selectedPerspective.metadata.title\n    : selectedPerspective === 'drafts'\n      ? t('compare-versions.status.draft')\n      : t('compare-versions.status.published')\n\n  return (\n    <FadeInFlex\n      direction=\"column\"\n      padding={0}\n      height=\"fill\"\n      data-ready={isReady ? '' : undefined}\n      ref={setParentRef}\n    >\n      <Card paddingBottom={1}>\n        <Flex align=\"center\" padding={3} gap={2}>\n          <TabList space={1} flex={1}>\n            <Tab\n              aria-controls=\"history-panel\"\n              id=\"history-tab\"\n              label={t('changes.tab.history')}\n              onClick={() => setPaneRouterTab('history')}\n              selected={paneRouterTab === 'history'}\n            />\n            <Tab\n              aria-controls=\"review-changes-panel\"\n              id=\"changes-tab\"\n              label={t('changes.tab.review-changes')}\n              onClick={() => setPaneRouterTab('review')}\n              selected={paneRouterTab === 'review'}\n            />\n          </TabList>\n          <Button\n            aria-label={t('changes.action.close-label')}\n            icon={CloseIcon}\n            mode=\"bleed\"\n            onClick={props.onClose}\n            tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n          />\n        </Flex>\n      </Card>\n      <Card padding={2} marginBottom={3} marginX={3} tone=\"neutral\" border radius={3}>\n        <Flex gap={2} align=\"flex-start\">\n          <Tooltip\n            portal\n            placement=\"bottom-end\"\n            boundaryElement={parentRef}\n            content={\n              <Box flex={1} padding={1}>\n                <Text size={1}>\n                  <Translate t={t} i18nKey=\"changes.banner.tooltip\" />\n                </Text>\n              </Box>\n            }\n          >\n            <Text size={0} muted>\n              <InfoOutlineIcon fontSize={1} />\n            </Text>\n          </Tooltip>\n          <Text size={0} muted>\n            <Translate\n              t={t}\n              values={{\n                perspective: perspectiveName,\n              }}\n              i18nKey=\"changes.banner.description\"\n            />\n          </Text>\n        </Flex>\n      </Card>\n\n      <TabPanel\n        aria-labelledby=\"history-tab\"\n        height=\"fill\"\n        hidden={paneRouterTab !== 'history'}\n        id=\"history-panel\"\n      >\n        {source.beta?.eventsAPI?.documents ? (\n          <EventsSelector showList={paneRouterTab === 'history'} />\n        ) : (\n          <HistorySelector showList={paneRouterTab === 'history'} />\n        )}\n      </TabPanel>\n\n      <TabPanel\n        aria-labelledby=\"review-tab\"\n        hidden={paneRouterTab !== 'review'}\n        id=\"review-panel\"\n        height=\"fill\"\n      >\n        {source.beta?.eventsAPI?.documents ? (\n          <>\n            {paneRouterTab === 'review' ? (\n              <EventsInspector showChanges={paneRouterTab === 'review'} />\n            ) : null}\n          </>\n        ) : (\n          <ChangesInspector showChanges={paneRouterTab === 'review'} />\n        )}\n      </TabPanel>\n    </FadeInFlex>\n  )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {type DocumentInspector, useTranslation} from 'sanity'\n\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesTabs} from './ChangesTabs'\n\nexport const changesInspector: DocumentInspector = {\n  name: HISTORY_INSPECTOR_NAME,\n  useMenuItem: () => {\n    const {features} = useStructureTool()\n    const {t} = useTranslation()\n\n    return {\n      hidden: !features.reviewChanges,\n      icon: RestoreIcon,\n      title: t('changes.title'),\n    }\n  },\n  component: ChangesTabs,\n  onClose: ({params}) => ({\n    params: {\n      ...params,\n      since: undefined,\n      rev: undefined,\n      changesInspectorTab: undefined,\n      historyVersion: undefined,\n    },\n  }),\n  onOpen: ({params}) => ({params: {...params, since: '@lastPublished'}}),\n}\n","/* eslint-disable no-loop-func */\n\nimport {type Path, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {isArray, isRecord} from 'sanity'\n\nexport function getPathTitles(options: {\n  path: Path\n  schemaType: SchemaType\n  value: Partial<SanityDocument> | null\n}): Array<{name: string; title?: string}> {\n  const {path, schemaType, value} = options\n  const result: Array<{name: string; title?: string}> = []\n\n  let s = schemaType\n  let v: unknown = value\n\n  for (const segment of path) {\n    // field name\n    if (typeof segment === 'string') {\n      if (!isRecord(v) && v !== undefined) {\n        throw new Error(`Parent value is not an object, cannot get path segment: .${segment}`)\n      }\n\n      if (s.jsonType !== 'object') {\n        throw new Error(\n          `Parent type is not an object schema type, cannot get path segment: .${segment}`,\n        )\n      }\n\n      v = v?.[segment]\n\n      const field = s.fields.find((f) => f.name === segment)\n\n      if (!field) {\n        result.push({name: segment})\n        return result\n      }\n\n      s = field.type\n\n      result.push(s)\n\n      continue\n    }\n\n    // array item index\n    if (typeof segment === 'number') {\n      if (!isArray(v) && v !== undefined) {\n        throw new Error(`Parent value is not an array, cannot get path segment: [${segment}]`)\n      }\n\n      if (s.jsonType !== 'array') {\n        throw new Error(\n          `Parent type is not an array schema type, cannot get path segment: [${segment}]`,\n        )\n      }\n\n      v = v?.[segment]\n\n      const itemType = s.of.find((ofType) => {\n        if (typeof v === 'string') {\n          return ofType.jsonType === 'string'\n        }\n\n        if (typeof v === 'number') {\n          return ofType.jsonType === 'number'\n        }\n\n        if (typeof v === 'boolean') {\n          return ofType.jsonType === 'boolean'\n        }\n\n        if (isRecord(v)) {\n          return ofType.name === v?._type\n        }\n\n        return false\n      })\n\n      if (!itemType) {\n        throw new Error(`Item type not found: [${segment}]`)\n      }\n\n      s = itemType\n\n      result.push(s)\n\n      continue\n    }\n\n    // array item key\n    if (isRecord(segment) && segment._key) {\n      if (!isArray(v)) {\n        throw new Error(\n          `Parent value is not an array, cannot get path segment: [_key == ${segment}]`,\n        )\n      }\n\n      if (s.jsonType !== 'array') {\n        throw new Error(\n          `Parent type is not an array schema type, cannot get path segment: .${segment}`,\n        )\n      }\n\n      const values = v ?? []\n\n      v = values.find((i) => isRecord(i) && i._key === segment._key)\n\n      if (!isRecord(v)) {\n        throw new Error(`Array item not found: [_key == ${segment._key}]`)\n      }\n\n      const ofType = s.of.find((i) => isRecord(v) && i.name === v?._type)\n\n      if (!ofType) {\n        throw new Error(`Array item type not found: .${v?._type}`)\n      }\n\n      s = ofType\n\n      result.push(s)\n\n      continue\n    }\n\n    throw new Error(`Invalid path segment: ${JSON.stringify(segment)}`)\n  }\n\n  return result\n}\n","import {\n  ErrorOutlineIcon,\n  type IconComponent,\n  InfoOutlineIcon,\n  WarningOutlineIcon,\n} from '@sanity/icons'\nimport {\n  type ObjectSchemaType,\n  type Path,\n  type SanityDocument,\n  type SchemaType,\n  type ValidationMarker,\n} from '@sanity/types'\nimport {Box, Card, type CardTone, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, Fragment, useCallback, useMemo, useState} from 'react'\nimport {type DocumentInspectorProps, isGoingToUnpublish, useTranslation} from 'sanity'\n\nimport {ErrorBoundary} from '../../../../../ui-components'\nimport {DocumentInspectorHeader} from '../../documentInspector'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {getPathTitles} from './getPathTitles'\n\nconst MARKER_ICON: Record<'error' | 'warning' | 'info', IconComponent> = {\n  error: ErrorOutlineIcon,\n  warning: WarningOutlineIcon,\n  info: InfoOutlineIcon,\n}\n\nconst MARKER_TONE: Record<'error' | 'warning' | 'info', CardTone> = {\n  error: 'critical',\n  warning: 'caution',\n  info: 'primary',\n}\n\nexport function ValidationInspector(props: DocumentInspectorProps) {\n  const {onClose} = props\n  const {onFocus, onPathOpen, schemaType, validation, value, editState} = useDocumentPane()\n  const {t} = useTranslation('validation')\n\n  const handleOpen = useCallback(\n    (path: Path) => {\n      onPathOpen(path)\n      onFocus(path)\n    },\n    [onFocus, onPathOpen],\n  )\n\n  const isVersionGoingToUnpublish =\n    editState && editState.version && isGoingToUnpublish(editState.version as SanityDocument)\n\n  return (\n    <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n      <DocumentInspectorHeader\n        as=\"header\"\n        closeButtonLabel={t('panel.close-button-aria-label')}\n        flex=\"none\"\n        onClose={onClose}\n        title={t('panel.title')}\n      />\n\n      <Card flex={1} overflow=\"auto\" padding={3}>\n        {isVersionGoingToUnpublish ? (\n          <Box padding={2}>\n            <Text muted size={1}>\n              {t('panel.unpublish-message')}\n            </Text>\n          </Box>\n        ) : (\n          <>\n            {validation.length === 0 && (\n              <Box padding={2}>\n                <Text muted size={1}>\n                  {t('panel.no-errors-message')}\n                </Text>\n              </Box>\n            )}\n            {validation.length > 0 && (\n              <Stack space={2}>\n                {validation.map((marker, i) => (\n                  <ValidationCard\n                    // eslint-disable-next-line react/no-array-index-key\n                    key={i}\n                    marker={marker}\n                    onOpen={handleOpen}\n                    schemaType={schemaType}\n                    value={value}\n                  />\n                ))}\n              </Stack>\n            )}\n          </>\n        )}\n      </Card>\n    </Flex>\n  )\n}\n\nfunction ValidationCard(props: {\n  marker: ValidationMarker\n  onOpen: (path: Path) => void\n  schemaType: ObjectSchemaType\n  value: Partial<SanityDocument> | null\n}) {\n  const {marker, onOpen, schemaType, value} = props\n  const handleOpen = useCallback(() => onOpen(marker.path), [marker, onOpen])\n  const [errorInfo, setErrorInfo] = useState<{error: Error; info: ErrorInfo} | null>(null)\n  const Icon = MARKER_ICON[marker.level]\n\n  return (\n    <ErrorBoundary onCatch={setErrorInfo}>\n      {errorInfo && (\n        <Card padding={3} radius={2} tone=\"critical\">\n          <Text size={1}>{errorInfo.error.message}</Text>\n        </Card>\n      )}\n\n      {!errorInfo && (\n        <Card\n          __unstable_focusRing\n          as=\"button\"\n          onClick={handleOpen}\n          padding={3}\n          radius={2}\n          tone={MARKER_TONE[marker.level]}\n        >\n          <Flex align=\"flex-start\" gap={3}>\n            <Box flex=\"none\">\n              <Text size={1}>\n                <Icon />\n              </Text>\n            </Box>\n\n            <Stack flex={1} space={2}>\n              <DocumentNodePathBreadcrumbs\n                path={marker.path}\n                schemaType={schemaType}\n                value={value}\n              />\n\n              <Text muted size={1}>\n                {marker.message}\n              </Text>\n            </Stack>\n          </Flex>\n        </Card>\n      )}\n    </ErrorBoundary>\n  )\n}\n\nfunction DocumentNodePathBreadcrumbs(props: {\n  path: Path\n  schemaType: SchemaType\n  value: Partial<SanityDocument> | null\n}) {\n  const {path, schemaType, value} = props\n\n  const pathTitles = useMemo(() => {\n    try {\n      return getPathTitles({path, schemaType, value})\n    } catch (e) {\n      console.error(e)\n    }\n    return null\n  }, [path, schemaType, value])\n\n  if (!pathTitles?.length) return null\n\n  return (\n    <Text size={1}>\n      {pathTitles.map((t, i) => (\n        <Fragment key={i}>\n          {i > 0 && <span style={{color: 'var(--card-muted-fg-color)', opacity: 0.5}}> / </span>}\n          <span style={{fontWeight: 500}}>{t.title || t.name}</span>\n        </Fragment>\n      ))}\n    </Text>\n  )\n}\n","import {CheckmarkCircleIcon, ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {useMemo} from 'react'\nimport {\n  type DocumentInspector,\n  type DocumentInspectorMenuItem,\n  type DocumentInspectorUseMenuItemProps,\n  type FormNodeValidation,\n  isGoingToUnpublish,\n  isValidationError,\n  isValidationWarning,\n  usePerspective,\n  useTranslation,\n  useValidationStatus,\n} from 'sanity'\n\nimport {VALIDATION_INSPECTOR_NAME} from '../../constants'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {ValidationInspector} from './ValidationInspector'\n\nfunction useMenuItem(props: DocumentInspectorUseMenuItemProps): DocumentInspectorMenuItem {\n  const {documentId, documentType} = props\n  const {t} = useTranslation('validation')\n  const {selectedReleaseId} = usePerspective()\n  const {validation: validationMarkers} = useValidationStatus(\n    documentId,\n    documentType,\n    selectedReleaseId,\n  )\n  const {value} = useDocumentPane()\n\n  const validation: FormNodeValidation[] = useMemo(\n    () =>\n      validationMarkers.map((item) => ({\n        level: item.level,\n        message: item.message,\n        path: item.path,\n      })),\n    [validationMarkers],\n  )\n\n  const hasErrors = validation.some(isValidationError)\n  const hasWarnings = validation.some(isValidationWarning)\n  const isDocumentGoingToUnpublish = isGoingToUnpublish(value)\n\n  const icon = useMemo(() => {\n    if (hasErrors) return ErrorOutlineIcon\n    if (hasWarnings) return WarningOutlineIcon\n    return CheckmarkCircleIcon\n  }, [hasErrors, hasWarnings])\n\n  const tone = useMemo(() => {\n    if (hasErrors) return 'critical'\n    if (hasWarnings) return 'caution'\n    return 'positive'\n  }, [hasErrors, hasWarnings])\n\n  return {\n    hidden: validation.length === 0 || isDocumentGoingToUnpublish,\n    icon,\n    title: t('panel.title'),\n    tone,\n    showAsAction: true,\n  }\n}\n\nexport const validationInspector: DocumentInspector = {\n  name: VALIDATION_INSPECTOR_NAME,\n  component: ValidationInspector,\n  useMenuItem,\n}\n","import {omit} from 'lodash'\nimport {decodeJsonParams, encodeJsonParams, route} from 'sanity/router'\n\nimport {type RouterPaneGroup, type RouterPanes, type RouterPaneSibling} from './types'\n\nconst EMPTY_PARAMS = {}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToState(params: string): Record<string, unknown> {\n  try {\n    return JSON.parse(decodeURIComponent(params))\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.warn('Failed to parse JSON parameters')\n    return {}\n  }\n}\n\nexport function encodePanesSegment(panes: RouterPanes): string {\n  return (panes || [])\n    .map((group) => group.map(encodeChunks).join('|'))\n    .map(encodeURIComponent)\n    .join(';')\n}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToPath(params: Record<string, unknown>): string {\n  return JSON.stringify(params)\n}\n\n// http://localhost:3333/intent/create/template=book-by-author;type=book/eyJhdXRob3JJZCI6Imdycm0ifQ==\n\n/**\n * @internal\n */\nexport function toState(pathSegment: string): RouterPaneGroup[] {\n  return parsePanesSegment(decodeURIComponent(pathSegment))\n}\n\n/**\n * @internal\n */\nexport function toPath(panes: RouterPaneGroup[]): string {\n  return encodePanesSegment(panes)\n}\n\nexport const router = route.create('/', [\n  // \"Asynchronous intent resolving\" route\n  route.intents('/intent'),\n\n  // Legacy fallback route, will be redirected to new format\n  route.create('/edit/:type/:editDocumentId', [\n    route.create({\n      path: '/:params',\n      transform: {params: {toState: legacyEditParamsToState, toPath: legacyEditParamsToPath}},\n    }),\n  ]),\n\n  // The regular path - when the intent can be resolved to a specific pane\n  route.create({\n    path: '/:panes',\n    // Legacy URLs, used to handle redirects\n    children: [route.create('/:action', route.create('/:legacyEditDocumentId'))],\n    transform: {\n      panes: {toState, toPath},\n    },\n  }),\n])\n\n// old: authors;knut,{\"template\":\"diaryEntry\"}\n// new: authors;knut,view=diff,eyJyZXYxIjoiYWJjMTIzIiwicmV2MiI6ImRlZjQ1NiJ9|latest-posts\n\nconst panePattern = /^([.a-z0-9_-]+),?({.*?})?(?:(;|$))/i\nconst isParam = (str: string) => /^[a-z0-9]+=[^=]+/i.test(str)\nconst isPayloadLike = (str: string) => /^[A-Za-z0-9\\-_]+(?:={0,2})$/.test(str)\nconst exclusiveParams = ['view', 'since', 'rev', 'inspect', 'comment']\n\ntype Truthy<T> = T extends false\n  ? never\n  : T extends ''\n    ? never\n    : T extends 0\n      ? never\n      : T extends 0n\n        ? never\n        : T extends null | undefined\n          ? NonNullable<T>\n          : T\nconst isTruthy = Boolean as (t: unknown) => boolean as <T>(t: T) => t is Truthy<T>\n\nfunction parseChunks(chunks: string[], initial: RouterPaneSibling): RouterPaneSibling {\n  const sibling: RouterPaneSibling = {...initial, params: EMPTY_PARAMS, payload: undefined}\n  return chunks.reduce((pane, chunk) => {\n    if (isParam(chunk)) {\n      const key = chunk.slice(0, chunk.indexOf('='))\n      const value = chunk.slice(key.length + 1)\n      pane.params = {...pane.params, [decodeURIComponent(key)]: decodeURIComponent(value)}\n    } else if (isPayloadLike(chunk)) {\n      pane.payload = tryParseBase64Payload(chunk)\n    } else {\n      // eslint-disable-next-line no-console\n      console.warn('Unknown pane segment: %s - skipping', chunk)\n    }\n\n    return pane\n  }, sibling)\n}\n\nfunction encodeChunks(pane: RouterPaneSibling, index: number, group: RouterPaneGroup): string {\n  const {payload, params = {}, id} = pane\n  const [firstSibling] = group\n  const paneIsFirstSibling = pane === firstSibling\n  const sameAsFirst = index !== 0 && id === firstSibling.id\n  const encodedPayload =\n    typeof payload === 'undefined' ? undefined : encodeJsonParams(payload as any)\n\n  const encodedParams = Object.entries(params)\n    .filter((entry): entry is [string, string] => {\n      const [key, value] = entry\n      if (!value) return false\n      if (paneIsFirstSibling) return true\n\n      // omit the value if it's the same as the value from the first sibling\n      const valueFromFirstSibling = firstSibling.params?.[key]\n      if (value === valueFromFirstSibling && !exclusiveParams.includes(key)) return false\n      return true\n    })\n    .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n\n  return (\n    [sameAsFirst ? '' : id]\n      .concat([encodedParams.length > 0 && encodedParams, encodedPayload].filter(isTruthy).flat())\n      .join(',') || ','\n  )\n}\n\nexport function parsePanesSegment(str: string): RouterPanes {\n  if (str.indexOf(',{') !== -1) {\n    return parseOldPanesSegment(str)\n  }\n\n  return str\n    .split(';')\n    .map((group) => {\n      const [firstSibling, ...restOfSiblings] = group.split('|').map((segment) => {\n        const [id, ...chunks] = segment.split(',')\n        return parseChunks(chunks, {id})\n      })\n\n      return [\n        firstSibling,\n        ...restOfSiblings.map((sibling) => ({\n          ...firstSibling,\n          ...sibling,\n          id: sibling.id || firstSibling.id,\n          params: {...omit(firstSibling.params, exclusiveParams), ...sibling.params},\n          payload: sibling.payload || firstSibling.payload,\n        })),\n      ]\n    })\n    .filter((group) => group.length > 0)\n}\n\nfunction parseOldPanesSegment(str: string): RouterPanes {\n  const chunks: RouterPaneGroup = []\n\n  let buffer = str\n  while (buffer.length) {\n    const [match, id, payloadChunk] = buffer.match(panePattern) || []\n    if (!match) {\n      buffer = buffer.slice(1)\n      continue\n    }\n\n    const payload = payloadChunk && tryParsePayload(payloadChunk)\n    chunks.push({id, payload})\n\n    buffer = buffer.slice(match.length)\n  }\n\n  return [chunks]\n}\n\nfunction tryParsePayload(json: string) {\n  try {\n    return JSON.parse(json)\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.warn(`Failed to parse parameters: ${err.message}`)\n    return undefined\n  }\n}\n\nfunction tryParseBase64Payload(data: string): unknown {\n  try {\n    return data ? decodeJsonParams(data) : undefined\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.warn(`Failed to parse parameters: ${err.message}`)\n    return undefined\n  }\n}\n","import {MasterDetailIcon} from '@sanity/icons'\nimport {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nimport {\n  DeleteAction,\n  DiscardChangesAction,\n  DuplicateAction,\n  HistoryRestoreAction,\n  PublishAction,\n  UnpublishAction,\n} from './documentActions'\nimport {LiveEditBadge} from './documentBadges'\nimport {getIntentState} from './getIntentState'\nimport {structureUsEnglishLocaleBundle} from './i18n'\nimport {changesInspector} from './panes/document/inspectors/changes'\nimport {validationInspector} from './panes/document/inspectors/validation'\nimport {router} from './router'\nimport {type StructureToolOptions} from './types'\n\nconst documentActions = [\n  PublishAction,\n  UnpublishAction,\n  DiscardChangesAction,\n  DuplicateAction,\n  DeleteAction,\n  HistoryRestoreAction,\n]\n\nconst documentBadges = [LiveEditBadge]\n\nconst inspectors = [validationInspector, changesInspector]\n\n/**\n * The structureTool is a studio plugin which adds the “structure tool” – a tool within\n * Sanity Studio in which content editors can drill down to specific documents to edit them.\n * You can configure your Studio's structure tool(s).\n *\n * @public\n * @param options - Options for the structure tool. See {@link StructureToolOptions}\n * @example Minimal example\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n *\n * export default defineConfig((\n *  // ...\n *  plugins: [\n *    structureTool() // use defaults\n *  ]\n * })\n * ```\n *\n * @example To customise your structure tool\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n * import { FaCar } from 'react-icons'\n\n * export default defineConfig((\n *\t // ...\n *   plugins: [\n *    structureTool({\n *      name: 'cars',\n *      title: 'Cars',\n *      icon: FaCar,\n *      structure: (S) => S.documentTypeList('car'),\n *      defaultDocumentNode: (S) =>\n *        S.document().views([\n *          S.view.form(),\n *          S.view.component(Preview).title('Preview')\n *        ])\n *    })\n *  ]\n * })\n * ```\n * */\nexport const structureTool = definePlugin<StructureToolOptions | void>((options) => {\n  const icon = options?.icon || MasterDetailIcon\n\n  return {\n    name: 'sanity/structure',\n    document: {\n      actions: (prevActions) => {\n        // NOTE: since it's possible to have several structure tools in one Studio,\n        // we need to check whether the document actions already exist in the Studio config\n        return Array.from(new Set([...prevActions, ...documentActions]))\n      },\n      badges: (prevBadges) => {\n        // NOTE: since it's possible to have several structure tools in one Studio,\n        // we need to check whether the document badges already exist in the Studio config\n        return Array.from(new Set([...prevBadges, ...documentBadges]))\n      },\n      inspectors: (prevInspectors) => {\n        // NOTE: since it's possible to have several structure tools in one Studio,\n        // we need to check whether the inspectors already exist in the Studio config\n        return Array.from(new Set([...prevInspectors, ...inspectors]))\n      },\n    },\n\n    tools: [\n      {\n        name: options?.name || 'structure',\n        title: options?.title || 'Structure',\n        icon,\n        component: lazy(() => import('./components/structureTool')),\n        canHandleIntent: (intent, params) => {\n          if (intent === 'create') return canHandleCreateIntent(params)\n          if (intent === 'edit') return canHandleEditIntent(params)\n          return false\n        },\n        getIntentState,\n        // Controlled by sanity/src/structure/components/structureTool/StructureTitle.tsx\n        controlsDocumentTitle: true,\n        options,\n        router,\n        __internalApplicationType: 'sanity/structure',\n      },\n    ],\n\n    i18n: {\n      bundles: [structureUsEnglishLocaleBundle],\n    },\n  }\n})\n\nfunction canHandleCreateIntent(params: Record<string, unknown>) {\n  // We can't handle create intents without a `type` parameter\n  if (!('type' in params)) {\n    return false\n  }\n\n  // We can handle any create intent as long as it has a `type` parameter,\n  // but we also know how to deal with templates, where other tools might not\n  return 'template' in params ? {template: true} : true\n}\n\nfunction canHandleEditIntent(params: Record<string, unknown>) {\n  // We can't handle edit intents without an `id` parameter\n  if (!('id' in params)) {\n    return false\n  }\n\n  // We can handle any edit intent with a document ID, but we're best at `structure` mode\n  // This ensures that other tools that can handle modes such as `presentation` or `batch`\n  // can take precedence over the structure tool\n  return 'mode' in params ? {mode: params.mode === 'structure'} : true\n}\n"],"names":["DocTitle","props","$","_c","document","documentValue","schema","useSchema","t0","_type","get","schemaType","t","useTranslation","structureLocaleNamespace","t1","value","error","useValuePreview","t2","t3","message","errorMessage","title","color","ChevronWrapper","styled","Box","CrossDatasetReferencesDetails","details","CrossDatasetReferencesSummary","summary","Table","table","theme","rem","sanity","space","DocumentIdFlex","Flex","OtherReferenceCount","difference","totalCount","references","length","count","Symbol","for","t4","t5","PaneItemPreview","icon","layout","presence","versionsInfo","useDocumentVersionInfo","_id","perspectiveStack","usePerspective","documentPreviewStore","getPreviewStateObservable","previewStateObservable","snapshot","isLoading","original","previewIsLoading","useObservable","draft","published","versions","status","tooltip","getPreviewValueWithFallback","fallback","t6","BackLink","forwardRef","ref","routerPanesState","groupIndex","useContext","PaneRouterContext","slice","panes","state","usePaneLayout","pane","PaneLayoutContext","Error","ChildLink","childId","childParameters","childPayload","rest","id","params","payload","ParameterizedLink","currentPanes","siblingIndex","nextParams","useUnique","nextPayload","currentGroup","currentSibling","nextSibling","nextGroup","nextPanes","nextState","t7","ReferenceChildLink","children","documentId","documentType","parentRefPath","template","pathToString","type","usePaneRouter","EMPTY_ARRAY","ReferencePreviewLink","onClick","getPublishedId","documentPresence","useDocumentPresence","useDocumentPreviewStore","name","linkProps","ConfirmDeleteDialogBody","crossDatasetReferences","internalReferences","documentTitle","action","datasetNames","hasUnknownDatasetNames","onReferenceLinkClick","toast","useToast","item","UnknownIcon","renderPreviewItem","DocumentTitle","T0","T1","T2","t10","t11","t12","t8","t9","normalizedDatasetNames","datasetSubtitle","datasets","join","context","t13","t14","t15","t16","Card","map","item_0","borderTop","undefined","documentCount","minWidth","filter","_temp","t17","index","projectId","datasetName","CopyIcon","content","navigator","clipboard","writeText","catch","push","reference","isClientError","e","POLL_INTERVAL","visiblePoll$","getVisiblePoll$","fromEvent","pipe","startWith","visibilityState","distinctUntilChanged","switchMap","visible","timer","EMPTY","shareReplay","refCount","bufferSize","getDocumentExistence","versionedClient","draftId","getDraftId","publishedId","requestOptions","uri","getDataUrl","json","query","excludeContent","tag","observable","request","omitted","nonExistant","doc","reason","some","fetchCrossDatasetReferences","checkDocumentId","of","currentDataset","config","dataset","url","catchError","statusCode","useInternalReferences","createHookFromObservableFactory","documentStore","listenQuery","fetch","listen","transitions","throttleTime","useCrossDatasetReferences","useReferringDocuments","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useDocumentStore","isInternalReferencesLoading","isCrossDatasetReferencesLoading","Array","from","Set","Boolean","sort","projectIds","_temp2","_temp3","_temp4","crossDatasetReference_1","crossDatasetReference","crossDatasetReference_0","DialogBody","LoadingContainer","attrs","align","direction","justify","ConfirmDeleteDialog","onCancel","onConfirm","dialogId","useId","showConfirmButton","text","cancelButton","confirmButton","ConfirmDeleteDialogContainer","setError","useState","handleRetry","tone","Delay","ms","ready","setReady","timeoutId","setTimeout","clearTimeout","useEffect","PANE_DEBUG","PANE_COLLAPSED_WIDTH","PANE_DEFAULT_MIN_WIDTH","Root","Layer","PaneDivider","disabled","element","resize","dragging","setDragging","event","preventDefault","startX","pageX","handleMouseMove","deltaX","handleMouseUp","e_0","window","removeEventListener","addEventListener","handleMouseDown","Pane","forwardedRef","currentMaxWidthProp","currentMinWidthProp","maxWidthProp","minWidthProp","restProps","currentMinWidth","currentMaxWidth","flex","maxWidth","selected","flexProp","rootElement","setRootElement","collapse","collapsed","layoutCollapsed","expand","expandedElement","mount","p","find","indexOf","paneIndex","nextPane","isLast","expanded","nextCollapsed","useRef","current","useImperativeHandle","refValue","setRef","useLayoutEffect","handleCollapse","handleExpand","contextValue","bb0","bb1","hidden","divider","Infinity","t18","style","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","displayName","usePane","PaneContext","PaneContent","as","overflow","padding","toLowerCaseNoSpaces","str","toLocaleLowerCase","replaceAll","MENU_GROUP_POPOVER_PROPS","constrainSize","placement","portal","PaneMenuButtonItem","isAfterGroup","node","getI18nText","useGetI18nText","child","childIndex","key","child_0","childIndex_0","PaneContextMenuItemResolver","intent","PaneContextMenuItem","tooltipContent","useI18nText","hotkey","split","iconRight","CheckmarkIcon","onAction","PaneContextIntentMenuItem","intentLink","useIntentLink","handleClick","href","CONTEXT_MENU_POPOVER_PROPS","nodesHasTone","nodes","PaneContextMenuButton","actionsNodes","hasCritical","hasCaution","nodeIndex","RootCard","PaneFooter","$border","css","Layout","TitleCard","fg","bg","card","enabled","TitleTextSkeleton","TextSkeleton","TitleText","Text","PaneHeader","actions","backButton","border","contentAfter","loading","subActions","tabs","tabIndex","appendTitle","paneElement","paneRect","useElementRect","height","innerHeight","width","layoutStyle","handleTitleClick","handleLayoutClick","showTabsOrSubActions","getDisabledReason","disabledReason","ariaLabel","isDisabled","PaneHeaderActionButton","warn","PaneHeaderMenuItemActionButton","hotkeys","PaneHeaderActionIntentButton","PaneHeaderMenuGroupActionButton","idx","_calcPaneResize","cache","left","right","sum","leftMinWidth","rightMinWidth","leftMaxWidth","Math","min","rightMaxWidth","minDeltaX","rightMinDeltaX","maxDeltaX","leftMaxDeltaX","_deltaX","max","leftW","rightW","leftFlex","rightFlex","_getDOMPath","el","path","parentElement","childNodes","unshift","EMPTY_PATH","_sortElements","elements","WeakMap","set","_sortByElementPath","a","b","_a","_b","len","i","aIndex","bIndex","createPaneLayoutController","observers","optionsMap","userCollapsedElementSet","rootWidth","resizeDataMap","Map","resizing","add","_notifyObservers","delete","options","splice","leftElement","leftIndex","leftOptions","rightElement","rightOptions","offsetWidth","leftResizeData","rightResizeData","nextRootElement","setRootWidth","nextRootWidth","subscribe","observer","_elements","dataMap","lastElement","collapsedWidth","remaingWidth","userCollapsed","has","sizeCollapsed","resizeData","data","PaneLayout","onCollapse","onExpand","controller","setState","paneLayout","isMenuNodeButton","renderAsButton","isNotMenuNodeButton","negate","resolveMenuNodes","fieldActions","menuItems","menuItemGroups","keyOffset","mapFieldActionToPaneMenuNode","groups","itemGroup","g","i18n","ungroupedItems","group","shortcut","actionHandler","showAsAction","childIdx","IntentButton","linkRef","searchParams","Link","InsufficientPermissionsMessageTooltip","reveal","currentUser","useCurrentUser","POPOVER_PROPS","getIntent","templates","version","typeName","templateId","baseParams","initialDocumentId","parameters","PaneHeaderCreateButton","templateItems","useTemplates","selectedReleaseId","templatePermissions","isTemplatePermissionsLoading","useTemplatePermissions","every","nothingGranted","reduce","permissionsById","AddIcon","firstItem","granted","itemIndex","disabled_0","intent_0","acc","permission_0","permission","isNonNullable","hashObject","sortObject","v","isArray","Object","entries","keyA","keyB","localeCompare","JSON","stringify","parse","PaneHeaderActions","memo","initialValueTemplateItems","initialValueTemplateItemsFromStructure","actionHandlers","EMPTY_OBJECT","handleAction","useCallback","console","handler","menuNodes","useMemo","actionNodes","contextMenuNodes","initialValueTemplateItemFromMenuItems","menuItemIndex","intentParams","templateParams","description","combinedInitialValueTemplates","uniqBy","MissingSchemaType","Code","getIconWithFallback","defaultIcon","PaneItem","pressed","margin","marginBottom","marginTop","hasSchemaType","clicked","setClicked","isSanityDocument","DocumentIcon","opacity","FolderIcon","preview","metaKey","preloading","setPreload","timeoutRef","startTransition","handleMouseEnter","handleMouseLeave","PreloadDocumentPane","useEditState","RenderActionCollectionState","actionProps","onActionComplete","liveEditSchemaType","states","SUPPORTED_LINKED_TO_CANVAS_ACTIONS","ActionsGuardWrapper","isLinked","useCanvasCompanionDoc","s","includes","RenderBadgeCollectionState","badges","badgeProps","useCreatePathSyncChannel","Subject","DIFF_VIEW_SEARCH_PARAMETER","DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER","DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER","DIFF_SEARCH_PARAM_DELIMITER","useDiffViewRouter","navigate","routerState","useRouter","mode","previousDocument","nextDocument","next","fromPairs","_searchParams","toPairs","navigateDiffView","exitDiffView","diffViewModes","isDiffViewMode","maybeDiffViewMode","useDiffViewState","onParamsError","URLSearchParams","anyParamSet","param","parseParams","result","errors","isActive","previousDocumentType","previousDocumentId","nextDocumentType","nextDocumentId","documents","previous","useScrollMirror","existentElements","scrollMirror","ScrollMirror","destroy","VersionModeHeaderLayout","header","VersionModeHeaderLayoutSection","div","VersionModeHeader","documentVersions","useDocumentVersions","activeReleases","useActiveReleases","releasesIds","flatMap","getVersionFromId","releases","release","releaseId","getReleaseIdFromReleaseDocumentId","onSelectPreviousRelease","selectedDocumentId","onSelectNextRelease","justifySelf","Button","CloseIcon","VersionMenu","onSelectRelease","role","findRelease","tStructure","tCore","drafts","isDraftModelEnabled","useWorkspace","getMenuButtonProps","VersionMenuItem","onSelect","isSelected","getVersionId","MenuItem","getReleaseTone","metadata","releaseType","formatRelativeLocalePublishDate","isReleaseScheduledOrScheduling","isReleaseDocument","isPublishedId","isDraftId","DialogLayout","pickDocumentLayoutComponent","plugin","components","unstable_layout","usePathSyncChannel","syncChannel","source","state_0","deepEquals","Scroller","DiffViewPaneLayout","Container","UiContainer","DiffViewPane","scrollElement","compareDocument","containerElement","portalElement","setPortalElement","boundaryElement","setBoundaryElement","pick","defaultComponent","DocumentLayout","useMiddlewareComponents","isInteractive","onOpenReviewChanges","noop","onSetFocus","isReviewChangesOpen","DiffViewDocument","compareValue","useCompareValue","patchChannel","perspectiveName","selectedPerspectiveName","comparisonValue","useDocumentForm","collapsedFieldSets","collapsedPaths","documentForm","formState","onBlur","onChange","onFocus","onProgrammaticFocus","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","pathSyncChannel","onPathOpen","subscription","unsubscribe","focusPath","changed","focused","validation","members","isVersionId","compareDocumentEditState","createPatchChannel","EditReferenceLinkComponent","_documentId","DiffView","previousPaneElement","setPreviousPaneElement","nextPaneElement","setNextPaneElement","referenceInputOptionsContext","ReferenceInputOptionsContext","disableNew","diffViewReferenceInputOptionsContext","DiffViewDocumentLayout","input","ErrorPane","paneKey","getWaitMessages","thresholds","messageKey","isDev","src","merge","threshold","mapTo","delay","DEFAULT_MESSAGE_KEY","Content","LoadingPane","messageProp","resolvedMessage","currentMessage","setCurrentMessage","sub","contentElement","setContentElement","mounted","setMounted","_raf2","DELAY","useDocumentPane","documentPane","DocumentPaneContext","CommentsWrapper","CommentsProviderWrapper","useCommentsEnabled","connectionState","inspector","openInspector","setParams","createPathWithParams","studioUrl","useStudioUrl","location","origin","selectedCommentId","comment","paramsRef","commentId","inspect","COMMENTS_INSPECTOR_NAME","getCommentLink","handleClearSelectedComment","handleOpenCommentsInspector","useFilteredReleases","displayed","archivedReleases","useArchivedReleases","isCreatingDocument","_createdAt","notCurrentReleases","currentReleases","inCreation","versionDocExists","historyVersion","archivedRelease","r","useDocumentIdStack","editState","filteredReleases","systemStack","flat","releaseStack","stack","concat","position","findIndex","previousId","nextId","useStructureTool","structureTool","StructureToolContext","DOCUMENT_PANEL_MIN_WIDTH","DOCUMENT_PANEL_INITIAL_MIN_WIDTH","DOCUMENT_INSPECTOR_MIN_WIDTH","DOCUMENT_INSPECTOR_MAX_WIDTH","EMPTY_PARAMS","INSPECT_ACTION_PREFIX","DEFAULT_MENU_ITEM_GROUPS","HISTORY_INSPECTOR_NAME","VALIDATION_INSPECTOR_NAME","DocumentInspectorMenuItemsResolver","inspectors","onMenuItems","setMenuItems","newFieldActions","setMenuItem","prev","InspectorMenuItems","useMenuItem","defineInspectorMenuItemComponent","InspectorMenuItem","menuItem","useDocumentTitle","subscribed","IGNORE_OPS","DocumentOperationResults","pushToast","documentPaneValue","documentTitleInfo","titleError","useDocumentOperationEvent","prevEvent","paneRouter","op","documentTitleBase","cleanupId","closable","duration","Strong","closeCurrentAndAfter","isLiveEditEnabled","liveEdit","hasObsoleteDraft","workspace","draftExists","mustChooseNewDocumentDestination","isSelectedPerspectiveWriteable","isNewDocument","zIndex","lineHeight","DocumentInspectorHeader","closeButtonLabel","forwardedAs","onClose","DocumentInspectorPanel","closeInspector","features","handleClose","Component","component","resizablePanes","STRUCTURE_TOOL_NAMESPACE","useStructureToolSetting","namespace","defaultValue","keyValueStore","useKeyValueStore","keyValueStoreKey","getKey","value_0","newValue","setKey","VIEW_MODE_PARSED","VIEW_MODE_RAW","VIEW_MODES","lru","LRU","maxSize","isExpanded","keyPath","cached","isRecord","toggleExpanded","selectElement","sel","getSelection","range","createRange","removeAllRanges","selectNodeContents","addRange","select","currentTarget","maybeSelectAll","keyCode","ctrlKey","isDocumentLike","isString","JSONInspectorWrapper","fonts","code","family","sizes","fontSize","syntax","property","constant","string","boolean","number","Search","target","handleChange","SearchIcon","InspectDialog","onInspectClose","dialogIdPrefix","viewModeId","onViewModeChange","viewMode","setParsedViewMode","setRawViewMode","bottom","outline","ignoreCase","Banner","Icon","paddingY","DeletedDocumentBanners","isDeleted","isDeleting","selectedPerspective","isPublishedPerspective","isDraftPerspective","DeletedDocumentBanner","restore","useDocumentOperation","navigateIntent","execute","handleRestore","ReadOnlyIcon","ArchivedReleaseBanner","DocumentRemoveIcon","DeprecatedDocumentTypeBanner","isDeprecatedSchemaType","deprecated","ErrorOutlineIcon","AskToEditDialogOpened","defineEvent","AskToEditRequestSent","MAX_NOTE_LENGTH","RequestPermissionDialog","onRequestSubmitted","telemtry","useTelemetry","useProjectId","apiVersion","client","zOffset","useZIndex","isSubmitting","setIsSubmitting","note","setNote","msgError","setMsgError","hasTooManyRequests","setHasTooManyRequests","hasBeenDenied","setHasBeenDenied","adminRole","roles","requestedRole","method","body","requestUrl","then","log","err","response","errMessage","finally","onSubmit","fullscreen","role_0","appliesToUsers","LOADING_STATE","EMPTY_STATE","DECLINED_STATE","PENDING_STATE","EXPIRED_STATE","useRoleRequestsStatus","checkRoleRequests","checkRoleRequests$","requests","projectRequests","resourceId","declinedRequest","isAfter","addWeeks","Date","createdAt","isBefore","InsufficientPermissionBanner","requiredPermission","roleRequestStatus","requestStatusLoading","requestStatusError","requestSent","setRequestSent","requestPending","currentUserRoles","isOnlyViewer","showRequestPermissionDialog","setShowRequestPermissionDialog","listFormat","useListFormat","telemetry","roleTitles","formatToParts","Roles","part","ReferenceChangedBanner","replaceCurrent","routerReferenceId","parentSibling","parentId","hasHistoryOpen","rev","pathFromString","referenceInfoObservable","parentRefPathSegment","keyedSegmentIndex","unstable_observePathsDocumentPair","debounceTime","availability","pathGet","_ref","referenceInfo","handleReloadReference","available","SyncIcon","WarningOutlineIcon","ArchivedReleaseDocumentBanner","handleGoBack","historyEvent","since","VersionBadge","getVersionInlineBadge","Image","img","CANVAS_IMAGE_URL","CANVAS_APP_NAME","CanvasPopoverContent","useClickOutsideEvent","LaunchIcon","CanvasLinkedBannerContent","open","setOpen","documentVariantType","getDocumentVariantType","variantText","togglePopover","InfoOutlineIcon","CanvasLinkedBanner","companionDoc","navigateToCanvas","useNavigateToCanvasDoc","canvasDocumentId","ChooseNewDocumentDestinationBanner","perspective","isPerspectiveWriteable","menuItemProps","CreateLinkedBanner","documentLinkedBannerContent","CreateLinkedBannerContent","useSanityCreateConfig","getSanityCreateLinkMetadata","createLinkMetadata","TOAST_DELAY","DocumentNotInReleaseBanner","currentRelease","isScheduledRelease","LATEST","createVersion","useVersionOperations","versionCreateState","setVersionCreateState","handleAddToRelease","lastUpdate","now","useCurrentTime","getTime","updateIntervalMs","currentTime","setCurrentTime","intervalId","setInterval","clearInterval","ResolvedLiveEdit","ObsoleteDraftBanner","i18nKey","isEditBlocking","isPublishing","setPublishing","isDiscarding","setDiscarding","publish","discardChanges","liveEditResolveType","handlePublish","handleDiscard","diffViewRouter","compareDraft","OpenReleaseToEditBanner","isPinnedDraftOrPublished","onlyHasVersions","useOnlyHasVersions","OpenReleaseToEditBannerInner","setPerspective","useSetPerspective","currentVersion","documentVersionsTitleList","handleGoToEdit","RevisionNotFoundBanner","revisionNotFound","ScheduledReleaseBanner","date","LockIcon","UnpublishedDocumentBanner","willBeUnpublished","isGoingToUnpublish","UnpublishIcon","TitleContainer","Stack","heading","FormHeader","isSingleton","__experimental_formPreviewTitle","ev","FormView","margins","openPath","isLocked","transactionSyncLock","useConditionalToast","pair","documentEvents","tap","prepareMutationEvent","prepareRebaseEvent","hasRev","_rev","patches","handleInitialValue","useEffectEvent","formRef","setFormRef","focusedFirstDescendant","setFocusedFirstDescendant","focusFirstDescendant","isReadOnly","readOnly","mutations","mut","patch","fromMutationPatches","remotePatches","remoteMutations","localPatches","localMutations","DocumentHeaderTabs","activeViewId","views","tabPanelId","view","DocumentHeaderTab","label","viewId","setView","DocumentHeaderTitle","FavoriteToggle","documentExists","isFavorited","isReady","favorite","unfavorite","useManageFavorite","DocumentPanelSubHeader","activeWorkspace","useActiveWorkspace","publishedDocId","showTabs","showBackButton","ArrowLeftIcon","favoriteToggle","DocumentBox","ScrollContainer","$disabled","DocumentPanel","footerHeight","headerHeight","isInspectOpen","setDocumentPanelPortalElement","footer","permissions","isPermissionsLoading","isSanityCreateLinked","showCreateBanner","parentPortal","usePortal","_portalElement","documentScrollElement","setDocumentScrollElement","formContainerElement","activeView","splitPanes","formViewHidden","ActiveViewComponent","historical","activeViewNode","scrollTo","inspectDialog","showInspector","documentInScheduledRelease","isSystemBundle","isPinnedDraftOrPublish","displayedHasObsoleteDraft","banners","showFormView","_DEBUG","freeze","LOADING_PANE","DOCUMENT_PANEL_PORTAL_ELEMENT","POPOVER_FALLBACK_PLACEMENTS","DIALOG_WIDTH_TO_UI_WIDTH","small","medium","large","full","ConfirmDialog","dialog","referenceElement","Popover","ConfirmDialogContent","cancelButtonIcon","cancelButtonText","confirmButtonIcon","confirmButtonText","isTopLayer","useLayer","useGlobalKeyDown","Grid","ModalDialog","showCloseButton","Dialog","PopoverDialog","PopoverDialogContent","DocumentActionPortalProvider","ActionStateDialog","modalId","unknownModal","ActionDialogWrapper","actionStates","actionIndex","setActionIndex","currentAction","ActionMenuButton","idPrefix","setReferenceElement","preventOverflow","popoverProps","actionState","renderActionDialog","ActionMenuListItem","onHandle","String","replace","tooltipProps","toUpperCase","DISABLED_REASON_TITLE_KEY","NOTHING_TO_DELETE","NOT_READY","DeleteAction","onComplete","setIsDeleting","paneSetIsDeleting","deleteOp","isConfirmDialogOpen","setConfirmDialogOpen","handleCancel","handleConfirm","handle","useDocumentPairPermissions","TrashIcon","DISABLED_REASON_KEY","NO_CHANGES","NOT_PUBLISHED","DiscardChangesAction","isPublished","ResetIcon","NOTHING_TO_DUPLICATE","DuplicateAction","mapDocument","duplicate","isDuplicating","setDuplicating","dupeId","uuid","duplicateSuccess","firstValueFrom","operationEvents","HistoryRestoreAction","revision","isRevisionInitial","isRevisionLatest","RevertIcon","DocumentPublished","LIVE_EDIT_ENABLED","ALREADY_PUBLISHED","publishedAt","AlreadyPublished","useTemporalPhrase","timeSincePublished","useRelativeTime","PublishAction","publishState","setPublishState","validationStatus","useValidationStatus","syncState","useSyncState","changesOpen","isValidationErrorMarker","hasValidationErrors","publishScheduled","setPublishScheduled","isSyncing","isValidating","_updatedAt","hasDraft","doPublish","validationComplete","didPublish","publishedImmediately","previouslyPublished","PublishIcon","UnpublishAction","unpublish","isDraft","DocumentStatusBarActionsInner","showMenu","__internal_tasks","useSource","firstActionState","menuActionStates","buttonElement","setButtonElement","showFirstActionButton","isSanityDefinedAction","sideMenuItems","footerAction","DocumentStatusBarActions","allActions","isInitialValueLoading","initialValueResolved","renderDocumentStatusBarActions","HistoryStatusBarActions","revisionId","isRestoreAction","historyActions","toLowerCase","useChipScrollPosition","containerRef","showGradient","setShowGradient","checkOverflow","container","scrollWidth","clientWidth","scrollLeft","isAtEnd","setupObservers","container_0","intersectionObserver","mutationObserver","IntersectionObserver","entry","isIntersecting","updateLastChipObserver","disconnect","lastChip","observe","MutationObserver","childList","subtree","intersectionObserver_0","mutationObserver_0","TooltipContent","intendedPublishAt","DATE_TIME_FORMAT","dateStyle","timeStyle","DocumentPerspectiveList","dateTimeFormat","useDateTimeFormat","handlePerspectiveChange","isLiveEdit","isPublishedChipDisabled","getReleaseChipState","isReleaseHistoryMatch","isPublishSelected","isDraftSelected","displayedId","isDraftDisabled","format","menuReleaseId","releasesLoading","fromRelease","isVersion","releaseState","HorizontalScroller","getTheme_v2","$showGradient","rgba","DocumentPanelHeader","_props","onMenuAction","onPaneClose","onPaneSplit","unstable_languageFilter","hasGroupSiblings","useFieldActions","scrollContainerRef","menuButtonNodes","showSplitPaneButton","splitViews","showSplitPaneCloseButton","showPaneGroupCloseButton","renderPaneActions","renderedActions","LanguageFilterComponent","SplitVerticalIcon","DocumentPanelHeaderActionDialogDeferred","useDeferredValue","DocumentPanelHeaderActionDialog","SpacerButton","size","pointerEvents","visibility","BADGE_TONES","primary","success","warning","danger","DocumentBadgesInner","DocumentBadgesDeferred","DocumentBadges","renderDocumentBadges","badge","whiteSpace","TIMELINE_ICON_COMPONENTS","create","discardDraft","initial","editDraft","EditIcon","editLive","getTimelineEventIconComponent","hideScrollbarOnExpand","listWrapper","getElementById","TIMELINE_LIST_WRAPPER_ID","firstChildren","scrollHeight","clientHeight","currentStyle","getComputedStyle","overflowY","FlipIcon","ChevronLeftIcon","ExpandableTimelineItemButton","stopPropagation","handleExpandClick","StackWrapper","ListWrapper","$maxHeight","$visible","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStack","maxLength","userIds","withTooltip","userId","IconBox","$color","avatar","TIMELINE_ITEM_EVENT_TONE","withinSelection","RELATIVE_TIME_OPTIONS","minimal","NameSkeleton","Skeleton","font","UserLine","user","useUser","collaborators","TimelineItem","chunk","optionsMenu","endTimestamp","timestamp","IconComponent","authors","authorUserIds","collaboratorsUsersIds","isSelectable","dateFormat","updatedTimeAgo","parsedDate","formattedTimestamp","evt","isNonPublishChunk","isPublishChunk","getPreviousPublishAction","chunks","previousPublish","addChunksMetadata","forEach","Timeline","hasMoreChunks","lastChunk","selectedChunk","onLoadMore","listMaxHeight","selectedChunkId","chunksWithMetadata","expandedParents","setExpandedParents","filteredChunks","handleExpandParent","selectedIndex","handleSelectChunk","timelineChunk","c","renderItem","activeIndex","TimelineError","versionError","TIMELINE_MENU_PORTAL","TimelineMenu","setTimelineRange","timelineError","timelineStore","button","setButton","popoverRef","setPopoverRef","useTimelineSelector","realRevChunk","sinceTime","handleOpen","handleGlobalKeyDown","focus","selectRev","revChunk","sinceId","revId","findRangeForRev","selectSince","sinceChunk","findRangeForSince","handleLoadMore","loadMore","formatParams","revLabel","sinceLabel","buttonLabel","ChevronDownIcon","StyledMotionPath","motion","Circle","Arrows","Checkmark","rotateAnimation","keyframes","RotateGroup","root","syncing","scale","transition","saved","changes","circle","strokeDasharray","strokeDashoffset","arrows","checkmark","pathLength","AnimatedStatusIcon","STATUS_DICTIONARY","DocumentStatusPulse","currentStatus","MotionButton","MotionBox","ButtonSkeleton","DocumentStatusButton","author","translationKey","onHistoryOpen","onHistoryClose","relativeTime","FallbackStatus","createDocumentVersion","editDocumentVersion","EventsStatus","events","useEvents","TimelineStatus","TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY","SYNCING_TIMEOUT","SAVED_TIMEOUT","DocumentStatusLine","setStatus","eventsEnabled","beta","eventsAPI","lastUpdated","timerId","timerId_0","StatusText","RevisionStatusLine","useResizeObserver","onResize","resizeObserver","unobserve","CONTAINER_BREAKPOINT","AnimatedCard","DocumentStatusBar","actionsBoxRef","onDocumentChange","CreateLinkedActions","documentLinkedActions","showingRevision","setCollapsed","contentRect","handleResize","shouldRender","flexShrink","marginLeft","KeyboardShortcutResponder","actionsBoxElement","onActionStart","onKeyDown","rootRef","As","activeAction","matchingStates","isHotkey","matchingState","handleKeyDown","DocumentActionShortcuts","setActiveIndex","renderDocumentActionShortcuts","getInspectorItems","currentInspector","hasValue","inspectorMenuItems","getInspectItem","JsonIcon","getCompareVersionsItem","documentIdStack","TransferIcon","getProductionPreviewItem","previewUrl","EarthAmericasIcon","getMenuItems","inspectorItems","items","LinkIcon","DocumentLayoutError","DIALOG_PROVIDER_POSITION","DocumentLayoutFooter","documentPanelPortalElement","setFooterElement","setActionsBoxElement","zOffsets","portalElements","StyledChangeConnectorRoot","ChangeConnectorRoot","inspectOpen","paneParams","footerElement","headerElement","setHeaderElement","setInspectorMenuItems","rootFieldActionNodes","setRootFieldActionNodes","footerRect","headerRect","handleKeyUp","onConnectorSetFocus","paneDialog","changesInspectorTab","useDocumentLayoutComponent","DocumentURLCopied","getInitialValueTemplateOpts","opts","panePayload","structureNodeTemplate","templateName","urlTemplate","typeTemplates","useDocumentPaneInitialValue","paneOptions","templateParameters","initialValueRaw","useInitialValue","useDocumentPaneInspector","inspectorsResolver","inspectorName","setInspectorName","inspectParamRef","historyInspector","closeInspectorName","nextInspectorName","nextInspector","currentParams","onOpen","handleHistoryClose","handleHistoryOpen","reviewChanges","toggleLegacyInspect","toggle","omit","handleLegacyInspectClose","handleInspectorAction","usePreviewUrl","resolveProductionUrl","BehaviorSubject","subject","asObservable","DocumentPaneProvider","onFocusPath","forcedVersion","historyStore","store","timelineReady","revisionDocument","onOlderRevision","sinceDocument","isPristine","lastNonDeletedRevId","setDocumentMeta","useCopyPaste","documentActions","documentBadges","unstable_fieldActions","fieldActionsResolver","languageFilterResolver","draftsEnabled","setPaneParams","viewsProp","documentIdRaw","buildStudioUrl","initialValue","getIsDeleted","getComparisonValue","getIsReadOnly","getDisplayed","formReady","formStateRef","initialFocusPath","getFormDocumentValue","getDocumentVersionType","actionsPerspective","documentActionsProps","versionType","languageFilter","newSince","newRev","handlePaneClose","closeCurrent","handlePaneSplit","duplicateCurrent","handleMenuAction","copyUrl","coreUi","startsWith","restParams","pathFromUrl","resolveKeyedPath","DocumentEventsPane","usePaneOptions","showingPublishedOnDraft","eventsStore","useEventsStore","sinceRevision","historyStoreProps","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","DocumentPaneWithLegacyTimelineStore","setTimelineError","onError","useTimelineStore","revTime","sinceAttributes","timelineDisplayed","_temp5","_temp6","_temp7","state_1","state_2","state_3","state_4","state_5","DocumentPaneProviderWrapper","useResetHistoryParams","isMounted","_perspective","preserveRev","updateHistoryParams","DocumentPane","parentSourceName","DocumentPaneInner","resolveNewDocumentOptions","isLoaded","isDocumentLoaded","useDocumentType","mergeDocumentType","providerProps","handleEditReference","childParams","routerPanesStateLength","activePath","PARTIAL_PAGE_LIMIT","FULL_LIST_LIMIT","DEFAULT_ORDERING","by","field","EMPTY_RECORD","RootBox","$opacity","CommandListBox","SKELETON_ITEMS","keys","LoadingView","num","DocumentListPaneContent","childItemId","isRetrying","autoRetry","filterIsSimpleTypeConstraint","hasMaxItems","hasSearchQuery","isLazyLoading","muted","isConnected","retryCount","canRetry","loadingVariant","onEndReached","onRetry","paneTitle","searchInputElement","showIcons","setShouldRender","handleEndReached","isLastItem","showSpinner","showMaxItemsMessage","limit","noDocumentsContent","isOnline","onLine","mainContent","removePublishedWithDrafts","collate","hasPublished","applyOrderingFunctions","order","orderBy","mapWith","fieldType","tryResolveSchemaTypeForPath","fieldExtendsType","jsonType","baseType","pathSegments","PathUtils","fromString","segment","getFieldTypeByName","isKeySegment","isIndexSegment","memberType","otherType","isReferenceSchemaType","refType","otherRefType","to","fieldName","fields","ofType","findTypes","base","types","isSplat","findStaticTypesInFilter","swr","createSWR","listenSearchQuery","groqFilter","searchQuery","staticTypeNames","maxFieldDepth","searchStrategy","sortBy","extendedProjection","events$","defer","includeAllVersions","includeResult","mergeMap","isFirst","throwError","share","welcome$","mutationAndReconnect$","partition","swrKey","fiilter","asyncScheduler","leading","trailing","exhaustMapWithTrailing","typeNames","getSearchableTypes","getExtendedProjection","search","createSearch","strategy","maxDepth","doFetch","__unstable_extendedProjection","comments","skipSortByScore","hits","hit","scan","connected","fromCache","INITIAL_QUERY_STATE","isLoadingFullList","isRetriableError","ChannelError","ServerError","ClientError","useDocumentList","searchFilter","paramsProp","sortOrder","useSearchMaxFieldDepth","typeNameFromFilter","onRetry$","observableCallback","onFetchFullList$","onLoadFullList","queryResults$","listenSearchQueryArgs","partialList$","fullList$","withLatestFrom","take","takeUntil","catchWithCount","lastError","caught$","safeError","retries","NEVER","retrying","nonErrorThrownWarning","thrown","rotate","fadeIn","AnimatedSpinnerIcon","SpinnerIcon","SubtleSpinnerIcon","DelayedSubtleSpinnerIcon","DocumentListPane","sortOrderRaw","displayOptions","useShallowUnique","staticTypes","setSearchQuery","searchInputValue","setSearchInputValue","setSearchInputElement","sortWithOrderingFn","documentListIsLoading","trim","handleQueryChange","useObservableEvent","event$","debounce","handleClearSearch","handleSearchKeyDown","enableSearchSpinner","setEnableSearchSpinner","textInputIcon","initialValueTemplates","setLayout","setSortOrder","StructurePaneHeader","DocumentSheetListSelect","row","selectedAnchor","setSelectedAnchor","meta","handleOnClick","shiftKey","shiftClickIndex","lowerIndex","upperIndex","additionalSelectedRows","getRowModel","flatRows","currentSelectedRows","getSelectedRowModel","rows","setRowSelection","nextSelectedRows","rowId","isRowCurrentlySelected","getIsSelected","toggleSelected","paddingLeft","getCanSelect","useDocumentSheetListContext","DocumentSheetListContext","DocumentSheetListProvider","selectedAnchorCellDetails","setSelectedAnchorCellDetails","selectedRangeCellIndexes","setSelectedRangeCellIndexes","clearAndSetFocusSelection","nextAnchorDetails","activeElement","HTMLElement","blur","resetFocusSelection","changeSelectionColumn","visibleColumns","getVisibleLeafColumns","columnIndexAfterMove","col","colId","rowIndex","changeSelectionRange","previousSelection","anchorIndex","getNextIndex","startingIndex","firstSelectedIndex","lastIndexSelected","nextIndex","setSelectedAnchorCell","handleEscapePress","nextAnchorCellDetails","handleUpDownKey","isShiftKey","offset","newSelectedCellRowIndex","handleAnchorKeydown","handleAnchorClick","contains","focusAnchorCell","anchorCellDetails","getStateByCellId","submitFocusedCell","DataCell","td","PinnedDataCell","SheetListCellInner","getValue","column","cellId","renderValue","setRenderValue","isDirty","setIsDirty","inputRef","cellState","handleOnFocus","patchDocument","handleProgrammaticFocus","HTMLInputElement","handleOnMouseDown","detail","handleOnEnterDown","handleOnChange","handleOnBlur","handlePaste","clipboardData","getData","handleCopy","toString","getBorderStyle","inputProps","boxShadow","SheetListCell","cell","isPinned","getIsPinned","Cell","borderWidth","getIsLastColumn","getStart","borderRight","getSize","flexRender","columnDef","getContext","VISIBLE_COLUMN_LIMIT","PreviewCell","displayValue","columnHelper","createColumnHelper","SUPPORTED_FIELDS","getColsFromSchemaType","parentalField","tableColumns","nextCol","accessor","enableHiding","info","isObjectSchemaType","columns","isAccessorKeyColumnDef","isGroupColumnDef","flatColumns","cols","useDocumentSheetColumns","documentSchemaType","display","getIsSomeRowsSelected","getToggleAllPageRowsSelectedHandler","initialColumnsVisibility","accCols","countAllowedVisible","visibilityKey","ColumnsControl","isVisibleLimitReached","getCanHide","setInitialColumns","resetColumnVisibility","handleColumnOnChange","toggleVisibility","getColumnVisibilityDisabled","isColumnVisible","getIsVisible","isSingleColumnVisible","maxHeight","getAllLeafColumns","SearchContainer","DocumentSheetListFilter","useSearchState","filtersVisible","Header","th","PinnedHeader","HoverMenu","DocumentSheetListHeader","headerGroup","headerTitle","depth","parent","HeaderTag","canShowHeaderMenu","boxSizing","EllipsisHorizontalIcon","DocumentSheetListPaginator","setPageIndex","getCanPreviousPage","DoubleChevronLeftIcon","previousPage","getState","pagination","pageIndex","getPageCount","nextPage","getCanNextPage","ChevronRightIcon","DoubleChevronRightIcon","pageSize","setPageSize","Number","createDocumentsSet","documentsReducer","nextDocumentResult","_","restDocuments","updatedDocument","LISTEN_OPTIONS","useDocumentSheetListStore","QUERY","dispatch","useReducer","setIsLoading","res","initialFetch","handleListenerEvent","err_0","listener$","uniques","values","dataAsArray","useDocumentSheetList","h","PaneContainer","TableContainer","DocumentSheetListPaneInner","totalRows","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","autoResetPageIndex","initialState","columnPinning","columnVisibility","getRowId","fieldId","renderRow","getVisibleCells","rowsCount","getHeaderGroups","headers","DocumentSheetListPane","schemaTypeName","isDocumentSchemaType","addSelectedStateToMenuItems","isEqual","setPrevious","shallowEquals","defaultLayout","defaultOrdering","sourceName","defaultSortOrder","menuItemsWithSelectedState","isSheetListLayout","LiveEditBadge","activePanes","setActivePanes","getIntentState","editDocumentId","canHandleIntent","getPaneParams","ChangesInspector","showChanges","scrollRef","setScrollRef","diff","selectionState","isComparingCurrent","structureT","FieldWrapper","rootDiff","showFromValue","documentContext","getIsSelectable","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","EventTimelineItem","cursor","PublishedEventMenu","portalContext","versionId","versionRevisionId","handleOpenReleaseDocument","handleOpenDraftDocument","isMenuDisabled","RELEASES_INTENT","textDecoration","children_0","releaseTitle","children_1","fallbackPlacements","children_2","TimelineItemWrapper","CHILDREN_ITEMS_VARIANTS","animate","exit","ITEM_HEIGHT","EventsTimeline","allEvents","hasMoreEvents","selectedEventId","fetchEventChildren","selectedEvent","expandingParents","setExpandingParents","isCreateDocumentVersionEvent","isEditDocumentVersionEvent","isExpanding","renderOptionsMenu","isPublishDocumentVersionEvent","creationEvent","showExpandingLoader","isLastEvent","EventsTimelineMenu","nextCursor","eventsError","findRangeForRevision","loadMoreEvents","expandEvent","revEvent","sinceEvent","SpinnerContainer","DIFF_INITIAL_VALUE","CompareWithPublishedView","diffInput","wrap","EventsInspector","getChangesList","changesList$","diffLoading","diffError","toEvent","sinceEvents","sameRevisionSelected","SameRevisionSelected","EventsSelector","showList","listHeight","setListHeight","getScrollerRef","initialLoad","HistorySelector","FadeInFlex","TABS","isValidTab","tab","ChangesTabs","parentRef","setParentRef","paneRouterTab","setPaneRouterTab","t29","t30","t31","changesInspector","RestoreIcon","getPathTitles","f","itemType","_key","MARKER_ICON","MARKER_TONE","ValidationInspector","isVersionGoingToUnpublish","marker","ValidationCard","errorInfo","setErrorInfo","level","DocumentNodePathBreadcrumbs","pathTitles","Fragment","fontWeight","validationMarkers","hasErrors","isValidationError","hasWarnings","isValidationWarning","isDocumentGoingToUnpublish","CheckmarkCircleIcon","validationInspector","legacyEditParamsToState","decodeURIComponent","encodePanesSegment","encodeChunks","encodeURIComponent","legacyEditParamsToPath","toState","pathSegment","parsePanesSegment","toPath","router","route","intents","transform","panePattern","isParam","test","isPayloadLike","exclusiveParams","isTruthy","parseChunks","sibling","tryParseBase64Payload","firstSibling","paneIsFirstSibling","sameAsFirst","encodedPayload","encodeJsonParams","encodedParams","valueFromFirstSibling","parseOldPanesSegment","restOfSiblings","buffer","match","payloadChunk","tryParsePayload","decodeJsonParams","definePlugin","MasterDetailIcon","prevActions","prevBadges","prevInspectors","tools","lazy","canHandleCreateIntent","canHandleEditIntent","controlsDocumentTitle","__internalApplicationType","bundles","structureUsEnglishLocaleBundle"],"mappings":"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"}