{"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/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/documentViews/useConditionalToast.ts","../../src/structure/panes/document/documentPanel/banners/AddToReleaseBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ArchivedReleaseDocumentBanner.tsx","../../src/structure/panes/document/documentPanel/banners/CreateLinkedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/__telemetry__/DraftLiveEditBanner.telemetry.ts","../../src/structure/panes/document/documentPanel/banners/DraftLiveEditBanner.tsx","../../src/structure/panes/document/documentPanel/banners/OpenReleaseToEditBanner.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/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/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}\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 {actions, backButton, border, contentAfter, loading, subActions, tabs, tabIndex, title} =\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              gap={3}\n              onClick={handleLayoutClick}\n              padding={3}\n              sizing=\"border\"\n              style={layoutStyle}\n            >\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                  <TitleText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n                    {title}\n                  </TitleText>\n                )}\n              </TitleCard>\n\n              {actions && (\n                <Box hidden={collapsed}>\n                  <LegacyLayerProvider zOffset=\"paneHeader\">{actions}</LegacyLayerProvider>\n                </Box>\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 && subActions}\n                </Flex>\n              )}\n            </Layout>\n\n            {!collapsed && contentAfter && 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\n    if (item.group && !group) {\n      group = {\n        type: 'group',\n        key: item.group,\n\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        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        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  isPublishedPerspective,\n  type ReleaseId,\n  type Template,\n  type TemplatePermissionsResult,\n  useGetI18nText,\n  useIsReleaseActive,\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, selectedPerspective} = usePerspective()\n  const isReleaseActive = useIsReleaseActive()\n\n  const {t} = useTranslation(structureLocaleNamespace)\n  const {t: tCore} = useTranslation()\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?.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  const disabledByPerspectiveTooltipProps = {\n    content: tCore(\n      isPublishedPerspective(selectedPerspective)\n        ? 'new-document.disabled-published.tooltip'\n        : 'new-document.disabled-release.tooltip',\n    ),\n  }\n\n  if (templateItems.length === 1) {\n    const firstItem = templateItems[0]\n    const permissions = permissionsById[firstItem.id]\n    const disabled = !permissions?.granted || !isReleaseActive\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={\n            disabled\n              ? disabledByPerspectiveTooltipProps\n              : {content: t('pane-header.create-new-button.tooltip')}\n          }\n        />\n      </InsufficientPermissionsMessageTooltip>\n    )\n  }\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          icon={AddIcon}\n          mode=\"bleed\"\n          disabled={!isReleaseActive}\n          data-testid=\"multi-action-intent-button\"\n          tooltipProps={\n            isReleaseActive\n              ? {content: t('pane-header.create-new-button.tooltip')}\n              : disabledByPerspectiveTooltipProps\n          }\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      {combinedInitialValueTemplates.length > 0 && (\n        <PaneHeaderCreateButton templateItems={combinedInitialValueTemplates} />\n      )}\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} from 'react'\nimport {\n  type DocumentActionDescription,\n  type DocumentActionGroup,\n  type DocumentActionProps,\n  GetHookCollectionState,\n} from 'sanity'\n\n/** @internal */\nexport interface Action<Args, Description> {\n  (args: Args): Description | null\n}\n\n/** @internal */\nexport interface RenderActionCollectionProps {\n  actions: Action<DocumentActionProps, DocumentActionDescription>[]\n  actionProps: Omit<DocumentActionProps, 'onComplete'>\n  children: (props: {states: DocumentActionDescription[]}) => 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'>, DocumentActionDescription>\n      onReset={onActionComplete}\n      hooks={actions}\n      args={actionProps}\n      group={group}\n    >\n      {children}\n    </GetHookCollectionState>\n  )\n})\nRenderActionCollectionState.displayName = 'Memo(RenderActionCollectionState)'\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'\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} 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  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          {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, ConnectorContext} 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    <ConnectorContext.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    </ConnectorContext.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} 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\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 `${window.location.origin}${path}`\n    },\n    [createPathWithParams],\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} 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 filteredReleases = useFilteredReleases({displayed, documentId})\n  const systemStack = [editState?.published?._id, editState?.draft?._id]\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: SchemaType) => 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 {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} = useDocumentPane()\n  const {selectedPerspective} = usePerspective()\n\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, lastNonDeletedRevId} = useDocumentPane()\n  const {restore} = useDocumentOperation(documentId, documentType)\n  const {navigateIntent} = useRouter()\n\n  const handleRestore = useCallback(() => {\n    if (lastNonDeletedRevId) {\n      restore.execute(lastNonDeletedRevId)\n      navigateIntent('edit', {id: documentId, type: documentType})\n    }\n  }, [documentId, documentType, navigateIntent, restore, lastNonDeletedRevId])\n\n  const {t} = useTranslation(structureLocaleNamespace)\n\n  return (\n    <Banner\n      action={\n        lastNonDeletedRevId\n          ? {\n              onClick: handleRestore,\n              text: t('banners.deleted-document-banner.restore-button.text'),\n            }\n          : undefined\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 {type ToastParams, useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\n\n// https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\nconst LONG_ENOUGH_BUT_NOT_TOO_LONG = 1000 * 60 * 60 * 24 * 24\n\n/**\n * Workaround to support conditional toast (e.g. a toast that is visible as long as a condition holds true)\n */\nexport function useConditionalToast(params: ToastParams & {id: string; enabled?: boolean}) {\n  const toast = useToast()\n\n  // note1: there's a `duration || 0` in Sanity UI's pushToast(), so make it non-falsey\n  // note2: cannot use `Infinity` as duration, since it exceeds setTimeout's maximum delay value\n  useEffect(() => {\n    if (params.enabled) {\n      toast.push({...params, duration: LONG_ENOUGH_BUT_NOT_TOO_LONG})\n    }\n    return () => {\n      if (params.enabled) {\n        toast.push({\n          ...params,\n          // Note: @sanity/ui fallbacks to the default duration of 4s in case of falsey values\n          duration: 0.01,\n        })\n      }\n    }\n  }, [params, toast])\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  useTranslation,\n  useVersionOperations,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useConditionalToast} from '../documentViews/useConditionalToast'\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 AddToReleaseBanner({\n  documentId,\n  currentRelease,\n  value,\n}: {\n  documentId: string\n  currentRelease: ReleaseDocument\n  value?: Record<string, unknown>\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      action={{\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\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 {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 {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 {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 {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, Translate, useDocumentOperation, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {ResolvedLiveEdit} from './__telemetry__/DraftLiveEditBanner.telemetry'\nimport {Banner} from './Banner'\n\ninterface DraftLiveEditBannerProps {\n  displayed: Partial<SanityDocument> | null\n  documentId: string\n  schemaType: ObjectSchemaType\n}\n\nexport function DraftLiveEditBanner({\n  displayed,\n  documentId,\n  schemaType,\n}: DraftLiveEditBannerProps): React.JSX.Element | null {\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  return (\n    <Banner\n      content={\n        <Flex align=\"center\" justify=\"space-between\" gap={2}>\n          <Text size={1} weight=\"medium\">\n            <Translate\n              t={t}\n              i18nKey={'banners.live-edit-draft-banner.text'}\n              values={{schemaType: schemaType.title}}\n            />\n          </Text>\n\n          <Button\n            onClick={handlePublish}\n            text={t('action.publish.live-edit.label')}\n            tooltipProps={{content: t('banners.live-edit-draft-banner.publish.tooltip')}}\n            loading={isPublishing}\n          />\n\n          <Button\n            onClick={handleDiscard}\n            text={t('banners.live-edit-draft-banner.discard.tooltip')}\n            tooltipProps={{content: t('banners.live-edit-draft-banner.discard.tooltip')}}\n            loading={isDiscarding}\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 {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 {type ObjectSchemaType} from '@sanity/types'\nimport {Heading, Stack, Text} from '@sanity/ui'\nimport {useTranslation} from 'react-i18next'\nimport {css, styled} from 'styled-components'\n\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 {t} = useTranslation(structureLocaleNamespace)\n\n  if (schemaType.__experimental_formPreviewTitle === false) {\n    return null\n  }\n\n  return (\n    <TitleContainer marginBottom={6} space={4}>\n      {!isSingleton && (\n        <Text muted size={1}>\n          {schemaType.title ?? schemaType.name}\n        </Text>\n      )}\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  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'\nimport {useConditionalToast} from './useConditionalToast'\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 after = useMemo(\n  //   () =>\n  //     Array.isArray(afterEditorComponents) &&\n  //     afterEditorComponents.map(\n  //       (AfterEditorComponent: ComponentType<{documentId: string}>, idx: number) => (\n  //         <AfterEditorComponent key={String(idx)} documentId={documentId} />\n  //       )\n  //     ),\n  //   [documentId]\n  // )\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 as=\"form\" onSubmit={preventDefault} ref={setRef}>\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={\n                  connectionState === 'reconnecting' || formState.readOnly || !editState?.ready\n                }\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 {CheckmarkIcon, ChevronDownIcon} from '@sanity/icons'\nimport {Menu, TabList, useElementSize} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type ComponentType, type ReactNode, useCallback, useState} from 'react'\n\nimport {Button, MenuButton, MenuItem, Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nfunction DelayedDiv({children, show}: {show: boolean; children: ReactNode}) {\n  return (\n    <motion.div\n      key={show ? 'show' : 'wait'}\n      initial={{opacity: show ? 1 : 0}}\n      animate={{opacity: 1}}\n      transition={\n        show\n          ? {duration: 0.2}\n          : // We delay the showing the element to avoid flickering\n            {delay: 1, duration: 0.2}\n      }\n    >\n      {children}\n    </motion.div>\n  )\n}\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({parentRef}: {parentRef: HTMLDivElement | null}) {\n  const {activeViewId, paneKey, views} = useDocumentPane()\n\n  const [tabList, setTabList] = useState<HTMLDivElement | null>(null)\n  const parentSize = useElementSize(parentRef)\n  const tabListSize = useElementSize(tabList)\n\n  const parentWidth = parentSize?.border?.width ?? 0\n  const tabListWidth = tabListSize?.border?.width ?? 0\n\n  const tabPanelId = `${paneKey}tabpanel`\n  const activeTab = views.find((view) => view.id === activeViewId)\n\n  if (parentWidth < 480 || tabListWidth > 200) {\n    return (\n      <DelayedDiv\n        // We immediately show the dropdown if the elements have been calculated\n        show={Boolean(parentWidth + tabListWidth)}\n      >\n        <MenuButton\n          id={`${paneKey}tab-menu`}\n          popover={{\n            placement: 'bottom-end',\n            portal: true,\n          }}\n          button={<Button iconRight={ChevronDownIcon} mode=\"bleed\" text={activeTab?.title ?? ''} />}\n          menu={\n            <Menu>\n              {views.map((view, index) => (\n                <DocumentHeaderMenuItem\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            </Menu>\n          }\n        />\n      </DelayedDiv>\n    )\n  }\n  return (\n    <DelayedDiv show={Boolean(tabListWidth)}>\n      <TabList space={1} ref={setTabList}>\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    </DelayedDiv>\n  )\n}\n\nfunction DocumentHeaderMenuItem(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} = props\n  const {ready, editState} = useDocumentPane()\n  const {setView} = usePaneRouter()\n  const handleClick = useCallback(() => setView(viewId), [setView, viewId])\n\n  return (\n    <MenuItem\n      aria-controls={tabPanelId}\n      disabled={!ready && !editState?.draft && !editState?.published}\n      icon={icon}\n      id={id}\n      text={label}\n      onClick={handleClick}\n      selected={isActive}\n      pressed={isActive}\n      iconRight={isActive ? CheckmarkIcon : undefined}\n    />\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 {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, useMemo, useState} from 'react'\nimport {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'\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} = useDocumentPane()\n  const {features} = useStructureTool()\n  const {index, BackLink} = usePaneRouter()\n  const [parentRef, setParentRef] = useState<HTMLDivElement | null>(null)\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(\n    () => showTabs && <DocumentHeaderTabs parentRef={parentRef} />,\n    [showTabs, parentRef],\n  )\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  return (\n    <PaneHeader\n      ref={setParentRef}\n      loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n      title={title}\n      tabs={tabs}\n      tabIndex={tabIndex}\n      backButton={backButton}\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  isReleaseDocument,\n  isReleaseScheduledOrScheduling,\n  isSanityCreateLinked,\n  isSystemBundle,\n  LegacyLayerProvider,\n  type ReleaseDocument,\n  ScrollContainer,\n  usePerspective,\n  VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {PaneContent, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {isLiveEditEnabled} from '../../../components/paneItem/helpers'\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 {AddToReleaseBanner} from './banners/AddToReleaseBanner'\nimport {ArchivedReleaseDocumentBanner} from './banners/ArchivedReleaseDocumentBanner'\nimport {CreateLinkedBanner} from './banners/CreateLinkedBanner'\nimport {DraftLiveEditBanner} from './banners/DraftLiveEditBanner'\nimport {OpenReleaseToEditBanner} from './banners/OpenReleaseToEditBanner'\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\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  const isLiveEdit = isLiveEditEnabled(schemaType)\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    const isScheduledRelease =\n      isReleaseDocument(selectedPerspective) && isReleaseScheduledOrScheduling(selectedPerspective)\n    if (isScheduledRelease) {\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    ) {\n      return (\n        <AddToReleaseBanner\n          documentId={value._id}\n          currentRelease={selectedPerspective as ReleaseDocument}\n          value={displayed || undefined}\n        />\n      )\n    }\n\n    if (\n      activeView.type === 'form' &&\n      isLiveEdit &&\n      ready &&\n      editState?.draft?._id &&\n      !selectedReleaseId\n    ) {\n      return (\n        <DraftLiveEditBanner\n          displayed={displayed}\n          documentId={documentId}\n          schemaType={schemaType}\n        />\n      )\n    }\n\n    if (activeView.type !== 'form' || isPermissionsLoading || !ready) return null\n\n    return (\n      <>\n        {showCreateBanner && <CreateLinkedBanner />}\n        {!permissions?.granted && (\n          <InsufficientPermissionBanner requiredPermission={requiredPermission} />\n        )}\n        <ReferenceChangedBanner />\n        <DeprecatedDocumentTypeBanner />\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    ready,\n    activeView.type,\n    isLiveEdit,\n    editState?.draft?._id,\n    isPermissionsLoading,\n    showCreateBanner,\n    permissions?.granted,\n    requiredPermission,\n    documentId,\n    value._id,\n    schemaType,\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 DocumentActionComponent,\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: DocumentActionComponent = ({id, type, onComplete, release}) => {\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)\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, 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'\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 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) {\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, 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  Hotkeys,\n  usePerspective,\n  useSource,\n} from 'sanity'\n\nimport {Button, Tooltip} from '../../../../ui-components'\nimport {RenderActionCollectionState} 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: DocumentActionDescription[]\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\n  const sideMenuItems = useMemo(() => {\n    return selectedReleaseId ? [firstActionState, ...menuActionStates] : menuActionStates\n  }, [selectedReleaseId, firstActionState, menuActionStates])\n\n  const canShowAction = firstActionState && !selectedReleaseId && !editState?.liveEdit\n\n  /* Version / Bundling handling */\n  return (\n    <Flex align=\"center\" gap={1}>\n      {__internal_tasks && __internal_tasks.footerAction}\n      {canShowAction && (\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      {/* if it's in version we always only want to show the items on the side menu and not on the main action */}\n      {((showMenu && menuActionStates.length > 0) || selectedReleaseId) && (\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 {actions: allActions, connectionState, documentId, editState} = useDocumentPane()\n  // const [isMenuOpen, setMenuOpen] = useState(false)\n  // const handleMenuOpen = useCallback(() => setMenuOpen(true), [])\n  // const handleMenuClose = useCallback(() => setMenuOpen(false), [])\n  // const handleActionComplete = useCallback(() => setMenuOpen(false), [])\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\n  const renderDocumentStatusBarActions = useCallback<\n    (props: {states: DocumentActionDescription[]}) => React.ReactNode\n  >(\n    ({states}) => (\n      <DocumentStatusBarActionsInner\n        disabled={connectionState !== 'connected'}\n        // isMenuOpen={isMenuOpen}\n        // onMenuOpen={handleMenuOpen}\n        // onMenuClose={handleMenuClose}\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 || !editState) {\n    return null\n  }\n\n  return (\n    <RenderActionCollectionState\n      // component={}\n      // onActionComplete={handleActionComplete}\n      actions={actions}\n      actionProps={editState}\n      group=\"default\"\n    >\n      {renderDocumentStatusBarActions}\n    </RenderActionCollectionState>\n  )\n})\n\nexport const HistoryStatusBarActions = memo(function HistoryStatusBarActions() {\n  const {actions, connectionState, editState, revisionId: revision} = useDocumentPane()\n\n  const disabled = (editState?.draft || editState?.published || {})._rev === revision\n  const actionProps = useMemo(() => ({...(editState || {}), revision}), [editState, revision])\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\n  return (\n    <RenderActionCollectionState\n      actions={historyActions}\n      actionProps={actionProps as any}\n      group=\"default\"\n    >\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 {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  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\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  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      <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: 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      {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  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 {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)((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    &::after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      width: ${theme.space[3]}px;\n      background: linear-gradient(to right, ${rgba(theme.color.bg, 0)}, var(--card-bg-color));\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      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\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}\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        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>\n                <Flex\n                  flex={1}\n                  gap={1}\n                  overflow=\"auto\"\n                  paddingX={3}\n                  data-testid=\"document-perspective-list\"\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.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.createDocumentVersion\n            : TIMELINE_ITEM_I18N_KEY_MAPPING.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.createDocumentVersion\n            : TIMELINE_ITEM_I18N_KEY_MAPPING.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.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} = 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            {message.text}\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 {SpacerButton} from '../../../components/spacerButton'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} 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, revisionId, onChange: onDocumentChange} = useDocumentPane()\n  const {selectedPerspective} = usePerspective()\n  const {title} = useDocumentTitle()\n\n  const CreateLinkedActions = useSanityCreateConfig().components?.documentLinkedActions\n\n  const showingRevision = Boolean(revisionId)\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  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} = 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          // @todo: get revision string\n          revision: undefined,\n        },\n      [editState],\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        isDisabled: !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    isDisabled: !hasValue,\n    shortcut: 'Ctrl+Alt+I',\n  }\n}\n\nfunction getCompareVersionsItem({documentIdStack, t}: GetMenuItemsParams): PaneMenuItem | null {\n  const isDisabled = typeof documentIdStack?.previousId === 'undefined'\n\n  // TODO: It would be preferable to display the option in an inert state, but the `isDisabled`\n  // property does not appear to have any impact. Instead, we simply exclude the option when\n  // there is no version to compare.\n  if (isDisabled) {\n    return null\n  }\n\n  return {\n    action: 'compareVersions',\n    group: 'inspectors',\n    title: t('compare-versions.menu-item.title'),\n    icon: TransferIcon,\n    isDisabled,\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 ReactNode, type SetStateAction, useMemo} from 'react'\nimport {getSanityCreateLinkMetadata, useSanityCreateConfig, useZIndex} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {PaneFooter, usePane} 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, isInitialValueLoading, ready, documentId, schemaType} = useDocumentPane()\n  const portalElements = useMemo(\n    () => ({[DOCUMENT_PANEL_PORTAL_ELEMENT]: documentPanelPortalElement}),\n    [documentPanelPortalElement],\n  )\n\n  const createLinkMetadata = getSanityCreateLinkMetadata(value)\n  const {startInCreateBanner: StartInCreateBanner} = useSanityCreateConfig().components ?? {}\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          {StartInCreateBanner && (\n            <ShowWhenPaneOpen>\n              <StartInCreateBanner\n                document={value}\n                documentId={documentId}\n                documentType={schemaType}\n                documentReady={ready}\n                isInitialValueLoading={!!isInitialValueLoading}\n                panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n              />\n            </ShowWhenPaneOpen>\n          )}\n          <TooltipDelayGroupProvider>\n            <DocumentStatusBar\n              actionsBoxRef={setActionsBoxElement}\n              createLinkMetadata={createLinkMetadata}\n            />\n          </TooltipDelayGroupProvider>\n        </PaneFooter>\n      </DialogProvider>\n    </PortalProvider>\n  )\n}\n\n/**\n * Prevents whatever is inside of it from rendering when the pane is collapsed.\n * Needed locally as DocumentLayout does lives outside PaneContext, but is provided _somewhere_ within it.\n */\nfunction ShowWhenPaneOpen(props: {children: ReactNode}) {\n  const {collapsed} = usePane()\n  return collapsed ? null : props.children\n}\n","import {DialogProvider, type DialogProviderProps, Flex, useElementRect} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useTranslation} from 'react-i18next'\nimport {\n  ChangeConnectorRoot,\n  type DocumentFieldActionNode,\n  type DocumentInspectorMenuItem,\n  FieldActionsProvider,\n  FieldActionsResolver,\n  GetFormValueProvider,\n  type Path,\n  useGlobalCopyPasteElementHandler,\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  isVersionId,\n  type PartialContext,\n  useCopyPaste,\n  useDocumentForm,\n  usePerspective,\n  useSchema,\n  useSource,\n  useTranslation,\n  useUnique,\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    },\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\n  const perspective = usePerspective()\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 || 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 = revisionId !== null\n      return seeingHistoryDocument || isDeleting || isDeleted\n    },\n    [getIsDeleted, isDeleting, revisionId],\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      default:\n        version = 'draft'\n    }\n\n    return version\n  }, [selectedPerspectiveName, selectedReleaseId, params, value._id])\n\n  const actionsPerspective = useMemo(() => getDocumentVersionType(), [getDocumentVersionType])\n\n  const documentActionsProps: PartialContext<DocumentActionsContext> = useMemo(\n    () => ({\n      schemaType: documentType,\n      documentId,\n      versionType: actionsPerspective,\n      ...(selectedReleaseId && {versionName: 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    (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        navigator.clipboard.writeText(window.location.toString())\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      pushToast,\n      t,\n      handleHistoryOpen,\n      handleInspectorAction,\n      diffViewRouter,\n      documentType,\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 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        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      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(eventsStore.revision?.document && eventsStore.revision?.revisionId),\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],\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  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  hasSearchQuery: boolean\n  isActive?: boolean\n  isLazyLoading: boolean\n  isLoading: 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    filterIsSimpleTypeConstraint,\n    hasMaxItems,\n    hasSearchQuery,\n    isActive,\n    isLazyLoading,\n    isLoading,\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    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                <Translate\n                  t={t}\n                  i18nKey=\"panes.document-list-pane.error.text\"\n                  values={{error: error.message}}\n                  components={{Code: ({children}) => <code>{children}</code>}}\n                />\n              </Text>\n              <ErrorActions error={error} eventId={null} onRetry={onRetry} />\n            </Stack>\n          </Container>\n        </Flex>\n      )\n    }\n\n    if (!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={loadingVariant === 'subtle' ? 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    collapsed,\n    error,\n    handleEndReached,\n    index,\n    isLoading,\n    items,\n    layout,\n    loadingVariant,\n    noDocumentsContent,\n    onRetry,\n    paneTitle,\n    renderItem,\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  map,\n  merge,\n  mergeMap,\n  type Observable,\n  of,\n  partition,\n  share,\n  take,\n  throttleTime,\n  throwError,\n  timer,\n} from 'rxjs'\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 interface SearchQueryResult {\n  fromCache: boolean\n  documents: SanityDocumentLike[]\n}\n\nconst swr = createSWR<SanityDocumentLike[]>({maxSize: 100})\n\nexport function listenSearchQuery(options: ListenQueryOptions): Observable<SearchQueryResult> {\n  const {\n    client,\n    schema,\n    sort,\n    perspective,\n    limit,\n    params,\n    filter,\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(`*[${filter}]`, 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 (isFirst && ev.type !== 'welcome') {\n        // If the first event is not welcome, it is most likely a reconnect and\n        // if it's not a reconnect something is very wrong and we should throw.\n        return throwError(\n          () =>\n            new Error(\n              ev.type === 'reconnect'\n                ? 'Could not establish EventSource connection'\n                : `Received unexpected type of first event \"${ev.type}\"`,\n            ),\n        )\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    filter,\n    limit,\n    params,\n    searchQuery,\n    perspective,\n    sort,\n    staticTypeNames,\n  })\n\n  return merge(\n    welcome$.pipe(take(1)),\n    mutationAndReconnect$.pipe(throttleTime(1000, asyncScheduler, {leading: true, trailing: true})),\n  ).pipe(\n    exhaustMapWithTrailing((event) => {\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(*[${filter}][]._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,\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            )\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          return doFetch()\n        }),\n      )\n    }),\n    swr(swrKey),\n    map(({fromCache, value}) => ({fromCache, documents: value})),\n  )\n}\n","import {type ClientPerspective} from '@sanity/client'\nimport {observableCallback} from 'observable-callback'\nimport {useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, fromEvent, merge, of} from 'rxjs'\nimport {\n  catchError,\n  filter,\n  map,\n  mergeMap,\n  scan,\n  share,\n  shareReplay,\n  take,\n  takeUntil,\n  withLatestFrom,\n} from 'rxjs/operators'\nimport {\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  fromCache?: boolean\n  items: DocumentListPaneItem[]\n}\n\nconst INITIAL_QUERY_STATE: DocumentListState = {\n  error: null,\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 * @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      catchError((err: unknown, caught$) => {\n        return concat(\n          of({type: 'error' as const, error: safeError(err)}),\n          merge(fromEvent(window, 'online'), onRetry$).pipe(\n            take(1),\n            mergeMap(() => caught$),\n          ),\n        )\n      }),\n      scan((prev, event) => {\n        if (event.type === 'error') {\n          return {\n            ...prev,\n            error: event.error,\n          }\n        }\n        if (event.type === 'result') {\n          return {\n            ...prev,\n            error: null,\n            fromCache: event.result.fromCache,\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        throw new Error('Unexpected')\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 {error, items, isLoading, fromCache, isLoadingFullList} = useObservable(\n    queryResults$,\n    INITIAL_QUERY_STATE,\n  )\n\n  return {\n    error,\n    onRetry,\n    isLoading,\n    items,\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  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    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 (isLoading && enableSearchSpinner === paneKey) {\n      return 'spinner'\n    }\n    if (fromCache) {\n      return 'subtle'\n    }\n\n    return 'initial'\n  }, [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  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          disabled={Boolean(error)}\n          fontSize={[2, 2, 1]}\n          icon={textInputIcon}\n          iconRight={\n            loadingVariant === 'subtle' && !searchInputValue ? DelayedSubtleSpinnerIcon : 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        items={items}\n        key={paneKey}\n        layout={layout}\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: ChangeFieldWrapper,\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    <Tooltip content={isSelectable ? '' : t('changes.not-selectable')} disabled={isSelectable}>\n      <Flex gap={1}>\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          }}\n        >\n          <Event event={event} showChangesBy=\"tooltip\" />\n        </Card>\n        {optionsMenu}\n      </Flex>\n    </Tooltip>\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  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 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 $tone={event.release ? getReleaseTone(event.release) : undefined}>\n        {children}\n      </VersionInlineBadge>\n    )\n  }\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={{content: t('timeline-item.menu-button.tooltip')}}\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                            t('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 || t('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  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      ) {\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.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.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 {BoundaryElementProvider, Box, Card, Flex, Spinner, 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  LoadingBlock,\n  NoChanges,\n  type ObjectSchemaType,\n  ScrollContainer,\n  useEvents,\n  useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\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}\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: ChangeFieldWrapper,\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 ('parentId' in toEvent && 'parentId' in event && event.parentId === toEvent.parentId) {\n        return {...event, parentId: undefined}\n      }\n      return event\n    })\n  }, [events, toEvent])\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                />\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}: {\n  error?: Error | null\n  documentContext: DocumentChangeContextInstance\n  loading: boolean\n  schemaType: ObjectSchemaType\n}) {\n  if (error) {\n    return <ChangesError />\n  }\n\n  if (loading) {\n    return <LoadingBlock showText />\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      <ChangeList diff={documentContext.rootDiff} schemaType={schemaType} />\n    </DocumentChangeContext.Provider>\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} from '@sanity/icons'\nimport {Card, Flex, TabList, TabPanel} from '@sanity/ui'\nimport {type DocumentInspectorProps, useSource, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Tab} 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\n  const {t} = useTranslation(structureLocaleNamespace)\n  const isReady = params?.inspect === HISTORY_INSPECTOR_NAME\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  return (\n    <FadeInFlex direction=\"column\" padding={0} height=\"fill\" data-ready={isReady ? '' : undefined}>\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\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, 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} = 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  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        {validation.length === 0 && (\n          <Box padding={2}>\n            <Text muted size={1}>\n              {t('panel.no-errors-message')}\n            </Text>\n          </Box>\n        )}\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      </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  isValidationError,\n  isValidationWarning,\n  usePerspective,\n  useTranslation,\n  useValidationStatus,\n} from 'sanity'\n\nimport {VALIDATION_INSPECTOR_NAME} from '../../constants'\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\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\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,\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","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","selectedPerspective","isReleaseActive","useIsReleaseActive","tCore","templatePermissions","isTemplatePermissionsLoading","useTemplatePermissions","every","nothingGranted","reduce","permissionsById","AddIcon","isPublishedPerspective","disabledByPerspectiveTooltipProps","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","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","includes","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","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","selectedCommentId","comment","paramsRef","commentId","inspect","COMMENTS_INSPECTOR_NAME","location","origin","getCommentLink","handleClearSelectedComment","handleOpenCommentsInspector","useFilteredReleases","displayed","archivedReleases","useArchivedReleases","isCreatingDocument","_createdAt","notCurrentReleases","currentReleases","inCreation","versionDocExists","historyVersion","archivedRelease","r","useDocumentIdStack","editState","filteredReleases","systemStack","releaseStack","concat","stack","findIndex","id_0","position","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","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","isDraftPerspective","DeletedDocumentBanner","lastNonDeletedRevId","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","LONG_ENOUGH_BUT_NOT_TOO_LONG","useConditionalToast","TOAST_DELAY","AddToReleaseBanner","currentRelease","LATEST","createVersion","useVersionOperations","versionCreateState","setVersionCreateState","handleAddToRelease","lastUpdate","now","useCurrentTime","getTime","VersionBadge","getVersionInlineBadge","updateIntervalMs","currentTime","setCurrentTime","intervalId","setInterval","clearInterval","ArchivedReleaseDocumentBanner","handleGoBack","historyEvent","since","CreateLinkedBanner","documentLinkedBannerContent","CreateLinkedBannerContent","useSanityCreateConfig","getSanityCreateLinkMetadata","createLinkMetadata","ResolvedLiveEdit","DraftLiveEditBanner","isPublishing","setPublishing","isDiscarding","setDiscarding","publish","discardChanges","liveEditResolveType","handlePublish","handleDiscard","OpenReleaseToEditBanner","isPinnedDraftOrPublished","onlyHasVersions","useOnlyHasVersions","OpenReleaseToEditBannerInner","setPerspective","useSetPerspective","currentVersion","documentVersionsTitleList","handleGoToEdit","ScheduledReleaseBanner","date","LockIcon","UnpublishedDocumentBanner","willBeUnpublished","isGoingToUnpublish","UnpublishIcon","TitleContainer","Stack","heading","FormHeader","isSingleton","__experimental_formPreviewTitle","ev","FormView","margins","openPath","isLocked","transactionSyncLock","pair","documentEvents","tap","prepareMutationEvent","prepareRebaseEvent","hasRev","_rev","patches","handleInitialValue","useEffectEvent","formRef","setFormRef","focusedFirstDescendant","setFocusedFirstDescendant","focusFirstDescendant","readOnly","mutations","mut","patch","fromMutationPatches","remotePatches","remoteMutations","localPatches","localMutations","DelayedDiv","show","DocumentHeaderTabs","parentRef","activeViewId","views","tabList","setTabList","parentSize","useElementSize","tabListSize","parentWidth","tabListWidth","tabPanelId","view","activeTab","ChevronDownIcon","view_0","view_1","index_0","DocumentHeaderMenuItem","label","viewId","setView","DocumentHeaderTab","DocumentHeaderTitle","DocumentPanelSubHeader","setParentRef","showTabs","showBackButton","ArrowLeftIcon","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","isLiveEdit","scrollTo","inspectDialog","showInspector","isSystemBundle","isPinnedDraftOrPublish","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","ConfirmDialogContent","cancelButtonIcon","cancelButtonText","confirmButtonIcon","confirmButtonText","isTopLayer","useLayer","useGlobalKeyDown","useClickOutsideEvent","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","s","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","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","states","__internal_tasks","useSource","firstActionState","menuActionStates","buttonElement","setButtonElement","sideMenuItems","canShowAction","footerAction","DocumentStatusBarActions","allActions","renderDocumentStatusBarActions","HistoryStatusBarActions","revisionId","isRestoreAction","historyActions","toLowerCase","TooltipContent","intendedPublishAt","DATE_TIME_FORMAT","dateStyle","timeStyle","DocumentPerspectiveList","dateTimeFormat","useDateTimeFormat","handlePerspectiveChange","perspective","isPublishedChipDisabled","getReleaseChipState","isReleaseHistoryMatch","isPublishSelected","isDraftSelected","displayedId","isDraftDisabled","format","menuReleaseId","releasesLoading","fromRelease","isVersion","releaseState","HorizontalScroller","getTheme_v2","rgba","DocumentPanelHeader","_props","onMenuAction","onPaneClose","onPaneSplit","unstable_languageFilter","hasGroupSiblings","useFieldActions","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","Popover","TIMELINE_MENU_PORTAL","TimelineMenu","setTimelineRange","timelineError","timelineStore","open","setOpen","button","setButton","popoverRef","setPopoverRef","useTimelineSelector","realRevChunk","sinceTime","handleOpen","handleGlobalKeyDown","focus","selectRev","revChunk","sinceId","revId","findRangeForRev","selectSince","sinceChunk","findRangeForSince","handleLoadMore","loadMore","formatParams","revLabel","sinceLabel","buttonLabel","StyledMotionPath","motion","Circle","Arrows","Checkmark","rotateAnimation","keyframes","RotateGroup","root","syncing","scale","transition","saved","changes","circle","strokeDasharray","strokeDashoffset","arrows","checkmark","pathLength","AnimatedStatusIcon","STATUS_DICTIONARY","i18nKey","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","observe","unobserve","CONTAINER_BREAKPOINT","AnimatedCard","DocumentStatusBar","actionsBoxRef","onDocumentChange","CreateLinkedActions","documentLinkedActions","showingRevision","setCollapsed","contentRect","handleResize","isReady","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","isInitialValueLoading","portalElements","startInCreateBanner","StartInCreateBanner","ShowWhenPaneOpen","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","setDocumentMeta","useCopyPaste","documentActions","documentBadges","unstable_fieldActions","fieldActionsResolver","languageFilterResolver","setPaneParams","viewsProp","documentIdRaw","diffViewRouter","initialValue","getIsDeleted","getComparisonValue","getIsReadOnly","getDisplayed","formReady","formStateRef","initialFocusPath","getFormDocumentValue","getDocumentVersionType","actionsPerspective","documentActionsProps","versionType","versionName","languageFilter","newSince","newRev","handlePaneClose","closeCurrent","handlePaneSplit","duplicateCurrent","handleMenuAction","toString","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","filterIsSimpleTypeConstraint","hasMaxItems","hasSearchQuery","isLazyLoading","loadingVariant","onEndReached","onRetry","paneTitle","searchInputElement","showIcons","setShouldRender","handleEndReached","isLastItem","showSpinner","showMaxItemsMessage","limit","noDocumentsContent","mainContent","removePublishedWithDrafts","collate","entry","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","searchQuery","staticTypeNames","maxFieldDepth","searchStrategy","sortBy","extendedProjection","events$","defer","includeAllVersions","includeResult","mergeMap","throwError","share","welcome$","mutationAndReconnect$","partition","swrKey","take","asyncScheduler","leading","trailing","exhaustMapWithTrailing","typeNames","getSearchableTypes","getExtendedProjection","search","createSearch","strategy","maxDepth","doFetch","__unstable_extendedProjection","comments","skipSortByScore","hits","hit","fromCache","INITIAL_QUERY_STATE","isLoadingFullList","useDocumentList","searchFilter","paramsProp","sortOrder","useWorkspace","useSearchMaxFieldDepth","typeNameFromFilter","onRetry$","observableCallback","onFetchFullList$","onLoadFullList","queryResults$","listenSearchQueryArgs","partialList$","fullList$","withLatestFrom","takeUntil","caught$","safeError","scan","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","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","liveEditSchemaType","activePanes","setActivePanes","getIntentState","editDocumentId","canHandleIntent","getPaneParams","ChangesInspector","showChanges","scrollRef","setScrollRef","diff","selectionState","isComparingCurrent","structureT","FieldWrapper","ChangeFieldWrapper","rootDiff","showFromValue","documentContext","getIsSelectable","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","EventTimelineItem","cursor","PublishedEventMenu","portalContext","versionId","versionRevisionId","handleOpenReleaseDocument","handleOpenDraftDocument","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","documentVariantType","getDocumentVariantType","isPublishDocumentVersionEvent","creationEvent","showExpandingLoader","isLastEvent","EventsTimelineMenu","nextCursor","eventsError","findRangeForRevision","loadMoreEvents","expandEvent","revEvent","sinceEvent","SpinnerContainer","DIFF_INITIAL_VALUE","EventsInspector","getChangesList","changesList$","diffLoading","diffError","toEvent","sinceEvents","EventsSelector","showList","listHeight","setListHeight","getScrollerRef","initialLoad","HistorySelector","FadeInFlex","TABS","isValidTab","tab","ChangesTabs","paneRouterTab","setPaneRouterTab","changesInspector","RestoreIcon","getPathTitles","f","itemType","_key","MARKER_ICON","InfoOutlineIcon","MARKER_TONE","ValidationInspector","marker","ValidationCard","errorInfo","setErrorInfo","level","DocumentNodePathBreadcrumbs","pathTitles","Fragment","fontWeight","validationMarkers","hasErrors","isValidationError","hasWarnings","isValidationWarning","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","flat","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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"}