@depup/sanity 5.17.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +57 -0
- package/bin/sanity +209 -0
- package/changes.json +114 -0
- package/lib/_chunks-dts/ActiveWorkspaceMatcherContext.d.ts +16164 -0
- package/lib/_chunks-dts/index.d.ts +780 -0
- package/lib/_chunks-dts/types.d.ts +2765 -0
- package/lib/_chunks-dts/types2.d.ts +656 -0
- package/lib/_chunks-dts/types3.d.ts +303 -0
- package/lib/_chunks-es/BroadcastDisplayedDocument.js +20 -0
- package/lib/_chunks-es/BroadcastDisplayedDocument.js.map +1 -0
- package/lib/_chunks-es/DisplayedDocumentBroadcaster.js +32 -0
- package/lib/_chunks-es/DisplayedDocumentBroadcaster.js.map +1 -0
- package/lib/_chunks-es/LiveQueries.js +339 -0
- package/lib/_chunks-es/LiveQueries.js.map +1 -0
- package/lib/_chunks-es/MenuGroup.js +106 -0
- package/lib/_chunks-es/MenuGroup.js.map +1 -0
- package/lib/_chunks-es/PostMessageDocuments.js +72 -0
- package/lib/_chunks-es/PostMessageDocuments.js.map +1 -0
- package/lib/_chunks-es/PostMessagePerspective.js +23 -0
- package/lib/_chunks-es/PostMessagePerspective.js.map +1 -0
- package/lib/_chunks-es/PostMessagePreviewSnapshots.js +69 -0
- package/lib/_chunks-es/PostMessagePreviewSnapshots.js.map +1 -0
- package/lib/_chunks-es/PostMessageRefreshMutations.js +74 -0
- package/lib/_chunks-es/PostMessageRefreshMutations.js.map +1 -0
- package/lib/_chunks-es/PostMessageSchema.js +502 -0
- package/lib/_chunks-es/PostMessageSchema.js.map +1 -0
- package/lib/_chunks-es/PostMessageTelemetry.js +21 -0
- package/lib/_chunks-es/PostMessageTelemetry.js.map +1 -0
- package/lib/_chunks-es/PresentationToolGrantsCheck.js +3848 -0
- package/lib/_chunks-es/PresentationToolGrantsCheck.js.map +1 -0
- package/lib/_chunks-es/QRCodeSVG.js +692 -0
- package/lib/_chunks-es/QRCodeSVG.js.map +1 -0
- package/lib/_chunks-es/StructureToolProvider.js +2360 -0
- package/lib/_chunks-es/StructureToolProvider.js.map +1 -0
- package/lib/_chunks-es/VideoPlayer.js +22 -0
- package/lib/_chunks-es/VideoPlayer.js.map +1 -0
- package/lib/_chunks-es/ViteDevServerStopped.js +52 -0
- package/lib/_chunks-es/ViteDevServerStopped.js.map +1 -0
- package/lib/_chunks-es/index.js +285 -0
- package/lib/_chunks-es/index.js.map +1 -0
- package/lib/_chunks-es/index2.js +105 -0
- package/lib/_chunks-es/index2.js.map +1 -0
- package/lib/_chunks-es/index3.js +139 -0
- package/lib/_chunks-es/index3.js.map +1 -0
- package/lib/_chunks-es/index4.js +1020 -0
- package/lib/_chunks-es/index4.js.map +1 -0
- package/lib/_chunks-es/pane.js +5 -0
- package/lib/_chunks-es/pane.js.map +1 -0
- package/lib/_chunks-es/pane2.js +5 -0
- package/lib/_chunks-es/pane2.js.map +1 -0
- package/lib/_chunks-es/presentation.js +549 -0
- package/lib/_chunks-es/presentation.js.map +1 -0
- package/lib/_chunks-es/resources.js +303 -0
- package/lib/_chunks-es/resources.js.map +1 -0
- package/lib/_chunks-es/resources2.js +459 -0
- package/lib/_chunks-es/resources2.js.map +1 -0
- package/lib/_chunks-es/resources3.js +281 -0
- package/lib/_chunks-es/resources3.js.map +1 -0
- package/lib/_chunks-es/resources4.js +184 -0
- package/lib/_chunks-es/resources4.js.map +1 -0
- package/lib/_chunks-es/resources5.js +161 -0
- package/lib/_chunks-es/resources5.js.map +1 -0
- package/lib/_chunks-es/resources6.js +141 -0
- package/lib/_chunks-es/resources6.js.map +1 -0
- package/lib/_chunks-es/resources7.js +24 -0
- package/lib/_chunks-es/resources7.js.map +1 -0
- package/lib/_chunks-es/resources8.js +603 -0
- package/lib/_chunks-es/resources8.js.map +1 -0
- package/lib/_chunks-es/resources9.js +126 -0
- package/lib/_chunks-es/resources9.js.map +1 -0
- package/lib/_chunks-es/structureTool.js +13673 -0
- package/lib/_chunks-es/structureTool.js.map +1 -0
- package/lib/_chunks-es/version.js +17 -0
- package/lib/_chunks-es/version.js.map +1 -0
- package/lib/_createContext.d.ts +12 -0
- package/lib/_createContext.js +38 -0
- package/lib/_createContext.js.map +1 -0
- package/lib/_internal.d.ts +9 -0
- package/lib/_internal.js +12 -0
- package/lib/_internal.js.map +1 -0
- package/lib/_singletons.d.ts +951 -0
- package/lib/_singletons.js +284 -0
- package/lib/_singletons.js.map +1 -0
- package/lib/cli.d.ts +3 -0
- package/lib/cli.js +9 -0
- package/lib/cli.js.map +1 -0
- package/lib/desk.d.ts +910 -0
- package/lib/desk.js +71 -0
- package/lib/desk.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +92934 -0
- package/lib/index.js.map +1 -0
- package/lib/media-library.d.ts +85 -0
- package/lib/media-library.js +11 -0
- package/lib/media-library.js.map +1 -0
- package/lib/migrate.d.ts +1 -0
- package/lib/migrate.js +2 -0
- package/lib/migrate.js.map +1 -0
- package/lib/presentation.d.ts +28 -0
- package/lib/presentation.js +10 -0
- package/lib/presentation.js.map +1 -0
- package/lib/router.d.ts +560 -0
- package/lib/router.js +777 -0
- package/lib/router.js.map +1 -0
- package/lib/structure.d.ts +3 -0
- package/lib/structure.js +639 -0
- package/lib/structure.js.map +1 -0
- package/mock-browser-env-stub-loader.mjs +27 -0
- package/package.json +383 -0
- package/static/favicons/apple-touch-icon.png +0 -0
- package/static/favicons/favicon-192.png +0 -0
- package/static/favicons/favicon-512.png +0 -0
- package/static/favicons/favicon-96.png +0 -0
- package/static/favicons/favicon.ico +0 -0
- package/static/favicons/favicon.svg +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structureTool.js","sources":["../../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/utils/findRelease.ts","../../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/components/pane/constants.ts","../../src/structure/components/pane/usePaneLayout.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/panes/error/ErrorPane.tsx","../../src/structure/components/Delay.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/DocumentActionsProvider.tsx","../../src/structure/useStructureTool.ts","../../src/structure/panes/document/constants.ts","../../src/structure/panes/document/DocumentInspectorMenuItemsResolver.tsx","../../src/structure/panes/document/useDocumentPaneInfo.tsx","../../src/structure/panes/document/useDocumentTitle.ts","../../src/structure/panes/document/DocumentOperationResults.tsx","../../src/structure/components/paneItem/helpers.tsx","../../src/structure/hasObsoleteDraft.ts","../../src/structure/mustChooseNewDocumentDestination.ts","../../src/structure/panes/document/documentInspector/DocumentInspectorHeader.tsx","../../src/structure/panes/document/documentInspector/DocumentInspectorPanel.tsx","../../src/structure/useStructureToolSetting.ts","../../src/structure/panes/document/inspectDialog/constants.ts","../../src/structure/panes/document/inspectDialog/helpers.ts","../../src/structure/panes/document/inspectDialog/InspectDialog.styles.tsx","../../src/structure/panes/document/inspectDialog/Search.tsx","../../src/structure/panes/document/inspectDialog/InspectDialog.tsx","../../src/structure/panes/document/documentPanel/banners/Banner.tsx","../../src/structure/panes/document/documentPanel/banners/DeletedDocumentBanners.tsx","../../src/structure/panes/document/documentPanel/banners/DeprecatedDocumentTypeBanner.tsx","../../src/structure/components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry.ts","../../src/structure/components/requestPermissionDialog/RequestPermissionDialog.tsx","../../src/structure/components/requestPermissionDialog/useRoleRequestsStatus.tsx","../../src/structure/panes/document/documentPanel/banners/InsufficientPermissionBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ReferenceChangedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ScheduledDraftOverrideBanner.tsx","../../src/structure/components/paneRouter/usePaneRouter.ts","../../src/structure/panes/document/documentPanel/banners/ArchivedReleaseDocumentBanner.tsx","../../src/structure/panes/document/documentPanel/banners/CanvasLinkedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ChooseNewDocumentDestinationBanner.tsx","../../src/structure/panes/document/documentPanel/banners/CreateLinkedBanner.tsx","../../src/structure/panes/document/documentPanel/banners/DocumentNotInReleaseBanner.tsx","../../src/structure/panes/document/documentPanel/banners/__telemetry__/DraftLiveEditBanner.telemetry.ts","../../src/structure/panes/document/documentPanel/banners/ObsoleteDraftBanner.tsx","../../src/structure/panes/document/documentPanel/banners/OpenReleaseToEditBanner.tsx","../../src/structure/panes/document/documentPanel/banners/PausedScheduledDraftBanner.tsx","../../src/structure/panes/document/documentPanel/banners/RevisionNotFoundBanner.tsx","../../src/structure/panes/document/documentPanel/banners/ScheduledReleaseBanner.tsx","../../src/structure/panes/document/documentPanel/banners/UnpublishedDocumentBanner.tsx","../../src/structure/panes/document/documentPanel/documentViews/FormHeader.tsx","../../src/structure/panes/document/documentPanel/documentViews/FormView.tsx","../../src/structure/panes/document/documentPanel/header/DocumentHeaderTabs.tsx","../../src/structure/structureResolvers/useResolvedPanesList.ts","../../src/structure/constants.ts","../../src/structure/panes/document/documentPanel/header/__telemetry__/focus.telemetry.ts","../../src/structure/panes/document/documentPanel/header/DocumentHeaderBreadcrumbItem.tsx","../../src/structure/panes/document/documentPanel/header/DocumentHeaderBreadcrumb.tsx","../../src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.tsx","../../src/structure/panes/document/documentPanel/header/FavoriteToggle.tsx","../../src/structure/panes/document/documentPanel/header/DocumentPanelSubHeader.tsx","../../src/structure/panes/document/documentPanel/DocumentPanel.tsx","../../src/structure/documentActions/HistoryRestoreAction.tsx","../../src/structure/menuNodes.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/panes/document/__telemetry__/documentPanes.telemetry.ts","../../src/structure/panes/document/documentPanel/header/CopyDocumentActions.tsx","../../src/structure/panes/document/documentPanel/header/hook/useChipScrollPosition.tsx","../../src/structure/panes/document/documentPanel/header/NonReleaseVersionsSelect.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/documentActions/DeleteAction.tsx","../../src/structure/components/confirmDiscardDialog/ConfirmDiscardDialog.tsx","../../src/structure/documentActions/DiscardChangesAction.tsx","../../src/structure/documentActions/DuplicateAction.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/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/components/HiddenCheckmarkIcon.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/hooks/useDocumentLastRev.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/DocumentPerspectiveProvider.tsx","../../src/structure/panes/document/DocumentPaneProviderWrapper.tsx","../../src/structure/panes/document/useResetHistoryParams.ts","../../src/structure/panes/document/DocumentPane.tsx","../../src/structure/components/paneRouter/BackLink.tsx","../../src/structure/components/paneRouter/ChildLink.tsx","../../src/structure/components/paneRouter/ParameterizedLink.tsx","../../src/structure/components/paneRouter/ReferenceChildLink.tsx","../../src/structure/components/paneRouter/PaneRouterProvider.tsx","../../src/structure/panes/unknown/UnknownPaneType.tsx","../../src/structure/panes/StructureToolPane.tsx","../../src/structure/components/DocTitle.tsx","../../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.styles.tsx","../../src/structure/components/paneItem/PaneItemPreview.tsx","../../src/structure/components/confirmDeleteDialog/ReferencePreviewLink.tsx","../../src/structure/components/confirmDeleteDialog/VersionsPreviewList.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/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/components/incomingReferencesDecoration/getIncomingReferences.tsx","../../src/structure/components/incomingReferencesDecoration/shared.ts","../../src/structure/components/incomingReferencesDecoration/CrossDatasetIncomingReference/CrossDatasetIncomingReferenceDocumentPreview.tsx","../../src/structure/components/incomingReferencesDecoration/CrossDatasetIncomingReference/getCrossDatasetIncomingReferences.tsx","../../src/structure/components/incomingReferencesDecoration/IncomingReferenceDocumentActions.tsx","../../src/structure/components/incomingReferencesDecoration/IncomingReferencePreview.tsx","../../src/structure/components/incomingReferencesDecoration/IncomingReferenceDocument.tsx","../../src/structure/structureResolvers/assignId.ts","../../src/structure/panes/documentList/constants.ts","../../src/structure/panes/documentList/DocumentListPaneContent.tsx","../../src/structure/panes/documentList/helpers.ts","../../src/structure/panes/documentList/__telemetry__/documentListSearch.telemetry.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/incomingReferences/IncomingReferenceDocument.tsx","../../src/structure/panes/document/inspectors/incomingReferences/IncomingReferencesList.tsx","../../src/structure/panes/document/inspectors/incomingReferences/IncomingReferencesInspector.tsx","../../src/structure/panes/document/inspectors/incomingReferences/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 {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 from 'lodash-es/fromPairs.js'\nimport toPairs from 'lodash-es/toPairs.js'\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 {\n getReleaseIdFromReleaseDocumentId,\n getVersionFromId,\n isDraftId,\n isPublishedId,\n type ReleaseDocument,\n type TargetPerspective,\n} from 'sanity'\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 *\n * TODO: Return a type compatible with `TargetPerspective` (`\"draft\"` must be `\"drafts\"`).\n *\n * @internal\n */\nexport function findRelease(\n documentId: string,\n releases: ReleaseDocument[],\n): TargetPerspective | undefined {\n if (isPublishedId(documentId)) {\n return 'published'\n }\n\n if (isDraftId(documentId)) {\n return 'draft'\n }\n\n return (\n releases.find(\n ({_id}) => getReleaseIdFromReleaseDocumentId(_id) === getVersionFromId(documentId),\n ) ?? getVersionFromId(documentId)\n )\n}\n","import {CloseIcon, LockIcon, TransferIcon} from '@sanity/icons'\nimport {\n Badge,\n Box,\n // eslint-disable-next-line no-restricted-imports -- we need more control over how the `Button` component is rendered\n Button,\n type ButtonTone,\n Flex,\n Menu,\n // eslint-disable-next-line no-restricted-imports -- the `VersionModeHeader` component needs more control over how the `MenuItem` component is rendered\n MenuItem,\n Stack,\n Text,\n} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {type ComponentProps, type ComponentType, useMemo} from 'react'\nimport {\n type DocumentLayoutProps,\n formatRelativeLocalePublishDate,\n getDraftId,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n getVersionId,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n isSystemBundleName,\n LATEST,\n PUBLISHED,\n ReleaseAvatar,\n type ReleaseDocument,\n ReleaseTitle,\n type TargetPerspective,\n useActiveReleases,\n useDocumentVersions,\n useEditState,\n useTranslation,\n useWorkspace,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useDiffViewRouter} from '../../hooks/useDiffViewRouter'\nimport {useDiffViewState} from '../../hooks/useDiffViewState'\nimport {findRelease} from '../../utils/findRelease'\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 {\n state: 'pending' | 'ready' | 'error'\n } & 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 releasesState = fetchingState(activeReleases)\n\n const onSelectPreviousRelease = (selectedDocumentId: string): void => {\n if (typeof documents?.previous !== 'undefined') {\n navigateDiffView({\n previousDocument: {\n ...documents.previous,\n id: selectedDocumentId,\n },\n })\n }\n }\n\n const onSelectNextRelease = (selectedDocumentId: string): void => {\n if (typeof documents?.next !== 'undefined') {\n navigateDiffView({\n nextDocument: {\n ...documents.next,\n id: selectedDocumentId,\n },\n })\n }\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 releasesState={releasesState}\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 releasesState={releasesState}\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 releasesState: 'pending' | 'ready' | 'error'\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 releasesState,\n onSelectRelease,\n role,\n documentId,\n document,\n}) => {\n const {published, draft} = useEditState(getPublishedId(document.id), document.type)\n const selected = useMemo(() => findRelease(document.id, releases), [document.id, releases])\n const {t: tStructure} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const {\n document: {\n drafts: {enabled: isDraftModelEnabled},\n },\n } = useWorkspace()\n\n if (releasesState === 'error') {\n return (\n <Badge tone=\"critical\" radius={3}>\n {tStructure('compare-version.error.loadReleases.title')}\n </Badge>\n )\n }\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, releasesState})}\n />\n }\n menu={\n <Menu>\n {published && (\n <VersionMenuItem\n type=\"published\"\n onSelect={onSelectRelease}\n isSelected={selected === 'published'}\n documentId={documentId}\n />\n )}\n {isDraftModelEnabled && draft && (\n <VersionMenuItem\n type=\"draft\"\n onSelect={onSelectRelease}\n isSelected={selected === 'draft'}\n documentId={documentId}\n />\n )}\n {releases.map((release) => (\n <VersionMenuItem\n key={release._id}\n release={release}\n onSelect={onSelectRelease}\n isSelected={typeof selected !== 'string' && selected?._id === release._id}\n documentId={documentId}\n />\n ))}\n </Menu>\n }\n />\n )\n}\n\ntype VersionMenuItemProps = {\n onSelect: (releaseId: string) => void\n isSelected?: boolean\n documentId: string\n} & (\n | {\n release: ReleaseDocument\n type?: never\n }\n | {\n type: 'published' | 'draft'\n release?: never\n }\n)\n\nconst VersionMenuItem: ComponentType<VersionMenuItemProps> = ({\n type,\n release,\n onSelect,\n isSelected,\n documentId,\n}) => {\n const {t: tCore} = useTranslation()\n const {t: tStructure} = useTranslation(structureLocaleNamespace)\n\n const onClick = () => {\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 }\n\n if (type) {\n const releasePerspective = type === 'published' ? PUBLISHED : LATEST\n\n return (\n <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n <Flex gap={1}>\n <ReleaseAvatar padding={2} release={releasePerspective} />\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 return (\n <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n <Flex gap={1}>\n <ReleaseAvatar padding={2} release={release} />\n <Stack flex={1} paddingY={2} paddingRight={2} space={2} style={{minWidth: 0}}>\n <ReleaseTitle\n title={release.metadata.title}\n fallback={tCore('release.placeholder-untitled-release')}\n textProps={{size: 1, weight: 'medium'}}\n />\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 releasesState,\n}: {\n releasesState: 'pending' | 'ready'\n selected?: TargetPerspective\n tCore: TFunction\n tStructure: TFunction\n}): Pick<ComponentProps<typeof Button>, 'text' | 'tone' | 'icon' | 'iconRight' | 'disabled'> {\n if (releasesState === 'pending') {\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} release={selected} />,\n iconRight: selected && isReleaseScheduledOrScheduling(selected) ? <LockIcon /> : undefined,\n tone,\n }\n }\n\n if (isSystemBundleName(selected)) {\n const tone: ButtonTone = selected === 'published' ? 'positive' : 'caution'\n const releasePerspective = selected === 'published' ? PUBLISHED : LATEST\n\n return {\n text: tStructure(['compare-versions.status', selected].join('.')),\n icon: <ReleaseAvatar padding={1} release={releasePerspective} />,\n tone,\n }\n }\n\n return {\n text: selected,\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n icon: <ReleaseAvatar padding={1} releaseType=\"undecided\" />,\n tone: 'neutral',\n }\n}\n\nfunction fetchingState({\n loading,\n error,\n}: {\n loading: boolean\n error?: Error\n}): 'pending' | 'ready' | 'error' {\n if (loading) {\n return 'pending'\n }\n\n if (typeof error !== 'undefined') {\n return 'error'\n }\n\n return 'ready'\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-es/noop.js'\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 type TargetPerspective,\n useActiveReleases,\n useDocumentForm,\n useEditState,\n useMiddlewareComponents,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {CommentsEnabledContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {pickDocumentLayoutComponent} from '../../panes/document/document-layout/pickDocumentLayoutComponent'\nimport {usePathSyncChannel} from '../hooks/usePathSyncChannel'\nimport {type PathSyncChannel} from '../types/pathSyncChannel'\nimport {findRelease} from '../utils/findRelease'\nimport {Scroller} from './Scroller'\n\nconst DiffViewPaneLayout = styled(Card)`\n position: relative;\n grid-area: var(--grid-area);\n`\n\nconst Container = styled(UiContainer)`\n width: auto;\n`\n\ninterface DiffViewPaneProps {\n documentType: string\n documentId: string\n role: 'previous' | 'next'\n scrollElement: HTMLElement | null\n syncChannel: PathSyncChannel\n compareDocument: {\n type: string\n id: string\n }\n}\n\nexport const DiffViewPane = forwardRef<HTMLDivElement, DiffViewPaneProps>(function DiffViewPane(\n {role, documentType, documentId, scrollElement, syncChannel, compareDocument},\n ref,\n) {\n const containerElement = useRef<HTMLDivElement | null>(null)\n const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)\n\n const DocumentLayout = useMiddlewareComponents({\n pick: pickDocumentLayoutComponent,\n defaultComponent: useCallback(\n () => (\n <DiffViewDocument\n compareDocument={compareDocument}\n documentId={documentId}\n documentType={documentType}\n role={role}\n scrollElement={scrollElement}\n syncChannel={syncChannel}\n />\n ),\n [compareDocument, documentId, documentType, role, scrollElement, syncChannel],\n ),\n })\n\n return (\n <ReviewChangesContext.Provider\n value={{\n // Render the change indicators inertly, because the diff view modal does not currently\n // provide a way to display document inspectors.\n isInteractive: false,\n onOpenReviewChanges: noop,\n onSetFocus: noop,\n isReviewChangesOpen: false,\n }}\n >\n <ChangeIndicatorsTracker>\n <VirtualizerScrollInstanceProvider\n scrollElement={scrollElement}\n containerElement={containerElement}\n >\n <BoundaryElementProvider element={boundaryElement}>\n <DiffViewPaneLayout\n ref={setBoundaryElement}\n style={\n {\n '--grid-area': `${role}-document`,\n } as CSSProperties\n }\n borderLeft={role === 'next'}\n >\n <Scroller\n ref={ref}\n style={\n {\n // The scroll position is synchronised between panes. This style hides the\n // scrollbar for all panes except the one displaying the next document.\n '--scrollbar-width': role !== 'next' && 'none',\n } as CSSProperties\n }\n >\n <PortalProvider element={portalElement}>\n <DialogProvider position=\"absolute\">\n <Container ref={containerElement} padding={4} width={1}>\n {/* eslint-disable-next-line react-hooks/static-components -- this is intentional and how the middleware components has to work */}\n <DocumentLayout documentId={documentId} documentType={documentType} />\n </Container>\n </DialogProvider>\n </PortalProvider>\n </Scroller>\n <div data-testid=\"diffView-document-panel-portal\" ref={setPortalElement} />\n </DiffViewPaneLayout>\n </BoundaryElementProvider>\n </VirtualizerScrollInstanceProvider>\n </ChangeIndicatorsTracker>\n </ReviewChangesContext.Provider>\n )\n})\n\nconst DiffViewDocument: ComponentType<DiffViewPaneProps> = ({\n role,\n documentType,\n documentId,\n syncChannel,\n compareDocument,\n}) => {\n const compareValue = useCompareValue({compareDocument})\n const {data: releases} = useActiveReleases()\n const [patchChannel] = useState(() => createPatchChannel())\n const perspective = useMemo(() => findRelease(documentId, releases), [documentId, releases])\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 openPath,\n onPathOpen: onPathOpenFromForm,\n } = useDocumentForm({\n documentId: getPublishedId(documentId),\n documentType,\n selectedPerspectiveName: perspectiveName(documentId),\n releaseId: getVersionFromId(documentId),\n comparisonValue: compareValue,\n displayInlineChanges: true,\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 onPathOpenFromForm(path)\n pathSyncChannel.push({source: role, path})\n },\n [onPathOpenFromForm, pathSyncChannel, role],\n )\n\n useEffect(() => {\n const subscription = pathSyncChannel.path.subscribe((path) => {\n onPathOpenFromForm(path)\n onProgrammaticFocus(path)\n })\n return () => subscription.unsubscribe()\n }, [onPathOpenFromForm, onProgrammaticFocus, pathSyncChannel.path, role])\n\n return isLoading ? (\n <LoadingBlock showText />\n ) : (\n <CommentsEnabledContext.Provider\n value={{\n enabled: false,\n mode: null,\n }}\n >\n <FormBuilder\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 openPath={openPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n validation={formState.validation}\n members={formState.members}\n perspective={sanitizeBundleName(perspective)}\n hasUpstreamVersion={formState.hasUpstreamVersion}\n presence={formState.presence}\n schemaType={schemaType}\n value={value}\n compareValue={compareValue}\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\n// TODO: Refactor `findRelease` to return a type compatible with `TargetPerspective` (`\"draft\"` must be `\"drafts\"`), so that `sanitizeBundleName` can be removed.\nfunction sanitizeBundleName(bundle: ReturnType<typeof findRelease>): TargetPerspective | undefined {\n if (bundle === 'draft') {\n return 'drafts'\n }\n\n return bundle\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","/**\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 {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 {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 */\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 key={child.key}\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\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 key={child.key}\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\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 const showSelectionIndicator = node.selected && !node.hideSelectionIndicator\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 || (showSelectionIndicator && CheckmarkIcon)}\n onClick={node.onAction}\n pressed={showSelectionIndicator}\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 const showSelectionIndicator = node.selected && !node.hideSelectionIndicator\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={showSelectionIndicator ? CheckmarkIcon : undefined}\n onClick={handleClick}\n pressed={showSelectionIndicator}\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 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 key={node.key} isAfterGroup={isAfterGroup} 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'\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\n/**\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneHeaderProps {\n actions?: ReactNode\n backButton?: ReactNode\n border?: boolean\n contentAfter?: ReactNode\n loading?: boolean\n subActions?: ReactNode\n tabIndex?: number\n tabs?: ReactNode\n title: ReactNode\n appendTitle?: ReactNode\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneHeader = forwardRef(function PaneHeader(\n props: PaneHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n actions,\n backButton,\n border,\n contentAfter,\n loading,\n subActions,\n tabs,\n tabIndex,\n title,\n appendTitle,\n } = props\n const {collapse, collapsed, expand, rootElement: paneElement} = usePane()\n const paneRect = useElementRect(paneElement || null)\n\n const layoutStyle = useMemo(\n () => ({\n width: collapsed ? paneRect?.height || window.innerHeight : undefined,\n }),\n [collapsed, paneRect],\n )\n\n const handleTitleClick = useCallback(() => {\n if (collapsed) return\n collapse()\n }, [collapse, collapsed])\n\n const handleLayoutClick = useCallback(() => {\n if (!collapsed) return\n expand()\n }, [collapsed, expand])\n\n const showTabsOrSubActions = Boolean(!collapsed && (tabs || subActions))\n\n return (\n <LayerProvider zOffset={100}>\n <Root\n $border={border}\n data-collapsed={collapsed ? '' : undefined}\n data-testid=\"pane-header\"\n ref={ref}\n >\n <LegacyLayerProvider zOffset=\"paneHeader\">\n <Card data-collapsed={collapsed ? '' : undefined} tone=\"inherit\">\n <Layout\n direction=\"column\"\n gap={3}\n onClick={handleLayoutClick}\n padding={3}\n sizing=\"border\"\n style={layoutStyle}\n >\n <Flex align=\"flex-start\" gap={3}>\n {backButton && <Box flex=\"none\">{backButton}</Box>}\n\n <TitleCard\n __unstable_focusRing\n flex={1}\n onClick={handleTitleClick}\n paddingLeft={backButton ? 1 : 2}\n padding={2}\n tabIndex={tabIndex}\n >\n {loading && (\n <Box>\n <TitleTextSkeleton animated radius={1} size={1} />\n </Box>\n )}\n {!loading && (\n <Flex align=\"center\" gap={1}>\n <TitleText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n {title}\n </TitleText>\n {appendTitle}\n </Flex>\n )}\n </TitleCard>\n\n {actions && (\n <Box hidden={collapsed}>\n <LegacyLayerProvider zOffset=\"paneHeader\">{actions}</LegacyLayerProvider>\n </Box>\n )}\n </Flex>\n\n {showTabsOrSubActions && (\n <Flex align=\"center\" hidden={collapsed} overflow=\"auto\">\n <Box flex={1} marginRight={subActions ? 3 : 0}>\n {tabs}\n </Box>\n\n {subActions}\n </Flex>\n )}\n </Layout>\n\n {!collapsed && contentAfter}\n </Card>\n </LegacyLayerProvider>\n </Root>\n </LayerProvider>\n )\n})\n","import {UnknownIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useId} from 'react'\nimport {StatusButton, useI18nText, useTranslation} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {Button, MenuButton} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuGroup, type _PaneMenuItem} from './types'\n\nfunction getDisabledReason(node: _PaneMenuItem) {\n if (!node.disabled) {\n return {disabledReason: undefined, ariaLabel: undefined, isDisabled: false}\n }\n\n /**\n * This component supports receiving a `reason: string | react.ReactNode`.\n * We are casting it as string, to avoid the ts error, as content will be rendered into the tooltip which only accepts string, but it won't crash if it's a ReactNode.\n * For the aria label, we want to check if it's actually a string, to avoid generating an aria-label with the value `[object Object]`.\n */\n const disabledReason =\n typeof node.disabled === 'object' ? (node.disabled.reason as string) : undefined\n const ariaLabel =\n typeof node.disabled === 'object' && typeof node.disabled?.reason === 'string'\n ? node.disabled.reason\n : 'This is disabled'\n\n return {disabledReason, ariaLabel, isDisabled: Boolean(node.disabled)}\n}\nexport interface PaneHeaderActionButtonProps {\n node: _PaneMenuItem | _PaneMenuGroup\n}\n\nexport function PaneHeaderActionButton(props: PaneHeaderActionButtonProps) {\n const {node} = props\n\n if (node.type === 'item') {\n return <PaneHeaderMenuItemActionButton node={node} />\n }\n\n if (node.type === 'group') {\n return <PaneHeaderMenuGroupActionButton node={node} />\n }\n\n console.warn('unknown menu node (expected `type: \"item\" | \"group\"`):', node)\n\n return null\n}\n\nexport interface PaneHeaderMenuItemActionButtonProps {\n node: _PaneMenuItem\n}\n\nfunction 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 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 key={child.key}\n disabled={Boolean(node.disabled)}\n isAfterGroup={node.children[idx - 1]?.type === 'group'}\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 maximize: (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 maximizedElement: 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 maximize(element: HTMLElement) {\n maximizedElement = 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 if (maximizedElement === element) {\n maximizedElement = null\n }\n\n _notifyObservers()\n }\n }\n\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, maximize, mount, resize, setRootElement, setRootWidth, subscribe}\n\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 maximized: element === maximizedElement,\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","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 {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","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'\nimport {useRouter} from 'sanity/router'\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} = usePaneRouter()\n const {resolveIntentLink} = useRouter()\n\n const selectedCommentId = params?.comment\n const scheduledDraft = params?.scheduledDraft\n const paramsRef = useRef(params)\n\n useLayoutEffect(() => {\n paramsRef.current = params\n }, [params])\n\n const getCommentLink = useCallback(\n (commentId: string) => {\n const searchParams: [string, string][] =\n selectedReleaseId && !scheduledDraft ? [['perspective', selectedReleaseId]] : []\n\n const intentLink = resolveIntentLink(\n 'edit',\n {\n id: documentId,\n type: documentType,\n inspect: COMMENTS_INSPECTOR_NAME,\n comment: commentId,\n ...(scheduledDraft ? {scheduledDraft} : {}),\n },\n searchParams,\n )\n return `${window.location.origin}${intentLink}`\n },\n [documentId, documentType, resolveIntentLink, scheduledDraft, selectedReleaseId],\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, useRef} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n EMPTY_ARRAY,\n getDocumentIdForCanvasLink,\n GetHookCollectionState,\n getReleaseIdFromReleaseDocumentId,\n useActiveReleases,\n useCanvasCompanionDoc,\n useTranslation,\n} from 'sanity'\nimport {DocumentActionsStateContext} from 'sanity/_singletons'\n\nimport {structureLocaleNamespace} from './i18n'\nimport {useDocumentPane} from './panes/document/useDocumentPane'\n\ninterface ResolvedAction extends DocumentActionDescription {\n action?: DocumentActionComponent['action']\n}\n\n/** @internal */\nexport function DocumentActionsProvider(props: {children: React.ReactNode}) {\n const {children} = props\n\n const {data: activeReleases} = useActiveReleases()\n\n const {actions, editState, isInitialValueLoading, revisionId} = useDocumentPane()\n\n const onCompleteRef = useRef<() => void>(null)\n\n const actionProps: Omit<DocumentActionProps, 'onComplete'> | null = useMemo(() => {\n // note: this is actually the bundle id of the current document\n\n const matchingReleaseName = activeReleases\n .map((r) => getReleaseIdFromReleaseDocumentId(r._id))\n .find((candidate) => candidate === editState?.release)\n\n return editState\n ? {\n ...editState,\n release: matchingReleaseName,\n revision: revisionId || undefined,\n initialValueResolved: !isInitialValueLoading,\n }\n : null\n }, [editState, isInitialValueLoading, revisionId, activeReleases])\n\n if (!actionProps) {\n return null\n }\n\n return (\n <GetHookCollectionState<DocumentActionProps, ResolvedAction>\n args={{\n ...actionProps,\n onComplete: () => onCompleteRef.current?.(),\n }}\n hooks={actions || EMPTY_ARRAY}\n resetRef={onCompleteRef}\n >\n {({states}) => (\n <ActionsGuardWrapper states={states} actionProps={actionProps}>\n {children}\n </ActionsGuardWrapper>\n )}\n </GetHookCollectionState>\n )\n}\n\n/**\n * This is a list of the actions that are supported when a document is linked to Canvas.\n * Custom actions and actions that are not supported by Canvas will be disabled and will include a tooltip explaining that the action is not supported.\n */\nconst SUPPORTED_LINKED_TO_CANVAS_ACTIONS: DocumentActionComponent['action'][] = [\n 'delete',\n 'duplicate',\n 'publish',\n 'unpublish',\n 'unlinkFromCanvas',\n 'editInCanvas',\n 'linkToCanvas',\n 'schedule',\n 'discardVersion',\n 'unpublishVersion',\n]\n\ninterface ActionsGuardWrapperProps {\n states: ResolvedAction[]\n actionProps: Omit<DocumentActionProps, 'onComplete'>\n children: React.ReactNode\n}\n\n// merge this into the DocumentActionsProvider itself\nfunction ActionsGuardWrapper(props: ActionsGuardWrapperProps) {\n const {states, children, actionProps} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n const {isLinked} = useCanvasCompanionDoc(getDocumentIdForCanvasLink(actionProps))\n\n return (\n <DocumentActionsStateContext.Provider\n value={\n isLinked\n ? states.map((s) => {\n if (!s.action || !SUPPORTED_LINKED_TO_CANVAS_ACTIONS.includes(s.action)) {\n return {\n ...s,\n disabled: true,\n title: t('action.disabled-by-canvas.tooltip'),\n }\n }\n return s\n })\n : states\n }\n >\n {children}\n </DocumentActionsStateContext.Provider>\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'\nexport const INCOMING_REFERENCES_INSPECTOR_NAME = 'sanity/structure/incoming-references'\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 {useContext} from 'react'\nimport {DocumentPaneInfoContext} from 'sanity/_singletons'\n\nimport {type DocumentPaneInfoContextValue} from './DocumentPaneContext'\n\n/** @internal */\nexport function useDocumentPaneInfo(): DocumentPaneInfoContextValue {\n const documentPaneInfo = useContext(DocumentPaneInfoContext)\n\n if (!documentPaneInfo) {\n throw new Error('DocumentPane: missing info context value')\n }\n\n return documentPaneInfo\n}\n","import {useMemo} from 'react'\nimport {\n isPublishedPerspective,\n prepareForPreview,\n usePerspective,\n useTranslation,\n useValuePreview,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\n\n/**\n * useDocumentTitle hook return type.\n *\n * @beta\n * @hidden\n */\nexport interface 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, editState, isDeleted, lastRevisionDocument} =\n useDocumentPane()\n const {selectedPerspectiveName} = usePerspective()\n const {t} = useTranslation(structureLocaleNamespace)\n // follows the same logic as the StructureTitle component\n const documentValue = useMemo(() => {\n if (isDeleted) {\n return lastRevisionDocument\n }\n // When viewing published perspective, prioritize published document\n if (selectedPerspectiveName && isPublishedPerspective(selectedPerspectiveName)) {\n return editState?.published\n }\n return editState?.version || editState?.draft || editState?.published\n }, [isDeleted, lastRevisionDocument, editState, selectedPerspectiveName])\n const subscribed = Boolean(documentValue)\n\n // For deleted documents, we need to handle the preview differently since useValuePreview\n // will return null for deleted documents. Instead, we directly prepare the preview\n // from the lastRevisionDocument data.\n const deletedDocumentPreview = useMemo(() => {\n if (isDeleted && lastRevisionDocument && schemaType) {\n try {\n const prepared = prepareForPreview(lastRevisionDocument, schemaType)\n return prepared\n } catch (error) {\n console.warn('Failed to prepare preview for deleted document:', error)\n return null\n }\n }\n return null\n }, [isDeleted, lastRevisionDocument, schemaType])\n\n const {error, value} = useValuePreview({\n // disable useValuePreview for deleted documents\n enabled: subscribed && !isDeleted,\n schemaType,\n value: documentValue,\n })\n\n if (connectionState === 'connecting' && !subscribed) {\n return {error: undefined, title: undefined}\n }\n\n // For deleted documents, use the directly prepared preview\n if (isDeleted && deletedDocumentPreview) {\n return {error: undefined, title: deletedDocumentPreview.title}\n }\n\n if (!value && !isDeleted) {\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 {\n isDocumentLimitError,\n Translate,\n useDocumentLimitsUpsellContext,\n useDocumentOperationEvent,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\nimport {useDocumentPaneInfo} from './useDocumentPaneInfo'\nimport {useDocumentTitle} from './useDocumentTitle'\n\nconst IGNORE_OPS = ['patch', 'commit']\n\nexport const DocumentOperationResults = memo(function DocumentOperationResults() {\n const {push: pushToast} = useToast()\n const {value: documentPaneValue} = useDocumentPane()\n const {documentId, documentType} = useDocumentPaneInfo()\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 const {handleOpenDialog} = useDocumentLimitsUpsellContext()\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 if (isDocumentLimitError(event.error)) {\n handleOpenDialog('document_action')\n return\n }\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, handleOpenDialog])\n\n return null\n})\n","import {type SchemaType} from '@sanity/types'\n\nexport const isLiveEditEnabled = (schemaType: Pick<SchemaType, 'liveEdit'>) =>\n schemaType.liveEdit === true\n","import {type SchemaType} from '@sanity/types'\nimport {type EditStateFor, type Workspace} from 'sanity'\n\nimport {isLiveEditEnabled} from './components/paneItem/helpers'\n\nexport interface Context {\n editState: Pick<EditStateFor, 'ready' | 'draft' | 'published' | 'version'> | null\n workspace: {\n document: {\n drafts: Pick<Workspace['document']['drafts'], 'enabled'>\n }\n }\n schemaType: Pick<SchemaType, 'liveEdit'>\n}\n\n/**\n * Determine whether a document has an obsolete draft. This occurs if a document has a draft while\n * the draft model is inactive, or if a live-edit document has a draft.\n */\nexport function hasObsoleteDraft({editState, workspace, schemaType}: Context):\n | {\n result: true\n reason: 'LIVE_EDIT_ACTIVE' | 'DRAFT_MODEL_INACTIVE'\n }\n | {result: false}\n | {result: undefined} {\n if (!editState?.ready) {\n return {\n result: undefined,\n }\n }\n\n const draftExists = editState.draft !== null\n\n const {\n document: {\n drafts: {enabled: isDraftModelEnabled},\n },\n } = workspace\n\n if (!draftExists) {\n return {\n result: false,\n }\n }\n\n if (!isDraftModelEnabled) {\n return {\n result: true,\n reason: 'DRAFT_MODEL_INACTIVE',\n }\n }\n\n if (isLiveEditEnabled(schemaType)) {\n return {\n result: true,\n reason: 'LIVE_EDIT_ACTIVE',\n }\n }\n\n return {\n result: false,\n }\n}\n","import {type EditStateFor, isNewDocument, type isPerspectiveWriteable} from 'sanity'\n\n/**\n * Determine whether the user must choose a new perspective in order to create a document.\n *\n * @returns A boolean reflecting whether the user must choose a new perspective, and `undefined` while indeterminate.\n * @internal\n */\nexport function mustChooseNewDocumentDestination({\n isSelectedPerspectiveWriteable,\n editState,\n}: {\n isSelectedPerspectiveWriteable: ReturnType<typeof isPerspectiveWriteable>\n editState: Pick<EditStateFor, 'ready' | 'draft' | 'published' | 'version'> | null\n}): boolean | undefined {\n return isNewDocument(editState) && !isSelectedPerspectiveWriteable.result\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Card, type CardProps, Flex, Text} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport interface DocumentInspectorHeaderProps {\n as?: CardProps['as']\n closeButtonLabel: string\n flex?: CardProps['flex']\n onClose: () => void\n title: ReactNode\n}\n\nconst Root = styled(Card)({\n position: 'relative',\n zIndex: '1',\n lineHeight: '0',\n})\n\n/** @internal */\nexport function DocumentInspectorHeader(\n props: DocumentInspectorHeaderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n const {as: forwardedAs, children, closeButtonLabel, onClose, title, ...restProps} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Root {...restProps} as={forwardedAs}>\n <Flex padding={2}>\n <Box flex={1} padding={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n <Box flex=\"none\" padding={1}>\n <Button\n aria-label={closeButtonLabel}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Box>\n </Flex>\n {children}\n </Root>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Resizable} from 'sanity'\n\nimport {usePane} from '../../../components'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DOCUMENT_INSPECTOR_MAX_WIDTH, DOCUMENT_INSPECTOR_MIN_WIDTH} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentInspectorPanelProps {\n documentId: string\n documentType: string\n flex?: number | number[]\n}\n\nexport function DocumentInspectorPanel(\n props: DocumentInspectorPanelProps,\n): React.JSX.Element | null {\n const {documentId, documentType, flex} = props\n const {collapsed} = usePane()\n const {closeInspector, inspector} = useDocumentPane()\n const {features} = useStructureTool()\n\n const handleClose = useCallback(() => {\n if (inspector) closeInspector(inspector.name)\n }, [closeInspector, inspector])\n\n if (collapsed || !inspector) return null\n\n const Component = inspector.component\n const element = (\n <Component onClose={handleClose} documentId={documentId} documentType={documentType} />\n )\n\n if (features.resizablePanes) {\n return (\n <Resizable\n as=\"aside\"\n data-ui=\"DocumentInspectorPanel\"\n flex={flex}\n resizerPosition=\"left\"\n maxWidth={DOCUMENT_INSPECTOR_MAX_WIDTH}\n minWidth={DOCUMENT_INSPECTOR_MIN_WIDTH}\n >\n {element}\n </Resizable>\n )\n }\n\n return (\n <Box as=\"aside\" data-ui=\"DocumentInspectorPanel\" flex={flex}>\n {element}\n </Box>\n )\n}\n","import {useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useKeyValueStore} from 'sanity'\n\nconst STRUCTURE_TOOL_NAMESPACE = 'studio.structure-tool'\n\n/**\n * @internal\n */\nexport function useStructureToolSetting<ValueType>(\n namespace: string,\n key: string | null,\n defaultValue?: ValueType,\n): [ValueType | undefined, (_value: ValueType) => Promise<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 async (newValue: ValueType) => {\n if (newValue !== value) {\n await 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\nfunction 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.target)\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(async () => {\n await onViewModeChange(VIEW_MODE_PARSED.id)\n }, [onViewModeChange])\n\n const setRawViewMode = useCallback(async () => {\n await 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 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 isReleaseDocument,\n type ReleaseDocument,\n Translate,\n useDocumentOperation,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeletedDocumentBanners() {\n const {isDeleted, isDeleting, ready} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n if (!ready) return null\n if (\n !isPublishedPerspective(selectedPerspective) &&\n !isDraftPerspective(selectedPerspective) &&\n isReleaseDocument(selectedPerspective) &&\n selectedPerspective.state === 'archived'\n ) {\n return <ArchivedReleaseBanner release={selectedPerspective} />\n }\n if (isDeleted && !isDeleting) return <DeletedDocumentBanner />\n}\n\nfunction DeletedDocumentBanner() {\n const {documentId, documentType} = useDocumentPane()\n const {restore} = useDocumentOperation(documentId, documentType)\n const {navigateIntent} = useRouter()\n\n const handleRestore = useCallback(() => {\n restore.execute('lastRevision')\n navigateIntent('edit', {id: documentId, type: documentType})\n }, [documentId, documentType, navigateIntent, restore])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Banner\n action={{\n onClick: handleRestore,\n text: t('banners.deleted-document-banner.restore-button.text'),\n }}\n content={\n <Text size={1} weight=\"medium\">\n {t('banners.deleted-document-banner.text')}\n </Text>\n }\n data-testid=\"deleted-document-banner\"\n icon={ReadOnlyIcon}\n />\n )\n}\n\nconst ArchivedReleaseBanner = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n\n return (\n <Banner\n tone=\"caution\"\n content={\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banners.deleted-release-banner.text\"\n values={{\n title: release.metadata?.title || t('release.placeholder-untitled-release'),\n }}\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 {useDocumentPaneInfo} from '../../useDocumentPaneInfo'\nimport {Banner} from './Banner'\n\nexport function DeprecatedDocumentTypeBanner() {\n const {schemaType} = useDocumentPaneInfo()\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\nconst DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\nconst 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} from 'date-fns/addWeeks'\nimport {isAfter} from 'date-fns/isAfter'\nimport {isBefore} from 'date-fns/isBefore'\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 isSystemBundle,\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 {selectedPerspectiveName} = 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 = (params?.parentRefPath && pathFromString(params.parentRefPath)) || null\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: isSystemBundle(selectedPerspectiveName) ? undefined : selectedPerspectiveName,\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 }, [selectedPerspectiveName, 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 SanityDocument} from '@sanity/client'\nimport {WarningOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {getPublishedId, Translate, useScheduledDraftDocument, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface ScheduledDraftOverrideBannerProps {\n releaseId: string\n draftDocument: Partial<SanityDocument> | null\n}\n\nexport function ScheduledDraftOverrideBanner({\n releaseId,\n draftDocument,\n}: ScheduledDraftOverrideBannerProps): React.JSX.Element | null {\n const {t} = useTranslation(structureLocaleNamespace)\n const {firstDocument: scheduledDraftDocument} = useScheduledDraftDocument(releaseId)\n\n const draftPublishedId = draftDocument?._id ? getPublishedId(draftDocument._id) : null\n const scheduledPublishedId = scheduledDraftDocument?._id\n ? getPublishedId(scheduledDraftDocument._id)\n : null\n\n const draftRev = draftDocument?._rev\n const scheduledBaseRev = scheduledDraftDocument?._system?.base?.rev\n\n const publishedDocumentsMatch = draftPublishedId === scheduledPublishedId\n const baseRevisionsDiffer = !draftRev || !scheduledBaseRev || draftRev !== scheduledBaseRev\n\n if (!publishedDocumentsMatch || !baseRevisionsDiffer) {\n return null\n }\n\n return (\n <Banner\n tone=\"caution\"\n icon={WarningOutlineIcon}\n content={\n <Text size={1}>\n <Translate t={t} i18nKey=\"banners.scheduled-draft-override-banner.text\" />\n </Text>\n }\n />\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 {Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getVersionInlineBadge,\n isCardinalityOneRelease,\n ReleaseTitle,\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 = useMemo(() => {\n if (release?.state === 'published') {\n return 'banners.published-release.description'\n }\n\n if (release && isCardinalityOneRelease(release)) {\n return 'banners.archived-scheduled-draft.description'\n }\n\n return 'banners.archived-release.description'\n }, [release])\n\n return (\n <Banner\n tone=\"caution\"\n content={\n <Text size={1}>\n <ReleaseTitle\n title={release?.metadata.title}\n fallback={tCore('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <Translate\n t={t}\n i18nKey={description}\n values={{\n title: displayTitle,\n }}\n components={{\n VersionBadge: ({children}) => {\n const BadgeWithTone = getVersionInlineBadge(release)\n return <BadgeWithTone>{children}</BadgeWithTone>\n },\n }}\n />\n )}\n </ReleaseTitle>\n </Text>\n }\n action={\n params?.archivedRelease\n ? undefined\n : {\n text: 'Go back to published version',\n onClick: handleGoBack,\n }\n }\n />\n )\n}\n","import {ComposeSparklesIcon, InfoOutlineIcon, LaunchIcon} from '@sanity/icons'\nimport {Box, Card, Container, Flex, Heading, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {\n getDocumentVariantType,\n useCanvasCompanionDoc,\n useNavigateToCanvasDoc,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../ui-components'\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nconst Image = styled.img`\n object-fit: cover;\n width: 100%;\n height: 100%;\n height: 180px;\n display: flex;\n`\nconst CANVAS_IMAGE_URL =\n 'https://cdn.sanity.io/images/pyrmmpch/production/b47224e2f3a7d1747e43b9da1ac31739250e628b-632x376.png'\n\nconst CANVAS_APP_NAME = 'Canvas'\n\nconst CanvasPopoverContent = ({\n onClose,\n isLockedByCanvas,\n}: {\n onClose: () => void\n isLockedByCanvas: boolean\n}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const ref = useRef<HTMLDivElement | null>(null)\n useClickOutsideEvent(onClose, () => [ref.current])\n\n const popoverHeading = isLockedByCanvas\n ? t('canvas.banner.popover-heading')\n : t('canvas.banner.editable.popover-heading')\n\n const popoverDescription = isLockedByCanvas\n ? t('canvas.banner.popover-description')\n : t('canvas.banner.editable.popover-description')\n\n return (\n <Card radius={3} overflow={'hidden'} width={0} ref={ref}>\n <Container width={0}>\n <Image src={CANVAS_IMAGE_URL} alt={'Canvas'} />\n <Flex paddingX={4} paddingBottom={4} paddingTop={3} direction={'column'}>\n <Flex paddingY={1} gap={2}>\n <Text size={1} weight=\"semibold\">\n {CANVAS_APP_NAME}\n </Text>\n <Text size={1} muted>\n <ComposeSparklesIcon />\n </Text>\n </Flex>\n <Box paddingTop={3}>\n <Heading size={1}>{popoverHeading}</Heading>\n </Box>\n <Box paddingTop={4}>\n <Text size={1}>{popoverDescription}</Text>\n </Box>\n </Flex>\n <Flex width=\"full\" gap={3} justify=\"flex-end\" paddingX={4} paddingBottom={4}>\n <Button\n mode=\"bleed\"\n text={t('canvas.banner.popover-button-text')}\n autoFocus\n tone=\"primary\"\n href=\"https://snty.link/canvas-docs\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n as=\"a\"\n iconRight={LaunchIcon}\n />\n </Flex>\n </Container>\n </Card>\n )\n}\nconst CanvasLinkedBannerContent = ({documentId}: {documentId: string}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const [open, setOpen] = useState(false)\n const documentVariantType = getDocumentVariantType(documentId)\n const {isLockedByCanvas} = useCanvasCompanionDoc(documentId)\n\n const variantText = useMemo(() => {\n if (!isLockedByCanvas) {\n return t('canvas.banner.editable.linked-text')\n }\n\n if (documentVariantType === 'published') {\n return t('canvas.banner.linked-text.published')\n }\n\n if (documentVariantType === 'draft') {\n return t('canvas.banner.linked-text.draft')\n }\n\n return t('canvas.banner.linked-text.version')\n }, [documentVariantType, isLockedByCanvas, t])\n\n const togglePopover = useCallback(() => setOpen((prev) => !prev), [])\n const onClose = useCallback(() => setOpen(false), [])\n return (\n <Flex align={'center'} gap={2}>\n <Text size={1} weight=\"medium\">\n {variantText}\n </Text>\n <Popover\n open={open}\n size={0}\n tone=\"default\"\n portal\n placement=\"bottom-start\"\n content={<CanvasPopoverContent onClose={onClose} isLockedByCanvas={isLockedByCanvas} />}\n >\n <Button\n tooltipProps={null}\n mode=\"bleed\"\n tone=\"default\"\n icon={InfoOutlineIcon}\n onClick={togglePopover}\n />\n </Popover>\n </Flex>\n )\n}\n\nexport function CanvasLinkedBanner() {\n const {documentId, displayed} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n const id = displayed?._id || documentId\n const {companionDoc} = useCanvasCompanionDoc(id)\n const navigateToCanvas = useNavigateToCanvasDoc(companionDoc?.canvasDocumentId, 'banner')\n\n if (!companionDoc) return null\n\n return (\n <Banner\n tone=\"neutral\"\n data-test-id=\"canvas-linked-banner\"\n paddingY={0}\n content={<CanvasLinkedBannerContent documentId={id} />}\n action={{\n mode: 'ghost',\n text: t('canvas.banner.edit-in-canvas-action'),\n onClick: navigateToCanvas,\n }}\n />\n )\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ComponentType, useCallback} from 'react'\nimport {\n getVersionInlineBadge,\n isPerspectiveWriteable,\n isReleaseDocument,\n type PerspectiveNotWriteableReason,\n ReleasesNav,\n type ReleasesNavMenuItemPropsGetter,\n ReleaseTitle,\n type TargetPerspective,\n Translate,\n useTranslation,\n useWorkspace,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface Props {\n schemaType: ObjectSchemaType\n selectedPerspective: TargetPerspective\n reason: PerspectiveNotWriteableReason\n}\n\n/**\n * This banner is displayed when a user attempts to create a new document in a perspective that's\n * not writeable. For example:\n *\n * - The published perspective (unless the schema type supports live-editing).\n * - Any release that's locked.\n */\nexport const ChooseNewDocumentDestinationBanner: ComponentType<Props> = ({\n schemaType,\n selectedPerspective,\n reason,\n}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const {\n document: {\n drafts: {enabled: isDraftModelEnabled},\n },\n } = useWorkspace()\n\n const menuItemProps = useCallback<ReleasesNavMenuItemPropsGetter>(\n ({perspective}) => ({\n disabled: !isPerspectiveWriteable({\n selectedPerspective: perspective,\n isDraftModelEnabled,\n schemaType,\n }).result,\n }),\n [isDraftModelEnabled, schemaType],\n )\n\n const releaseDoc = isReleaseDocument(selectedPerspective) ? selectedPerspective : undefined\n const releaseTitle = releaseDoc\n ? releaseDoc.metadata.title || tCore('release.placeholder-untitled-release')\n : undefined\n\n return (\n <Banner\n tone=\"caution\"\n icon={WarningOutlineIcon}\n content={\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n {reason === 'PUBLISHED_NOT_WRITEABLE' &&\n t('banners.choose-new-document-destination.cannot-create-published-document')}\n {reason === 'DRAFTS_NOT_WRITEABLE' &&\n t('banners.choose-new-document-destination.cannot-create-draft-document')}\n {reason === 'RELEASE_NOT_ACTIVE' && releaseDoc && releaseTitle && (\n <Translate\n t={t}\n i18nKey=\"banners.choose-new-document-destination.release-inactive\"\n values={{\n title: releaseTitle,\n }}\n components={{\n VersionBadge: ({children}) => {\n const BadgeWithTone = getVersionInlineBadge(releaseDoc)\n return (\n <ReleaseTitle\n title={releaseDoc.metadata.title}\n fallback={tCore('release.placeholder-untitled-release')}\n >\n {() => <BadgeWithTone>{children}</BadgeWithTone>}\n </ReleaseTitle>\n )\n },\n }}\n />\n )}\n <> {t('banners.choose-new-document-destination.choose-destination')}</>\n </Text>\n <ReleasesNav menuItemProps={menuItemProps} />\n </Flex>\n }\n />\n )\n}\n","import {getSanityCreateLinkMetadata, useSanityCreateConfig} from 'sanity'\n\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function CreateLinkedBanner() {\n const {value} = useDocumentPane()\n const {documentLinkedBannerContent: CreateLinkedBannerContent} =\n useSanityCreateConfig().components ?? {}\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n\n if (!CreateLinkedBannerContent || !createLinkMetadata) return null\n\n return (\n <Banner\n tone=\"transparent\"\n data-test-id=\"sanity-create-read-only-banner\"\n content={<CreateLinkedBannerContent metadata={createLinkMetadata} />}\n />\n )\n}\n","import {Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionInlineBadge,\n LATEST,\n ReleaseTitle,\n type SystemBundle,\n type TargetPerspective,\n Translate,\n useConditionalToast,\n useTranslation,\n useVersionOperations,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\n// How long to wait after user hit the \"Add to release\"-button before displaying the \"waiting…\" toast\nconst TOAST_DELAY = 1000\n\ntype VersionCreateState = {\n status: 'creating' | 'created'\n lastUpdate: Date\n}\n\nexport function DocumentNotInReleaseBanner({\n documentId,\n currentRelease,\n isScheduledRelease,\n}: {\n documentId: string\n currentRelease: Exclude<TargetPerspective, SystemBundle>\n isScheduledRelease?: boolean\n}) {\n const tone = getReleaseTone(currentRelease ?? LATEST)\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const {createVersion} = useVersionOperations()\n\n const isAnonymousBundle = typeof currentRelease === 'string'\n const releaseTitle = isAnonymousBundle\n ? currentRelease\n : currentRelease?.metadata?.title || tCore('release.placeholder-untitled-release')\n const [versionCreateState, setVersionCreateState] = useState<VersionCreateState | undefined>()\n const toast = useToast()\n const handleAddToRelease = useCallback(async () => {\n if (isAnonymousBundle || currentRelease._id) {\n setVersionCreateState({status: 'creating', lastUpdate: new Date()})\n\n const bundleId = isAnonymousBundle\n ? currentRelease\n : getReleaseIdFromReleaseDocumentId(currentRelease._id)\n\n try {\n await createVersion(bundleId, documentId)\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, isAnonymousBundle, documentId, t, toast])\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: releaseTitle,\n }}\n components={{\n VersionBadge: ({children}) => {\n const BadgeWithTone = getVersionInlineBadge(currentRelease)\n if (isAnonymousBundle) {\n return <BadgeWithTone>{children}</BadgeWithTone>\n }\n return (\n <ReleaseTitle\n title={currentRelease.metadata?.title}\n fallback={tCore('release.placeholder-untitled-release')}\n >\n {() => <BadgeWithTone>{children}</BadgeWithTone>}\n </ReleaseTitle>\n )\n },\n }}\n />\n </Text>\n }\n // Adding to a scheduled release is not allowed\n action={\n isScheduledRelease\n ? undefined\n : {\n text: t('banners.release.action.add-to-release'),\n tone: tone,\n disabled: Boolean(versionCreateState),\n onClick: handleAddToRelease,\n mode: 'default',\n }\n }\n />\n )\n}\n\nfunction useCurrentTime(updateIntervalMs: number): Date {\n const [currentTime, setCurrentTime] = useState(new Date())\n useEffect(() => {\n const intervalId = setInterval(() => {\n setCurrentTime(new Date())\n }, updateIntervalMs)\n return () => clearInterval(intervalId)\n }, [updateIntervalMs])\n return currentTime\n}\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface TypeInfo {\n liveEditResolveType: 'publish' | 'discard'\n}\n\n/**\n * When a draft in a live edit document is published\n * @internal\n */\nexport const ResolvedLiveEdit = defineEvent<TypeInfo>({\n name: 'LiveEdit Draft Resolved',\n version: 1,\n description: 'User resolved a draft of a live edit document to continue editing',\n})\n","import {type SanityDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ComponentType, useCallback, useEffect, useState} from 'react'\nimport {\n getDraftId,\n getPublishedId,\n type ObjectSchemaType,\n Translate,\n useDocumentOperation,\n useTranslation,\n} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {useDiffViewRouter} from '../../../../diffView/hooks/useDiffViewRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {ResolvedLiveEdit} from './__telemetry__/DraftLiveEditBanner.telemetry'\nimport {Banner} from './Banner'\n\ninterface ObsoleteDraftBannerProps {\n displayed: Partial<SanityDocument> | null\n documentId: string\n schemaType: ObjectSchemaType\n i18nKey: string\n /**\n * Whether the user is blocked from editing the document while an obsolete draft exists.\n */\n isEditBlocking?: boolean\n}\n\nexport const ObsoleteDraftBanner: ComponentType<ObsoleteDraftBannerProps> = ({\n displayed,\n documentId,\n schemaType,\n i18nKey,\n isEditBlocking,\n}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const [isPublishing, setPublishing] = useState(false)\n const [isDiscarding, setDiscarding] = useState(false)\n const telemetry = useTelemetry()\n\n const {publish, discardChanges} = useDocumentOperation(documentId, displayed?._type || '')\n\n const handlePublish = useCallback(() => {\n publish.execute()\n setPublishing(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'publish'})\n }, [publish, telemetry])\n\n const handleDiscard = useCallback(() => {\n discardChanges.execute()\n setDiscarding(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'discard'})\n }, [discardChanges, telemetry])\n\n useEffect(() => {\n return () => {\n setPublishing(false)\n setDiscarding(false)\n }\n })\n\n const diffViewRouter = useDiffViewRouter()\n\n const compareDraft = useCallback(() => {\n if (typeof displayed?._id === 'undefined') {\n return\n }\n\n diffViewRouter.navigateDiffView({\n mode: 'version',\n previousDocument: {\n type: schemaType.name,\n id: getPublishedId(displayed?._id),\n },\n nextDocument: {\n type: schemaType.name,\n id: getDraftId(displayed?._id),\n },\n })\n }, [diffViewRouter, displayed?._id, schemaType.name])\n\n return (\n <Banner\n content={\n <Flex align=\"center\" justify=\"space-between\" gap={2}>\n <Text size={1} weight=\"medium\">\n <Translate t={t} i18nKey={i18nKey} values={{schemaType: schemaType.title}} />\n </Text>\n <Button\n text={t('banners.obsolete-draft.actions.compare-draft.text')}\n mode=\"ghost\"\n onClick={compareDraft}\n />\n <Button\n onClick={handlePublish}\n text={t('banners.obsolete-draft.actions.publish-draft.text')}\n tooltipProps={\n isEditBlocking\n ? {\n content: t('banners.live-edit-draft-banner.publish.tooltip'),\n }\n : {}\n }\n loading={isPublishing}\n tone=\"positive\"\n />\n <Button\n onClick={handleDiscard}\n text={t('banners.obsolete-draft.actions.discard-draft.text')}\n tooltipProps={\n isEditBlocking\n ? {\n content: t('banners.live-edit-draft-banner.discard.tooltip'),\n }\n : {}\n }\n loading={isDiscarding}\n tone=\"caution\"\n />\n </Flex>\n }\n data-testid=\"live-edit-type-banner\"\n icon={ErrorOutlineIcon}\n />\n )\n}\n","import {Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isCardinalityOneRelease,\n isVersionId,\n ReleaseTitle,\n Translate,\n useActiveReleases,\n useDocumentVersions,\n useOnlyHasVersions,\n useSetPerspective,\n useTranslation,\n VersionInlineBadge,\n} from 'sanity'\n\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\nfunction OpenReleaseToEditBannerInner({documentId}: {documentId: string}) {\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 documentVersionReleases = useMemo(\n () =>\n activeReleases.filter((version) => {\n const hasDocumentVersion = documentVersions.find((release) => {\n const r = getVersionFromId(release) ?? ''\n return getReleaseIdFromReleaseDocumentId(version._id) === r\n })\n return hasDocumentVersion && !isCardinalityOneRelease(version)\n }),\n [activeReleases, documentVersions],\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 if (documentVersionReleases.length === 0) {\n return null\n }\n\n const firstRelease = documentVersionReleases[0]\n const fallback = tCore('release.placeholder-untitled-release')\n\n return (\n <Banner\n tone={tone}\n data-testid=\"open-release-to-edit-banner\"\n content={\n <Text size={1}>\n <Flex direction={'row'} gap={1} wrap=\"wrap\">\n <ReleaseTitle title={firstRelease.metadata.title} fallback={fallback}>\n {({displayTitle}) =>\n documentVersionReleases.length > 1 ? (\n <Translate\n t={t}\n i18nKey=\"banners.release.navigate-to-edit-description-multiple\"\n components={{\n VersionBadge: () => <VersionInlineBadge>{displayTitle}</VersionInlineBadge>,\n }}\n values={{count: documentVersionReleases.length - 1}}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"banners.release.navigate-to-edit-description-single\"\n components={{\n VersionBadge: () => <VersionInlineBadge>{displayTitle}</VersionInlineBadge>,\n }}\n />\n )\n }\n </ReleaseTitle>\n </Flex>\n </Text>\n }\n action={\n documentVersionReleases.length > 0\n ? {\n text: t('banners.release.action.open-to-edit'),\n tone: tone,\n onClick: handleGoToEdit,\n mode: 'default',\n }\n : undefined\n }\n />\n )\n}\n","import {PauseIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\nexport function PausedScheduledDraftBanner(): React.JSX.Element {\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Banner\n tone=\"caution\"\n icon={PauseIcon}\n content={\n <Text size={1}>\n <Translate t={t} i18nKey=\"banners.paused-scheduled-draft.text\" />\n </Text>\n }\n />\n )\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function RevisionNotFoundBanner() {\n const {revisionNotFound} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!revisionNotFound) return null\n\n return (\n <Banner\n tone=\"caution\"\n data-test-id=\"revision-not-found-banner\"\n icon={WarningOutlineIcon}\n content={<Text size={1}>{t('banners.revision-not-found.description')}</Text>}\n />\n )\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseTone,\n LATEST,\n type ReleaseDocument,\n Translate,\n useTranslation,\n} from 'sanity'\n\nimport {Banner} from './Banner'\n\nexport function ScheduledReleaseBanner({\n currentRelease,\n}: {\n currentRelease: ReleaseDocument\n}): React.JSX.Element {\n const tone = getReleaseTone(currentRelease ?? LATEST)\n\n const {t: tCore} = useTranslation()\n\n return (\n <Banner\n tone={tone}\n icon={LockIcon}\n content={\n <Text size={1}>\n <Translate\n t={tCore}\n i18nKey=\"release.banner.scheduled-for-publishing-on\"\n values={{\n date: formatRelativeLocalePublishDate(currentRelease),\n }}\n />\n </Text>\n }\n />\n )\n}\n","import {UnpublishIcon} from '@sanity/icons'\nimport {Stack, Text} from '@sanity/ui'\nimport {\n getVersionInlineBadge,\n isGoingToUnpublish,\n isReleaseDocument,\n ReleaseTitle,\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, editState} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n const isCurrentVersionGoingToUnpublish =\n isGoingToUnpublish(value) || (editState?.version && isGoingToUnpublish(editState?.version))\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n if (isReleaseDocument(selectedPerspective) && isCurrentVersionGoingToUnpublish) {\n const releaseTitle =\n selectedPerspective.metadata?.title || tCore('release.placeholder-untitled-release')\n\n return (\n <Banner\n tone=\"critical\"\n content={\n <Stack space={2}>\n <Text size={1}>\n <Translate\n t={t}\n i18nKey=\"banners.unpublished-release-banner.text\"\n values={{\n title: releaseTitle,\n }}\n components={{\n VersionBadge: ({children}) => {\n const BadgeWithTone = getVersionInlineBadge(selectedPerspective)\n return (\n <ReleaseTitle\n title={selectedPerspective.metadata?.title}\n fallback={tCore('release.placeholder-untitled-release')}\n >\n {() => <BadgeWithTone>{children}</BadgeWithTone>}\n </ReleaseTitle>\n )\n },\n }}\n />\n </Text>\n <Text size={1}>\n <Translate t={t} i18nKey=\"banners.unpublished-release-banner.text-with-published\" />\n </Text>\n </Stack>\n }\n icon={UnpublishIcon}\n />\n )\n }\n return null\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Heading, Inline, Stack, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\ninterface DocumentHeaderProps {\n documentId: string\n schemaType: ObjectSchemaType\n title?: string\n}\n\n/**\n * Use CSS container queries to conditionally render headings at different sizes.\n * We hide this entire container (including the document type) if container queries\n * not supported in the current browser.\n *\n * Note that usage of container queries in `styled-components` is only supported in `6.x`.\n * As such, studios that include `\"styled-components\": \"<6\"` as a dependency will only see\n * the largest heading size here, even if their browser supports it!\n */\n\nconst TitleContainer = styled(Stack)`\n ${({theme}) => {\n return css`\n @supports not (container-type: inline-size) {\n display: none !important;\n }\n\n container-type: inline-size;\n\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[4].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[4].lineHeight}px;\n overflow-wrap: break-word;\n text-wrap: pretty;\n }\n\n @container (max-width: 560px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[3].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[3].lineHeight}px;\n }\n }\n\n @container (max-width: 420px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[2].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[2].lineHeight}px;\n }\n }\n `\n }}\n`\n\n/**\n * Header containing current document title and type.\n * Document type is hidden if the document `_id` matches the current document `_type`.\n * The entire header is hidden if container queries are not supported.\n */\nexport const FormHeader = ({documentId, schemaType, title}: DocumentHeaderProps) => {\n const isSingleton = documentId === schemaType.name\n const description = schemaType.description\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (schemaType.__experimental_formPreviewTitle === false) {\n return null\n }\n return (\n <TitleContainer marginBottom={6} space={4}>\n {!isSingleton && (\n <Inline space={1}>\n <Text muted size={1}>\n {schemaType.title ?? schemaType.name}\n </Text>\n {description && (\n <Tooltip content={description} placement=\"right\">\n <InfoOutlineIcon data-testid=\"schema-description-icon\" />\n </Tooltip>\n )}\n </Inline>\n )}\n <Heading as=\"h2\" data-heading muted={!title} data-testid=\"document-panel-document-title\">\n {title ?? t('document-view.form-view.form-title-fallback')}\n </Heading>\n </TitleContainer>\n )\n}\n","import {Box, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport {\n type FormEvent,\n forwardRef,\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useState,\n} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n type DocumentMutationEvent,\n type DocumentRebaseEvent,\n FormBuilder,\n FormContainer,\n type FormDocumentValue,\n FormRow,\n fromMutationPatches,\n type PatchMsg,\n PresenceOverlay,\n useConditionalToast,\n useDocumentPresence,\n useDocumentStore,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {Delay} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentTitle} from '../../useDocumentTitle'\nimport {FormHeader} from './FormHeader'\n\ninterface FormViewProps {\n hidden: boolean\n margins: [number, number, number, number]\n}\n\nconst preventDefault = (ev: FormEvent) => ev.preventDefault()\n\nexport const FormView = forwardRef<HTMLDivElement, FormViewProps>(function FormView(props, ref) {\n const {hidden, margins} = props\n\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n editState,\n documentId,\n documentType,\n fieldActions,\n onChange,\n validation,\n ready,\n formState,\n onFocus,\n connectionState,\n onBlur,\n onSetCollapsedPath,\n onPathOpen,\n onSetCollapsedFieldSet,\n onSetActiveFieldGroup,\n openPath,\n inspectOpen,\n compareValue,\n hasUpstreamVersion,\n } = useDocumentPane()\n const {selectedReleaseId, selectedPerspective} = usePerspective()\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n const {title} = useDocumentTitle()\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const [patchChannel] = useState(() => createPatchChannel())\n\n const isLocked = editState?.transactionSyncLock?.enabled\n const {t} = useTranslation(structureLocaleNamespace)\n\n const conditionalToastParams = useMemo(\n () => ({\n id: `sync-lock`,\n status: 'warning' as const,\n enabled: isLocked,\n title: t('document-view.form-view.sync-lock-toast.title'),\n description: t('document-view.form-view.sync-lock-toast.description'),\n closable: true,\n }),\n [isLocked, t],\n )\n\n useConditionalToast(conditionalToastParams)\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType, selectedReleaseId)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n }),\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel, selectedReleaseId])\n\n const hasRev = Boolean(value?._rev)\n const handleInitialValue = useEffectEvent(() => {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n })\n useEffect(() => {\n if (hasRev) {\n handleInitialValue()\n }\n // React to changes in hasRev only\n }, [hasRev])\n\n const [formRef, setFormRef] = useState<null | HTMLDivElement>(null)\n\n // We only want to run it on first mount\n const [focusedFirstDescendant, setFocusedFirstDescendant] = useState(false)\n useEffect(() => {\n // Only focus on the first descendant if there is not already a focus path\n // This is to avoid stealing focus from intent links\n if (!focusedFirstDescendant && ready && !formState?.focusPath.length && formRef) {\n setFocusedFirstDescendant(true)\n focusFirstDescendant(formRef)\n }\n }, [focusedFirstDescendant, formRef, formState?.focusPath.length, ready])\n\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n setFormRef(node)\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref],\n )\n\n const isReadOnly = connectionState === 'reconnecting' || formState?.readOnly || !editState?.ready\n\n return (\n <FormContainer hidden={hidden}>\n <PresenceOverlay margins={margins}>\n <Box\n as=\"form\"\n onSubmit={preventDefault}\n ref={setRef}\n data-testid=\"form-view\"\n data-read-only={isReadOnly ? 'true' : undefined}\n >\n {connectionState === 'connecting' && !editState?.draft && !editState?.published ? (\n <Delay ms={300}>\n {/* TODO: replace with loading block */}\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Spinner muted />\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n {t('document-view.form-view.loading')}\n </Text>\n </Box>\n </Flex>\n </Delay>\n ) : formState === null || hidden ? (\n <Box padding={2}>\n <Text>{t('document-view.form-view.form-hidden')}</Text>\n </Box>\n ) : (\n <>\n <FormRow>\n <FormHeader\n documentId={documentId}\n schemaType={formState.schemaType}\n title={title}\n />\n </FormRow>\n <FormBuilder\n __internal_fieldActions={fieldActions}\n __internal_inspectOpen={inspectOpen}\n __internal_patchChannel={patchChannel}\n changed={formState.changed}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n compareValue={compareValue ?? undefined}\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 perspective={selectedPerspective}\n hasUpstreamVersion={hasUpstreamVersion}\n presence={presence}\n readOnly={isReadOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={\n // note: the form state doesn't have a typed concept of a \"document\" value\n // but these should be compatible\n formState.value as FormDocumentValue\n }\n />\n </>\n )}\n </Box>\n </PresenceOverlay>\n </FormContainer>\n )\n})\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches),\n ),\n }\n}\n","import {TabList} from '@sanity/ui'\nimport {type ComponentType, type ReactNode, useCallback} from 'react'\n\nimport {Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentPaneInfo} from '../../useDocumentPaneInfo'\n\n/**\n * This component will render the tabs for the document pane, following this rules:\n * if the view tabs are wider than 200px it collapses to a dropdown\n * if the header is smaller than 480px it collapses to a dropdown\n * For this we need to first measure the pane header width and then the tabs width.\n *\n * Gotcha, if the tabs are wider han 200px it renders a dropdown and if then the tabs change to be smaller than 200px\n * it will not change back to tabs, this is a limitation of the current implementation but an ok tradeoff to avoid mounting\n * ghost elements just to measure the width.\n */\nexport function DocumentHeaderTabs() {\n const {activeViewId} = useDocumentPane()\n const {paneKey, views} = useDocumentPaneInfo()\n\n const tabPanelId = `${paneKey}tabpanel`\n\n return (\n <TabList space={1}>\n {views.map((view, index) => (\n <DocumentHeaderTab\n key={view.id}\n icon={view.icon}\n id={`${paneKey}tab-${view.id}`}\n isActive={activeViewId === view.id}\n label={view.title}\n tabPanelId={tabPanelId}\n viewId={index === 0 ? null : (view.id ?? null)}\n />\n ))}\n </TabList>\n )\n}\n\nfunction DocumentHeaderTab(props: {\n icon?: ComponentType | ReactNode\n id: string\n isActive: boolean\n label: string\n tabPanelId: string\n viewId: string | null\n}) {\n const {icon, id, isActive, label, tabPanelId, viewId, ...rest} = props\n const {ready, editState} = useDocumentPane()\n const {setView} = usePaneRouter()\n const handleClick = useCallback(() => setView(viewId), [setView, viewId])\n\n return (\n <Tab\n {...rest} // required to enable <TabList> keyboard navigation\n aria-controls={tabPanelId}\n disabled={!ready && !editState?.draft && !editState?.published}\n icon={icon}\n id={id}\n label={label}\n onClick={handleClick}\n selected={isActive}\n />\n )\n}\n","import {useContext} from 'react'\nimport {ResolvedPanesContext} from 'sanity/_singletons'\n\nimport {type Panes} from './useResolvedPanes'\n\nconst DEFAULT_VALUE = {\n paneDataItems: [],\n routerPanes: [],\n resolvedPanes: [],\n maximizedPane: null,\n setMaximizedPane: () => {\n // noop\n },\n}\nexport function useResolvedPanesList(): Panes {\n const context = useContext(ResolvedPanesContext)\n\n // This allows components to be used outside of ResolvedPanesProvider\n // Such as Presensation which doesn't need to be concerned about the structure of the panes\n // As it always travels down the nearest pane to the document.\n return context ?? DEFAULT_VALUE\n}\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 {defineEvent} from '@sanity/telemetry'\n\n/**\n * When a focus document pane button is clicked\n */\nexport const FocusDocumentPaneClicked = defineEvent({\n name: 'Maximized Document Pane Clicked',\n version: 1,\n description: 'User pressed to maximize a document by click the focus pane button',\n})\n\n/**\n * When a focus document pane button is collapsed\n */\nexport const FocusDocumentPaneCollapsed = defineEvent({\n name: 'Maximized Document Pane Collapsed',\n version: 1,\n description:\n 'User disabled the maximization on a document pane by clicking the focus pane button',\n})\n\nexport const FocusDocumentPaneNavigated = defineEvent({\n name: 'Maximized Document Pane Navigated Via Breadcrumbs',\n version: 1,\n description:\n 'User navigated to a different document pane via the breadcrumbs in the document header',\n})\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {useCallback, useMemo} from 'react'\nimport {useDocumentPreviewValues, usePerspective, useTranslation} from 'sanity'\nimport {useRouter, useRouterState} from 'sanity/router'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {LOADING_PANE} from '../../../../constants'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {type Panes} from '../../../../structureResolvers/useResolvedPanes'\nimport {type RouterPanes} from '../../../../types'\nimport {FocusDocumentPaneNavigated} from './__telemetry__/focus.telemetry'\n\nexport function DocumentHeaderBreadcrumbItem({\n paneData,\n index,\n}: {\n paneData: Panes['paneDataItems'][number]\n index: number\n}) {\n const {pane} = paneData\n const router = useRouter()\n const {t} = useTranslation(structureLocaleNamespace)\n const routerState = useRouterState()\n const telemetry = useTelemetry()\n const routerPanes = useMemo(() => (routerState?.panes || []) as RouterPanes, [routerState?.panes])\n\n const {perspectiveStack} = usePerspective()\n // In case if it's a pane with a title, use the title\n const staticTitle = pane !== LOADING_PANE && 'title' in pane ? pane.title : null\n\n // In case if it's a document pane, we need to fetch the document preview title\n const documentId = pane !== LOADING_PANE && pane.type === 'document' ? pane.options.id : null\n const documentType = pane !== LOADING_PANE && pane.type === 'document' ? pane.options.type : null\n const {value: previewValue, isLoading} = useDocumentPreviewValues({\n documentId: documentId ?? '',\n documentType: documentType ?? '',\n perspectiveStack: perspectiveStack,\n })\n\n // Use preview title for documents, static title for other panes\n const displayTitle = useMemo(() => {\n if (documentId && !isLoading) {\n return previewValue?.title || t('panes.document-header-title.untitled.text')\n }\n\n return staticTitle\n }, [documentId, previewValue, staticTitle, t, isLoading])\n\n const handleClick = useCallback(() => {\n telemetry.log(FocusDocumentPaneNavigated)\n router.navigate({panes: routerPanes.slice(0, paneData.groupIndex)})\n }, [telemetry, router, routerPanes, paneData.groupIndex])\n\n if (!displayTitle && !isLoading) return null\n\n return (\n <Button\n mode=\"bleed\"\n text={displayTitle || t('panes.document-header-title.untitled.text')}\n tooltipProps={{content: displayTitle || t('panes.document-header-title.untitled.text')}}\n onClick={handleClick}\n paddingLeft={index === 0 ? 0 : 1}\n />\n )\n}\n","import {ArrowRightIcon} from '@sanity/icons'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {Fragment} from 'react'\n\nimport {LOADING_PANE} from '../../../../constants'\nimport {type Panes} from '../../../../structureResolvers/useResolvedPanes'\nimport {DocumentHeaderBreadcrumbItem} from './DocumentHeaderBreadcrumbItem'\n\nexport function DocumentHeaderBreadcrumb({\n paneDataItems,\n currentPaneIndex,\n}: {\n paneDataItems: Panes['paneDataItems']\n currentPaneIndex: number\n}): React.JSX.Element {\n return (\n <Flex direction=\"row\" align=\"center\" data-testid=\"document-header-breadcrumb\">\n {paneDataItems.map((paneData, idx) => {\n if (idx > currentPaneIndex) return null\n const isDocumentPane = paneData.pane !== LOADING_PANE && paneData.pane.type === 'document'\n return (\n <Fragment key={`breadcrumb-item-${paneData.key}-${idx}`}>\n <DocumentHeaderBreadcrumbItem paneData={paneData} index={idx} />\n\n {idx < currentPaneIndex &&\n (isDocumentPane ? (\n <Box padding={1}>\n <ArrowRightIcon />\n </Box>\n ) : (\n <Text>/</Text>\n ))}\n </Fragment>\n )\n })}\n </Flex>\n )\n}\n","import {useMemo} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useResolvedPanesList} from '../../../../structureResolvers/useResolvedPanesList'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentTitle} from '../../useDocumentTitle'\nimport {DocumentHeaderBreadcrumb} from './DocumentHeaderBreadcrumb'\n\nexport function DocumentHeaderTitle(): React.JSX.Element {\n const {connectionState, schemaType, title, value: documentValue, index} = useDocumentPane()\n const {paneDataItems} = useResolvedPanesList()\n const {title: documentTitle, error} = useDocumentTitle()\n const subscribed = Boolean(documentValue)\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const hasMaximizedPane = useMemo(\n () => paneDataItems.some((paneData) => paneData.maximized),\n [paneDataItems],\n )\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})}</>\n }\n\n return (\n <>\n {hasMaximizedPane ? (\n <DocumentHeaderBreadcrumb paneDataItems={paneDataItems} currentPaneIndex={index} />\n ) : (\n documentTitle || (\n <span style={{color: 'var(--card-muted-fg-color)'}}>\n {t('panes.document-header-title.untitled.text')}\n </span>\n )\n )}\n </>\n )\n}\n","import {StarFilledIcon, StarIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {type ComponentType} from 'react'\nimport {useManageFavorite, type UseManageFavoriteProps, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\nexport const FavoriteToggle: ComponentType<UseManageFavoriteProps & {documentExists: boolean}> = ({\n documentExists,\n ...props\n}) => {\n const {isFavorited, isReady, favorite, unfavorite} = useManageFavorite(props)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const description = t(\n isFavorited\n ? 'document.favorites.remove-from-favorites'\n : 'document.favorites.add-to-favorites',\n )\n\n return (\n <Button\n mode=\"bleed\"\n onClick={isFavorited ? unfavorite : favorite}\n disabled={!isReady || !documentExists}\n aria-label={description}\n aria-live=\"assertive\"\n tooltipProps={{\n content: <Text size={1}>{description}</Text>,\n placement: 'right',\n }}\n >\n <Text size={1}>{isFavorited ? <StarFilledIcon /> : <StarIcon />}</Text>\n </Button>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, useMemo} from 'react'\nimport {CapabilityGate, useActiveWorkspace, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {PaneHeader, usePane, usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTabs} from './DocumentHeaderTabs'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {FavoriteToggle} from './FavoriteToggle'\n\n/**\n * When not collapsed this component will render the title and the tabs.\n * This component will render inside the document panel and not with the DocumentPanelHeader\n */\nexport const DocumentPanelSubHeader = memo(function DocumentPanelHeader() {\n const {editState, connectionState, views, documentId, displayed} = useDocumentPane()\n const {features} = useStructureTool()\n const {index, BackLink} = usePaneRouter()\n const {activeWorkspace} = useActiveWorkspace()\n\n const showTabs = views.length > 1\n\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n // show the back button if both the feature is enabled and the current pane\n // is not the first\n const showBackButton = features.backButton && index > 0\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const title = useMemo(() => <DocumentHeaderTitle />, [])\n const tabs = useMemo(() => showTabs && <DocumentHeaderTabs />, [showTabs])\n\n const backButton = useMemo(\n () =>\n showBackButton && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('pane-header.back-button.text')}}\n />\n ),\n [BackLink, showBackButton, t],\n )\n\n const favoriteToggle = (\n <CapabilityGate capability=\"comlink\" condition=\"available\">\n <FavoriteToggle\n resourceType=\"studio\"\n documentId={displayed?._id ?? documentId}\n documentType={displayed?._type ?? ''}\n resourceId={[activeWorkspace.projectId, activeWorkspace.dataset].join('.')}\n schemaName={activeWorkspace.name}\n projectId={activeWorkspace.projectId}\n dataset={activeWorkspace.dataset}\n documentExists={\n (editState?.ready &&\n (editState.version ?? editState.draft ?? editState.published) !== null) ??\n false\n }\n />\n </CapabilityGate>\n )\n\n return (\n <PaneHeader\n loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n title={title}\n tabs={tabs}\n tabIndex={tabIndex}\n backButton={backButton}\n appendTitle={favoriteToggle}\n />\n )\n})\n","import {BoundaryElementProvider, Box, Flex, PortalProvider, usePortal} from '@sanity/ui'\nimport {useEffect, useMemo, useRef, useState} from 'react'\nimport {\n getSanityCreateLinkMetadata,\n getVersionFromId,\n isCardinalityOneRelease,\n isDraftId,\n isGoingToUnpublish,\n isNewDocument,\n isPausedCardinalityOneRelease,\n isPerspectiveWriteable,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n isSanityCreateLinked,\n isSystemBundle,\n LegacyLayerProvider,\n type ReleaseDocument,\n ScrollContainer,\n useFilteredReleases,\n usePausedScheduledDraft,\n usePerspective,\n useWorkspace,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {PaneContent, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {hasObsoleteDraft} from '../../../hasObsoleteDraft'\nimport {mustChooseNewDocumentDestination} from '../../../mustChooseNewDocumentDestination'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DocumentInspectorPanel} from '../documentInspector'\nimport {InspectDialog} from '../inspectDialog'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {\n DeletedDocumentBanners,\n DeprecatedDocumentTypeBanner,\n InsufficientPermissionBanner,\n ReferenceChangedBanner,\n ScheduledDraftOverrideBanner,\n} from './banners'\nimport {ArchivedReleaseDocumentBanner} from './banners/ArchivedReleaseDocumentBanner'\nimport {CanvasLinkedBanner} from './banners/CanvasLinkedBanner'\nimport {ChooseNewDocumentDestinationBanner} from './banners/ChooseNewDocumentDestinationBanner'\nimport {CreateLinkedBanner} from './banners/CreateLinkedBanner'\nimport {DocumentNotInReleaseBanner} from './banners/DocumentNotInReleaseBanner'\nimport {ObsoleteDraftBanner} from './banners/ObsoleteDraftBanner'\nimport {OpenReleaseToEditBanner} from './banners/OpenReleaseToEditBanner'\nimport {PausedScheduledDraftBanner} from './banners/PausedScheduledDraftBanner'\nimport {RevisionNotFoundBanner} from './banners/RevisionNotFoundBanner'\nimport {ScheduledReleaseBanner} from './banners/ScheduledReleaseBanner'\nimport {UnpublishedDocumentBanner} from './banners/UnpublishedDocumentBanner'\nimport {FormView} from './documentViews'\nimport {DocumentPanelSubHeader} from './header/DocumentPanelSubHeader'\n\ninterface DocumentPanelProps {\n footerHeight: number | null\n headerHeight: number | null\n isInspectOpen: boolean\n rootElement: HTMLDivElement | null\n setDocumentPanelPortalElement: (el: HTMLElement | null) => void\n footer: React.ReactNode\n}\n\nconst DocumentBox = styled(Box)({\n position: 'relative',\n})\n\nconst Scroller = styled(ScrollContainer)<{$disabled: boolean}>(({$disabled}) => {\n if ($disabled) {\n return {height: '100%'}\n }\n\n return css`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n outline: none;\n `\n})\n\nexport const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {\n const {\n footerHeight,\n headerHeight,\n isInspectOpen,\n rootElement,\n setDocumentPanelPortalElement,\n footer,\n } = props\n const {\n activeViewId,\n displayed,\n documentId,\n editState,\n inspector,\n value,\n views,\n ready,\n schemaType,\n permissions,\n isPermissionsLoading,\n } = useDocumentPane()\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n const showCreateBanner = isSanityCreateLinked(createLinkMetadata)\n\n const {params} = usePaneRouter()\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const {collapsed} = usePane()\n const parentPortal = usePortal()\n const {features} = useStructureTool()\n const [_portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n const [documentScrollElement, setDocumentScrollElement] = useState<HTMLDivElement | null>(null)\n const formContainerElement = useRef<HTMLDivElement | null>(null)\n const workspace = useWorkspace()\n\n const requiredPermission = value._createdAt ? 'update' : 'create'\n\n const activeView = useMemo(\n () => views.find((view) => view.id === activeViewId) || views[0] || {type: 'form'},\n [activeViewId, views],\n )\n\n // Use a local portal container when split panes is supported\n const portalElement: HTMLElement | null = features.splitPanes\n ? _portalElement || parentPortal.element\n : parentPortal.element\n\n // Calculate the height of the header\n const margins: [number, number, number, number] = useMemo(() => {\n if (layoutCollapsed) {\n return [headerHeight || 0, 0, footerHeight ? footerHeight + 2 : 2, 0]\n }\n\n return [0, 0, 2, 0]\n }, [layoutCollapsed, footerHeight, headerHeight])\n\n const formViewHidden = activeView.type !== 'form'\n\n const activeViewNode = useMemo(() => {\n if (activeView.type === 'component' && activeView.component) {\n const ActiveViewComponent = activeView.component\n return (\n <ActiveViewComponent\n document={{\n draft: editState?.draft || null,\n displayed: displayed || value,\n historical: displayed,\n published: editState?.published || null,\n }}\n documentId={documentId}\n options={activeView.options}\n schemaType={schemaType}\n />\n )\n }\n return false\n }, [activeView, displayed, documentId, editState?.draft, editState?.published, schemaType, value])\n\n const prevDocumentIdRef = useRef<string | undefined>(undefined)\n\n // Scroll to top when `documentId` changes (but not on initial render)\n useEffect(() => {\n if (!documentScrollElement?.scrollTo) return\n\n // Skip scroll on initial render\n if (prevDocumentIdRef.current === undefined) {\n prevDocumentIdRef.current = documentId\n return\n }\n\n // Only scroll if documentId actually changed\n if (prevDocumentIdRef.current !== documentId) {\n documentScrollElement.scrollTo(0, 0)\n prevDocumentIdRef.current = documentId\n }\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 ? (\n <LegacyLayerProvider zOffset=\"inspectorDialog\">\n <InspectDialog value={displayed || value} />\n </LegacyLayerProvider>\n ) : null\n }, [isInspectOpen, displayed, value])\n\n const showInspector = Boolean(!collapsed && inspector)\n const {selectedPerspective, selectedReleaseId, selectedPerspectiveName} = usePerspective()\n\n const filteredReleases = useFilteredReleases({\n historyVersion: params?.historyVersion,\n displayed,\n documentId,\n })\n\n const {isPaused: isPausedDraft} = usePausedScheduledDraft()\n\n // eslint-disable-next-line complexity\n const banners = useMemo(() => {\n if (params?.historyVersion) {\n return <ArchivedReleaseDocumentBanner />\n }\n\n const isScheduledRelease =\n isReleaseDocument(selectedPerspective) && isReleaseScheduledOrScheduling(selectedPerspective)\n\n const documentInScheduledRelease = Boolean(\n isScheduledRelease &&\n displayed?._id &&\n getVersionFromId(displayed?._id) === selectedReleaseId,\n )\n\n const isSelectedPerspectiveWriteable = isPerspectiveWriteable({\n selectedPerspective,\n isDraftModelEnabled: workspace.document.drafts.enabled,\n schemaType,\n })\n\n if (\n mustChooseNewDocumentDestination({\n isSelectedPerspectiveWriteable,\n editState,\n })\n ) {\n return (\n !isSelectedPerspectiveWriteable.result && (\n <ChooseNewDocumentDestinationBanner\n schemaType={schemaType}\n selectedPerspective={selectedPerspective}\n reason={isSelectedPerspectiveWriteable.reason}\n />\n )\n )\n }\n\n if (isPausedDraft && displayed?._id) {\n return <PausedScheduledDraftBanner />\n }\n\n if (documentInScheduledRelease) {\n return <ScheduledReleaseBanner currentRelease={selectedPerspective as ReleaseDocument} />\n }\n\n const allFilteredReleases = [\n ...filteredReleases.currentReleases,\n ...filteredReleases.notCurrentReleases,\n ]\n // if the scheduled draft is paused then it will be available in notCurrentReleases\n // otherwise a locked-in scheduled draft will be available in currentReleases\n // so must look across both to find the scheduled draft release\n const scheduledCardinalityOneRelease = allFilteredReleases.find(\n (release) =>\n isCardinalityOneRelease(release) &&\n (isReleaseScheduledOrScheduling(release) || isPausedCardinalityOneRelease(release)),\n )\n const displayedIsDraft = displayed?._id && isDraftId(displayed._id)\n\n if (selectedPerspective === 'drafts' && scheduledCardinalityOneRelease && displayedIsDraft) {\n return (\n <ScheduledDraftOverrideBanner\n releaseId={scheduledCardinalityOneRelease._id}\n draftDocument={displayed}\n />\n )\n }\n\n const isPinnedDraftOrPublish = isSystemBundle(selectedPerspective)\n const isCurrentVersionGoingToUnpublish =\n editState?.version && isGoingToUnpublish(editState?.version)\n\n if (\n !isSystemBundle(selectedPerspective) &&\n displayed?._id &&\n getVersionFromId(displayed._id) !== selectedPerspectiveName &&\n ready &&\n !isPinnedDraftOrPublish &&\n isNewDocument(editState) === false &&\n !isCurrentVersionGoingToUnpublish\n ) {\n return (\n <DocumentNotInReleaseBanner\n documentId={value._id}\n currentRelease={selectedPerspective}\n isScheduledRelease={isScheduledRelease}\n />\n )\n }\n\n const displayedHasObsoleteDraft = hasObsoleteDraft({\n editState,\n workspace,\n schemaType,\n })\n\n if (activeView.type === 'form' && !selectedReleaseId && displayedHasObsoleteDraft.result) {\n if (displayedHasObsoleteDraft.reason === 'DRAFT_MODEL_INACTIVE') {\n return (\n <ObsoleteDraftBanner\n displayed={displayed}\n documentId={documentId}\n schemaType={schemaType}\n i18nKey=\"banners.obsolete-draft.draft-model-inactive.text\"\n />\n )\n }\n\n if (displayedHasObsoleteDraft.reason === 'LIVE_EDIT_ACTIVE') {\n return (\n <ObsoleteDraftBanner\n displayed={displayed}\n documentId={documentId}\n schemaType={schemaType}\n i18nKey=\"banners.live-edit-draft-banner.text\"\n isEditBlocking\n />\n )\n }\n }\n\n if (activeView.type !== 'form' || isPermissionsLoading) return null\n\n return (\n <>\n {showCreateBanner && <CreateLinkedBanner />}\n {!permissions?.granted && (\n <InsufficientPermissionBanner requiredPermission={requiredPermission} />\n )}\n <RevisionNotFoundBanner />\n <ReferenceChangedBanner />\n <DeprecatedDocumentTypeBanner />\n <CanvasLinkedBanner />\n <DeletedDocumentBanners />\n <UnpublishedDocumentBanner />\n <OpenReleaseToEditBanner\n documentId={displayed?._id ?? documentId}\n isPinnedDraftOrPublished={isPinnedDraftOrPublish}\n />\n </>\n )\n }, [\n params?.historyVersion,\n selectedPerspective,\n displayed,\n selectedReleaseId,\n selectedPerspectiveName,\n editState,\n ready,\n activeView.type,\n isPermissionsLoading,\n showCreateBanner,\n permissions?.granted,\n requiredPermission,\n documentId,\n value._id,\n schemaType,\n filteredReleases,\n workspace,\n isPausedDraft,\n ])\n const portalElements = useMemo(\n () => ({documentScrollElement: documentScrollElement}),\n [documentScrollElement],\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}>\n <PortalProvider element={portalElement} __unstable_elements={portalElements}>\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","import {RevertIcon} from '@sanity/icons'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDialogProps,\n useDocumentOperation,\n useDocumentOperationEvent,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\n// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useHistoryRestoreAction: DocumentActionComponent = ({id, type, revision, release}) => {\n const {restore} = useDocumentOperation(id, type, release)\n const {revisionNotFound} = useDocumentPane()\n const event = useDocumentOperationEvent(id, type)\n const {navigateIntent} = useRouter()\n const prevEvent = useRef(event)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleConfirm = useCallback(() => {\n restore.execute(revision!)\n setConfirmDialogOpen(false)\n }, [restore, revision])\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n }, [])\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: handleCancel,\n onConfirm: handleConfirm,\n message: t('action.restore.confirm.message'),\n }\n }\n\n return null\n }, [handleConfirm, handleCancel, isConfirmDialogOpen, t])\n\n const isRevisionInitial = revision === '@initial'\n const isRevisionLatest = revision === undefined // undefined means latest revision\n\n return useMemo(() => {\n if (isRevisionLatest || revisionNotFound) {\n return null\n }\n\n return {\n label: t('action.restore.label'),\n tone: 'caution',\n onHandle: handle,\n title: t(\n isRevisionInitial\n ? 'action.restore.disabled.cannot-restore-initial'\n : 'action.restore.tooltip',\n ),\n icon: RevertIcon,\n dialog,\n disabled: isRevisionInitial,\n }\n }, [dialog, handle, isRevisionInitial, isRevisionLatest, revisionNotFound, t])\n}\n\nuseHistoryRestoreAction.action = 'restore'\nuseHistoryRestoreAction.displayName = 'HistoryRestoreAction'\n","import negate from 'lodash-es/negate.js'\n\nimport {type _PaneMenuGroup, type _PaneMenuItem, type _PaneMenuNode} from './components/pane/types'\nimport {type DocumentFieldMenuActionNode, type PaneMenuItem, type PaneMenuItemGroup} from './types'\n\nexport function isMenuNodeButton(node: _PaneMenuNode): node is _PaneMenuItem | _PaneMenuGroup {\n return (node.type === 'item' || node.type === 'group') && node.renderAsButton\n}\n\nexport const isNotMenuNodeButton = negate(isMenuNodeButton)\n\nexport function resolveMenuNodes(params: {\n actionHandler: (item: PaneMenuItem) => void\n fieldActions?: DocumentFieldMenuActionNode[]\n menuItems: PaneMenuItem[]\n menuItemGroups: PaneMenuItemGroup[]\n}): _PaneMenuNode[] {\n const {fieldActions = [], menuItems, menuItemGroups} = params\n\n const nodes: _PaneMenuNode[] = []\n\n let keyOffset = 0\n\n for (let i = 0; i < fieldActions.length; i += 1) {\n const a = fieldActions[i]\n\n nodes.push(mapFieldActionToPaneMenuNode(a, `${i}-${a.type}`))\n }\n\n keyOffset += nodes.length\n\n const groups: _PaneMenuGroup[] = []\n\n for (const itemGroup of menuItemGroups) {\n const group = groups.find((g) => g.key === itemGroup.id)\n\n if (!group) {\n groups.push({\n type: 'group',\n key: itemGroup.id,\n\n children: [],\n expanded: true,\n renderAsButton: false,\n title: itemGroup.title,\n i18n: itemGroup.i18n,\n })\n }\n }\n\n const ungroupedItems: _PaneMenuItem[] = []\n\n for (let i = 0; i < menuItems.length; i += 1) {\n const item = menuItems[i]\n\n let group = item.group && groups.find((g) => g.key === item.group)\n const disabled = typeof item.disabled === 'string' ? {reason: item.disabled} : item.disabled\n\n if (item.group && !group) {\n group = {\n type: 'group',\n key: item.group,\n disabled,\n expanded: true,\n icon: item.icon,\n title: item.group,\n children: [],\n renderAsButton: false,\n }\n groups.push(group)\n }\n\n if (group) {\n group.children.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hideSelectionIndicator: item.params?.hideSelectionIndicator === true,\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n disabled,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n } else {\n ungroupedItems.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hideSelectionIndicator: item.params?.hideSelectionIndicator === true,\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n disabled,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n }\n }\n\n return [...ungroupedItems, ...groups, ...nodes]\n}\n\nfunction mapFieldActionToPaneMenuNode(a: DocumentFieldMenuActionNode, key: string): _PaneMenuNode {\n if (a.type === 'divider') {\n return {\n type: 'divider',\n key,\n }\n }\n\n if (a.type === 'group') {\n return {\n type: 'group',\n key,\n\n children: a.children.map((child, childIdx) =>\n mapFieldActionToPaneMenuNode(child, `${key}-${childIdx}-${child.type}`),\n ),\n disabled: a.disabled,\n expanded: a.expanded ?? true,\n icon: a.icon,\n title: a.title,\n i18n: a.i18n,\n renderAsButton: a.renderAsButton ?? false,\n }\n }\n\n return {\n type: 'item',\n key,\n intent: a.intent,\n disabled: a.disabled,\n icon: a.icon,\n iconRight: a.iconRight,\n onAction: a.onAction,\n renderAsButton: a.renderAsButton ?? false,\n selected: a.selected,\n title: a.title,\n i18n: a.i18n,\n tone: a.tone,\n }\n}\n","import {type 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 {type DocumentActionConfirmDialogProps, useTranslation} from 'sanity'\n\nimport {ConfirmPopover} from '../../../../../ui-components'\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 const {t} = useTranslation(structureLocaleNamespace)\n\n const {\n cancelButtonIcon,\n cancelButtonText,\n confirmButtonIcon,\n confirmButtonText,\n message,\n onCancel,\n onConfirm,\n tone,\n } = dialog\n\n return (\n <ConfirmPopover\n cancelButtonIcon={cancelButtonIcon}\n cancelButtonText={cancelButtonText || t('confirm-dialog.cancel-button.fallback-text')}\n confirmButtonIcon={confirmButtonIcon}\n confirmButtonText={confirmButtonText || t('confirm-dialog.confirm-button.fallback-text')}\n message={message}\n onCancel={onCancel}\n onConfirm={onConfirm}\n open\n referenceElement={referenceElement}\n tone={tone}\n placement=\"top\"\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n />\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 onClose={dialog.onClose}\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 console.warn(`Unsupported modal type ${unknownModal.type}`)\n\n return (\n <Dialog\n id={modalId}\n onClose={unknownModal.onClose}\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 // oxlint-disable-next-line no-array-index-key\n key={idx}\n actionState={actionState}\n disabled={disabled}\n index={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","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\n/**\n * @internal\n */\nexport const DocumentIDCopied = defineEvent({\n name: 'DocumentIDCopied',\n version: 1,\n description: 'User copied document ID to clipboard',\n})\n\n/**\n * @internal\n */\nexport const InlineChangesSwitchedOn = defineEvent({\n name: 'InlineChangesSwitchedOn',\n version: 1,\n description: 'User switched on display of inline changes',\n})\n\n/**\n * @internal\n */\nexport const InlineChangesSwitchedOff = defineEvent({\n name: 'InlineChangesSwitchedOff',\n version: 1,\n description: 'User switched off display of inline changes',\n})\n","import {LinkIcon, ShareIcon, TargetIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Menu, useToast} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {getDraftId, getVersionId, usePerspective, useStudioUrl, useTranslation} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {Button, MenuButton, MenuItem} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {DocumentIDCopied, DocumentURLCopied} from '../../__telemetry__'\nimport {useDocumentPaneInfo} from '../../useDocumentPaneInfo'\n\n/**\n * Renders a dropdown button in the document panel header with two actions:\n * - Copy link to document (perspective-aware URL)\n * - Copy document ID (context-aware, including version/draft prefix)\n *\n * @internal\n */\nexport function CopyDocumentActions() {\n const {documentId, documentType} = useDocumentPaneInfo()\n const {selectedReleaseId, selectedPerspectiveName} = usePerspective()\n const {params} = usePaneRouter()\n const {resolveIntentLink} = useRouter()\n const {buildIntentUrl} = useStudioUrl()\n const {t} = useTranslation(structureLocaleNamespace)\n const telemetry = useTelemetry()\n const {push: pushToast} = useToast()\n\n const scheduledDraft = params?.scheduledDraft\n\n const contextAwareDocumentId = useMemo(() => {\n const versionReleaseId = scheduledDraft || selectedReleaseId\n if (versionReleaseId) {\n return getVersionId(documentId, versionReleaseId)\n }\n\n if (selectedPerspectiveName === 'published') {\n return documentId\n }\n\n return getDraftId(documentId)\n }, [documentId, scheduledDraft, selectedPerspectiveName, selectedReleaseId])\n\n const handleCopyLink = useCallback(async () => {\n telemetry.log(DocumentURLCopied)\n\n const searchParams: [string, string][] =\n selectedReleaseId && !scheduledDraft ? [['perspective', selectedReleaseId]] : []\n\n const intentParams = {\n id: documentId,\n type: documentType,\n ...(scheduledDraft && {scheduledDraft}),\n }\n\n const intentLink = resolveIntentLink('edit', intentParams, searchParams)\n const copyUrl = buildIntentUrl(intentLink)\n\n await navigator.clipboard.writeText(copyUrl)\n pushToast({\n id: 'copy-document-url',\n status: 'info',\n title: t('panes.document-operation-results.operation-success_copy-url'),\n })\n }, [\n buildIntentUrl,\n documentId,\n documentType,\n pushToast,\n resolveIntentLink,\n scheduledDraft,\n selectedReleaseId,\n t,\n telemetry,\n ])\n\n const handleCopyId = useCallback(async () => {\n telemetry.log(DocumentIDCopied)\n await navigator.clipboard.writeText(contextAwareDocumentId)\n pushToast({\n id: 'copy-document-id',\n status: 'info',\n title: t('panes.document-operation-results.operation-success_copy-id'),\n })\n }, [contextAwareDocumentId, pushToast, t, telemetry])\n\n return (\n <MenuButton\n id=\"copy-document-actions\"\n button={\n <Button\n icon={ShareIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('action.copy-document-url.label')}}\n data-testid=\"copy-document-actions-button\"\n />\n }\n menu={\n <Menu>\n <MenuItem\n icon={LinkIcon}\n onClick={handleCopyLink}\n text={t('action.copy-link-to-document.label')}\n data-testid=\"copy-link-to-document\"\n />\n <MenuItem\n icon={TargetIcon}\n onClick={handleCopyId}\n text={t('action.copy-document-id.label')}\n data-testid=\"copy-document-id\"\n />\n </Menu>\n }\n popover={{portal: true, placement: 'bottom-end'}}\n />\n )\n}\n","import {useEffect, useState} from 'react'\n\n/**\n * This hook is used to determine if the gradient should be shown on the chip scroll container.\n * It uses an IntersectionObserver to observe the last child of the container and sets the showGradient state based on the intersection.\n * @param containerRef - The ref to the container that contains all the chips\n * @returns showGradient - A boolean that determines if the gradient should be shown\n * @internal\n */\nexport function useChipScrollPosition(containerRef: React.RefObject<HTMLDivElement | null>) {\n const [showGradient, setShowGradient] = useState(false)\n\n useEffect(() => {\n const checkOverflow = () => {\n // container is the parent that contains all the chips\n const container = containerRef.current\n if (!container) return\n const {scrollWidth, clientWidth} = container\n const needsScrolling = scrollWidth > clientWidth\n\n if (!needsScrolling) {\n setShowGradient(false)\n return\n }\n\n // Check if scrolled to the end\n // becausee it doesn't need to show the gradient then\n const {scrollLeft} = container\n const isAtEnd = scrollLeft + clientWidth >= scrollWidth\n setShowGradient(!isAtEnd)\n }\n\n function setupObservers() {\n checkOverflow()\n // container is the parent that contains all the chips\n const container = containerRef.current\n if (!container) return {intersectionObserver: null, mutationObserver: null}\n\n const intersectionObserver = new IntersectionObserver((entries) => {\n const entry = entries[0]\n\n if (entry) {\n setShowGradient(!entry.isIntersecting)\n }\n })\n\n const updateLastChipObserver = () => {\n // Disconnect previous observation\n intersectionObserver.disconnect()\n\n // Get the new last child\n const lastChip = container.children[container.children.length - 1]\n intersectionObserver.observe(lastChip)\n }\n\n // Set up initial observation\n updateLastChipObserver()\n\n // Set up mutation observer to watch for changes to children\n // this is needed because sometimes the list of releases takes some time to be rendered\n // otherwise it could accidentally set the last child as the \"drafts\" / \"published\" chip\n const mutationObserver = new MutationObserver(() => {\n updateLastChipObserver()\n checkOverflow()\n })\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: false,\n })\n\n return {intersectionObserver, mutationObserver}\n }\n\n const {intersectionObserver, mutationObserver} = setupObservers()\n\n return () => {\n intersectionObserver?.disconnect()\n mutationObserver?.disconnect()\n }\n }, [containerRef])\n\n return showGradient\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ChevronDownIcon, ChevronUpIcon} from '@sanity/icons'\nimport {Container, Flex, useClickOutsideEvent} from '@sanity/ui'\nimport {useMemo, useRef, useState} from 'react'\nimport {\n Chip,\n getPublishedId,\n getVersionFromId,\n type AgentVersionDisplay,\n useTranslation,\n VersionChip,\n} from 'sanity'\n\nimport {Popover, Tooltip} from '../../../../../ui-components'\n\nexport function NonReleaseVersionsSelect(props: {\n nonReleaseVersions: string[]\n selectedPerspective?: string\n onSelectBundle: (bundle: string) => void\n onCopyToDraftsNavigate: () => void\n releases: ReleaseDocument[]\n releasesLoading: boolean\n documentType: string\n getVersionDisplay: (versionDocumentId: string) => AgentVersionDisplay | null\n}) {\n const {\n nonReleaseVersions,\n selectedPerspective,\n onSelectBundle,\n onCopyToDraftsNavigate,\n documentType,\n getVersionDisplay,\n releasesLoading,\n releases,\n } = props\n const {t} = useTranslation()\n const [nonReleaseDropdownOpen, setNonReleaseDropdownOpen] = useState(false)\n const [popoverReferenceElement, setPopoverReferenceElement] = useState<HTMLElement | null>(null)\n\n const [selectedNonReleaseVersion, otherNonReleaseVersions] = useMemo(() => {\n return extract(nonReleaseVersions, (v) => getVersionFromId(v) === selectedPerspective)\n }, [selectedPerspective, nonReleaseVersions])\n\n const popoverRef = useRef(null)\n\n useClickOutsideEvent(\n (event) => {\n if (event.target && 'matches' in event.target && typeof event.target.matches === 'function') {\n // note: this is an (ugly) workaround for useClickOutside not working through portals (as its based on elements.contains())\n // do not close dropdown if click happens in a portal\n // note: this *can* cause false positives if the user clicks outside any other portal\n // element on the page and expects the dropdown to close\n const isPortal = (event.target as {matches: HTMLElement['matches']}).matches(\n '[data-portal] *',\n )\n if (!isPortal) {\n setNonReleaseDropdownOpen(false)\n }\n } else {\n setNonReleaseDropdownOpen(false)\n }\n },\n () => [popoverRef.current],\n )\n\n if (nonReleaseVersions.length === 0) {\n return null\n }\n\n return (\n <>\n {selectedNonReleaseVersion &&\n (() => {\n const bundleId = getVersionFromId(selectedNonReleaseVersion)!\n const versionDisplay = getVersionDisplay(selectedNonReleaseVersion)\n return (\n <VersionChip\n key={selectedNonReleaseVersion}\n selected\n text={versionDisplay?.displayName ?? bundleId}\n tone={versionDisplay?.tone ?? 'default'}\n onClick={() => onSelectBundle(bundleId)}\n onCopyToDraftsNavigate={onCopyToDraftsNavigate}\n contextValues={{\n documentId: getPublishedId(selectedNonReleaseVersion),\n releases,\n releasesLoading: releasesLoading,\n documentType: documentType,\n bundleId: bundleId,\n isVersion: true,\n }}\n />\n )\n })()}\n {otherNonReleaseVersions.length > 0 ? (\n <Tooltip\n content={t('release.chip.tooltip.other-versions', {\n count: otherNonReleaseVersions.length,\n })}\n fallbackPlacements={[]}\n portal\n placement={nonReleaseDropdownOpen ? 'top' : 'bottom'}\n >\n <Chip\n mode=\"bleed\"\n fontSize={1}\n muted\n selected={nonReleaseDropdownOpen}\n iconRight={nonReleaseDropdownOpen ? ChevronUpIcon : ChevronDownIcon}\n ref={setPopoverReferenceElement}\n onClick={() => setNonReleaseDropdownOpen((v) => !v)}\n text={t('release.chip.button.other-versions', {count: otherNonReleaseVersions.length})}\n />\n </Tooltip>\n ) : null}\n\n <Popover\n animate={false}\n open={nonReleaseDropdownOpen}\n portal\n arrow\n ref={popoverRef}\n placement=\"bottom\"\n referenceElement={popoverReferenceElement}\n zOffset={10}\n content={\n <Container width={1}>\n <Flex width={1} padding={3} gap={2} wrap=\"wrap\">\n {otherNonReleaseVersions.map((nonReleaseVersionId) => {\n const bundle = getVersionFromId(nonReleaseVersionId)!\n const selected = selectedPerspective === bundle\n\n const versionDisplay = getVersionDisplay(nonReleaseVersionId)\n return (\n <VersionChip\n key={nonReleaseVersionId}\n selected={selected}\n text={versionDisplay?.displayName ?? bundle}\n disabled={false}\n contextMenuPortal={false}\n tone={versionDisplay?.tone ?? 'default'}\n onClick={() => onSelectBundle(bundle)}\n onCopyToDraftsNavigate={onCopyToDraftsNavigate}\n contextValues={{\n documentId: getPublishedId(nonReleaseVersionId),\n releases,\n releasesLoading: releasesLoading,\n documentType: documentType,\n bundleId: bundle,\n isVersion: true,\n }}\n />\n )\n })}\n </Flex>\n </Container>\n }\n />\n </>\n )\n}\n\nfunction extract<T>(xs: T[], predicate: (x: T) => boolean): [T | undefined, T[]] {\n const i = xs.findIndex(predicate)\n const match = i === -1 ? undefined : xs[i]\n const rest = i === -1 ? xs : xs.slice(0, i).concat(xs.slice(i + 1))\n\n return [match, rest]\n}\n","import {Stack, Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo} from 'react'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isCardinalityOneRelease,\n isDraftId,\n isGoingToUnpublish,\n isPublishedId,\n isPublishedPerspective,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n isVersionId,\n type ReleaseDocument,\n ReleaseTitle,\n type SanityDocumentLike,\n type TargetPerspective,\n Translate,\n useActiveReleases,\n useDateTimeFormat,\n type UseDateTimeFormatOptions,\n useDocumentVersions,\n useFilteredReleases,\n useGetDefaultPerspective,\n useAgentVersionDisplay,\n usePerspective,\n useSchema,\n useSetPerspective,\n useSingleDocRelease,\n useTranslation,\n useWorkspace,\n VersionChip,\n} from 'sanity'\n\nimport {isLiveEditEnabled} from '../../../../../components/paneItem/helpers'\nimport {usePaneRouter} from '../../../../../components/paneRouter/usePaneRouter'\nimport {useDocumentPane} from '../../../useDocumentPane'\nimport {useDocumentPaneInfo} from '../../../useDocumentPaneInfo'\nimport {NonReleaseVersionsSelect} from '../NonReleaseVersionsSelect'\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\n// eslint-disable-next-line complexity\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} = useDocumentPane()\n const {documentType, documentId} = useDocumentPaneInfo()\n const isCreatingDocument = displayed && !displayed._createdAt\n const defaultPerspective = useGetDefaultPerspective()\n const filteredReleases = useFilteredReleases({\n historyVersion: params?.historyVersion,\n displayed,\n documentId,\n })\n\n const {data: documentVersions} = useDocumentVersions({documentId})\n\n const onlyHasVersions =\n documentVersions &&\n documentVersions.length > 0 &&\n !documentVersions.some((version) => !isVersionId(version))\n\n const workspace = useWorkspace()\n const {onSetScheduledDraftPerspective} = useSingleDocRelease()\n\n const handleCopyToDraftsNavigate = useCallback(() => {\n // after copying to draft, we want to navigate to the draft version\n if (params?.scheduledDraft) {\n // if currently viewing a scheduled draft, remove the scheduled draft perspective\n // the global perspective is already set to drafts\n onSetScheduledDraftPerspective('')\n } else {\n // otherwise, only need to set the global perspective to drafts\n setPerspective('drafts')\n }\n }, [params, setPerspective, onSetScheduledDraftPerspective])\n\n const handlePerspectiveChange = useCallback(\n (perspective: TargetPerspective) => {\n if (isReleaseDocument(perspective) && isCardinalityOneRelease(perspective)) {\n onSetScheduledDraftPerspective(getReleaseIdFromReleaseDocumentId(perspective._id))\n return\n }\n\n if (perspective === 'published' && params?.historyVersion) {\n setParams({\n ...params,\n rev: params?.historyEvent || undefined,\n since: undefined,\n historyVersion: undefined,\n })\n }\n const newPerspective = isReleaseDocument(perspective)\n ? getReleaseIdFromReleaseDocumentId(perspective._id)\n : perspective === defaultPerspective\n ? ''\n : perspective\n\n if (params?.scheduledDraft) {\n setParams(\n {...params, scheduledDraft: undefined},\n // If we have a scheduled draft perspective, then we need to remove that one and set the new perspective.\n // We cannot do it in two passes, for example first set the paneParam and the use the `setPerspective`\n // because we will have a race condition in where the last state wins, but the last state won't have the previous change.\n // So we change the params and perspective in the same call.\n {perspective: newPerspective},\n )\n } else {\n setPerspective(newPerspective)\n }\n },\n [setPerspective, setParams, params, defaultPerspective, onSetScheduledDraftPerspective],\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 = (\n release: ReleaseDocument,\n ): {selected: boolean; disabled?: boolean} => {\n if (!params?.historyVersion) {\n const isCurrentVersionGoingToUnpublish =\n editState?.version &&\n isGoingToUnpublish(editState?.version) &&\n getReleaseIdFromReleaseDocumentId(release._id) === getVersionFromId(editState?.version?._id)\n\n return {\n selected: Boolean(\n getReleaseIdFromReleaseDocumentId(release._id) ===\n getVersionFromId(displayed?._id || '') || isCurrentVersionGoingToUnpublish,\n ),\n }\n }\n\n const isReleaseHistoryMatch =\n getReleaseIdFromReleaseDocumentId(release._id) === params.historyVersion\n\n return {selected: isReleaseHistoryMatch, disabled: isReleaseHistoryMatch}\n }\n\n const isPublishSelected: boolean = useMemo(() => {\n /**\n * The publish perspective is selected when:\n * - the document is live edit and there is no draft\n * - the document is published and the selected perspective is published\n */\n if (isLiveEdit && !editState?.draft?._id && !selectedReleaseId) return true\n if (\n isPublishedId(displayed?._id || '') &&\n isPublishedPerspective(selectedPerspectiveName || '')\n ) {\n return true\n }\n return false\n }, [\n displayed?._id,\n editState?.draft?._id,\n isLiveEdit,\n selectedPerspectiveName,\n selectedReleaseId,\n ])\n\n const isDraftSelected: boolean = useMemo(() => {\n const displayedId = displayed?._id || ''\n /** the draft is selected when:\n * not viewing a historical version,\n * when the document displayed is a draft,\n * when the perspective is null,\n * when the document is not published and the displayed version is draft,\n * when there is no draft (new document),\n */\n if (isPublishSelected) return false\n if (params?.historyVersion) return false\n if (selectedPerspectiveName) return false\n if (isVersionId(displayedId)) return false\n if (isDraftId(displayedId)) return true\n if (\n isPublishedId(displayedId) &&\n editState?.published &&\n isPublishedPerspective(selectedPerspectiveName || '')\n )\n return false\n return true\n }, [\n displayed?._id,\n editState?.published,\n isPublishSelected,\n params?.historyVersion,\n selectedPerspectiveName,\n ])\n\n const isDraftDisabled: boolean = useMemo(() => {\n // Draft is disabled when the document has no published or draft but has versions\n if (onlyHasVersions || (isCreatingDocument && selectedReleaseId)) {\n return true\n }\n\n // Draft is disabled when we are creating a new document inside a release\n // or when the document is live edit and there is no draft\n if (!editState?.draft && !isLiveEdit) {\n return false\n }\n\n if (isCreatingDocument && selectedReleaseId) return true\n if (isLiveEdit) return true\n return false\n }, [editState?.draft, isCreatingDocument, isLiveEdit, onlyHasVersions, selectedReleaseId])\n\n const isDraftModelEnabled = workspace.document.drafts?.enabled\n\n const {filteredVersionIds, getVersionDisplay} = useAgentVersionDisplay(\n documentVersions,\n selectedPerspectiveName,\n )\n\n const nonReleaseVersions = filteredVersionIds.filter((versionDocumentId) => {\n if (isPublishedId(versionDocumentId) || isDraftId(versionDocumentId)) {\n return false\n }\n const hasRelease = filteredReleases.currentReleases.some((release) => {\n return getReleaseIdFromReleaseDocumentId(release._id) === getVersionFromId(versionDocumentId)\n })\n return !hasRelease\n })\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 onCopyToDraftsNavigate={handleCopyToDraftsNavigate}\n contextValues={{\n documentId: editState?.published?._id || editState?.id || '',\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType,\n bundleId: 'published',\n isVersion: false,\n disabled: !editState?.published,\n }}\n />\n {isDraftModelEnabled && (\n <VersionChip\n tooltipContent={\n <Text size={1}>\n {editState?.draft ? (\n <>\n {editState?.draft._updatedAt ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.edited-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._updatedAt))}}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.created-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._createdAt))}}\n />\n )}\n </>\n ) : (\n <>\n {isLiveEdit\n ? t('release.chip.tooltip.draft-disabled.live-edit')\n : t('release.chip.tooltip.no-edits')}\n </>\n )}\n </Text>\n }\n selected={isDraftSelected}\n disabled={isDraftDisabled}\n text={t('release.chip.draft')}\n tone={editState?.draft ? 'caution' : 'neutral'}\n onClick={() => handlePerspectiveChange('drafts')}\n onCopyToDraftsNavigate={handleCopyToDraftsNavigate}\n contextValues={{\n documentId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n documentType: documentType,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n bundleId: 'draft',\n isVersion: false,\n }}\n />\n )}\n {filteredReleases.inCreation && (\n <ReleaseTitle\n title={filteredReleases.inCreation.metadata.title}\n fallback={t('release.placeholder-untitled-release')}\n enableTooltip={false}\n >\n {({displayTitle, fullTitle, isTruncated}) => (\n <VersionChip\n tooltipContent={\n isTruncated ? (\n <Stack space={2} style={{maxWidth: '300px'}}>\n <Text size={1} weight=\"medium\">\n {fullTitle}\n </Text>\n <TooltipContent release={filteredReleases.inCreation!} />\n </Stack>\n ) : (\n <TooltipContent release={filteredReleases.inCreation!} />\n )\n }\n selected\n onClick={() => {}}\n locked={false}\n tone={getReleaseTone(filteredReleases.inCreation!)}\n text={displayTitle}\n onCopyToDraftsNavigate={handleCopyToDraftsNavigate}\n contextValues={{\n documentId: displayed?._id || '',\n documentType,\n disabled: true,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n bundleId: getReleaseIdFromReleaseDocumentId(filteredReleases.inCreation!._id),\n isVersion: true,\n release: filteredReleases.inCreation!,\n }}\n />\n )}\n </ReleaseTitle>\n )}\n\n {displayed &&\n filteredReleases.currentReleases?.map((release) => (\n <ReleaseTitle\n key={release._id}\n title={release.metadata.title}\n fallback={t('release.placeholder-untitled-release')}\n enableTooltip={false}\n >\n {({displayTitle, fullTitle, isTruncated}) => (\n <VersionChip\n tooltipContent={\n isTruncated ? (\n <Stack space={2} style={{maxWidth: '300px'}}>\n <Text size={1} weight=\"medium\">\n {fullTitle}\n </Text>\n <TooltipContent release={release} />\n </Stack>\n ) : (\n <TooltipContent release={release} />\n )\n }\n {...getReleaseChipState(release)}\n onClick={() => handlePerspectiveChange(release)}\n text={displayTitle}\n tone={getReleaseTone(release)}\n locked={isReleaseScheduledOrScheduling(release)}\n onCopyToDraftsNavigate={handleCopyToDraftsNavigate}\n contextValues={{\n documentId: displayed?._id || '',\n documentType,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n bundleId: getReleaseIdFromReleaseDocumentId(release._id),\n isVersion: true,\n release,\n isGoingToUnpublish: editState?.version\n ? isGoingToUnpublish(editState?.version as SanityDocumentLike)\n : false,\n }}\n />\n )}\n </ReleaseTitle>\n ))}\n <NonReleaseVersionsSelect\n nonReleaseVersions={nonReleaseVersions}\n selectedPerspective={selectedPerspectiveName}\n onSelectBundle={handlePerspectiveChange}\n onCopyToDraftsNavigate={handleCopyToDraftsNavigate}\n releases={filteredReleases.notCurrentReleases}\n releasesLoading={loading}\n documentType={documentType}\n getVersionDisplay={getVersionDisplay}\n />\n </>\n )\n})\n","import {ArrowLeftIcon, CloseIcon, CollapseIcon, ExpandIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, Flex} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, rgba} from '@sanity/ui/theme'\nimport {\n type ForwardedRef,\n forwardRef,\n memo,\n useCallback,\n useDeferredValue,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {type DocumentActionDescription, useFieldActions, useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {\n PaneContextMenuButton,\n PaneHeader,\n PaneHeaderActionButton,\n RenderActionCollectionState,\n type ResolvedAction,\n usePane,\n usePaneRouter,\n} from '../../../../components'\nimport {type _PaneMenuNode} from '../../../../components/pane/types'\nimport {useHistoryRestoreAction} from '../../../../documentActions/HistoryRestoreAction'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../../../menuNodes'\nimport {useResolvedPanesList} from '../../../../structureResolvers/useResolvedPanesList'\nimport {type PaneMenuItem} from '../../../../types'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {ActionDialogWrapper, ActionMenuListItem} from '../../statusBar/ActionMenuButton'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {FocusDocumentPaneClicked, FocusDocumentPaneCollapsed} from './__telemetry__/focus.telemetry'\nimport {CopyDocumentActions} from './CopyDocumentActions'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {useChipScrollPosition} from './hook/useChipScrollPosition'\nimport {DocumentPerspectiveList} from './perspective/DocumentPerspectiveList'\n\nexport interface DocumentPanelHeaderProps {\n menuItems: PaneMenuItem[]\n}\n\nconst HorizontalScroller = styled(Card)<{$showGradient: boolean}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n scrollbar-width: none;\n z-index: 1;\n flex: 1;\n position: relative;\n > div {\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n }\n\n ${\n props.$showGradient &&\n css`\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 150px;\n background: linear-gradient(to right, ${rgba(theme.color.bg, 0)}, var(--card-bg-color));\n transition: 'opacity 300ms ease-out';\n pointer-events: none;\n }\n `\n }\n `\n})\n\nexport const DocumentPanelHeader = memo(\n forwardRef(function DocumentPanelHeader(\n _props: DocumentPanelHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n ) {\n const {menuItems} = _props\n const {\n editState,\n onMenuAction,\n onPaneClose,\n onPaneSplit,\n onSetMaximizedPane,\n menuItemGroups,\n schemaType,\n connectionState,\n views,\n unstable_languageFilter,\n documentId,\n } = useDocumentPane()\n const {features} = useStructureTool()\n const {index, BackLink, hasGroupSiblings} = usePaneRouter()\n const {maximizedPane} = useResolvedPanesList()\n const {actions: fieldActions} = useFieldActions()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const showGradient = useChipScrollPosition(scrollContainerRef)\n const telemetry = useTelemetry()\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\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 isMaximizedPane = useMemo(() => {\n return (\n maximizedPane?.pane &&\n typeof maximizedPane.pane === 'object' &&\n maximizedPane.pane.type === 'document' &&\n maximizedPane.pane.options.id === documentId\n )\n }, [maximizedPane, documentId])\n\n const handleFocusPane = useCallback(() => {\n onSetMaximizedPane?.()\n\n if (isMaximizedPane) {\n telemetry.log(FocusDocumentPaneCollapsed)\n } else {\n telemetry.log(FocusDocumentPaneClicked)\n }\n }, [onSetMaximizedPane, isMaximizedPane, telemetry])\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\n return (\n <TooltipDelayGroupProvider>\n {collapsed ? (\n <PaneHeader\n border\n ref={ref}\n loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n title={title}\n tabIndex={tabIndex}\n backButton={backButton}\n />\n ) : (\n <Card hidden={collapsed} style={{lineHeight: 0}} borderBottom>\n <Flex gap={3} paddingY={3}>\n <HorizontalScroller $showGradient={showGradient}>\n <Flex\n flex={1}\n gap={1}\n overflow=\"auto\"\n paddingX={3}\n data-testid=\"document-perspective-list\"\n ref={scrollContainerRef}\n >\n <DocumentPerspectiveList />\n </Flex>\n </HorizontalScroller>\n\n <Box flex=\"none\" paddingRight={3}>\n <Flex align=\"center\" gap={1}>\n {unstable_languageFilter.length > 0 && (\n <>\n {unstable_languageFilter.map((LanguageFilterComponent, idx) => {\n return (\n <LanguageFilterComponent\n key={`language-filter-${idx}`}\n schemaType={schemaType}\n />\n )\n })}\n </>\n )}\n\n <CopyDocumentActions />\n {menuButtonNodes.map((item) => (\n <PaneHeaderActionButton key={item.key} node={item} />\n ))}\n {editState && (\n <RenderActionCollectionState group=\"paneActions\">\n {({states}) => (\n <DocumentPanelHeaderActionDialogDeferred\n contextMenuNodes={contextMenuNodes}\n setReferenceElement={setReferenceElement}\n referenceElement={referenceElement}\n states={states}\n />\n )}\n </RenderActionCollectionState>\n )}\n\n {showSplitPaneButton && (\n <Button\n key=\"split-pane-button\"\n aria-label={t('buttons.split-pane-button.aria-label')}\n icon={SplitVerticalIcon}\n mode=\"bleed\"\n onClick={onPaneSplit}\n tooltipProps={{content: t('buttons.split-pane-button.tooltip')}}\n />\n )}\n\n {onSetMaximizedPane && (\n <Button\n key=\"focus-pane-button\"\n aria-label={\n isMaximizedPane\n ? t('buttons.focus-pane-button.aria-label.collapse')\n : t('buttons.focus-pane-button.aria-label.focus')\n }\n icon={isMaximizedPane ? CollapseIcon : ExpandIcon}\n mode=\"bleed\"\n onClick={handleFocusPane}\n tooltipProps={{\n content: isMaximizedPane\n ? t('buttons.focus-pane-button.tooltip.collapse')\n : t('buttons.focus-pane-button.tooltip.focus'),\n }}\n data-testid={\n isMaximizedPane ? 'focus-pane-button-collapse' : 'focus-pane-button-focus'\n }\n />\n )}\n\n {showSplitPaneCloseButton && (\n <Button\n key=\"close-view-button\"\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onPaneClose}\n tooltipProps={{content: t('buttons.split-pane-close-button.title')}}\n />\n )}\n\n {showPaneGroupCloseButton && (\n <Button\n key=\"close-view-button\"\n icon={CloseIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('buttons.split-pane-close-group-button.title')}}\n as={BackLink}\n />\n )}\n </Flex>\n </Box>\n </Flex>\n </Card>\n )}\n </TooltipDelayGroupProvider>\n )\n }),\n)\n\nconst DocumentPanelHeaderActionDialogDeferred = memo(\n function DocumentPanelHeaderActionDialogDeferred(props: {\n states: ResolvedAction[]\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 // 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 states={states.filter((state) =>\n state.action ? state.action !== useHistoryRestoreAction.action : true,\n )}\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 key=\"context-menu\"\n nodes={contextMenuNodes}\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 key={`${badge.label}-${index}`}\n content={badge.title}\n disabled={!badge.title}\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 {TrashIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n getVersionFromId,\n InsufficientPermissionsMessage,\n isAgentBundleName,\n isReleaseScheduledOrScheduling,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useDocumentVersionTypeSortedList,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\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// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useDeleteAction: DocumentActionComponent = ({id, type, draft, version}) => {\n const bundleId = version?._id && getVersionFromId(version._id)\n const isAgentBundle = isAgentBundleName(bundleId)\n const {delete: deleteOp} = useDocumentOperation(id, type, bundleId)\n const [isDeleting, setIsDeleting] = useState(false)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const {sortedDocumentList} = useDocumentVersionTypeSortedList({documentId: id})\n const hasScheduledRelease = sortedDocumentList.some(isReleaseScheduledOrScheduling)\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n }, [])\n\n const handleConfirm = useCallback(\n (versions: string[]) => {\n setConfirmDialogOpen(false)\n setIsDeleting(true)\n deleteOp.execute(versions)\n setIsDeleting(false)\n },\n [deleteOp],\n )\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: bundleId,\n permission: 'delete',\n })\n\n const currentUser = useCurrentUser()\n\n return useMemo(() => {\n if (isAgentBundle) return null\n\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 const getTitle = () => {\n if (hasScheduledRelease) {\n return t('action.delete.disabled.scheduled-release')\n }\n if (deleteOp.disabled) {\n return t(DISABLED_REASON_TITLE_KEY[deleteOp.disabled])\n }\n return ''\n }\n\n return {\n tone: 'critical',\n icon: TrashIcon,\n disabled:\n isDeleting || hasScheduledRelease || Boolean(deleteOp.disabled) || isPermissionsLoading,\n title: getTitle(),\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 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 hasScheduledRelease,\n isAgentBundle,\n id,\n isConfirmDialogOpen,\n isDeleting,\n isPermissionsLoading,\n permissions?.granted,\n t,\n type,\n ])\n}\n\nuseDeleteAction.action = 'delete'\nuseDeleteAction.displayName = 'DeleteAction'\n","import {Text} from '@sanity/ui'\nimport {useId} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface ConfirmDiscardDialogProps {\n onCancel: () => void\n onConfirm: () => void\n publishedExists: boolean\n}\n\n/**\n * A confirmation dialog used to confirm discarding changes.\n * @internal\n */\nexport function ConfirmDiscardDialog({\n publishedExists,\n onCancel,\n onConfirm,\n}: ConfirmDiscardDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const dialogId = `deletion-confirmation-${useId()}`\n\n return (\n <Dialog\n width={1}\n id={dialogId}\n header={t('action.discard-changes.confirm-dialog.header.text')}\n footer={{\n confirmButton: {\n text: t('action.discard-changes.label'),\n onClick: onConfirm,\n },\n }}\n onClose={onCancel}\n onClickOutside={onCancel}\n >\n <Text size={1}>\n {publishedExists\n ? t('action.discard-changes.confirm-dialog.confirm-discard-changes')\n : t('action.discard-changes.confirm-dialog.confirm-discard-changes-draft')}\n </Text>\n </Dialog>\n )\n}\n","import {ResetIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n getVersionFromId,\n InsufficientPermissionsMessage,\n isPublishedId,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDiscardDialog} from '../components/confirmDiscardDialog/ConfirmDiscardDialog'\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// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useDiscardChangesAction: DocumentActionComponent = ({\n id,\n type,\n published,\n liveEdit,\n version,\n draft,\n}) => {\n const bundleId = version?._id && getVersionFromId(version._id)\n const {discardChanges} = useDocumentOperation(id, type, bundleId)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: bundleId,\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 setConfirmDialogOpen(false)\n }, [discardChanges])\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n }, [])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n return useMemo(() => {\n // This document has neither a draft nor a version so there isn't anything to discard\n if (!version && !draft) {\n return null\n }\n // isPublished = we are currently editing the published version and never want to show \"Discard drafts\" in this case\n if (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: isConfirmDialogOpen && {\n type: 'custom',\n component: (\n <ConfirmDiscardDialog\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n publishedExists={Boolean(published)}\n />\n ),\n },\n }\n }, [\n currentUser,\n handleConfirm,\n handleCancel,\n isConfirmDialogOpen,\n discardChanges.disabled,\n published,\n version,\n draft,\n handle,\n isPermissionsLoading,\n isPublished,\n permissions?.granted,\n t,\n ])\n}\n\nuseDiscardChangesAction.action = 'discardChanges'\nuseDiscardChangesAction.displayName = 'DiscardChangesAction'\n","import {CopyIcon} from '@sanity/icons'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n type DuplicateDocumentActionComponent,\n getVersionFromId,\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// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useDuplicateAction: DuplicateDocumentActionComponent = ({\n id,\n type,\n release,\n mapDocument,\n version,\n}) => {\n const documentStore = useDocumentStore()\n const bundleId = version?._id && getVersionFromId(version._id)\n\n const {duplicate} = useDocumentOperation(id, type, bundleId)\n const {navigateIntent} = useRouter()\n const [isDuplicating, setDuplicating] = useState(false)\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'duplicate',\n })\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const currentUser = useCurrentUser()\n\n const handle = useCallback(async () => {\n const dupeId = uuid()\n\n setDuplicating(true)\n\n // set up the listener before executing\n const duplicateSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(id, type)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success')),\n )\n duplicate.execute(dupeId, {mapDocument})\n\n // only navigate to the duplicated document when the operation is successful\n await duplicateSuccess\n navigateIntent('edit', {id: dupeId, type})\n\n setDuplicating(false)\n }, [documentStore.pair, duplicate, id, mapDocument, navigateIntent, 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\nuseDuplicateAction.action = 'duplicate'\nuseDuplicateAction.displayName = 'DuplicateAction'\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}\n\ninterface PublishButtonDisabledInfo {\n /**\n * Associated with a remote event\n * Specifically with the condition editState?.transactionSyncLock?.enabled for publishing a document\n * Which can be triggered by a remote event\n */\n isRemoteEvent: boolean\n}\n\ninterface StageInfo {\n stage: 'started' | 'completed' | 'failed'\n}\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\ninterface DocumentIdInfo {\n documentId: string\n}\n\nexport const PublishButtonClicked = defineEvent<DocumentIdInfo & StageInfo>({\n name: 'Publish Button Clicked',\n version: 1,\n description: 'Logs when a publish operation is started, completed, or failed',\n})\n\nexport const PublishButtonDisabledStart = defineEvent<DocumentIdInfo & PublishButtonDisabledInfo>({\n name: 'Publish Button Becomes Disabled - Started',\n version: 1,\n description: 'Logs when the publish button becomes disabled',\n})\n\nexport const PublishButtonDisabledComplete = defineEvent<\n DocumentIdInfo & PublishButtonDisabledInfo\n>({\n name: 'Publish Button Becomes Disabled - Completed',\n version: 1,\n description: 'Logs when the publish button becomes enabled again',\n})\n","import {PublishIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n getVersionFromId,\n InsufficientPermissionsMessage,\n isPublishedPerspective,\n type TFunction,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useEditState,\n usePerspective,\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 {\n DocumentPublished,\n PublishButtonDisabledComplete,\n PublishButtonDisabledStart,\n PublishButtonClicked,\n} 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\nconst PUBLISHED_STATE = {status: 'published'} 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 <Text>{t('action.publish.already-published.tooltip', {timeSincePublished})}</Text>\n}\n\n// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const usePublishAction: DocumentActionComponent = (props) => {\n const {id, type, liveEdit, draft, published, release, version} = props\n const {selectedPerspective} = usePerspective()\n const [publishState, setPublishState] = useState<\n {status: 'publishing'; publishRevision: string | undefined} | {status: 'published'} | null\n >(null)\n\n const bundleId = version?._id && getVersionFromId(version._id)\n\n const {publish} = useDocumentOperation(id, type, bundleId)\n const {changesOpen, documentId, documentType, value} = useDocumentPane()\n const validationStatus = useValidationStatus(value._id, type, !release)\n const syncState = useSyncState(id, type)\n const editState = useEditState(documentId, documentType, 'default', bundleId)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const revision = (editState?.version || editState?.draft || editState?.published || {})._rev\n const toast = useToast()\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 const title = publish.disabled\n ? getDisabledReason(publish.disabled, (published || {})._updatedAt, t) || ''\n : hasValidationErrors\n ? t('action.publish.validation-issues.tooltip')\n : ''\n\n const currentPublishRevision = published?._rev\n\n const telemetry = useTelemetry()\n\n const doPublish = useCallback(() => {\n publish.execute()\n telemetry.log(PublishButtonClicked, {documentId: id, stage: 'started'})\n setPublishState({status: 'publishing', publishRevision: currentPublishRevision})\n }, [publish, currentPublishRevision, telemetry, id])\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 && validationStatus.revision === revision\n\n if (!publishScheduled || isSyncing || !validationComplete) {\n return\n }\n\n if (!hasValidationErrors) {\n doPublish()\n } else {\n // User tried to publish before validation was complete\n toast.push({\n title: t('action.publish.validation-issues-toast.title'),\n description: t('action.publish.validation-issues-toast.description'),\n status: 'error',\n })\n }\n setPublishScheduled(false)\n }, [\n isSyncing,\n doPublish,\n hasValidationErrors,\n publishScheduled,\n validationStatus.revision,\n revision,\n isValidating,\n validationStatus.isValidating,\n toast,\n t,\n ])\n\n useEffect(() => {\n const didPublish =\n // All we need to check here is for the revision of the current published document\n // to be different from what it was at the time of publish\n // a successful publish will always lead to a new published revision\n publishState?.status === 'publishing' &&\n currentPublishRevision !== publishState.publishRevision\n\n if (didPublish) {\n telemetry.log(PublishButtonClicked, {documentId: id, stage: 'completed'})\n }\n\n const nextState = didPublish ? PUBLISHED_STATE : null\n const delay = didPublish ? 200 : 4000\n const timer = setTimeout(() => {\n if (\n publishState?.status === 'publishing' &&\n currentPublishRevision === publishState.publishRevision\n ) {\n telemetry.log(PublishButtonClicked, {documentId: id, stage: 'failed'})\n }\n setPublishState(nextState)\n }, delay)\n return () => clearTimeout(timer)\n }, [changesOpen, publishState, currentPublishRevision, telemetry, id])\n\n const isWaitingToPublish = Boolean(\n (draft || version) &&\n (publishScheduled || editState?.transactionSyncLock?.enabled || isPermissionsLoading),\n )\n\n useEffect(() => {\n if (!isWaitingToPublish) return undefined\n telemetry.log(PublishButtonDisabledStart, {\n documentId: id,\n isRemoteEvent: editState?.transactionSyncLock?.enabled,\n })\n return () => {\n telemetry.log(PublishButtonDisabledComplete, {\n documentId: id,\n isRemoteEvent: editState?.transactionSyncLock?.enabled,\n })\n }\n }, [isWaitingToPublish, telemetry, id, editState?.transactionSyncLock?.enabled])\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 (isPublishedPerspective(selectedPerspective)) {\n // never show publish action on a published document\n return null\n }\n\n if (release && version) {\n // release versions are not publishable by this action, they should be published as part of a release\n return null\n }\n\n if (liveEdit && !version) {\n // disable publish if liveEdit is true and we're not on a version\n // e.g. if liveEdit is true and we have a version, we want to allow publish\n // note that liveEdit is \"forced\" on version documents as a hack of sorts\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 (published && !draft && !version) {\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?.status === 'publishing' ||\n publishState?.status === 'published' ||\n hasValidationErrors ||\n publish.disabled,\n )\n\n return {\n disabled: disabled || isPermissionsLoading,\n tone: 'default',\n label:\n publishState?.status === 'published'\n ? t('action.publish.published.label')\n : publishScheduled\n ? t('action.publish.validation-in-progress.label')\n : publishState?.status === '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 title: publishScheduled\n ? t('action.publish.waiting')\n : publishState?.status === 'published' || publishState?.status === 'publishing'\n ? null\n : title,\n shortcut: disabled || publishScheduled ? null : 'Ctrl+Alt+P',\n onHandle: handle,\n }\n }, [\n selectedPerspective,\n release,\n liveEdit,\n version,\n draft,\n published,\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 currentUser,\n ])\n}\n\nusePublishAction.action = 'publish'\nusePublishAction.displayName = 'PublishAction'\n","import {UnpublishIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionModalDialogProps,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\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// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useUnpublishAction: DocumentActionComponent = ({\n id,\n type,\n draft,\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 {t} = useTranslation(structureLocaleNamespace)\n const {selectedPerspective} = usePerspective()\n\n const isDraft = selectedPerspective === 'drafts'\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n }, [])\n\n const handleConfirm = useCallback(() => {\n setConfirmDialogOpen(false)\n unpublish.execute()\n }, [unpublish])\n\n const dialog: DocumentActionModalDialogProps | null = useMemo(() => {\n if (isConfirmDialogOpen) {\n return {\n type: 'dialog',\n onClose: handleCancel,\n content: (\n <ConfirmDeleteDialog\n id={draft?._id || id}\n type={type}\n action=\"unpublish\"\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n />\n ),\n }\n }\n\n return null\n }, [draft, id, handleCancel, handleConfirm, isConfirmDialogOpen, 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\nuseUnpublishAction.action = 'unpublish'\nuseUnpublishAction.displayName = 'UnpublishAction'\n","/* eslint-disable camelcase */\nimport {Flex, LayerProvider, Stack, Text} from '@sanity/ui'\nimport {memo, useMemo, useState} from 'react'\nimport {\n Hotkeys,\n isSanityDefinedAction,\n usePausedScheduledDraft,\n usePerspective,\n useSource,\n} from 'sanity'\n\nimport {Button, Tooltip} from '../../../../ui-components'\nimport {RenderActionCollectionState, type ResolvedAction, usePaneRouter} from '../../../components'\nimport {useHistoryRestoreAction} 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 states: ResolvedAction[]\n}\n\nconst DocumentStatusBarActionsInner = memo(function DocumentStatusBarActionsInner(\n props: DocumentStatusBarActionsInnerProps,\n) {\n const {disabled, states} = props\n const {__internal_tasks} = useSource()\n const {editState} = useDocumentPane()\n const {params} = usePaneRouter()\n const showingRevision = Boolean(params?.rev)\n\n const {selectedReleaseId} = usePerspective()\n const [firstActionState, ...menuActionStates] = states\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const {isPaused} = usePausedScheduledDraft()\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 shouldShowScheduleAsFirstActionButton = firstActionState?.action === 'schedule' && isPaused\n\n const showFirstActionButton = showingRevision\n ? Boolean(firstActionState)\n : selectedReleaseId\n ? // For paused drafts, only allow 'schedule' action as primary\n // Otherwise, only show custom (non-Sanity-defined) actions as primary\n firstActionState &&\n (shouldShowScheduleAsFirstActionButton || !isSanityDefinedAction(firstActionState))\n : firstActionState && (!editState?.liveEdit || editState?.version)\n\n const sideMenuItems = useMemo(() => {\n return showFirstActionButton\n ? menuActionStates\n : [firstActionState, ...menuActionStates].filter(Boolean)\n }, [showFirstActionButton, firstActionState, menuActionStates])\n\n return (\n <Flex align=\"center\" gap={1}>\n {__internal_tasks && __internal_tasks.footerAction}\n {showFirstActionButton && (\n <LayerProvider zOffset={200}>\n <Tooltip disabled={!tooltipContent} content={tooltipContent} placement=\"top\">\n <Stack>\n <Button\n data-testid={`action-${toLowerCaseNoSpaces(firstActionState.label)}`}\n disabled={disabled || Boolean(firstActionState.disabled)}\n icon={firstActionState.icon}\n onClick={firstActionState.onHandle}\n ref={setButtonElement}\n text={firstActionState.label}\n tone={firstActionState.tone || 'primary'}\n />\n </Stack>\n </Tooltip>\n </LayerProvider>\n )}\n {sideMenuItems.length > 0 && (\n <ActionMenuButton actionStates={sideMenuItems} disabled={disabled} />\n )}\n {showFirstActionButton && firstActionState && firstActionState.dialog && (\n <ActionStateDialog dialog={firstActionState.dialog} referenceElement={buttonElement} />\n )}\n </Flex>\n )\n})\n\nexport const DocumentStatusBarActions = memo(function DocumentStatusBarActions() {\n return (\n <RenderActionCollectionState group=\"default\">\n {({states}) => <RenderDocumentStatusBarActions states={states} />}\n </RenderActionCollectionState>\n )\n})\n\nfunction RenderDocumentStatusBarActions(props: {states: ResolvedAction[]}) {\n const {connectionState, documentId} = useDocumentPane()\n\n // The restore action has a dedicated place in the UI; it's only visible when the user is viewing\n // a different document revision. It must be omitted from this collection.\n const states = props.states.filter((state) =>\n state.action ? state.action !== useHistoryRestoreAction.action : true,\n )\n\n if (states.length === 0) return null\n\n return (\n <DocumentStatusBarActionsInner\n // Use document ID as key to make sure that the actions state is reset when the document changes\n key={documentId}\n disabled={connectionState !== 'connected'}\n states={states}\n />\n )\n}\n\nexport const HistoryStatusBarActions = memo(function HistoryStatusBarActions() {\n return (\n <RenderActionCollectionState group=\"default\">\n {({states}) => <RenderHistoryStatusBarActions states={states} />}\n </RenderActionCollectionState>\n )\n})\n\nfunction RenderHistoryStatusBarActions({states}: {states: ResolvedAction[]}) {\n const {connectionState, editState, revisionId: revision} = useDocumentPane()\n\n const disabled = (editState?.draft || editState?.published || {})._rev === revision\n\n return (\n <DocumentStatusBarActionsInner\n disabled={connectionState !== 'connected' || Boolean(disabled)}\n // If multiple `restore` actions are defined, ensure only the final one is used.\n states={states\n .filter((state) => (state.action ? state.action === useHistoryRestoreAction.action : false))\n .slice(-1)}\n />\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 ${\n $visible &&\n css`\n opacity: 1;\n pointer-events: auto;\n `\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\nconst 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 key={userId} align=\"center\" gap={2} 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 {/* eslint-disable-next-line react-hooks/static-components -- this is intentional and how the middleware components has to work */}\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","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 // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = () => {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n }\n try {\n run()\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 // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = () => {\n const [sinceId, revId] = timelineStore?.findRangeForSince(sinceChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n }\n try {\n run()\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 const portalElements = useMemo(() => ({[TIMELINE_MENU_PORTAL]: popoverRef}), [popoverRef])\n\n return (\n <PortalProvider __unstable_elements={portalElements}>\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 'motion/react'\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 'motion/react'\nimport {useEffect, useLayoutEffect, 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 {useDocumentPaneInfo} from '../useDocumentPaneInfo'\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\nfunction getDocumentStatusKey(timelineKey: string): string {\n // the status line should show a different label than timeline changes view\n if (timelineKey === 'timeline.operation.published') {\n return 'document-status.last-published'\n }\n return timelineKey\n}\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 function getStatus() {\n if (isPublishedPerspective(selectedPerspective) && editState?.published?._updatedAt) {\n return {\n translationKey: TIMELINE_ITEM_I18N_KEY_MAPPING.published.createDocumentVersion,\n timestamp: editState.published._updatedAt,\n }\n }\n if (editState?.version?._updatedAt) {\n return {\n translationKey:\n editState.version._updatedAt === editState.version._createdAt\n ? TIMELINE_ITEM_I18N_KEY_MAPPING.version.createDocumentVersion\n : TIMELINE_ITEM_I18N_KEY_MAPPING.version.editDocumentVersion,\n timestamp: editState.version._updatedAt,\n }\n }\n if (editState?.draft?._updatedAt) {\n return {\n translationKey:\n editState.draft._updatedAt === editState.draft._createdAt\n ? TIMELINE_ITEM_I18N_KEY_MAPPING.draft.createDocumentVersion\n : TIMELINE_ITEM_I18N_KEY_MAPPING.draft.editDocumentVersion,\n timestamp: editState.draft._updatedAt,\n }\n }\n return null\n }\n const status = getStatus()\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={getDocumentStatusKey(\n TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type],\n )}\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={getDocumentStatusKey(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 {editState, value} = useDocumentPane()\n const {documentId, documentType} = useDocumentPaneInfo()\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/format'\nimport {useContext} from 'react'\nimport {Translate, useTranslation} from 'sanity'\nimport {EventsContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {useDocumentPane} from '../useDocumentPane'\n\nconst StatusText = styled(Text)`\n color: var(--card-muted-fg-color);\n\n em {\n color: var(--card-fg-color);\n font-weight: 500;\n font-style: normal;\n }\n`\n\nexport function RevisionStatusLine(): React.JSX.Element {\n const {displayed, revisionNotFound} = useDocumentPane()\n // Using the context instead of `useEvents` because the context could not exist if the document pane is not using the events store and is instead\n // using the legacy timeline store.\n const events = useContext(EventsContext)\n const revision = events?.revision\n const revisionEvent = events?.events.find((ev) => ev.id === revision?.revisionId)\n\n const {t} = useTranslation()\n const date = revisionEvent?.timestamp || displayed?._updatedAt || displayed?._createdAt\n\n const message = {\n name: 'revision',\n text: date ? (\n <Translate\n t={t}\n i18nKey=\"document-status.revision-from\"\n values={{\n date: format(new Date(date), `MMM d, yyyy '@' pp`),\n }}\n />\n ) : null,\n tone: 'caution',\n }\n\n return (\n <>\n <Flex flex={1} gap={3} padding={2}>\n <Box flex=\"none\">\n <Text size={1}>\n <RestoreIcon />\n </Text>\n </Box>\n <Box flex={1}>\n <StatusText size={1} textOverflow=\"ellipsis\">\n {revisionNotFound ? (\n <Translate t={t} i18nKey=\"document-status.revision-not-found\" />\n ) : (\n message.text\n )}\n </StatusText>\n </Box>\n </Flex>\n </>\n )\n}\n","import {useLayoutEffect} from 'react'\nimport {resizeObserver} from 'sanity'\n\nexport function useResizeObserver({\n element,\n onResize,\n}: {\n element?: HTMLDivElement | null\n onResize: (event: ResizeObserverEntry) => void\n}): void {\n useLayoutEffect(() => {\n if (element) {\n resizeObserver.observe(element, onResize)\n }\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element)\n }\n }\n }, [element, onResize])\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {type Ref, useCallback, useMemo, useState} from 'react'\nimport {\n type CreateLinkMetadata,\n isPublishedPerspective,\n isReleaseDocument,\n isSanityCreateLinked,\n usePerspective,\n useSanityCreateConfig,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {SpacerButton} from '../../../components/spacerButton'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {EMPTY_PARAMS} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {useDocumentTitle} from '../useDocumentTitle'\nimport {DocumentBadges} from './DocumentBadges'\nimport {DocumentStatusBarActions, HistoryStatusBarActions} from './DocumentStatusBarActions'\nimport {DocumentStatusLine} from './DocumentStatusLine'\nimport {RevisionStatusLine} from './RevisionStatusLine'\nimport {useResizeObserver} from './useResizeObserver'\n\nexport interface DocumentStatusBarProps {\n actionsBoxRef?: Ref<HTMLDivElement>\n createLinkMetadata?: CreateLinkMetadata\n}\n\nconst CONTAINER_BREAKPOINT = 480 // px\n\nconst AnimatedCard = motion.create(Card)\n\nexport function DocumentStatusBar(props: DocumentStatusBarProps) {\n const {actionsBoxRef, createLinkMetadata} = props\n const {editState, onChange: onDocumentChange, revisionNotFound} = useDocumentPane()\n const {params = EMPTY_PARAMS} = usePaneRouter()\n const {selectedPerspective} = usePerspective()\n const {title} = useDocumentTitle()\n\n const CreateLinkedActions = useSanityCreateConfig().components?.documentLinkedActions\n\n const showingRevision = Boolean(params.rev)\n const [collapsed, setCollapsed] = useState<boolean | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n const handleResize = useCallback((event: ResizeObserverEntry) => {\n setCollapsed(event.contentRect.width < CONTAINER_BREAKPOINT)\n }, [])\n\n useResizeObserver({element: rootElement, onResize: handleResize})\n\n const shouldRender = useMemo(() => {\n const isReady = Boolean(editState?.ready && typeof collapsed === 'boolean')\n if (selectedPerspective) {\n if (isPublishedPerspective(selectedPerspective)) {\n return isReady && Boolean(editState?.published)\n }\n if (isReleaseDocument(selectedPerspective)) {\n return isReady && Boolean(editState?.version)\n }\n }\n return isReady\n }, [collapsed, editState?.published, editState?.ready, editState?.version, selectedPerspective])\n\n let actions: React.JSX.Element | null = null\n if (createLinkMetadata && isSanityCreateLinked(createLinkMetadata) && CreateLinkedActions) {\n actions = (\n <CreateLinkedActions\n metadata={createLinkMetadata}\n panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n onDocumentChange={onDocumentChange}\n documentTitle={title}\n />\n )\n } else if (showingRevision) {\n actions = <HistoryStatusBarActions />\n } else {\n actions = <DocumentStatusBarActions />\n }\n\n if (showingRevision && revisionNotFound) {\n return null\n }\n\n return (\n <AnimatedCard\n key={showingRevision ? 'revision' : 'published'}\n initial={{opacity: 0.2}}\n animate={{opacity: 1, transition: {duration: 0.3}}}\n tone={showingRevision ? 'caution' : undefined}\n radius={3}\n ref={setRootElement}\n sizing=\"border\"\n padding={2}\n >\n {shouldRender && (\n <Flex\n align=\"stretch\"\n gap={1}\n justify=\"space-between\"\n paddingLeft={showingRevision ? 0 : 1}\n paddingRight={showingRevision ? 0 : 1}\n >\n <Flex align=\"center\" flex={1} gap={collapsed ? 2 : 3} wrap=\"wrap\" paddingRight={3}>\n <Flex align=\"center\">\n {showingRevision ? <RevisionStatusLine /> : <DocumentStatusLine />}\n <SpacerButton />\n </Flex>\n <DocumentBadges />\n </Flex>\n\n <Flex\n align=\"flex-start\"\n justify=\"flex-end\"\n ref={actionsBoxRef}\n style={{flexShrink: 0, marginLeft: 'auto'}}\n >\n <SpacerButton />\n {actions}\n </Flex>\n </Flex>\n )}\n </AnimatedCard>\n )\n}\n","import {isHotkey} from 'is-hotkey-esm'\nimport {type ElementType, type HTMLProps, memo, type Ref, useCallback, useState} from 'react'\nimport {type DocumentActionDescription, LegacyLayerProvider} from 'sanity'\n\nimport {RenderActionCollectionState} from '../../../components'\nimport {ActionStateDialog} from '../statusBar'\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 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 [activeIndex, setActiveIndex] = useState(-1)\n\n const onActionStart = useCallback((idx: number) => {\n setActiveIndex(idx)\n }, [])\n\n return (\n <RenderActionCollectionState>\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 </RenderActionCollectionState>\n )\n },\n)\n\nDocumentActionShortcuts.displayName = 'Memo(DocumentActionShortcuts)'\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {type ComponentType} from 'react'\n\nexport const HiddenCheckmarkIcon: ComponentType = () => (\n <CheckmarkIcon style={{visibility: 'hidden'}} />\n)\n","import {CheckmarkIcon, EarthAmericasIcon, JsonIcon, TransferIcon} from '@sanity/icons'\nimport {\n type DocumentIdStack,\n type DocumentInspector,\n type DocumentInspectorMenuItem,\n type TFunction,\n} from 'sanity'\n\nimport {type PaneMenuItem, type StructureToolFeatures} from '../../types'\nimport {HiddenCheckmarkIcon} from './components/HiddenCheckmarkIcon'\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 displayInlineChanges: boolean\n}\n\nfunction getInspectorItems({\n currentInspector,\n hasValue,\n inspectors,\n inspectorMenuItems,\n}: GetMenuItemsParams): PaneMenuItem[] {\n return inspectors\n .map((inspector, index) => {\n const menuItem = inspectorMenuItems[index]\n\n if (!menuItem || menuItem.hidden) return null\n\n return {\n action: `${INSPECT_ACTION_PREFIX}${inspector.name}`,\n group: menuItem.showAsAction ? undefined : 'inspectors',\n icon: menuItem.icon,\n disabled: !hasValue,\n selected: currentInspector?.name === inspector.name,\n shortcut: menuItem.hotkeys?.join('+'),\n showAsAction: menuItem.showAsAction,\n title: menuItem.title,\n tone: menuItem.tone,\n }\n })\n .filter(Boolean) as PaneMenuItem[]\n}\n\nfunction getInspectItem({hasValue, t}: GetMenuItemsParams): PaneMenuItem {\n return {\n action: 'inspect',\n group: 'inspectors',\n title: t('document-inspector.menu-item.title'),\n icon: JsonIcon,\n disabled: !hasValue,\n shortcut: 'Ctrl+Alt+I',\n }\n}\n\nfunction getCompareVersionsItem({documentIdStack, t}: GetMenuItemsParams): PaneMenuItem | null {\n const disabled = typeof documentIdStack?.previousId === 'undefined' && {\n reason: t('compare-versions.menu-item.disabled-reason'),\n }\n\n return {\n action: 'compareVersions',\n group: 'inspectors',\n title: t('compare-versions.menu-item.title'),\n icon: TransferIcon,\n disabled,\n }\n}\n\nfunction getInlineChangesItem({displayInlineChanges, t}: GetMenuItemsParams): PaneMenuItem {\n return {\n action: 'toggleInlineChanges',\n group: 'inspectors',\n title: t('toggle-inline-changes.menu-item.title'),\n // The simplest way to render no icon, while preserving an icon-sized space, is to render a\n // hidden icon.\n icon: displayInlineChanges ? CheckmarkIcon : HiddenCheckmarkIcon,\n }\n}\n\nfunction 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 getInlineChangesItem(params),\n ].filter(Boolean) as PaneMenuItem[]\n\n return [\n ...inspectorItems,\n\n // TODO: convert to inspector or document view?\n getInspectItem(params),\n\n ...items,\n ]\n}\n","import {Card, Code, Stack, Text} from '@sanity/ui'\nimport {isDev, Translate, useTranslation} from 'sanity'\n\nimport {ErrorPane} from '../../error'\n\ninterface DocumentLayoutErrorProps {\n currentMinWidth?: number\n documentType?: string\n minWidth?: number\n paneKey: string\n value?: Record<string, unknown>\n}\n\nexport function DocumentLayoutError(props: DocumentLayoutErrorProps) {\n const {documentType, value, currentMinWidth, paneKey, minWidth} = props\n const {t} = useTranslation()\n\n return (\n <ErrorPane\n currentMinWidth={currentMinWidth}\n flex={2.5}\n minWidth={minWidth}\n paneKey={paneKey}\n title={\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.title\"\n values={{documentType}}\n />\n }\n tone=\"caution\"\n >\n <Stack space={4}>\n {documentType && (\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.text\"\n values={{documentType}}\n />\n </Text>\n )}\n\n {!documentType && (\n <Text as=\"p\">{t('panes.document-pane.document-unknown-type.without-schema.text')}</Text>\n )}\n\n {isDev && value && (\n /* eslint-disable i18next/no-literal-string */\n <>\n <Text as=\"p\">Here is the JSON representation of the document:</Text>\n\n <Card padding={3} overflow=\"auto\" radius={2} shadow={1} tone=\"inherit\">\n <Code language=\"json\" size={[1, 1, 2]}>\n {JSON.stringify(value, null, 2)}\n </Code>\n </Card>\n </>\n /* eslint-enable i18next/no-literal-string */\n )}\n </Stack>\n </ErrorPane>\n )\n}\n","import {DialogProvider, type DialogProviderProps, PortalProvider} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useMemo} from 'react'\nimport {getSanityCreateLinkMetadata, useZIndex} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {PaneFooter} from '../../../components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {DocumentStatusBar} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n 'fixed',\n 'fixed',\n // And we use the `position: absolute` strategy (within panes) on wide screens.\n 'absolute',\n]\n\nexport function DocumentLayoutFooter({\n documentPanelPortalElement,\n setFooterElement,\n setActionsBoxElement,\n}: {\n documentPanelPortalElement: HTMLElement | null\n setFooterElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n setActionsBoxElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n}) {\n const zOffsets = useZIndex()\n\n const {value} = useDocumentPane()\n const portalElements = useMemo(\n () => ({[DOCUMENT_PANEL_PORTAL_ELEMENT]: documentPanelPortalElement}),\n [documentPanelPortalElement],\n )\n\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n return (\n // These providers are added because we want the dialogs in `DocumentStatusBar` to be scoped to the document pane\n // The portal element comes from `DocumentPanel`.\n <PortalProvider __unstable_elements={portalElements}>\n <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.portal}>\n <PaneFooter ref={setFooterElement} padding={1}>\n <TooltipDelayGroupProvider>\n <DocumentStatusBar\n actionsBoxRef={setActionsBoxElement}\n createLinkMetadata={createLinkMetadata}\n />\n </TooltipDelayGroupProvider>\n </PaneFooter>\n </DialogProvider>\n </PortalProvider>\n )\n}\n","import {DialogProvider, type DialogProviderProps, Flex, useElementRect} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n ChangeConnectorRoot,\n type DocumentFieldActionNode,\n type DocumentInspectorMenuItem,\n FieldActionsProvider,\n FieldActionsResolver,\n GetFormValueProvider,\n type Path,\n useDocumentIdStack,\n useGlobalCopyPasteElementHandler,\n useTranslation,\n useZIndex,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {Pane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {DocumentActionsProvider} from '../../../DocumentActionsProvider'\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 {stickyParams} = useRouter()\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 displayInlineChanges: stickyParams.displayInlineChanges === 'true',\n }),\n [\n currentInspector,\n documentIdStack,\n features,\n hasValue,\n inspectorMenuItems,\n inspectors,\n previewUrl,\n t,\n stickyParams.displayInlineChanges,\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 <DocumentActionsProvider>\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 </DocumentActionsProvider>\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 {type SanityDocument} from '@sanity/types'\nimport {useEffect, useState} from 'react'\nimport {useHistoryStore, useTimelineSelector, useTimelineStore} from 'sanity'\n\nexport const useDocumentLastRev = (documentId: string, documentType: string) => {\n const historyStore = useHistoryStore()\n const [lastRevisionDocument, setLastRevisionDocument] = useState<SanityDocument | null>(null)\n const [loading, setLoading] = useState(false)\n\n // Get the timeline store to access lastNonDeletedRevId\n // needs to be done this way because otherwise the revision id will not be the most updated\n // in case if you edit the document in between deletes, for example\n const timelineStore = useTimelineStore({\n documentId,\n documentType,\n })\n\n // Get the lastNonDeletedRevId from the timeline store\n const lastNonDeletedRevId = useTimelineSelector(\n timelineStore,\n (state) => state.lastNonDeletedRevId,\n )\n\n useEffect(() => {\n if (lastNonDeletedRevId && documentId) {\n setLoading(true)\n historyStore\n .getDocumentAtRevision(documentId, lastNonDeletedRevId)\n .then((document) => {\n setLastRevisionDocument(document || null)\n setLoading(false)\n })\n .catch(() => {\n setLastRevisionDocument(null)\n setLoading(false)\n })\n } else {\n setLastRevisionDocument(null)\n setLoading(false)\n }\n }, [documentId, lastNonDeletedRevId, historyStore])\n\n return {lastRevisionDocument, loading}\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 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 {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({...params, inspect: undefined})\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","import {useTelemetry} from '@sanity/telemetry/react'\nimport {\n type ObjectSchemaType,\n type Path,\n type SanityDocument,\n type SanityDocumentLike,\n} from '@sanity/types'\nimport {fromString as pathFromString, resolveKeyedPath} from '@sanity/util/paths'\nimport {\n type ComponentType,\n useCallback,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n DivergencesProvider,\n type DocumentActionsContext,\n type DocumentActionsVersionType,\n type DocumentFieldAction,\n type EditStateFor,\n EMPTY_ARRAY,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n isCardinalityOneRelease,\n isGoingToUnpublish,\n isPausedCardinalityOneRelease,\n isPerspectiveWriteable,\n isVersionId,\n type PartialContext,\n pathToString,\n type ReleaseDocument,\n selectUpstreamVersion,\n useActiveReleases,\n useCopyPaste,\n useDocumentDivergences,\n useDocumentForm,\n useDocumentIdStack,\n usePerspective,\n useSchema,\n useSource,\n useTranslation,\n useUnique,\n useWorkspace,\n} from 'sanity'\nimport {DocumentPaneContext, DocumentPaneInfoContext} from 'sanity/_singletons'\nimport {useRouter} from 'sanity/router'\n\nimport {usePaneRouter} from '../../components'\nimport {useDiffViewRouter} from '../../diffView/hooks/useDiffViewRouter'\nimport {useDocumentLastRev} from '../../hooks/useDocumentLastRev'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type PaneMenuItem} from '../../types'\nimport {InlineChangesSwitchedOff, InlineChangesSwitchedOn} from './__telemetry__'\nimport {DEFAULT_MENU_ITEM_GROUPS, EMPTY_PARAMS, INSPECT_ACTION_PREFIX} from './constants'\nimport {\n type DocumentPaneContextValue,\n type DocumentPaneInfoContextValue,\n} 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 max-statements\nexport function DocumentPaneProvider(props: DocumentPaneProviderProps) {\n const {\n children,\n index,\n pane,\n paneKey,\n onFocusPath,\n onSetMaximizedPane,\n maximized = false,\n forcedVersion,\n historyStore,\n } = props\n const {\n store: timelineStore,\n error: timelineError,\n ready: timelineReady,\n revisionDocument,\n onOlderRevision,\n sinceDocument,\n isPristine,\n revisionId,\n lastNonDeletedRevId,\n } = historyStore\n\n const schema = useSchema()\n const {setDocumentMeta} = useCopyPaste()\n const {\n document: {\n actions: documentActions,\n badges: documentBadges,\n unstable_fieldActions: fieldActionsResolver,\n unstable_languageFilter: languageFilterResolver,\n drafts: {enabled: draftsEnabled},\n },\n } = useSource()\n const telemetry = useTelemetry()\n const router = useRouter()\n const paneRouter = usePaneRouter()\n const setPaneParams = paneRouter.setParams\n const {\n options,\n menuItemGroups = DEFAULT_MENU_ITEM_GROUPS,\n title = null,\n views: viewsProp = [],\n } = pane\n const paneOptions = useUnique(options)\n const documentIdRaw = paneOptions.id\n const documentId = getPublishedId(documentIdRaw)\n const documentType = options.type\n const params = useUnique(paneRouter.params) || EMPTY_PARAMS\n const perspective = usePerspective()\n\n const {\n document: {\n drafts: {enabled: isDraftModelEnabled},\n },\n beta,\n } = useWorkspace()\n\n const enhancedObjectDialogEnabled = true\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\n return {\n selectedPerspectiveName: perspective.selectedPerspectiveName,\n selectedReleaseId: perspective.selectedReleaseId,\n }\n }, [forcedVersion, perspective.selectedPerspectiveName, perspective.selectedReleaseId])\n\n const {data: releases = EMPTY_ARRAY} = useActiveReleases()\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 const {lastRevisionDocument} = useDocumentLastRev(documentId, documentType)\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 (upstreamEditState: EditStateFor) => {\n const upstream = selectUpstreamVersion(upstreamEditState)\n if (changesOpen) {\n return sinceDocument || upstream\n }\n return upstream || null\n },\n [changesOpen, sinceDocument],\n )\n\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n\n const getIsReadOnly = useCallback(\n (editState: EditStateFor): boolean => {\n const isDeleted = getIsDeleted(editState)\n const seeingHistoryDocument = Boolean(params.rev)\n\n // Check if current perspective is a paused scheduled draft\n const currentRelease = releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === selectedReleaseId,\n )\n const isPaused = isPausedCardinalityOneRelease(currentRelease)\n\n return (\n seeingHistoryDocument ||\n isDeleting ||\n isDeleted ||\n (!isPaused &&\n !isPerspectiveWriteable({\n selectedPerspective: perspective.selectedPerspective,\n isDraftModelEnabled,\n schemaType,\n }).result)\n )\n },\n [\n getIsDeleted,\n isDeleting,\n isDraftModelEnabled,\n params.rev,\n perspective.selectedPerspective,\n schemaType,\n releases,\n selectedReleaseId,\n ],\n )\n\n const getDisplayed = useCallback(\n (value: SanityDocumentLike) => {\n if (onOlderRevision) {\n return revisionDocument || {_id: value._id, _type: value._type}\n }\n\n // If the document is deleted (no draft, published, or version), return the last revision\n const isDeleted = !value._createdAt && !value._updatedAt\n if (isDeleted && lastNonDeletedRevId) {\n // Return the fetched last revision document if available\n if (lastRevisionDocument) {\n return lastRevisionDocument\n }\n }\n\n return value\n },\n [onOlderRevision, revisionDocument, lastNonDeletedRevId, lastRevisionDocument],\n )\n\n const {\n editState,\n upstreamEditState,\n hasUpstreamVersion,\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 changesOpen,\n documentType,\n documentId,\n initialValue: initialValue,\n comparisonValue: getComparisonValue,\n releaseId: selectedPerspectiveName,\n selectedPerspectiveName,\n initialFocusPath: params.path ? pathFromString(params.path) : EMPTY_ARRAY,\n readOnly: getIsReadOnly,\n onFocusPath,\n getFormDocumentValue: getDisplayed,\n displayInlineChanges: router.stickyParams.displayInlineChanges === 'true',\n })\n\n const actionsVersionType = useMemo(\n () =>\n getDocumentVersionType(\n params,\n selectedReleaseId,\n value,\n selectedPerspectiveName,\n draftsEnabled,\n releases,\n ),\n [params, selectedReleaseId, value, selectedPerspectiveName, draftsEnabled, releases],\n )\n\n const documentActionsContext: PartialContext<DocumentActionsContext> = useMemo(\n () => ({\n schemaType: documentType,\n documentId,\n versionType: actionsVersionType,\n releaseId: selectedReleaseId,\n }),\n [documentType, documentId, actionsVersionType, selectedReleaseId],\n )\n\n // Resolve document actions\n const actions = useMemo(\n () => documentActions(documentActionsContext),\n [documentActions, documentActionsContext],\n )\n\n const handlePathOpen = useCallback(\n (path: Path) => {\n onPathOpen(path)\n\n if (enhancedObjectDialogEnabled) {\n const nextPath = pathToString(path)\n if (params.path !== nextPath) {\n setPaneParams({...params, path: nextPath})\n }\n }\n },\n [onPathOpen, params, setPaneParams, enhancedObjectDialogEnabled],\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({\n strict: true,\n displayed,\n documentId,\n editState,\n })\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 toggleInlineChanges = useCallback(() => {\n const nextState = router.stickyParams.displayInlineChanges !== 'true'\n telemetry.log(nextState ? InlineChangesSwitchedOn : InlineChangesSwitchedOff)\n\n router.navigate({\n stickyParams: {\n displayInlineChanges: String(nextState),\n },\n })\n }, [router, telemetry])\n\n const handleMenuAction = useCallback(\n async (item: PaneMenuItem) => {\n if (item.action === 'production-preview' && previewUrl) {\n window.open(previewUrl)\n return true\n }\n\n if (item.action === '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 if (item.action === 'toggleInlineChanges') {\n toggleInlineChanges()\n return true\n }\n\n return false\n },\n [\n previewUrl,\n previousId,\n documentType,\n handleHistoryOpen,\n handleInspectorAction,\n diffViewRouter,\n value._id,\n toggleInlineChanges,\n ],\n )\n\n useEffect(() => {\n setDocumentMeta({documentId, documentType, schemaType: schemaType!, onChange})\n }, [documentId, documentType, schemaType, onChange, setDocumentMeta])\n\n const compareValue = useMemo(\n () => getComparisonValue(upstreamEditState),\n [upstreamEditState, getComparisonValue],\n )\n\n const isDeleted = useMemo(() => getIsDeleted(editState), [editState, getIsDeleted])\n const revisionNotFound = onOlderRevision && !revisionDocument && ready\n\n const currentDisplayed = useMemo(() => {\n if (editState.version && isGoingToUnpublish(editState.version)) {\n return editState.published\n }\n return displayed\n }, [editState.version, editState.published, displayed])\n\n const documentPane: DocumentPaneContextValue = useMemo(\n () =>\n ({\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n displayed: currentDisplayed,\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: handlePathOpen,\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 onSetMaximizedPane,\n maximized,\n openInspector,\n openPath,\n index,\n inspectOpen,\n validation,\n menuItemGroups: menuItemGroups || [],\n paneKey,\n previewUrl,\n ready,\n schemaType: schemaType!,\n hasUpstreamVersion,\n isPermissionsLoading,\n isInitialValueLoading,\n permissions,\n setTimelineRange,\n setIsDeleting,\n isDeleting,\n isDeleted,\n timelineError,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n unstable_languageFilter: languageFilter,\n revisionId,\n revisionNotFound,\n lastNonDeletedRevId,\n lastRevisionDocument,\n }) satisfies DocumentPaneContextValue,\n [\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n currentDisplayed,\n documentId,\n documentIdRaw,\n documentType,\n editState,\n fieldActions,\n focusPath,\n currentInspector,\n inspectors,\n onBlur,\n onChange,\n onFocus,\n handlePathOpen,\n handleHistoryClose,\n handleHistoryOpen,\n handleLegacyInspectClose,\n handleMenuAction,\n handlePaneClose,\n handlePaneSplit,\n onSetActiveFieldGroup,\n onSetCollapsedPath,\n onSetCollapsedFieldSet,\n onSetMaximizedPane,\n maximized,\n openInspector,\n openPath,\n index,\n inspectOpen,\n validation,\n menuItemGroups,\n paneKey,\n previewUrl,\n ready,\n schemaType,\n hasUpstreamVersion,\n isPermissionsLoading,\n isInitialValueLoading,\n permissions,\n setTimelineRange,\n isDeleting,\n isDeleted,\n timelineError,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n languageFilter,\n revisionId,\n revisionNotFound,\n lastNonDeletedRevId,\n lastRevisionDocument,\n ],\n )\n\n const documentPaneInfo: DocumentPaneInfoContextValue = useMemo(\n () => ({\n actions,\n badges,\n documentId,\n documentIdRaw,\n documentType,\n fieldActions,\n index,\n menuItemGroups: menuItemGroups || [],\n maximized,\n onPaneClose: handlePaneClose,\n onPaneSplit: handlePaneSplit,\n onSetMaximizedPane,\n paneKey,\n schemaType: schemaType!,\n title,\n views,\n unstable_languageFilter: languageFilter,\n }),\n [\n actions,\n badges,\n documentId,\n documentIdRaw,\n documentType,\n fieldActions,\n index,\n menuItemGroups,\n maximized,\n handlePaneClose,\n handlePaneSplit,\n onSetMaximizedPane,\n paneKey,\n schemaType,\n title,\n views,\n languageFilter,\n ],\n )\n\n const pathRef = useRef<string | undefined>(undefined)\n const paramPath = params.path\n\n const syncPathFromUrl = useEffectEvent((urlPath: string) => {\n const {path: _path, ...restParams} = params\n\n // Only trigger a programmatic focus when the URL path changed AND the\n // form's openPath doesn't already reflect it. When handlePathOpen updates\n // both the form state and the URL, the form is already in sync — calling\n // onProgrammaticFocus again would re-set focusPath/openPath and cause\n // cascading state updates that flicker nested dialogs.\n const currentOpenPathString = pathToString(openPath)\n if (urlPath !== pathRef.current && urlPath !== currentOpenPathString) {\n const pathFromUrl = resolveKeyedPath(formStateRef.current?.value, pathFromString(urlPath))\n onProgrammaticFocus(pathFromUrl)\n }\n\n if (!enhancedObjectDialogEnabled) {\n paneRouter.setParams(restParams)\n }\n })\n\n useEffect(() => {\n if (ready && paramPath) {\n syncPathFromUrl(paramPath)\n }\n pathRef.current = paramPath\n\n return undefined\n }, [paramPath, ready])\n\n return (\n <DocumentPaneInfoContext.Provider value={documentPaneInfo}>\n <DocumentPaneContext.Provider value={documentPane}>\n <DivergencesProvider\n upstreamEditState={upstreamEditState}\n editState={editState}\n subjectId={documentId}\n schemaType={formState.schemaType}\n displayedId={value._id}\n formState={formState}\n >\n <DivergenceAutofocus onProgrammaticFocus={onProgrammaticFocus} />\n {children}\n </DivergencesProvider>\n </DocumentPaneContext.Provider>\n </DocumentPaneInfoContext.Provider>\n )\n}\n\n// eslint-disable-next-line max-params\nfunction getDocumentVersionType(\n params: Record<string, string | undefined> | undefined,\n selectedReleaseId: string | undefined,\n value: SanityDocumentLike,\n selectedPerspectiveName: string | undefined,\n draftsEnabled: boolean,\n releases: ReleaseDocument[],\n) {\n let version: DocumentActionsVersionType\n switch (true) {\n case Boolean(params?.rev):\n version = 'revision'\n break\n case selectedReleaseId && isVersionId(value._id): {\n // Check if this is a scheduled draft (cardinality one release)\n const releaseDocument = releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === selectedReleaseId,\n )\n\n if (releaseDocument && isCardinalityOneRelease(releaseDocument)) {\n version = 'scheduled-draft'\n } else {\n version = 'version'\n }\n break\n }\n case selectedPerspectiveName === 'published':\n version = 'published'\n break\n case draftsEnabled:\n version = 'draft'\n break\n default:\n version = 'published'\n }\n\n return version\n}\n\nconst DivergenceAutofocus: ComponentType<\n Pick<ReturnType<typeof useDocumentForm>, 'onProgrammaticFocus'>\n> = ({onProgrammaticFocus}) => {\n const divergenceNavigator = useDocumentDivergences()\n\n const focusDivergentPath = useEffectEvent(() => {\n if (typeof divergenceNavigator.state.focusedDivergence !== 'undefined') {\n onProgrammaticFocus(pathFromString(divergenceNavigator.state.focusedDivergence))\n }\n })\n\n useEffect(() => {\n focusDivergentPath()\n }, [divergenceNavigator.state.focusedDivergence])\n\n return null\n}\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 (selectedPerspectiveName.length !== 0) {\n return getVersionId(options.id, selectedPerspectiveName)\n }\n return options.id\n }, [\n archivedReleases,\n historyVersion,\n selectedPerspectiveName,\n options.id,\n showingPublishedOnDraft,\n ])\n\n const eventsStore = useEventsStore({documentId, documentType: options.type, rev, since})\n\n const historyStoreProps = useMemo(\n () => ({\n error: eventsStore.error,\n revisionId: eventsStore.revision?.revisionId || null,\n onOlderRevision: Boolean(rev && !eventsStore.revision?.loading),\n revisionDocument: eventsStore.revision?.document || null,\n sinceDocument: eventsStore.sinceRevision?.document || null,\n ready: !eventsStore.loading,\n isPristine: Boolean(eventsStore.events.length === 0),\n lastNonDeletedRevId:\n eventsStore.events.find(\n (e) => !isDeleteDocumentGroupEvent(e) && !isDeleteDocumentVersionEvent(e),\n )?.id || null,\n }),\n [eventsStore, rev],\n )\n\n const value = useMemo(() => eventsStore, [eventsStore])\n\n return (\n <EventsProvider value={value}>\n {historyVersion ? (\n <PerspectiveProvider\n selectedPerspectiveName={historyVersion}\n excludedPerspectives={EMPTY_ARRAY}\n >\n <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n </PerspectiveProvider>\n ) : (\n <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n )}\n </EventsProvider>\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useMemo, useState} from 'react'\nimport {getPublishedId, useTimelineSelector, useTimelineStore} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentPaneWithLegacyTimelineStore = (props: DocumentPaneProviderProps) => {\n const {pane} = props\n const paneRouter = usePaneRouter()\n const options = usePaneOptions(pane.options, paneRouter.params)\n\n const params = paneRouter.params || EMPTY_PARAMS\n\n const [timelineError, setTimelineError] = useState<Error | null>(null)\n\n const store = useTimelineStore({\n documentId: getPublishedId(options.id),\n documentType: options.type,\n onError: setTimelineError,\n rev: params.rev,\n since: params.since,\n })\n\n const onOlderRevision = useTimelineSelector(store, (state) => state.onOlderRevision)\n const revTime = useTimelineSelector(store, (state) => state.revTime)\n const sinceAttributes = useTimelineSelector(store, (state) => state.sinceAttributes)\n const timelineDisplayed = useTimelineSelector(store, (state) => state.timelineDisplayed)\n const timelineReady = useTimelineSelector(store, (state) => state.timelineReady)\n const isPristine = useTimelineSelector(store, (state) => state.isPristine)\n const lastNonDeletedRevId = useTimelineSelector(store, (state) => state.lastNonDeletedRevId)\n\n const historyStoreProps = useMemo(\n () => ({\n store,\n error: timelineError,\n revisionId: revTime?.id || null,\n onOlderRevision: onOlderRevision,\n revisionDocument: timelineDisplayed as SanityDocument | null,\n sinceDocument: sinceAttributes as SanityDocument | null,\n ready: timelineReady,\n isPristine: Boolean(isPristine),\n lastNonDeletedRevId,\n }),\n [\n store,\n timelineError,\n revTime?.id,\n onOlderRevision,\n timelineDisplayed,\n sinceAttributes,\n timelineReady,\n isPristine,\n lastNonDeletedRevId,\n ],\n )\n return <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n}\n","import {type ReactNode} from 'react'\nimport {PerspectiveProvider, usePerspective} from 'sanity'\n\nimport {usePaneRouter} from '../../components/paneRouter/usePaneRouter'\n\n/**\n * @internal\n * Exposes cardinality one releases as selectedPerspective through PerspectiveContext\n */\nexport function DocumentPerspectiveProvider({children}: {children: ReactNode}) {\n const paneRouter = usePaneRouter()\n const {excludedPerspectives} = usePerspective()\n const {scheduledDraft} = paneRouter.params as {scheduledDraft?: string}\n if (scheduledDraft) {\n return (\n <PerspectiveProvider\n selectedPerspectiveName={scheduledDraft}\n excludedPerspectives={excludedPerspectives}\n >\n {children}\n </PerspectiveProvider>\n )\n }\n return children\n}\n","import {memo, useCallback} from 'react'\nimport {SingleDocReleaseProvider, useSource} from 'sanity'\n\nimport {usePaneRouter} from '../../components/paneRouter/usePaneRouter'\nimport {DocumentEventsPane} from './DocumentEventsPane'\nimport {DocumentPaneWithLegacyTimelineStore} from './DocumentPaneLegacyTimeline'\nimport {DocumentPerspectiveProvider} from './DocumentPerspectiveProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\n/**\n * @internal\n */\nexport const DocumentPaneProviderWrapper = memo((props: DocumentPaneProviderProps) => {\n const source = useSource()\n const {setParams, params} = usePaneRouter()\n const handleSetScheduledDraftPerspective = useCallback(\n (releaseId: string) => {\n setParams(\n {...params, scheduledDraft: releaseId},\n // We need to reset the perspective sticky param when we set the scheduled draft local perspective.\n // this is because the user may be clicking this from another perspective, for example they could be seeing a `release` perspective and then click to see this scheduled draft perspective.\n // the perspective sticky param was set to the release perspective, so we need to remove it.\n // We are changing both the params and the perspective sticky param to ensure that the scheduled draft perspective is set correctly.\n {perspective: ''},\n )\n },\n [params, setParams],\n )\n\n return (\n <DocumentPerspectiveProvider>\n <SingleDocReleaseProvider onSetScheduledDraftPerspective={handleSetScheduledDraftPerspective}>\n {source.beta?.eventsAPI?.documents ? (\n <DocumentEventsPane {...props} />\n ) : (\n <DocumentPaneWithLegacyTimelineStore {...props} />\n )}\n </SingleDocReleaseProvider>\n </DocumentPerspectiveProvider>\n )\n})\nDocumentPaneProviderWrapper.displayName = 'Memo(DocumentPaneProviderWrapper)'\n","import {useEffect, useEffectEvent, useRef} from 'react'\nimport {usePerspective} from 'sanity'\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 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 <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 {/* eslint-disable-next-line react-hooks/static-components -- this is intentional and how the middleware components has to work */}\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 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 {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'\nimport {getPublishedId} from 'sanity'\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={getPublishedId(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 {toString as pathToString} from '@sanity/util/paths'\nimport omit from 'lodash-es/omit.js'\nimport {type ReactNode, useCallback, useMemo} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {useRouter, useRouterState} from 'sanity/router'\n\nimport {type RouterPaneGroup, type RouterPanes, type RouterPaneSibling} from '../../types'\nimport {usePaneLayout} from '../pane/usePaneLayout'\nimport {BackLink} from './BackLink'\nimport {ChildLink} from './ChildLink'\nimport {ParameterizedLink} from './ParameterizedLink'\nimport {ReferenceChildLink} from './ReferenceChildLink'\nimport {type PaneRouterContextValue} from './types'\n\nconst emptyArray: never[] = []\n\n/**\n * @internal\n */\nexport function PaneRouterProvider(props: {\n children: ReactNode\n flatIndex: number\n index: number\n params: Record<string, string | undefined>\n payload: unknown\n siblingIndex: number\n}) {\n const {children, flatIndex, index, params, payload, siblingIndex} = props\n const {navigate, navigateIntent, resolvePathFromState} = useRouter()\n const routerState = useRouterState()\n const {panes, expand} = usePaneLayout()\n const routerPaneGroups: RouterPaneGroup[] = useMemo(\n () => (routerState?.panes || emptyArray) as RouterPanes,\n [routerState?.panes],\n )\n const lastPane = useMemo(() => panes?.[panes.length - 2], [panes])\n\n const groupIndex = index - 1\n\n const createNextRouterState = useCallback(\n (modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup) => {\n const currentGroup = routerPaneGroups[groupIndex] || []\n const currentItem = currentGroup[siblingIndex]\n const nextGroup = modifier(currentGroup, currentItem)\n const nextPanes = [\n ...routerPaneGroups.slice(0, groupIndex),\n nextGroup,\n ...routerPaneGroups.slice(groupIndex + 1),\n ]\n const nextRouterState = {...routerState, panes: nextPanes}\n\n return nextRouterState\n },\n [groupIndex, routerPaneGroups, routerState, siblingIndex],\n )\n\n const modifyCurrentGroup = useCallback(\n (\n modifier: (siblings: RouterPaneGroup, item: RouterPaneSibling) => RouterPaneGroup,\n stickyParams?: Record<string, string>,\n ) => {\n const nextRouterState = createNextRouterState(modifier)\n setTimeout(() => navigate(nextRouterState, stickyParams ? {stickyParams} : undefined), 0)\n return nextRouterState\n },\n [createNextRouterState, navigate],\n )\n\n const createPathWithParams: PaneRouterContextValue['createPathWithParams'] = useCallback(\n (nextParams) => {\n const nextRouterState = createNextRouterState((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ])\n\n return resolvePathFromState(nextRouterState)\n },\n [createNextRouterState, resolvePathFromState, siblingIndex],\n )\n\n const setPayload: PaneRouterContextValue['setPayload'] = useCallback(\n (nextPayload) => {\n modifyCurrentGroup((siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, payload: nextPayload},\n ...siblings.slice(siblingIndex + 1),\n ])\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const setParams: PaneRouterContextValue['setParams'] = useCallback(\n (nextParams, stickyParams) => {\n modifyCurrentGroup(\n (siblings, item) => [\n ...siblings.slice(0, siblingIndex),\n {...item, params: nextParams},\n ...siblings.slice(siblingIndex + 1),\n ],\n stickyParams,\n )\n },\n [modifyCurrentGroup, siblingIndex],\n )\n\n const handleEditReference: PaneRouterContextValue['handleEditReference'] = useCallback(\n ({id, parentRefPath, type, template, version}) => {\n navigate({\n panes: [\n ...routerPaneGroups.slice(0, groupIndex + 1),\n [\n {\n id,\n params: {\n template: template.id,\n parentRefPath: pathToString(parentRefPath),\n type,\n version,\n },\n payload: template.params,\n },\n ],\n ],\n })\n },\n [groupIndex, navigate, routerPaneGroups],\n )\n\n const ctx: PaneRouterContextValue = useMemo(\n () => ({\n // Zero-based index (position) of pane, visually\n index: flatIndex,\n\n // Zero-based index of pane group (within URL structure)\n groupIndex,\n\n // Zero-based index of pane within sibling group\n siblingIndex,\n\n // Payload of the current pane\n payload,\n\n // Params of the current pane\n params,\n\n // Whether or not the pane has any siblings (within the same group)\n hasGroupSiblings: routerPaneGroups[groupIndex]\n ? routerPaneGroups[groupIndex].length > 1\n : false,\n\n // The length of the current group\n groupLength: routerPaneGroups[groupIndex] ? routerPaneGroups[groupIndex].length : 0,\n\n // Current router state for the \"panes\" property\n routerPanesState: routerPaneGroups,\n\n // Curried StateLink that passes the correct state automatically\n ChildLink,\n\n // Curried StateLink that pops off the last pane group\n // Only pass if this is not the first pane\n BackLink: flatIndex ? BackLink : undefined,\n\n // A specialized `ChildLink` that takes in the needed props to open a\n // referenced document to the right\n ReferenceChildLink,\n\n // Similar to `ReferenceChildLink` expect without the wrapping component\n handleEditReference,\n\n // Curried StateLink that passed the correct state, but merges params/payload\n ParameterizedLink,\n\n // Replaces the current pane with a new one\n replaceCurrent: (opts = {}): void => {\n modifyCurrentGroup(() => [\n {id: opts.id || '', payload: opts.payload, params: opts.params || {}},\n ])\n },\n\n // Removes the current pane from the group\n closeCurrent: (): void => {\n modifyCurrentGroup((siblings, item) =>\n siblings.length > 1 ? siblings.filter((sibling) => sibling !== item) : siblings,\n )\n },\n\n // Removes all panes to the right including current\n closeCurrentAndAfter: (expandLast = true): void => {\n if (expandLast && lastPane) {\n expand(lastPane.element)\n }\n navigate({\n panes: routerPaneGroups.slice(0, groupIndex),\n })\n },\n\n // Duplicate the current pane, with optional overrides for payload, parameters\n duplicateCurrent: (options): void => {\n modifyCurrentGroup((siblings, item) => {\n const duplicatedItem = {\n ...item,\n payload: options?.payload || item.payload,\n params: options?.params || item.params,\n }\n\n return [\n ...siblings.slice(0, siblingIndex),\n duplicatedItem,\n ...siblings.slice(siblingIndex),\n ]\n })\n },\n\n // Set the view for the current pane\n setView: (viewId) => {\n const restParams = omit(params, 'view')\n return setParams(viewId ? {...restParams, view: viewId} : restParams)\n },\n\n // Set the parameters for the current pane\n setParams,\n\n // Set the payload for the current pane\n setPayload,\n\n // A function that returns a path with the given parameters\n createPathWithParams,\n\n // Proxied navigation to a given intent. Consider just exposing `router` instead?\n navigateIntent,\n }),\n [\n flatIndex,\n groupIndex,\n siblingIndex,\n payload,\n params,\n routerPaneGroups,\n handleEditReference,\n setParams,\n setPayload,\n createPathWithParams,\n navigateIntent,\n modifyCurrentGroup,\n lastPane,\n navigate,\n expand,\n ],\n )\n\n return <PaneRouterContext.Provider value={ctx}>{children}</PaneRouterContext.Provider>\n}\n","import {Box, Text} from '@sanity/ui'\nimport {isRecord, Translate, useTranslation} from 'sanity'\n\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface UnknownPaneProps {\n isSelected: boolean\n pane: unknown\n paneKey: string\n}\n\n/**\n * @internal\n */\nexport function UnknownPane(props: UnknownPaneProps) {\n const {isSelected, pane, paneKey} = props\n const type = (isRecord(pane) && pane.type) || null\n const {t} = useTranslation(structureLocaleNamespace)\n return (\n <Pane id={paneKey} selected={isSelected}>\n <PaneHeader title={t('panes.unknown-pane-type.title')} />\n <PaneContent>\n <Box padding={4}>\n {typeof type === 'string' ? (\n <Text as=\"p\" muted>\n <Translate\n t={t}\n i18nKey=\"panes.unknown-pane-type.unknown-type.text\"\n values={{type}}\n />\n </Text>\n ) : (\n <Text as=\"p\" muted>\n <Translate t={t} i18nKey=\"panes.unknown-pane-type.missing-type.text\" />\n </Text>\n )}\n </Box>\n </PaneContent>\n </Pane>\n )\n}\n","import isEqual from 'lodash-es/isEqual.js'\nimport {lazy, memo, Suspense} from 'react'\n\nimport {PaneRouterProvider} from '../components/paneRouter'\nimport {type PaneNode} from '../types'\nimport {LoadingPane} from './loading'\nimport {UnknownPane} from './unknown'\n\ninterface StructureToolPaneProps {\n active: boolean\n childItemId: string | null\n groupIndex: number\n index: number\n itemId: string\n pane: PaneNode\n paneKey: string\n params: Record<string, string | undefined> & {perspective?: string}\n payload: unknown\n path: string\n selected: boolean\n siblingIndex: number\n maximized: boolean\n onSetMaximizedPane?: () => void\n}\n\n// TODO: audit this creates separate chunks\nconst paneMap = {\n component: lazy(() => import('./userComponent')),\n document: lazy(() => import('./document/pane')),\n documentList: lazy(() => import('./documentList/pane')),\n list: lazy(() => import('./list')),\n}\n\n/**\n * NOTE: The same pane might appear multiple times (split pane), so use index as tiebreaker\n *\n * @internal\n */\nexport const StructureToolPane = memo(\n function StructureToolPane(props: StructureToolPaneProps) {\n const {\n active,\n childItemId,\n groupIndex,\n index,\n itemId,\n pane,\n paneKey,\n params,\n payload,\n path,\n selected,\n siblingIndex,\n maximized,\n onSetMaximizedPane,\n } = props\n\n const PaneComponent = paneMap[pane.type] || UnknownPane\n\n return (\n <PaneRouterProvider\n flatIndex={index}\n index={groupIndex}\n params={params}\n payload={payload}\n siblingIndex={siblingIndex}\n >\n <Suspense fallback={<LoadingPane paneKey={paneKey} path={path} selected={selected} />}>\n <PaneComponent\n childItemId={childItemId || ''}\n index={index}\n itemId={itemId}\n isActive={active}\n isSelected={selected}\n paneKey={paneKey}\n // @ts-expect-error TS doesn't know how to handle this intersection\n pane={pane}\n maximized={maximized}\n onSetMaximizedPane={onSetMaximizedPane}\n />\n </Suspense>\n </PaneRouterProvider>\n )\n },\n (\n {params: prevParams = {}, payload: prevPayload = null, ...prev},\n {params: nextParams = {}, payload: nextPayload = null, ...next},\n ) => {\n // deeply compare these objects (it's okay, they're small)\n if (!isEqual(prevParams, nextParams)) return false\n if (!isEqual(prevPayload, nextPayload)) return false\n\n const keys = new Set([...Object.keys(prev), ...Object.keys(next)]) as Set<keyof typeof next>\n\n // then shallow equal the rest\n for (const key of keys) {\n if (prev[key] !== next[key]) return false\n }\n\n return true\n },\n)\n","import {type SanityDocumentLike} from '@sanity/types'\nimport {useSchema, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentTitle} from '../panes'\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 const {title} = useDocumentTitle()\n\n if (!schemaType) {\n return <code>{t('doc-title.unknown-schema-type.text', {schemaType: documentValue._type})}</code>\n }\n\n return (\n <>\n {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 {\n type PrepareViewOptions,\n type SanityDocument,\n type SchemaType,\n type SortOrdering,\n} 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 sortOrder?: Pick<SortOrdering, 'by'>\n value: SanityDocument | {_id: string; _type: string}\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, sortOrder, value} = props\n\n const versionsInfo = useDocumentVersionInfo(value._id)\n\n const {perspectiveStack} = usePerspective()\n const viewOptions = useMemo((): PrepareViewOptions | undefined => {\n if (!sortOrder) return undefined\n return {\n ordering: {\n title: '',\n name: '',\n by: sortOrder.by,\n },\n }\n }, [sortOrder])\n const previewStateObservable = useMemo(() => {\n return getPreviewStateObservable(\n props.documentPreviewStore,\n schemaType,\n value._id,\n perspectiveStack,\n viewOptions,\n )\n }, [props.documentPreviewStore, schemaType, value._id, perspectiveStack, viewOptions])\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 SchemaType} from '@sanity/types'\nimport {type ReactNode, useCallback} from 'react'\nimport {\n type FIXME,\n getPublishedId,\n PreviewCard,\n type SanityDocument,\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 | {_id: string; _type: string}\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 {Card, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n getDocumentVariantType,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n ReleaseAvatarIcon,\n ReleaseTitle,\n SanityDefaultPreview,\n type SchemaType,\n useActiveReleases,\n useDocumentPreviewStore,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst EllipsisText = styled(Text)`\n /* text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap; */\n max-width: 120px;\n`\n\nconst VersionItemPreview = ({\n versionId,\n schemaType,\n}: {\n versionId: string\n schemaType: SchemaType\n}) => {\n const {t} = useTranslation()\n\n const documentPreviewStore = useDocumentPreviewStore()\n const documentVariant = getDocumentVariantType(versionId)\n const {data: releases} = useActiveReleases()\n const previewStateObservable = useMemo(() => {\n const perspectiveStack = [\n documentVariant === 'version'\n ? (getVersionFromId(versionId) as string)\n : documentVariant === 'published'\n ? 'published'\n : 'drafts',\n ]\n return getPreviewStateObservable(\n documentPreviewStore,\n schemaType,\n getPublishedId(versionId),\n perspectiveStack,\n )\n }, [documentPreviewStore, schemaType, versionId, documentVariant])\n\n const {\n snapshot,\n original,\n isLoading: previewIsLoading,\n } = useObservable(previewStateObservable, {\n snapshot: null,\n isLoading: true,\n original: null,\n })\n const release = useMemo(() => {\n if (documentVariant !== 'version') {\n return undefined\n }\n return releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === getVersionFromId(versionId),\n )\n }, [releases, versionId, documentVariant])\n\n const systemTitle = useMemo(() => {\n if (documentVariant === 'version') return undefined\n return documentVariant === 'published' ? t('release.chip.published') : t('release.chip.draft')\n }, [documentVariant, t])\n\n const tone = release\n ? getReleaseTone(release)\n : documentVariant === 'published'\n ? 'positive'\n : 'caution'\n\n return (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({\n snapshot,\n original,\n fallback: {\n _id: versionId,\n _type: schemaType.name,\n },\n })}\n isPlaceholder={previewIsLoading}\n icon={schemaType.icon}\n layout={'default'}\n status={\n <Card border radius=\"full\">\n <Card radius={'full'} tone={tone} style={{backgroundColor: 'transparent'}}>\n <Flex align=\"center\" gap={2} paddingY={2} paddingRight={3} paddingLeft={2}>\n <Text size={1}>\n <ReleaseAvatarIcon\n release={documentVariant === 'version' && release ? release : documentVariant}\n />\n </Text>\n {documentVariant === 'version' ? (\n <ReleaseTitle\n title={release?.metadata?.title}\n fallback={getVersionFromId(versionId) as string}\n >\n {({displayTitle}) => (\n <EllipsisText size={1} weight=\"medium\" textOverflow=\"ellipsis\">\n {displayTitle}\n </EllipsisText>\n )}\n </ReleaseTitle>\n ) : (\n <EllipsisText size={1} weight=\"medium\" textOverflow=\"ellipsis\">\n {systemTitle}\n </EllipsisText>\n )}\n </Flex>\n </Card>\n </Card>\n }\n />\n )\n}\n\n/**\n * Given a document id and type, returns a list of the versions of the document with all the previews\n * Also indicates the version of the document in a badge next to the preview.\n *\n */\nexport const VersionsPreviewList = ({\n documentType,\n documentVersions,\n}: {\n documentType: string\n documentVersions: string[]\n}) => {\n const schema = useSchema()\n\n const schemaType = schema.get(documentType)\n if (!schemaType) {\n throw new Error(`Schema type ${documentType} not found`)\n }\n\n return (\n <Card border padding={1} radius={2}>\n <Stack>\n {documentVersions?.map((version) => (\n <VersionItemPreview key={version} versionId={version} schemaType={schemaType} />\n ))}\n </Stack>\n </Card>\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'\nimport {VersionsPreviewList} from './VersionsPreviewList'\n\ntype DeletionConfirmationDialogBodyProps = Required<ReferringDocuments> & {\n documentTitle: React.ReactNode\n action: 'unpublish' | 'delete'\n onReferenceLinkClick?: () => void\n documentId: string\n documentType: string\n documentVersions: string[]\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 documentId,\n documentType,\n onReferenceLinkClick,\n documentVersions,\n}: DeletionConfirmationDialogBodyProps) {\n const schema = useSchema()\n const toast = useToast()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const renderPreviewItem = useCallback(\n (item: {_id: string; _type: string}) => {\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 const confirmationMessage = useCallback(\n () => (\n <Stack space={4}>\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 {action === 'delete' && (\n <VersionsPreviewList documentType={documentType} documentVersions={documentVersions} />\n )}\n </Stack>\n ),\n [t, action, documentTitle, documentType, documentVersions],\n )\n\n if (internalReferences?.totalCount === 0 && crossDatasetReferences?.totalCount === 0) {\n return confirmationMessage()\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 {confirmationMessage()}\n <div>\n <Card borderTop padding={1} />\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 </div>\n\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={1}>\n <Flex direction=\"column\">\n {internalReferences.totalCount > 0 && (\n <Stack as=\"ul\" space={2} data-testid=\"internal-references\">\n {internalReferences?.references.map((item) => (\n <Box key={item._id} as=\"li\">\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: referenceId}, index) => (\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 {referenceId || 'unavailable'}\n </Text>\n {referenceId && (\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 onClick={() => {\n navigator.clipboard.writeText(referenceId).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 */\nexport function 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 {useCallback, useId, useMemo} from 'react'\nimport {getPublishedId, LoadingBlock, useDocumentVersions, 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\nconst DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\nconst 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: (versions: string[]) => 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 const {data: documentVersions, loading: versionsLoading} = useDocumentVersions({\n documentId: getPublishedId(id),\n })\n\n const handleConfirm = useCallback(() => {\n onConfirm(documentVersions)\n }, [onConfirm, documentVersions])\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: handleConfirm,\n }\n : undefined,\n }}\n onClose={onCancel}\n onClickOutside={onCancel}\n >\n <DialogBody>\n {crossDatasetReferences && internalReferences && !isLoading && !versionsLoading ? (\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 documentId={id}\n documentType={type}\n documentVersions={documentVersions}\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 {type ComponentProps, type ForwardedRef, forwardRef, type ReactNode, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, type ButtonProps} from '../../ui-components'\nimport {type PaneMenuItem} from '../types'\n\ntype RouterIntent = NonNullable<PaneMenuItem['intent']>\n\nexport const IntentButton = forwardRef(function IntentButton(\n props: {\n intent: RouterIntent\n } & ButtonProps &\n Omit<ComponentProps<typeof Button>, 'as' | 'href' | 'type'>,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const {intent, ...restProps} = props\n\n const Link = useMemo(\n () =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n forwardRef(function Link(\n linkProps: {children: ReactNode},\n linkRef: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n ref={linkRef}\n searchParams={intent.searchParams}\n />\n )\n }),\n [intent],\n )\n\n return props.disabled ? (\n <Button {...restProps} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n ) : (\n <Button {...restProps} as={Link} data-as=\"a\" ref={ref as ForwardedRef<HTMLButtonElement>} />\n )\n})\n","import {type ComponentProps, type ReactNode} from 'react'\nimport {InsufficientPermissionsMessage, useCurrentUser, useTranslation} from 'sanity'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface InsufficientPermissionsMessageTooltipProps {\n reveal: boolean\n /**\n * delegates to `InsufficientPermissionsMessage`'s `context` prop\n * @see InsufficientPermissionsMessage\n */\n context: ComponentProps<typeof InsufficientPermissionsMessage>['context']\n loading: boolean\n children: ReactNode\n}\n\nexport function InsufficientPermissionsMessageTooltip({\n reveal,\n context,\n loading,\n children,\n}: InsufficientPermissionsMessageTooltipProps) {\n const currentUser = useCurrentUser()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!reveal) {\n return <>{children}</>\n }\n\n return (\n <Tooltip\n content={\n loading ? (\n t('insufficient-permissions-message-tooltip.loading-text')\n ) : (\n <InsufficientPermissionsMessage context={context} currentUser={currentUser} />\n )\n }\n portal\n >\n {/* this wrapping div is to allow mouse events */}\n {/* while the child element is disabled */}\n <div>{children}</div>\n </Tooltip>\n )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type ComponentProps, type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {\n type InitialValueTemplateItem,\n type ReleaseId,\n type Template,\n type TemplatePermissionsResult,\n useGetI18nText,\n usePerspective,\n useTemplatePermissions,\n useTemplates,\n useTranslation,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, MenuButton, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {IntentButton} from '../IntentButton'\nimport {InsufficientPermissionsMessageTooltip} from './InsufficientPermissionsMessageTooltip'\n\nexport type PaneHeaderIntentProps = ComponentProps<typeof IntentButton>['intent']\n\nconst POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n}\n\nconst getIntent = (\n templates: Template[],\n item: InitialValueTemplateItem,\n version?: ReleaseId,\n): PaneHeaderIntentProps | null => {\n const typeName = templates.find((t) => t.id === item.templateId)?.schemaType\n if (!typeName) return null\n\n const baseParams = {\n template: item.templateId,\n type: typeName,\n version,\n id: item.initialDocumentId,\n }\n\n return {\n type: 'create',\n params: item.parameters ? [baseParams, item.parameters] : baseParams,\n searchParams: version ? [['perspective', version]] : undefined,\n }\n}\n\ninterface PaneHeaderCreateButtonProps {\n templateItems: InitialValueTemplateItem[]\n}\n\nexport function PaneHeaderCreateButton({templateItems}: PaneHeaderCreateButtonProps) {\n const templates = useTemplates()\n const {selectedReleaseId} = usePerspective()\n\n const {t} = useTranslation(structureLocaleNamespace)\n const getI18nText = useGetI18nText([...templateItems, ...templates])\n\n const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n templateItems,\n })\n\n const nothingGranted = useMemo(() => {\n return (\n !isTemplatePermissionsLoading &&\n templatePermissions?.length !== 0 &&\n templatePermissions?.every((permission) => !permission.granted)\n )\n }, [isTemplatePermissionsLoading, templatePermissions])\n\n const permissionsById = useMemo(() => {\n if (!templatePermissions) return {}\n return templatePermissions.reduce<Record<string, TemplatePermissionsResult | undefined>>(\n (acc, permission) => {\n acc[permission.id] = permission\n return acc\n },\n {},\n )\n }, [templatePermissions])\n\n if (templateItems.length === 0) return null\n\n if (nothingGranted) {\n return (\n <InsufficientPermissionsMessageTooltip\n context=\"create-document-type\"\n reveal\n loading={isTemplatePermissionsLoading}\n >\n <Button\n aria-label={t('pane-header.disabled-created-button.aria-label')}\n icon={AddIcon}\n data-testid=\"action-intent-button\"\n disabled\n mode=\"bleed\"\n // This button handles the tooltip in a special way, won't reuse the forced tooltip.\n tooltipProps={null}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n if (templateItems.length === 1) {\n const firstItem = templateItems[0]\n const permissions = permissionsById[firstItem.id]\n const disabled = !permissions?.granted\n const intent = getIntent(templates, firstItem, selectedReleaseId)\n if (!intent) return null\n\n return (\n <InsufficientPermissionsMessageTooltip\n reveal={disabled}\n loading={isTemplatePermissionsLoading}\n context=\"create-document-type\"\n >\n <IntentButton\n aria-label={getI18nText(firstItem).title}\n icon={firstItem.icon || AddIcon}\n intent={intent}\n mode=\"bleed\"\n disabled={disabled}\n data-testid=\"action-intent-button\"\n tooltipProps={{content: t('pane-header.create-new-button.tooltip')}}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n return (\n <MenuButton\n button={\n <Button\n icon={AddIcon}\n mode=\"bleed\"\n data-testid=\"multi-action-intent-button\"\n tooltipProps={{content: t('pane-header.create-new-button.tooltip')}}\n />\n }\n id=\"create-menu\"\n menu={\n <Menu>\n {templateItems.map((item, itemIndex) => {\n const permissions = permissionsById[item.id]\n const disabled = !permissions?.granted\n const intent = getIntent(templates, item, selectedReleaseId)\n const template = templates.find((i) => i.id === item.templateId)\n if (!template || !intent) return null\n\n const Link = forwardRef((linkProps, linkRef: ForwardedRef<never>) =>\n disabled ? (\n <button type=\"button\" disabled {...linkProps} ref={linkRef} />\n ) : (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n searchParams={intent.searchParams}\n ref={linkRef}\n />\n ),\n )\n\n Link.displayName = 'Link'\n\n const {title} = getI18nText({\n ...item,\n // replace the title with the template title\n title: item.title || getI18nText(template).title,\n })\n\n return (\n <InsufficientPermissionsMessageTooltip\n key={item.id}\n context=\"create-document-type\"\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-es/uniqBy.js'\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 menu item has an id, update toggle state first\n if (item.id) {\n const toggleHandler = actionHandlers.setMenuItemState\n if (toggleHandler) {\n toggleHandler({_menuItemId: item.id, ...(item.params as Record<string, unknown>)})\n }\n // If no action, or action is 'setMenuItemState' (already handled above), we're done\n if (!item.action || item.action === 'setMenuItemState') {\n return !!toggleHandler\n }\n }\n\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 typeof item.action === 'function'\n ? item.action\n : typeof item.action === 'string'\n ? actionHandlers[item.action]\n : null\n\n if (handler) {\n // Include the menu item's id and selected state in the params passed to the handler\n // Note: isSelected reflects the state AFTER the toggle (since toggle handler runs first)\n const paramsWithId = item.id\n ? {\n ...(item.params as Record<string, unknown>),\n _menuItemId: item.id,\n isSelected: !item.selected,\n }\n : {...(item.params as Record<string, unknown>), isSelected: !item.selected}\n handler(paramsWithId)\n return true\n }\n\n return false\n },\n [actionHandlers],\n )\n\n const menuNodes = useMemo(\n () =>\n resolveMenuNodes({\n actionHandler: handleAction,\n menuItemGroups,\n menuItems: menuItems\n // remove items with `create` intents because those will get combined\n // into one action button (see `initialValueTemplateItemFromMenuItems`)\n .filter((item) => item.intent?.type !== 'create'),\n }),\n [handleAction, menuItemGroups, menuItems],\n )\n\n const actionNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n\n const initialValueTemplateItemFromMenuItems = useMemo(() => {\n return menuItems\n .map((item, menuItemIndex) => {\n if (item.intent?.type !== 'create') return null\n\n const {params} = item.intent\n if (!params) return null\n\n const intentParams = Array.isArray(params) ? params[0] : params\n const templateParams = Array.isArray(params) ? params[1] : undefined\n\n // fallback to the schema type name as the template ID.\n // by default, the initial template values are populated from every\n // document type in the schema\n const templateId = intentParams.template || intentParams.type\n if (!templateId) return null\n\n // eslint-disable-next-line max-nested-callbacks\n const template = templates.find((t) => t.id === templateId)\n // the template doesn't exist then the action might be disabled\n if (!template) return null\n\n const initialDocumentId = intentParams.id\n\n return {\n item,\n template,\n templateParams,\n menuItemIndex,\n initialDocumentId,\n }\n })\n .filter(isNonNullable)\n .map(({initialDocumentId, item, template, menuItemIndex, templateParams}) => {\n const initialValueTemplateItem: InitialValueTemplateItem = {\n id: `menuItem${menuItemIndex}`,\n initialDocumentId,\n templateId: template.id,\n type: 'initialValueTemplateItem',\n title: item.title || template.title,\n i18n: item.i18n || template.i18n,\n icon: item.icon as InitialValueTemplateItem['icon'],\n description: template.description,\n parameters: templateParams,\n schemaType: template.schemaType,\n }\n\n return initialValueTemplateItem\n })\n }, [menuItems, templates])\n\n const combinedInitialValueTemplates = useMemo(() => {\n // this de-dupes create actions\n return uniqBy(\n [...initialValueTemplateItemFromMenuItems, ...initialValueTemplateItemsFromStructure],\n (item) => hashObject([item.initialDocumentId, item.templateId, item.parameters]),\n )\n }, [initialValueTemplateItemFromMenuItems, initialValueTemplateItemsFromStructure])\n\n return (\n <Flex gap={1}>\n <PaneHeaderCreateButton templateItems={combinedInitialValueTemplates} />\n\n {actionNodes.map((node) => (\n <PaneHeaderActionButton key={node.key} node={node} />\n ))}\n\n {contextMenuNodes.length > 0 && <PaneContextMenuButton nodes={contextMenuNodes} />}\n </Flex>\n )\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {type GeneralPreviewLayoutKey, SanityDefaultPreview, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface MissingSchemaTypeProps {\n layout?: GeneralPreviewLayoutKey\n value: SanityDocument\n}\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const {layout, value} = props\n\n return (\n <SanityDefaultPreview\n title={\n <em>\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.title\"\n components={{Code: 'code'}}\n values={{documentType: value._type}}\n />\n </em>\n }\n subtitle={\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.subtitle\"\n components={{Code: 'code'}}\n values={{documentId: value._id}}\n />\n }\n 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 type SortOrdering,\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 sortOrder?: Pick<SortOrdering, 'by'>\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 */\nfunction 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 sortOrder,\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 sortOrder={sortOrder}\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 sortOrder,\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, useContext} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionGroup,\n} from 'sanity'\nimport {DocumentActionsStateContext} from 'sanity/_singletons'\n\nexport interface ResolvedAction extends DocumentActionDescription {\n action?: DocumentActionComponent['action']\n}\n\n/** @internal */\nexport interface RenderActionCollectionProps {\n children: (props: {states: ResolvedAction[]}) => React.ReactNode\n group?: DocumentActionGroup\n}\n\n/** @internal */\nexport const RenderActionCollectionState = memo((props: RenderActionCollectionProps) => {\n const {children, group} = props\n const states = useContext(DocumentActionsStateContext)\n\n if (states === null) {\n throw new Error('DocumentActionsStateContext is not set. This should not happen.')\n }\n\n const filteredStates = group\n ? states.filter((state) => {\n const hookGroup = state.group || ['default']\n return hookGroup.includes(group)\n })\n : states\n\n return children({states: filteredStates})\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 {distinctUntilChanged, filter, map, type Observable, of, startWith, switchMap} from 'rxjs'\nimport {mergeMapArray} from 'rxjs-mergemap-array'\nimport {\n type DocumentPreviewStore,\n getPublishedId,\n type SanityClient,\n type SanityDocument,\n} from 'sanity'\n\nimport {type IncomingReferencesFilterResolver, type IncomingReferencesOptions} from './types'\n\nexport const INITIAL_STATE = {\n documents: [],\n loading: true,\n}\n\nasync function resolveRawFilterCallback(\n filterResolver: IncomingReferencesFilterResolver,\n {\n document,\n getClient,\n }: {document: SanityDocument; getClient: (options: {apiVersion: string}) => SanityClient},\n) {\n const resolvedFilter = await filterResolver({document, getClient})\n if (typeof resolvedFilter === 'string') {\n return {filter: resolvedFilter, filterParams: undefined}\n }\n return resolvedFilter\n}\n\ninterface InputIncomingReferencesOptions {\n documentId: string\n documentPreviewStore: DocumentPreviewStore\n getClient: (options: {apiVersion: string}) => SanityClient\n type?: string\n filter?: IncomingReferencesOptions['filter']\n filterParams?: IncomingReferencesOptions['filterParams']\n}\n\ninterface InspectorIncomingReferencesOptions {\n documentId: string\n documentPreviewStore: DocumentPreviewStore\n getClient: (options: {apiVersion: string}) => SanityClient\n type?: undefined\n filter?: undefined\n filterParams?: undefined\n}\n\nexport function getIncomingReferences({\n documentId,\n documentPreviewStore,\n type,\n filter: filterQueryRaw,\n filterParams: filterParamsRaw,\n getClient,\n}: InspectorIncomingReferencesOptions | InputIncomingReferencesOptions): Observable<{\n documents: SanityDocument[]\n loading: boolean\n}> {\n const publishedId = getPublishedId(documentId)\n const filterResolver: Observable<{\n filter: string | undefined\n filterParams?: Record<string, unknown> | undefined\n }> =\n typeof filterQueryRaw === 'function'\n ? documentPreviewStore.unstable_observeDocument(documentId).pipe(\n distinctUntilChanged((a, b) => a?._rev === b?._rev),\n switchMap((document) =>\n resolveRawFilterCallback(filterQueryRaw, {\n document: document as SanityDocument,\n getClient,\n }),\n ),\n map((resolvedFilter) => ({\n filter: resolvedFilter.filter,\n filterParams: resolvedFilter.filterParams || filterParamsRaw,\n })),\n )\n : of({filter: filterQueryRaw, filterParams: filterParamsRaw})\n\n return filterResolver.pipe(\n distinctUntilChanged(\n (a, b) =>\n a.filter === b.filter && JSON.stringify(a.filterParams) === JSON.stringify(b.filterParams),\n ),\n switchMap(({filter: filterQuery, filterParams}) => {\n return documentPreviewStore\n .unstable_observeDocumentIdSet(\n `references(\"${publishedId}\") ${type ? `&& _type == \"${type}\"` : ''} ${filterQuery ? `&& ${filterQuery}` : ''}`,\n filterParams,\n {insert: 'append'},\n )\n .pipe(\n map((state) => state.documentIds),\n mergeMapArray((id: string) => {\n return documentPreviewStore.unstable_observeDocument(id).pipe(\n filter(Boolean),\n map((doc) => doc),\n )\n }),\n // Remove duplicates due to different versions of the same document.\n map((documents) => {\n const seenPublishedId: string[] = []\n return documents.filter((doc) => {\n const pId = getPublishedId(doc._id)\n if (seenPublishedId.includes(pId)) return false\n seenPublishedId.push(pId)\n return true\n })\n }),\n\n map((documents) => ({documents, loading: false})),\n startWith(INITIAL_STATE),\n )\n }),\n )\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const INCOMING_REFERENCES_ITEM_HEIGHT = 51\nconst INCOMING_REFERENCES_MAX_VISIBLE_ITEMS = 10\n\nexport const IncomingReferencesListContainer = styled(Box)<{$itemCount: number}>`\n height: ${({$itemCount}) =>\n Math.min($itemCount, INCOMING_REFERENCES_MAX_VISIBLE_ITEMS) *\n INCOMING_REFERENCES_ITEM_HEIGHT}px;\n`\n","import {Box, Flex} from '@sanity/ui'\nimport {CrossDatasetReferencePreview, PreviewCard} from 'sanity'\n\nimport {type CrossDatasetIncomingReference} from '../types'\nimport {type CrossDatasetIncomingReferenceDocument} from './getCrossDatasetIncomingReferences'\n\nexport function CrossDatasetIncomingReferenceDocumentPreview({\n type,\n document,\n}: {\n document: CrossDatasetIncomingReferenceDocument\n type?: CrossDatasetIncomingReference\n}) {\n const studioUrl = type?.studioUrl?.({id: document.id, type: document.type})\n return (\n <Flex key={document.id} gap={1} align=\"center\">\n <Box flex={1}>\n <PreviewCard\n data-as={studioUrl ? 'a' : 'div'}\n flex={1}\n radius={2}\n paddingRight={studioUrl ? 3 : 0}\n tone=\"inherit\"\n __unstable_focusRing\n tabIndex={0}\n {...(studioUrl\n ? {href: studioUrl, target: '_blank', rel: 'noopener noreferrer', as: 'a'}\n : {})}\n >\n <CrossDatasetReferencePreview\n availability={document.availability}\n hasStudioUrl={Boolean(studioUrl)}\n showStudioUrlIcon={Boolean(studioUrl)}\n preview={document.preview}\n refType={\n type\n ? {\n type: type.type,\n title: document.preview.published?.title,\n icon: () => null,\n preview: type.preview,\n }\n : undefined\n }\n projectId={document.projectId}\n dataset={document.dataset}\n id={document.id}\n showTypeLabel={false}\n />\n </PreviewCard>\n </Box>\n </Flex>\n )\n}\n","import {DocumentIcon} from '@sanity/icons'\nimport {type PreviewValue} from '@sanity/types'\nimport {map, type Observable, of, startWith} from 'rxjs'\nimport {mergeMapArray} from 'rxjs-mergemap-array'\nimport {\n type DocumentAvailability,\n type DocumentPreviewStore,\n getPreviewPaths,\n getPublishedId,\n isNonNullable,\n prepareForPreview,\n type SanityClient,\n} from 'sanity'\n\nimport {fetchCrossDatasetReferences} from '../../confirmDeleteDialog/useReferringDocuments'\nimport {type CrossDatasetIncomingReference} from '../types'\n\nconst INITIAL_STATE = {\n documents: [],\n loading: true,\n}\n\ninterface InputIncomingReferencesOptions {\n documentId: string\n type: CrossDatasetIncomingReference\n client: SanityClient\n documentPreviewStore: DocumentPreviewStore\n}\ninterface InspectorIncomingReferencesOptions {\n documentId: string\n client: SanityClient\n documentPreviewStore: DocumentPreviewStore\n type?: undefined\n}\n\ninterface CompleteReferencesResponse {\n documentId: string\n projectId: string\n datasetName: string\n}\n\nexport interface CrossDatasetIncomingReferenceDocument {\n id: string\n type: string\n availability: DocumentAvailability | null\n preview: {\n published: PreviewValue | undefined\n }\n projectId: string\n dataset: string\n}\nexport function getCrossDatasetIncomingReferences({\n documentId,\n type,\n client,\n documentPreviewStore,\n}: InputIncomingReferencesOptions | InspectorIncomingReferencesOptions): Observable<{\n documents: CrossDatasetIncomingReferenceDocument[]\n loading: boolean\n}> {\n // Here we get all the references to this document from the any other dataset\n return fetchCrossDatasetReferences(documentId, {versionedClient: client}).pipe(\n map((result) => {\n if (!result) return []\n if (!type?.dataset) {\n // Return all the references that contain a datasetName and a documentId.\n return result.references.filter(\n (ref) => ref.documentId && ref.datasetName,\n ) as CompleteReferencesResponse[]\n }\n // Return all the references with document id and where the datasetName matches with the dataset provided.\n return result.references.filter(\n (ref) => ref.datasetName === type.dataset && ref.documentId,\n ) as CompleteReferencesResponse[]\n }),\n // Now that we have all the references from the dataset the user defined, we need to get the document type from the documentId\n mergeMapArray((document) =>\n documentPreviewStore\n .observeDocumentTypeFromId(getPublishedId(document.documentId), {\n dataset: document.datasetName,\n projectId: document.projectId,\n })\n .pipe(map((documentType) => ({...document, documentType}))),\n ),\n\n mergeMapArray((document) => {\n if (!document.documentType) return of(null)\n if (!type) {\n // If we don't have a type defined with the preview we can't derive how the document preview will look\n // So let's use the document Id as the title, dataset name as subtitle and a default icon.\n // as next step we will implement an option to configure the inspector and provide a preview and url config\n // for each of the types.\n return of({\n type: document.documentType,\n id: document.documentId,\n preview: {\n published: {\n _id: document.documentId,\n title: `Document Id: ${document.documentId}`,\n subtitle: `Dataset: ${document.datasetName} - Project Id: ${document.projectId}`,\n media: <DocumentIcon />,\n } as PreviewValue,\n },\n availability: {available: true, reason: 'READABLE'} as const,\n projectId: document.projectId,\n dataset: document.datasetName,\n })\n }\n\n // We filter the documents so only the documents of the type the user defined are included\n if (document.documentType !== type.type) return of(null)\n const previewPaths = getPreviewPaths(type.preview) || []\n // Now we get the preview values for the document so we can display it in the preview\n return documentPreviewStore\n .observePaths({_id: getPublishedId(document.documentId)}, previewPaths, {\n dataset: document.datasetName,\n projectId: document.projectId,\n })\n .pipe(\n map((result) => {\n const previewValue = prepareForPreview(result, {\n type: type.type,\n title: type.title || '',\n icon: () => <DocumentIcon />,\n preview: type.preview,\n })\n return {\n type: document.documentType as string,\n id: document.documentId,\n preview: {\n published: {\n ...previewValue,\n media: previewValue.media ?? <DocumentIcon />,\n },\n },\n availability: {available: true, reason: 'READABLE'} as const,\n projectId: document.projectId,\n dataset: document.datasetName,\n }\n }),\n )\n }),\n map((documents) => ({documents: documents.filter(isNonNullable), loading: false})),\n startWith(INITIAL_STATE),\n )\n}\n","import {Box, Menu} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useCallback, useState} from 'react'\nimport {\n ContextMenuButton,\n GetHookCollectionState,\n LegacyLayerProvider,\n type SanityDocument,\n useSource,\n} from 'sanity'\n\nimport {MenuButton} from '../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../ui-components/menuItem/MenuItem'\nimport {ActionStateDialog} from '../../panes/document/statusBar/ActionStateDialog'\nimport {\n type IncomingReferenceAction,\n type IncomingReferenceActionDescription,\n type IncomingReferenceActionsContext,\n} from './types'\n\nconst IncomingReferenceDocumentActionsInner = ({\n states,\n document,\n setIsExecutingAction,\n isExecutingAction,\n}: {\n states: IncomingReferenceActionDescription[]\n document: SanityDocument\n setIsExecutingAction: Dispatch<SetStateAction<boolean>>\n isExecutingAction: boolean\n}) => {\n const [actionIndex, setActionIndex] = useState(-1)\n const [referenceElement, setReferenceElement] = useState<HTMLDivElement | null>(null)\n const currentAction = states[actionIndex]\n\n if (!states.length) return null\n return (\n <>\n <Box ref={setReferenceElement}>\n <MenuButton\n button={<ContextMenuButton loading={isExecutingAction} />}\n id={`${document._id}-menuButton`}\n menu={\n <Menu>\n {states.map((action, index) => (\n <MenuItem\n key={action.label}\n text={action.label}\n icon={action.icon}\n tone={action.tone}\n disabled={Boolean(action.disabled)}\n onClick={async () => {\n setActionIndex(index)\n setIsExecutingAction(true)\n await action.onHandle?.()\n setIsExecutingAction(false)\n }}\n />\n ))}\n </Menu>\n }\n popover={{portal: true, tone: 'default'}}\n />\n </Box>\n {currentAction && currentAction.dialog && (\n <LegacyLayerProvider zOffset=\"pane\">\n <ActionStateDialog dialog={currentAction.dialog} referenceElement={referenceElement} />\n </LegacyLayerProvider>\n )}\n </>\n )\n}\n\nexport const IncomingReferenceDocumentActions = (props: {\n document: SanityDocument\n actions: IncomingReferenceAction[]\n isExecutingAction: boolean\n setIsExecutingAction: Dispatch<SetStateAction<boolean>>\n}) => {\n const {document, actions, setIsExecutingAction, isExecutingAction} = props\n const {getClient} = useSource()\n\n const renderActions = useCallback<\n (props: {states: IncomingReferenceActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <IncomingReferenceDocumentActionsInner\n key={document._id}\n states={states}\n document={document}\n setIsExecutingAction={setIsExecutingAction}\n isExecutingAction={isExecutingAction}\n />\n ),\n [document, setIsExecutingAction, isExecutingAction],\n )\n\n return (\n <GetHookCollectionState<IncomingReferenceActionsContext, IncomingReferenceActionDescription>\n hooks={actions}\n args={{document, getClient}}\n >\n {renderActions}\n </GetHookCollectionState>\n )\n}\n","import {type Path, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {type ReactNode, useCallback} from 'react'\nimport {\n type FIXME,\n getPublishedId,\n pathToString,\n PreviewCard,\n useDocumentPresence,\n useDocumentPreviewStore,\n} from 'sanity'\n\nimport {PaneItemPreview} from '../paneItem/PaneItemPreview'\nimport {usePaneRouter} from '../paneRouter'\n\ninterface IncomingReferencePreviewProps {\n onClick?: () => void\n type: SchemaType\n value: SanityDocument\n path: Path\n}\n\nexport function IncomingReferencePreview(props: IncomingReferencePreviewProps) {\n const {onClick, type, value, path} = props\n const publishedId = getPublishedId(value?._id)\n const documentPresence = useDocumentPresence(publishedId)\n const documentPreviewStore = useDocumentPreviewStore()\n const {ChildLink} = usePaneRouter()\n\n const Link = useCallback(\n function LinkComponent(linkProps: {children: ReactNode}) {\n return (\n <ChildLink\n childId={getPublishedId(value?._id)}\n childParameters={{type: type.name, path: pathToString(path)}}\n {...linkProps}\n />\n )\n },\n [ChildLink, type.name, value?._id, path],\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 || false}\n layout=\"default\"\n presence={documentPresence}\n schemaType={type}\n value={value}\n />\n </PreviewCard>\n )\n}\n","import {Box, Card, Flex, Text} from '@sanity/ui'\nimport {motion, type Variants} from 'motion/react'\nimport {useCallback, useState} from 'react'\nimport {\n getPublishedId,\n getReferencePaths,\n pathToString,\n SanityDefaultPreview,\n type SanityDocument,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {usePaneRouter} from '../paneRouter'\nimport {IncomingReferenceDocumentActions} from './IncomingReferenceDocumentActions'\nimport {IncomingReferencePreview} from './IncomingReferencePreview'\nimport {type IncomingReferencesOptions} from './types'\n\nconst Root = motion.create(Flex)\n\nconst variants: Variants = {\n initial: {opacity: 0},\n animate: {opacity: 1},\n actionInProgress: {\n opacity: [0.5, 1, 0.5],\n transition: {\n duration: 1.8,\n repeat: Infinity,\n ease: 'easeInOut',\n },\n },\n}\nconst ErrorCard = ({message}: {message: string}) => (\n <Card border radius={2} padding={1} tone=\"critical\">\n <Box paddingY={4} paddingX={3}>\n <Text size={1}>{message}</Text>\n </Box>\n </Card>\n)\n\nexport const IncomingReferenceDocument = (props: {\n document: SanityDocument\n referenceToId: string\n actions: IncomingReferencesOptions['actions']\n}) => {\n const {document, referenceToId, actions} = props\n const referencePaths = getReferencePaths(document, referenceToId)\n const [isExecutingAction, setIsExecutingAction] = useState(false)\n const id = document._id\n const schema = useSchema()\n const {navigate} = useRouter()\n const {routerPanesState, groupIndex} = usePaneRouter()\n const type = document?._type\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleClick = useCallback(() => {\n if (!referencePaths.length) {\n // This should not happen because if we don't have reference paths, then this function won't be passed to the\n // IncomingReferencePreview component\n throw new Error('No reference paths found')\n }\n navigate({\n panes: [\n ...routerPanesState.slice(0, groupIndex + 1),\n [{id: getPublishedId(id), params: {type, path: pathToString(referencePaths[0])}}],\n ],\n })\n }, [routerPanesState, groupIndex, type, navigate, id, referencePaths])\n\n const schemaType = schema.get(type)\n\n if (!schemaType)\n return <ErrorCard message={t('incoming-references-input.schema-type-not-found', {type})} />\n\n return (\n <Root\n initial=\"initial\"\n animate={isExecutingAction ? 'actionInProgress' : 'animate'}\n gap={1}\n align=\"center\"\n variants={variants}\n >\n <Box flex={1}>\n {/* In some cases when the document has been recently linked the value we get\n in the listener is not the latest, but a previous value with the document not yet linked, this handles that */}\n {referencePaths.length > 0 ? (\n <IncomingReferencePreview\n type={schemaType}\n value={document}\n onClick={handleClick}\n path={referencePaths[0]}\n />\n ) : (\n <SanityDefaultPreview icon={schemaType.icon} layout={'default'} isPlaceholder />\n )}\n </Box>\n\n {actions && actions?.length > 0 && (\n <IncomingReferenceDocumentActions\n document={document}\n actions={actions}\n isExecutingAction={isExecutingAction}\n setIsExecutingAction={setIsExecutingAction}\n />\n )}\n </Root>\n )\n}\n","import {nanoid} from 'nanoid'\n\n// `WeakMap`s require the first type param to extend `object`\nconst randomIdCache = new WeakMap<object, string>()\n\n/**\n * given an object, this function randomly generates an ID and returns it. this\n * result is then saved in a WeakMap so subsequent requests for the same object\n * will receive the same ID\n */\nexport function assignId(obj: object): string {\n const cachedValue = randomIdCache.get(obj)\n if (cachedValue) return cachedValue\n\n const id = nanoid()\n randomIdCache.set(obj, id)\n return id\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","import {type SanityDocument} from '@sanity/types'\nimport {Box, Container, Flex, Heading, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n ErrorActions,\n type GeneralPreviewLayoutKey,\n getPublishedId,\n isDev,\n LoadingBlock,\n SanityDefaultPreview,\n Translate,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay, PaneContent, PaneItem, usePane, usePaneLayout} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {FULL_LIST_LIMIT} from './constants'\nimport {type DocumentListPaneItem, type LoadingVariant, type SortOrder} from './types'\n\nconst RootBox = styled(Box)<{$opacity?: number}>`\n position: relative;\n opacity: ${(props) => props.$opacity || 1};\n transition: opacity 0.4s;\n`\n\nconst CommandListBox = styled(Box)`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n`\n\ninterface DocumentListPaneContentProps {\n childItemId?: string\n error: {message: string} | null\n filterIsSimpleTypeConstraint: boolean\n hasMaxItems?: boolean\n muted?: boolean\n hasSearchQuery: boolean\n isActive?: boolean\n isLazyLoading: boolean\n isLoading: boolean\n isConnected?: boolean\n autoRetry?: boolean\n canRetry: boolean\n retryCount?: number\n isRetrying?: boolean\n items: DocumentListPaneItem[]\n layout?: GeneralPreviewLayoutKey\n loadingVariant?: LoadingVariant\n onEndReached: () => void\n onRetry?: () => void\n paneTitle: string\n searchInputElement: HTMLInputElement | null\n showIcons: boolean\n sortOrder?: SortOrder\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 key={num} isPlaceholder layout={layout} />\n ))}\n </Stack>\n )\n}\n\nexport function DocumentListPaneContent(props: DocumentListPaneContentProps) {\n const {\n childItemId,\n error,\n isRetrying,\n autoRetry,\n filterIsSimpleTypeConstraint,\n hasMaxItems,\n hasSearchQuery,\n isActive,\n isLazyLoading,\n muted,\n isLoading,\n isConnected,\n retryCount,\n canRetry,\n items,\n layout,\n loadingVariant,\n onEndReached,\n onRetry,\n paneTitle,\n searchInputElement,\n showIcons,\n sortOrder,\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 ? undefined : false}\n id={publishedId}\n layout={layout}\n marginBottom={1}\n pressed={pressed}\n schemaType={schema.get(item._type)}\n selected={selected}\n sortOrder={sortOrder}\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 [\n childItemId,\n isActive,\n items.length,\n layout,\n schema,\n showIcons,\n sortOrder,\n hasMaxItems,\n isLazyLoading,\n t,\n ],\n )\n\n const noDocumentsContent = useMemo(() => {\n if (hasSearchQuery) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {t('panes.document-list-pane.no-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }\n\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {filterIsSimpleTypeConstraint\n ? t('panes.document-list-pane.no-documents-of-type.text')\n : t('panes.document-list-pane.no-matching-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }, [filterIsSimpleTypeConstraint, hasSearchQuery, t])\n\n const mainContent = useMemo(() => {\n if (!shouldRender) {\n return null\n }\n\n const isOnline = window.navigator.onLine\n if (error) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Stack paddingX={4} paddingY={5} space={4}>\n <Heading as=\"h3\">{t('panes.document-list-pane.error.title')}</Heading>\n <Text as=\"p\">\n {isDev ? (\n <Translate\n t={t}\n i18nKey=\"panes.document-list-pane.error.text.dev\"\n values={{error: error.message}}\n components={{Code: ({children}) => <code>{children}</code>}}\n />\n ) : isOnline ? (\n t('panes.document-list-pane.error.text')\n ) : (\n t('panes.document-list-pane.error.text.offline')\n )}\n </Text>\n <ErrorActions\n error={error}\n eventId={null}\n onRetry={isOnline && canRetry ? onRetry : undefined}\n isRetrying={isRetrying}\n />\n {canRetry ? (\n <Text as=\"p\" muted size={1}>\n {isRetrying\n ? t('panes.document-list-pane.error.retrying', {count: retryCount})\n : autoRetry\n ? t('panes.document-list-pane.error.will-retry-automatically', {\n count: retryCount,\n })\n : t('panes.document-list-pane.error.max-retries-attempted', {\n count: retryCount,\n })}\n </Text>\n ) : null}\n </Stack>\n </Container>\n </Flex>\n )\n }\n\n if (isConnected && !isLoading && items.length === 0) {\n return noDocumentsContent\n }\n\n if (loadingVariant === 'initial' && isLoading) {\n return (\n <Delay ms={300}>\n <LoadingView layout={layout} />\n </Delay>\n )\n }\n\n if (loadingVariant === 'spinner' && isLoading) {\n return null\n }\n\n // prevents bug when panes won't render if first rendered while collapsed\n const key = `${index}-${collapsed}`\n\n return (\n <RootBox overflow=\"hidden\" height=\"fill\" $opacity={muted ? 0.8 : 1}>\n <CommandListBox>\n <CommandList\n key={key}\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={paneTitle}\n canReceiveFocus\n inputElement={searchInputElement}\n itemHeight={51}\n items={items}\n onEndReached={handleEndReached}\n onlyShowSelectionWhenActive\n overscan={10}\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n </CommandListBox>\n </RootBox>\n )\n }, [\n autoRetry,\n canRetry,\n collapsed,\n error,\n handleEndReached,\n index,\n isConnected,\n isLoading,\n isRetrying,\n items,\n layout,\n loadingVariant,\n muted,\n noDocumentsContent,\n onRetry,\n paneTitle,\n renderItem,\n retryCount,\n searchInputElement,\n shouldRender,\n t,\n ])\n\n return (\n <PaneContent\n data-testid=\"document-list-pane\"\n overflow={layoutCollapsed || loadingVariant === 'initial' ? 'hidden' : 'auto'}\n >\n {mainContent}\n </PaneContent>\n )\n}\n","import {\n isIndexSegment,\n isKeySegment,\n isReferenceSchemaType,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type SanityDocumentLike,\n type SchemaType,\n} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ExprNode, parse} from 'groq-js'\nimport {collate} from 'sanity'\n\nimport {type DocumentListPaneItem, type SortOrder} from './types'\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 {defineEvent} from '@sanity/telemetry'\n\ninterface DocumentListLoadTimeData {\n /**\n * How long it took to load the document list end to end\n */\n durationMs: number\n /**\n * Length of the search string typed into the \"Search\"-field above the document list\n */\n searchStringLength: number\n /**\n * Represents the number of documents that was returned by the document list\n */\n returnedDocuments: number\n /**\n * Whether the document list was loaded from an in-memory cache\n */\n fromCache: boolean\n}\n\nexport const DocumentListLoadTimeMeasured = defineEvent<DocumentListLoadTimeData>({\n name: 'Document List Load Time Measured',\n version: 1,\n description: 'Time from document list search subscription to first result',\n maxSampleRate: 30_000,\n})\n","import {type ClientPerspective, type SanityClient} from '@sanity/client'\nimport {\n asyncScheduler,\n defer,\n filter,\n map,\n merge,\n mergeMap,\n type Observable,\n of,\n partition,\n share,\n throttleTime,\n throwError,\n timer,\n} from 'rxjs'\nimport {exhaustMapWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {scan} from 'rxjs/operators'\nimport {\n createSearch,\n createSWR,\n getSearchableTypes,\n type SanityDocumentLike,\n type Schema,\n type SearchOptions,\n type SearchStrategy,\n} from 'sanity'\n\nimport {getExtendedProjection} from '../../structureBuilder/util/getExtendedProjection'\nimport {type SortOrder} from './types'\n\ninterface ListenQueryOptions {\n client: SanityClient\n filter: string\n limit: number\n params: Record<string, unknown>\n schema: Schema\n searchQuery: string\n sort: SortOrder\n perspective?: ClientPerspective\n staticTypeNames?: string[] | null\n maxFieldDepth?: number\n searchStrategy?: SearchStrategy\n}\n\nexport type SearchQueryEvent =\n | {\n type: 'reconnect'\n }\n | {type: 'result'; documents: SanityDocumentLike[]}\n\nexport interface SearchQueryState {\n connected: boolean\n fromCache: boolean\n documents: SanityDocumentLike[]\n}\n\nconst swr = createSWR<{connected: boolean; documents: SanityDocumentLike[]}>({maxSize: 100})\n\nexport function listenSearchQuery(options: ListenQueryOptions): Observable<SearchQueryState> {\n const {\n client,\n schema,\n sort,\n perspective,\n limit,\n params,\n filter: groqFilter,\n searchQuery,\n staticTypeNames,\n maxFieldDepth,\n searchStrategy,\n } = options\n const sortBy = sort.by\n const extendedProjection = sort?.extendedProjection\n\n // Listen for changes with the given filter and params, and whenever a change occurs, we want to\n // re-fetch the documents that match the search query (see below).\n // We use a separate listener since the search query is too large to use in a listen query.\n const events$ = defer(() => {\n return client.listen(`*[${groqFilter}]`, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeAllVersions: true,\n includeResult: false,\n visibility: 'query',\n tag: 'listen-search-query',\n })\n }).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n // If we can't establish a connection to the /listen endpoint, the first event we receive will be 'reconnect'\n // So if we get \"reconnect\" as the first event actually means \"Connection can't be established\"\n if (isFirst && ev.type === 'reconnect') {\n // if it's neither welcome nor reconnect, something unexpected has happened.\n return throwError(() => new Error(`Failed to establish EventSource connection`))\n }\n // When a connection is successfully established, the first event will be 'welcome'\n if (isFirst && ev.type !== 'welcome') {\n // if it's neither welcome nor reconnect, something unexpected has happened.\n return throwError(() => new Error(`Received unexpected type of first event \"${ev.type}\"`))\n }\n return of(ev)\n }),\n share(),\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, (ev) => ev.type === 'welcome')\n\n const swrKey = JSON.stringify({\n fiilter: groqFilter,\n limit,\n params,\n searchQuery,\n perspective,\n sort,\n staticTypeNames,\n })\n\n return merge(\n welcome$,\n mutationAndReconnect$.pipe(throttleTime(1000, asyncScheduler, {leading: true, trailing: true})),\n ).pipe(\n exhaustMapWithTrailing((event): Observable<SearchQueryEvent> => {\n // Get the types names to use for searching.\n // If we have a static list of types, we can skip fetching the types and use the static list.\n const typeNames$ = staticTypeNames\n ? of(staticTypeNames)\n : client.observable.fetch(`array::unique(*[${groqFilter}][]._type)`, params)\n\n // Use the type names to create a search query and fetch the documents that match the query.\n return typeNames$.pipe(\n mergeMap((typeNames: string[]) => {\n const types = getSearchableTypes(schema, staticTypeNames || []).filter((type) => {\n if (typeNames.includes(type.name)) {\n // make a call to getExtendedProjection in strict mode to verify that all fields are\n // known. This method will throw an exception if there are any unknown fields specified\n // in the sort by list\n getExtendedProjection(type, sort.by, true)\n return true\n }\n return false\n })\n\n const search = createSearch(types, client, {\n filter: groqFilter,\n params,\n strategy: searchStrategy,\n maxDepth: maxFieldDepth,\n })\n\n const doFetch = () => {\n const searchTerms = {\n query: searchQuery || '',\n types,\n }\n\n const searchOptions: SearchOptions = {\n __unstable_extendedProjection: extendedProjection,\n comments: [`findability-source: ${searchQuery ? 'list-query' : 'list'}`],\n limit,\n skipSortByScore: true,\n sort: sortBy,\n perspective,\n }\n\n return search(searchTerms, searchOptions).pipe(\n map((result) =>\n // eslint-disable-next-line max-nested-callbacks\n result.hits.map(({hit}) => hit),\n ),\n map((hits) => ({type: 'result' as const, documents: hits})),\n )\n }\n\n if (event.type === 'mutation' && event.visibility !== 'query') {\n // Even though the listener request specifies visibility=query, the events are not guaranteed to be delivered with visibility=query\n // If the event we are responding to arrives with visibility != query, we add a little delay to allow for the updated document to be available for queries\n // See https://www.sanity.io/docs/listening#visibility-c4786e55c3ff\n return timer(1200).pipe(mergeMap(doFetch))\n }\n if (event.type === 'reconnect') {\n return of(event)\n }\n return doFetch()\n }),\n )\n }),\n scan(\n (\n acc: null | {connected: boolean; documents: SanityDocumentLike[]},\n event: SearchQueryEvent,\n ) => ({\n connected: event.type !== 'reconnect',\n documents: event.type === 'result' ? event.documents : acc?.documents || [],\n }),\n null as null | {connected: boolean; documents: SanityDocumentLike[]},\n ),\n filter((v) => v !== null),\n swr(swrKey),\n map(({fromCache, value}): SearchQueryState => ({fromCache, ...value})),\n )\n}\n","import {\n ChannelError,\n ClientError,\n type ClientPerspective,\n type SanityClient,\n ServerError,\n} from '@sanity/client'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {observableCallback} from 'observable-callback'\nimport {useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, fromEvent, merge, NEVER, of, timer} from 'rxjs'\nimport {\n filter,\n map,\n mergeMap,\n scan,\n share,\n shareReplay,\n switchMap,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs/operators'\nimport {\n catchWithCount,\n measureFirstMatch,\n useSchema,\n useSearchMaxFieldDepth,\n useWorkspace,\n} from 'sanity'\n\nimport {DocumentListLoadTimeMeasured} from './__telemetry__/documentListSearch.telemetry'\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 client: SanityClient\n filter: string\n perspective?: ClientPerspective\n params: Record<string, unknown>\n searchQuery: string | null\n sortOrder?: SortOrder\n}\n\ninterface DocumentListState {\n error: {message: string} | null\n isLoadingFullList: boolean\n isLoading: boolean\n connected?: boolean\n isRetrying: boolean\n autoRetry: boolean\n canRetry: boolean\n retryCount: number\n fromCache?: boolean\n items: DocumentListPaneItem[]\n}\n\nconst INITIAL_QUERY_STATE: DocumentListState = {\n error: null,\n isRetrying: false,\n retryCount: 0,\n autoRetry: false,\n canRetry: false,\n isLoading: true,\n isLoadingFullList: false,\n fromCache: false,\n items: [],\n}\n\ninterface UseDocumentListHookValue extends DocumentListState {\n onRetry: () => void\n onLoadFullList: () => void\n}\n\n/**\n * Determine whether an error should be possible to retry\n * @param error - Any caught error\n */\nfunction isRetriableError(error: unknown) {\n if (error instanceof ChannelError) {\n // Usually indicative of a bad or malformed request\n return false\n }\n if (error instanceof ServerError) {\n // >= 500\n return true\n }\n if (error instanceof ClientError) {\n // >= 400\n // note: 403 Forbidden makes sense to retry, because it's a potentially passing condition\n return error.statusCode === 403\n }\n return true\n}\n\n/**\n * @internal\n */\nexport function useDocumentList(opts: UseDocumentListOpts): UseDocumentListHookValue {\n const {\n client,\n filter: searchFilter,\n params: paramsProp,\n sortOrder,\n searchQuery,\n perspective,\n } = opts\n const {strategy: searchStrategy} = useWorkspace().search\n const schema = useSchema()\n const maxFieldDepth = useSearchMaxFieldDepth()\n const telemetry = useTelemetry()\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 measureFirstMatch(\n (event) => event.connected,\n (durationMs, data) => {\n telemetry.log(DocumentListLoadTimeMeasured, {\n durationMs: durationMs,\n searchStringLength: (searchQuery || '').length,\n returnedDocuments: data.documents.length,\n fromCache: data.fromCache,\n })\n },\n ),\n shareReplay({refCount: true, bufferSize: 1}),\n )\n\n // we want to fetch the full list if the last result of the partial list is at the limit\n const fullList$ = onFetchFullList$.pipe(\n withLatestFrom(partialList$),\n filter(([, result]) => result?.documents.length === PARTIAL_PAGE_LIMIT),\n // we want to set up the full list listener only once\n take(1),\n mergeMap(() =>\n concat(\n of({type: 'loadFullList' as const}),\n listenSearchQuery({...listenSearchQueryArgs, limit: FULL_LIST_LIMIT}).pipe(\n map((result) => ({type: 'result' as const, result})),\n ),\n ),\n ),\n share(),\n )\n\n // The combined search results from both partial page and full list\n return merge(\n partialList$.pipe(\n map((result) => ({\n type: 'result' as const,\n result,\n })),\n // when the full list listener kicks off, we want to stop the partial list listener\n takeUntil(fullList$),\n ),\n fullList$,\n ).pipe(\n catchWithCount((lastError, retryCount, caught$) => {\n const error = safeError(lastError)\n const isOnline = window.navigator.onLine\n const canRetry = isOnline && isRetriableError(lastError)\n const autoRetry = retryCount < 10\n const retries = merge(\n isOnline ? onRetry$ : fromEvent(window, 'online'),\n isOnline && autoRetry ? timer(retryCount * 1_000) : NEVER,\n ).pipe(\n take(1),\n switchMap(() =>\n merge(\n of({\n type: 'error' as const,\n error,\n retrying: true,\n autoRetry,\n canRetry,\n retryCount,\n }),\n caught$,\n ),\n ),\n )\n return concat(\n of({\n type: 'error' as const,\n error,\n retrying: false,\n autoRetry,\n canRetry,\n retryCount,\n }),\n retries,\n )\n }),\n scan((prev, event) => {\n if (event.type === 'error') {\n return {\n ...prev,\n error: event.error,\n retryCount: event.retryCount,\n isRetrying: event.retrying,\n autoRetry: event.autoRetry,\n canRetry: event.canRetry,\n }\n }\n if (event.type === 'result') {\n return {\n ...prev,\n error: null,\n isRetrying: false,\n fromCache: event.result.fromCache,\n connected: event.result.connected,\n isLoading: false,\n items: removePublishedWithDrafts(event.result.documents),\n isLoadingFullList: false,\n }\n }\n if (event.type === 'loadFullList') {\n return {\n ...prev,\n error: null,\n isLoadingFullList: true,\n }\n }\n // @ts-expect-error - all cases should be covered\n throw new Error(`Unexpected event type: ${event.type}`)\n }, INITIAL_QUERY_STATE),\n )\n }, [\n client,\n searchFilter,\n paramsProp,\n schema,\n perspective,\n searchQuery,\n sortOrder,\n typeNameFromFilter,\n maxFieldDepth,\n searchStrategy,\n onFetchFullList$,\n onRetry$,\n telemetry,\n ])\n\n const {\n error,\n items,\n isLoading,\n fromCache,\n connected,\n canRetry,\n isLoadingFullList,\n isRetrying,\n autoRetry,\n retryCount,\n } = useObservable(queryResults$, INITIAL_QUERY_STATE)\n\n return {\n error,\n onRetry,\n isLoading,\n items,\n isRetrying,\n canRetry,\n retryCount,\n autoRetry,\n connected,\n fromCache,\n onLoadFullList,\n isLoadingFullList,\n }\n}\n\n// todo: candidate for re-use\nconst nonErrorThrownWarning = `[WARNING: This was thrown as a non-error. Only Error instances should be thrown]`\nfunction safeError(thrown: unknown): Error {\n if (thrown instanceof Error) {\n return thrown\n }\n if (typeof thrown === 'object' && thrown !== null) {\n if ('message' in thrown && typeof thrown.message === 'string') {\n return new Error(`${thrown.message} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n}\n","import {SearchIcon, SpinnerIcon} from '@sanity/icons'\nimport {Box, TextInput} from '@sanity/ui'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservableEvent} from 'react-rx'\nimport {debounce, map, type Observable, of, tap, timer} from 'rxjs'\nimport {\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n type GeneralPreviewLayoutKey,\n useActiveReleases,\n useClient,\n useI18nText,\n usePerspective,\n useReconnectingToast,\n useSchema,\n useTranslation,\n useUnique,\n} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {EMPTY_RECORD, FULL_LIST_LIMIT} from './constants'\nimport {DocumentListPaneContent} from './DocumentListPaneContent'\nimport {applyOrderingFunctions, findStaticTypesInFilter} from './helpers'\nimport {useShallowUnique} from './PaneContainer'\nimport {type LoadingVariant, type SortOrder} from './types'\nimport {useDocumentList} from './useDocumentList'\n\n/**\n * @internal\n */\nexport type DocumentListPaneProps = BaseStructureToolPaneProps<'documentList'> & {\n sortOrder?: SortOrder\n layout?: Exclude<GeneralPreviewLayoutKey, 'sheetList'>\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.1;\n }\n 100% {\n opacity: 0.4;\n }\n`\n\nconst AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n\nconst SubtleSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 1500ms linear infinite;\n opacity: 0.4;\n`\n\nconst DelayedSubtleSpinnerIcon = styled(SpinnerIcon)`\n animation:\n ${rotate} 1500ms linear infinite,\n ${fadeIn} 1000ms linear;\n opacity: 0.4;\n`\n\n/**\n * @internal\n */\n\nexport const DocumentListPane = memo(function DocumentListPane(props: DocumentListPaneProps) {\n const {childItemId, isActive, pane, paneKey, sortOrder: sortOrderRaw, layout} = props\n const schema = useSchema()\n const releases = useActiveReleases()\n const {perspectiveStack} = usePerspective()\n const {displayOptions, options} = pane\n const {apiVersion, filter} = options\n const params = useShallowUnique(options.params || EMPTY_RECORD)\n const typeName = useMemo(() => {\n const staticTypes = findStaticTypesInFilter(filter, params)\n if (staticTypes?.length === 1) return staticTypes[0]\n return null\n }, [filter, params])\n\n const showIcons = displayOptions?.showIcons !== false\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {title} = useI18nText(pane)\n\n const [searchQuery, setSearchQuery] = useState<string>('')\n const [searchInputValue, setSearchInputValue] = useState<string>('')\n const [searchInputElement, setSearchInputElement] = useState<HTMLInputElement | null>(null)\n\n const sortWithOrderingFn =\n typeName && sortOrderRaw\n ? applyOrderingFunctions(sortOrderRaw, schema.get(typeName) as any)\n : sortOrderRaw\n\n const sortOrder = useUnique(sortWithOrderingFn)\n\n const client = useClient({\n ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n })\n\n const {\n error,\n isLoadingFullList,\n isLoading: documentListIsLoading,\n items,\n fromCache,\n isRetrying,\n autoRetry,\n canRetry,\n retryCount,\n connected,\n onLoadFullList,\n onRetry,\n } = useDocumentList({\n client,\n filter,\n perspective: perspectiveStack,\n params,\n searchQuery: searchQuery?.trim(),\n sortOrder,\n })\n\n const isLoading = documentListIsLoading || releases.loading\n\n const handleQueryChange = useObservableEvent(\n (event$: Observable<React.ChangeEvent<HTMLInputElement>>) => {\n return event$.pipe(\n map((event) => event.target.value),\n tap(setSearchInputValue),\n debounce((value) => (value === '' ? of('') : timer(300))),\n tap(setSearchQuery),\n )\n },\n )\n\n const handleClearSearch = useCallback(() => {\n setSearchQuery('')\n setSearchInputValue('')\n }, [])\n\n const handleSearchKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n handleClearSearch()\n }\n },\n [handleClearSearch],\n )\n\n const [enableSearchSpinner, setEnableSearchSpinner] = useState<string | void>()\n\n useEffect(() => {\n if (!enableSearchSpinner && !isLoading) {\n setEnableSearchSpinner(paneKey)\n }\n }, [enableSearchSpinner, isLoading, paneKey])\n\n useEffect(() => {\n // Clear search field and disable search spinner\n // when switching between panes (i.e. when paneKey changes).\n handleClearSearch()\n setEnableSearchSpinner()\n }, [paneKey, handleClearSearch])\n\n const loadingVariant: LoadingVariant = useMemo(() => {\n if (connected && isLoading && enableSearchSpinner === paneKey) {\n return 'spinner'\n }\n if (connected && fromCache) {\n return 'subtle'\n }\n\n return 'initial'\n }, [connected, enableSearchSpinner, fromCache, isLoading, paneKey])\n\n const textInputIcon = useMemo(() => {\n if (loadingVariant === 'spinner') {\n return AnimatedSpinnerIcon\n }\n if (searchInputValue && loadingVariant === 'subtle') {\n return SubtleSpinnerIcon\n }\n return SearchIcon\n }, [loadingVariant, searchInputValue])\n\n useReconnectingToast(!connected)\n\n return (\n <>\n <Box paddingX={3} paddingBottom={3}>\n <TextInput\n aria-label={t('panes.document-list-pane.search-input.aria-label')}\n autoComplete=\"off\"\n border={false}\n clearButton={Boolean(searchQuery)}\n fontSize={[2, 2, 1]}\n icon={textInputIcon}\n iconRight={\n !connected || (loadingVariant === 'subtle' && !searchInputValue)\n ? DelayedSubtleSpinnerIcon\n : null\n }\n onChange={handleQueryChange}\n onClear={handleClearSearch}\n onKeyDown={handleSearchKeyDown}\n padding={2}\n placeholder={t('panes.document-list-pane.search-input.placeholder')}\n radius={2}\n ref={setSearchInputElement}\n spellCheck={false}\n value={searchInputValue}\n />\n </Box>\n <DocumentListPaneContent\n key={paneKey}\n childItemId={childItemId}\n error={error}\n filterIsSimpleTypeConstraint={!!typeName}\n hasMaxItems={items.length === FULL_LIST_LIMIT}\n hasSearchQuery={Boolean(searchQuery)}\n isActive={isActive}\n isLazyLoading={isLoadingFullList}\n isLoading={isLoading}\n autoRetry={autoRetry}\n canRetry={canRetry}\n retryCount={retryCount}\n isRetrying={isRetrying}\n isConnected={connected}\n items={items}\n layout={layout}\n muted={loadingVariant === 'subtle'}\n loadingVariant={loadingVariant}\n onEndReached={onLoadFullList}\n onRetry={onRetry}\n paneTitle={title}\n searchInputElement={searchInputElement}\n showIcons={showIcons}\n sortOrder={sortOrder}\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 customMenuItemState?: Record<string, unknown>\n index: number\n initialValueTemplates?: InitialValueTemplateItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n menuItems?: PaneMenuItem[]\n setLayout: (layout: GeneralPreviewLayoutKey) => void\n setSortOrder: (sortOrder: SortOrder) => void\n setCustomMenuItemState: (state: Record<string, unknown>) => void\n title: string\n}\n\nexport const PaneHeader = memo(\n ({\n contentAfter,\n customMenuItemState = {},\n index,\n initialValueTemplates = [],\n menuItemGroups = [],\n menuItems = [],\n setLayout,\n setSortOrder,\n setCustomMenuItemState,\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 setMenuItemState: (params: {_menuItemId: string; value?: unknown}) => {\n const id = params._menuItemId\n const value = params.value ?? true\n const currentValue = customMenuItemState[id]\n // Toggle behavior: if clicking the same value, remove it (deselect)\n if (currentValue === value) {\n // Remove the key from state\n const newState = Object.fromEntries(\n Object.entries(customMenuItemState).filter(([key]) => key !== id),\n )\n setCustomMenuItemState(newState)\n } else {\n setCustomMenuItemState({...customMenuItemState, [id]: value})\n }\n },\n }\n }, [customMenuItemState, setLayout, setSortOrder, setCustomMenuItemState])\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 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\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 = (AccessorKeyColumnDef<SanityDocument> | GroupColumnDef<SanityDocument>)[]\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> {\n return 'accessorKey' in column\n}\nfunction isGroupColumnDef(\n column: AccessorKeyColumnDef<SanityDocument> | GroupColumnDef<SanityDocument>,\n): column is GroupColumnDef<SanityDocument> {\n return 'columns' in column\n}\n\nconst flatColumns = (cols: Columns): AccessorKeyColumnDef<SanityDocument>[] => {\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>) => () => {\n column.toggleVisibility()\n }\n\n const getColumnVisibilityDisabled = (column: Column<SanityDocument>) => {\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 const columnId = column.id.replace(/ /g, '-')\n return (\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-${columnId}`}\n style={{display: 'block'}}\n />\n <Box flex={1} paddingLeft={3}>\n <Text size={1}>\n <label htmlFor={`col-visibility-${columnId}`}>\n {column.columnDef.header?.toString()}\n </label>\n </Text>\n </Box>\n </Flex>\n )\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 key={header.id}\n style={{\n left: header.column.getStart('left') ?? undefined,\n borderRight: `${borderWidth}px solid var(--card-border-color)`,\n }}\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 */\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\n\n return {\n ...state,\n documents: {\n ...state.documents,\n [nextDocumentResult._id]: nextDocumentResult,\n },\n }\n }\n\n case 'DOCUMENT_DELETED': {\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\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","import {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 key={row.original._id + row.id}\n as=\"tr\"\n paddingY={2}\n style={{display: 'flex', width: '100%'}}\n >\n {row.getVisibleCells().map((cell) => (\n <SheetListCell key={row.original._id + cell.id} {...cell} />\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 key={headerGroup.id} as=\"tr\">\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-es/isEqual.js'\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 {assignId} from '../../structureResolvers/assignId'\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\n/**\n * Type for custom menu item state storage.\n * Maps menu item IDs to their current state values.\n */\ntype CustomMenuItemState = Record<string, unknown>\n\n/**\n * Adds auto-generated IDs to menu items that don't have one.\n */\nconst addIdsToMenuItems = (menuItems?: PaneMenuItem[]): PaneMenuItem[] | undefined => {\n return menuItems?.map((item) => {\n if (item.id) return item\n return {...item, id: assignId(item)}\n })\n}\n\nconst addSelectedStateToMenuItems = (options: {\n menuItems?: PaneMenuItem[]\n sortOrderRaw?: SortOrder\n layout?: GeneralDocumentListLayoutKey\n customMenuItemState?: CustomMenuItemState\n}) => {\n const {menuItems, sortOrderRaw, layout, customMenuItemState = {}} = 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 // Check custom menu item state by id\n if (item.id && item.id in customMenuItemState) {\n const storedValue = customMenuItemState[item.id]\n const itemValue = item.params?.value ?? true\n return {\n ...item,\n selected: isEqual(storedValue, itemValue),\n }\n }\n\n // Preserve any existing selected state, default to false\n return {...item, selected: 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 // Custom menu item state for tracking selected state of custom menu items\n // Uses local state (doesn't persist across refreshes) to avoid keyValueStore allowlist issues\n const [customMenuItemState, setCustomMenuItemState] = useState<CustomMenuItemState>({})\n\n // Add auto-generated IDs to menu items that don't have one\n const menuItemsWithIds = useMemo(() => addIdsToMenuItems(menuItems), [menuItems])\n\n const menuItemsWithSelectedState = useMemo(\n () =>\n addSelectedStateToMenuItems({\n menuItems: menuItemsWithIds,\n sortOrderRaw,\n layout,\n customMenuItemState,\n }),\n [customMenuItemState, layout, menuItemsWithIds, sortOrderRaw],\n )\n\n const isSheetListLayout = layout === 'sheetList'\n const paneLayout = isSheetListLayout ? (\n <DocumentSheetListPane key={props.pane.id} {...props} />\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 customMenuItemState={customMenuItemState}\n index={index}\n initialValueTemplates={initialValueTemplates}\n menuItemGroups={menuItemGroups}\n menuItems={menuItemsWithSelectedState}\n setLayout={setLayout}\n setSortOrder={setSortOrder}\n setCustomMenuItemState={setCustomMenuItemState}\n title={title}\n />\n {paneLayout}\n </Pane>\n </SourceProvider>\n )\n})\nPaneContainer.displayName = 'Memo(PaneContainer)'\n","import {type DocumentBadgeComponent} from 'sanity'\n\n// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentBadgeComponent`\n/** @internal */\nexport const useLiveEditBadge: 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}\nuseLiveEditBadge.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, inspect, comment, task, scheduledDraft}: Record<string, string>,\n): {\n template?: string\n version?: string\n inspect?: string\n comment?: string\n task?: string\n scheduledDraft?: string\n} {\n switch (intent) {\n case 'create':\n return {template, version}\n case 'edit':\n return {inspect, comment, task, scheduledDraft}\n default:\n return EMPTY_PARAMS\n }\n}\n","import {type ObjectDiff} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n type DocumentChangeContextInstance,\n LoadingBlock,\n NoChanges,\n type ObjectSchemaType,\n ScrollContainer,\n usePerspective,\n useTimelineSelector,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TimelineMenu} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nexport function ChangesInspector({showChanges}: {showChanges: boolean}): React.JSX.Element {\n const {documentId, schemaType, timelineError, timelineStore, value} = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const rev = useTimelineSelector(timelineStore, (state) => state.revTime)\n const diff = useTimelineSelector(timelineStore, (state) => state.diff)\n const onOlderRevision = useTimelineSelector(timelineStore, (state) => state.onOlderRevision)\n const selectionState = useTimelineSelector(timelineStore, (state) => state.selectionState)\n const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n const loading = selectionState === 'loading'\n const isComparingCurrent = !onOlderRevision\n\n // Note that we are using the studio core namespace here, as changes theoretically should\n // be part of Sanity core (needs to be moved from structure at some point)\n const {t: structureT} = useTranslation(structureLocaleNamespace)\n\n const documentContext: DocumentChangeContextInstance = useMemo(\n () => ({\n documentId,\n schemaType,\n FieldWrapper: (props) => <ChangeFieldWrapper {...props} hasRevertHover={false} />,\n rootDiff: diff,\n isComparingCurrent,\n value,\n showFromValue: true,\n }),\n [documentId, diff, isComparingCurrent, schemaType, value],\n )\n\n if (selectedReleaseId) {\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n <TimelineError versionError />\n </Card>\n </Flex>\n )\n }\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {structureT('changes.from.label')}\n </Text>\n\n <TimelineMenu mode=\"since\" chunk={sinceTime} placement=\"bottom-start\" />\n <Text size={1} muted>\n {structureT('changes.to.label')}\n </Text>\n <TimelineMenu chunk={rev} mode=\"rev\" placement=\"bottom-end\" />\n </Grid>\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n diff={diff}\n documentContext={documentContext}\n error={timelineError}\n loading={loading}\n schemaType={schemaType}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n diff,\n documentContext,\n loading,\n schemaType,\n}: {\n error?: Error | null\n diff: ObjectDiff<any> | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n}) {\n if (error) {\n return <NoChanges />\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n\n if (!diff) {\n return <NoChanges />\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <ChangeList diff={diff} schemaType={schemaType} />\n </DocumentChangeContext.Provider>\n )\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {\n type DocumentGroupEvent,\n Event,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n useTranslation,\n} from 'sanity'\n\nimport {Tooltip} from '../../../../../ui-components'\n\nexport interface TimelineItemProps {\n event: DocumentGroupEvent\n isSelected: boolean\n onSelect: (chunk: DocumentGroupEvent) => void\n optionsMenu?: React.ReactNode\n}\n\nconst getIsSelectable = (event: DocumentGroupEvent) => {\n return (\n !isDeleteDocumentVersionEvent(event) &&\n !isDeleteDocumentGroupEvent(event) &&\n !isUnpublishDocumentEvent(event) &&\n !isScheduleDocumentVersionEvent(event) &&\n !isUnscheduleDocumentVersionEvent(event)\n )\n}\n\nexport function EventTimelineItem({event, isSelected, onSelect, optionsMenu}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const isSelectable = getIsSelectable(event)\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n evt.preventDefault()\n evt.stopPropagation()\n\n if (isSelectable) {\n onSelect(event)\n }\n },\n [onSelect, event, isSelectable],\n )\n return (\n <Flex gap={1}>\n <Tooltip content={isSelectable ? '' : t('changes.not-selectable')} disabled={isSelectable}>\n <Card\n as={isSelectable ? 'button' : 'div'}\n onClick={handleClick}\n padding={2}\n pressed={isSelected}\n radius={2}\n data-ui=\"timelineItem\"\n data-testid=\"timeline-item-button\"\n data-chunk-timestamp={event.timestamp}\n style={{\n cursor: isSelectable ? 'pointer' : 'default',\n width: '100%',\n }}\n >\n <Event event={event} showChangesBy=\"tooltip\" />\n </Card>\n </Tooltip>\n {optionsMenu}\n </Flex>\n )\n}\n","import {\n Flex,\n Menu,\n // eslint-disable-next-line no-restricted-imports\n MenuItem,\n Text,\n usePortal,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n ContextMenuButton,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isReleaseDocument,\n type PublishDocumentVersionEvent,\n RELEASES_INTENT,\n ReleaseTitle,\n Translate,\n useSetPerspective,\n useTranslation,\n useWorkspace,\n VersionInlineBadge,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {MenuButton} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TIMELINE_MENU_PORTAL} from '../timelineMenu'\n\nexport function PublishedEventMenu({event}: {event: PublishDocumentVersionEvent}) {\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const portalContext = usePortal()\n const {params, setParams} = usePaneRouter()\n const setPerspective = useSetPerspective()\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\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(isDraftModelEnabled ? 'drafts' : 'published')\n }, 100)\n }, [setParams, params, event.versionRevisionId, setPerspective, isDraftModelEnabled])\n\n const releaseTitle = event.release?.metadata?.title\n const releaseFallback = tCore('release.placeholder-untitled-release')\n\n const VersionBadge = ({children}: {children: React.ReactNode}) => {\n return (\n <VersionInlineBadge\n $tone={\n event.release\n ? isReleaseDocument(event.release)\n ? getReleaseTone(event.release)\n : 'default'\n : undefined\n }\n >\n {children}\n </VersionInlineBadge>\n )\n }\n const isMenuDisabled = event.release && !isReleaseDocument(event.release)\n return (\n <MenuButton\n id={`timeline-item-menu-button-${event.versionId}`}\n button={\n <ContextMenuButton\n aria-label={t('timeline-item.menu-button.aria-label')}\n tooltipProps={{\n content: isMenuDisabled\n ? t('timeline-item.not-found-release.tooltip', {\n releaseId: event.release?._id\n ? getReleaseIdFromReleaseDocumentId(event.release._id)\n : undefined,\n })\n : t('timeline-item.menu-button.tooltip'),\n }}\n disabled={isMenuDisabled}\n />\n }\n menu={\n <Menu padding={1}>\n {event.release ? (\n <>\n <IntentLink\n intent={RELEASES_INTENT}\n params={{id: getReleaseIdFromReleaseDocumentId(event.release._id)}}\n style={{textDecoration: 'none'}}\n >\n <MenuItem padding={3}>\n <Flex align={'center'} justify=\"flex-start\">\n <Text size={1} style={{textDecoration: 'none'}}>\n <ReleaseTitle title={releaseTitle} fallback={releaseFallback}>\n {({displayTitle}) => (\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n }}\n i18nKey=\"events.open.release\"\n values={{\n releaseTitle: displayTitle,\n }}\n t={t}\n />\n )}\n </ReleaseTitle>\n </Text>\n </Flex>\n </MenuItem>\n </IntentLink>\n <MenuItem onClick={handleOpenReleaseDocument}>\n <Flex align={'center'} justify=\"flex-start\">\n <Text size={1}>\n <ReleaseTitle title={releaseTitle} fallback={releaseFallback}>\n {({displayTitle}) => (\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n }}\n i18nKey=\"events.inspect.release\"\n values={{\n releaseTitle: displayTitle,\n }}\n t={t}\n />\n )}\n </ReleaseTitle>\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 'motion/react'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n type DocumentGroupEvent,\n getDocumentVariantType,\n isCreateDocumentVersionEvent,\n isDeleteDocumentVersionEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n LoadingBlock,\n useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from '../expandableTimelineItemButton'\nimport {ListWrapper, Root} from '../timeline.styled'\nimport {EventTimelineItem} from './EventTimelineItem'\nimport {PublishedEventMenu} from './PublishedEventMenu'\n\ninterface TimelineProps {\n events: DocumentGroupEvent[]\n hasMoreEvents: boolean | null\n selectedEventId?: string\n onLoadMore: () => void\n onSelect: (event: DocumentGroupEvent) => void\n fetchEventChildren: (event: DocumentGroupEvent) => Promise<void>\n /**\n * The list needs a predefined max height for the scroller to work.\n */\n listMaxHeight?: string\n}\n\nconst TimelineItemWrapper = motion.create(Box)\nconst CHILDREN_ITEMS_VARIANTS: Variants = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n}\n\nconst ITEM_HEIGHT = 57\n\nconst TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const EventsTimeline = ({\n events: allEvents,\n hasMoreEvents,\n selectedEventId,\n onLoadMore,\n onSelect,\n listMaxHeight = 'calc(100vh - 280px)',\n fetchEventChildren,\n}: TimelineProps) => {\n const [mounted, setMounted] = useState(false)\n const {t} = useTranslation('studio')\n const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n if (selectedEventId) {\n // Find that event and if it has a parent, expand the parent.\n const selectedEvent = allEvents.find((event) => event.id === selectedEventId)\n if (selectedEvent && 'parentId' in selectedEvent && selectedEvent.parentId) {\n return new Set([selectedEvent.parentId])\n }\n }\n return new Set()\n })\n const [expandingParents, setExpandingParents] = useState<Set<string>>(new Set())\n\n const events = useMemo(() => {\n return allEvents.filter((event) => {\n if (isCreateDocumentVersionEvent(event) && event.parentId) {\n // Check if it's the last event in the list, in that case, we want to show it\n const isLastEvent = allEvents[allEvents.length - 1].id === event.id\n if (isLastEvent) return true\n return expandedParents.has(event.parentId)\n }\n if (isEditDocumentVersionEvent(event) && event.parentId) {\n return expandedParents.has(event.parentId)\n }\n return true\n })\n }, [expandedParents, allEvents])\n\n const handleExpandParent = useCallback(\n (event: DocumentGroupEvent) => async () => {\n const parentId = event.id\n\n let isExpanding = false\n setExpandedParents((prev) => {\n const next = new Set(prev)\n\n if (prev.has(parentId)) next.delete(parentId)\n else {\n isExpanding = true\n next.add(parentId)\n }\n\n return next\n })\n if (isExpanding) {\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.add(parentId)\n return next\n })\n await fetchEventChildren(event)\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.delete(parentId)\n return next\n })\n }\n },\n [fetchEventChildren, setExpandingParents],\n )\n\n const handleSelectChunk = useCallback(\n (event: DocumentGroupEvent) => {\n onSelect(event)\n },\n [onSelect],\n )\n\n const renderOptionsMenu = useCallback(\n (event: DocumentGroupEvent) => {\n const documentVariantType = getDocumentVariantType(event.documentId)\n if (isPublishDocumentVersionEvent(event) && documentVariantType === 'published') {\n return <PublishedEventMenu event={event} />\n }\n if (\n (isPublishDocumentVersionEvent(event) &&\n documentVariantType === 'draft' &&\n event.creationEvent) ||\n (isDeleteDocumentVersionEvent(event) && event.creationEvent)\n ) {\n return (\n <ExpandableTimelineItemButton\n isExpanded={expandedParents.has(event.id)}\n onExpand={handleExpandParent(event)}\n />\n )\n }\n return null\n },\n [expandedParents, handleExpandParent],\n )\n\n const renderItem = useCallback<CommandListRenderItemCallback<DocumentGroupEvent[][number]>>(\n (event, {activeIndex}) => {\n /**\n * The create version event will be present while expanding (loading the edits), so we are attaching to it the loading block at the top.\n * - publishEvent (expanding?)\n * --- loadingBlock ~createEvent~\n * */\n const showExpandingLoader =\n isCreateDocumentVersionEvent(event) &&\n event.parentId &&\n expandingParents.has(event.parentId)\n\n const isLastEvent = activeIndex === events.length - 1\n if (showExpandingLoader) {\n return (\n <TimelineItemWrapper\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{duration: 0.2, delay: 0.2}}\n >\n {/* We need this item to match the same height as the rest of the list items, which is 57px */}\n <Flex align=\"center\" justify=\"center\" style={{height: ITEM_HEIGHT}}>\n <Spinner />\n </Flex>\n </TimelineItemWrapper>\n )\n }\n return (\n <TimelineItemWrapper\n key={event.timestamp}\n paddingBottom={1}\n paddingRight={1}\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\nconst 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 // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = () => {\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 }\n try {\n run()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [t, toast, setTimelineRange, findRangeForRevision, handleClose],\n )\n\n const selectSince = useCallback(\n (sinceEvent: DocumentGroupEvent) => {\n try {\n const [since, rev] = findRangeForSince(sinceEvent.id)\n setTimelineRange(since, rev)\n handleClose()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [findRangeForSince, setTimelineRange, toast, t, handleClose],\n )\n\n const handleLoadMore = useCallback(() => {\n if (!loading && nextCursor) {\n loadMoreEvents()\n }\n }, [loading, loadMoreEvents, nextCursor])\n\n const content = useMemo(() => {\n if (eventsError) return <TimelineError />\n\n return (\n <EventsTimeline\n events={events}\n fetchEventChildren={expandEvent}\n hasMoreEvents={Boolean(nextCursor)}\n selectedEventId={event?.id}\n onLoadMore={handleLoadMore}\n onSelect={mode === 'rev' ? selectRev : selectSince}\n />\n )\n }, [\n eventsError,\n mode,\n expandEvent,\n events,\n nextCursor,\n event?.id,\n handleLoadMore,\n selectSince,\n selectRev,\n ])\n\n const revLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : t('timeline.latest-revision')\n\n const sinceLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : events.length > 0\n ? t('timeline.since-version-missing')\n : t('timeline.no-previous-events')\n\n const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n const portalElements = useMemo(\n () => ({\n [TIMELINE_MENU_PORTAL]: popoverRef,\n }),\n [popoverRef],\n )\n\n return (\n <PortalProvider __unstable_elements={portalElements}>\n <Root\n data-testid=\"timeline-menu\"\n constrainSize\n content={open && content}\n data-ui=\"versionMenu\"\n open={open}\n placement={placement}\n matchReferenceWidth\n portal\n ref={setPopoverRef}\n >\n <Flex width={'fill'}>\n <Button\n data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n disabled={loading || !events.length}\n mode=\"ghost\"\n onClick={open ? handleClose : handleOpen}\n ref={setButton}\n selected={open}\n width=\"fill\"\n tooltipProps={null}\n justify={'space-between'}\n style={{\n maxWidth: '100%',\n }}\n iconRight={ChevronDownIcon}\n text={loading ? t('timeline.loading-history') : buttonLabel}\n />\n </Flex>\n </Root>\n </PortalProvider>\n )\n}\n","import {diffInput, wrap} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {type ReactElement, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n ChangesError,\n type DocumentChangeContextInstance,\n type DocumentGroupEvent,\n isReleaseDocument,\n LoadingBlock,\n NoChanges,\n type ObjectDiff,\n type ObjectSchemaType,\n ScrollContainer,\n Translate,\n useEvents,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {EventsTimelineMenu} from '../../timeline/events/EventsTimelineMenu'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nconst SpinnerContainer = styled(Flex)`\n width: 100%;\n position: absolute;\n bottom: -4px;\n`\n\nconst DIFF_INITIAL_VALUE = {\n diff: null,\n loading: true,\n error: null,\n}\n\nconst CompareWithPublishedView = () => {\n const {documentId, schemaType, editState, displayed} = useDocumentPane()\n const {selectedPerspective, selectedPerspectiveName, selectedReleaseId} = usePerspective()\n const {t} = useTranslation(structureLocaleNamespace)\n const rootDiff = useMemo(() => {\n const diff = diffInput(\n wrap(editState?.published ?? {}, {author: ''}),\n wrap(displayed ?? {}, {author: ''}),\n ) as ObjectDiff\n\n return diff\n }, [editState?.published, displayed])\n\n if (selectedReleaseId && !editState?.version) {\n return null\n }\n if (selectedPerspective === 'drafts' && !editState?.draft) {\n return null\n }\n if (selectedPerspectiveName === 'published' || !displayed?._rev) {\n return null\n }\n return (\n <Stack space={2} marginBottom={3}>\n <Card borderBottom paddingBottom={3}>\n <Stack space={3} paddingTop={1}>\n <Text size={1} weight=\"medium\">\n {t('events.compare-with-published.title')}\n </Text>\n <Text size={1} muted>\n <Translate\n i18nKey=\"events.compare-with-published.description\"\n t={t}\n values={{\n version: isReleaseDocument(selectedPerspective)\n ? selectedPerspective.metadata?.title\n : 'draft',\n }}\n />\n </Text>\n </Stack>\n </Card>\n <DocumentChangeContext.Provider\n value={{\n documentId,\n schemaType,\n rootDiff,\n isComparingCurrent: true,\n FieldWrapper: (props) => props.children,\n value: displayed,\n showFromValue: true,\n }}\n >\n <Box paddingY={1}>\n <ChangeList diff={rootDiff} schemaType={schemaType} />\n </Box>\n </DocumentChangeContext.Provider>\n </Stack>\n )\n}\nexport function EventsInspector({showChanges}: {showChanges: boolean}): ReactElement {\n const {documentId, schemaType, timelineError, value, formState} = useDocumentPane()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const {events, revision, sinceRevision, getChangesList} = useEvents()\n\n const isComparingCurrent = !revision?.revisionId\n const changesList$ = useMemo(() => getChangesList(), [getChangesList])\n const {\n diff,\n loading: diffLoading,\n error: diffError,\n } = useObservable(changesList$, DIFF_INITIAL_VALUE)\n\n const {t} = useTranslation('studio')\n\n const documentContext: DocumentChangeContextInstance = useMemo(() => {\n return {\n documentId,\n schemaType,\n FieldWrapper: (props) =>\n props.path.length > 0 ? <ChangeFieldWrapper {...props} /> : props.children,\n rootDiff: diff,\n isComparingCurrent: isComparingCurrent && !formState?.readOnly,\n value,\n showFromValue: true,\n }\n }, [diff, documentId, isComparingCurrent, formState?.readOnly, schemaType, value])\n\n const [sinceEvent, toEvent] = useMemo(() => {\n if (!events) return [null, null]\n return [\n events.find((e) => e.id === sinceRevision?.revisionId) || null,\n events.find((e) => e.id === revision?.revisionId) || events[0],\n ]\n }, [events, revision?.revisionId, sinceRevision?.revisionId])\n\n const sinceEvents = useMemo(() => {\n // The sinceEvents need to account the toEvent showing only events that are older than the toEvent\n if (!toEvent) return events.slice(1)\n return events.slice(events.indexOf(toEvent) + 1).map((event) => {\n // If the to event has a parent id, we need to remove the parent id from the since events or they won't be rendered, as they have no parent to expand.\n if (\n ('parentId' in toEvent && 'parentId' in event && event.parentId === toEvent.parentId) ||\n ('parentId' in event && toEvent.id === event.parentId)\n ) {\n return {...event, parentId: undefined}\n }\n return event\n })\n }, [events, toEvent])\n if (!events.length) {\n return (\n <Box paddingX={2}>\n <Stack padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </Stack>\n </Box>\n )\n }\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3} style={{position: 'relative'}}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {t('changes.inspector.from-label')}\n </Text>\n <EventsTimelineMenu\n event={sinceEvent || null}\n events={sinceEvents}\n mode=\"since\"\n placement=\"bottom-start\"\n />\n <Text size={1} muted>\n {t('changes.inspector.to-label')}\n </Text>\n <EventsTimelineMenu\n event={toEvent || null}\n events={events}\n mode=\"rev\"\n placement=\"bottom-end\"\n />\n </Grid>\n {diffLoading && (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <SpinnerContainer justify=\"center\" align=\"center\" gap={2}>\n <Text muted size={0}>\n {t('changes.loading-changes')}\n </Text>\n <Spinner size={0} />\n </SpinnerContainer>\n </motion.div>\n )}\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n documentContext={documentContext}\n error={timelineError || diffError}\n loading={revision?.loading || sinceRevision?.loading || false}\n schemaType={schemaType}\n sameRevisionSelected={sinceEvent?.id === toEvent?.id}\n sinceEvent={sinceEvent}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n documentContext,\n loading,\n schemaType,\n sameRevisionSelected,\n sinceEvent,\n}: {\n error?: Error | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n sameRevisionSelected: boolean\n sinceEvent: DocumentGroupEvent | null\n}) {\n if (error) {\n return (\n <>\n <CompareWithPublishedView />\n {sinceEvent?.type !== 'historyCleared' && <ChangesError error={error} />}\n </>\n )\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n if (sameRevisionSelected) {\n return <SameRevisionSelected />\n }\n\n if (!documentContext.rootDiff) {\n return (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <NoChanges />\n </motion.div>\n )\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <Box paddingY={1}>\n <ChangeList diff={documentContext.rootDiff} schemaType={schemaType} />\n </Box>\n </DocumentChangeContext.Provider>\n )\n}\n\nfunction SameRevisionSelected() {\n const {t} = useTranslation('')\n return (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <Stack space={3} paddingTop={2}>\n <Text size={1} weight=\"medium\" as=\"h3\">\n {t('changes.same-revision-selected-title')}\n </Text>\n <Text as=\"p\" size={1} muted>\n <Translate i18nKey=\"changes.same-revision-selected-description\" t={t} />\n </Text>\n </Stack>\n </motion.div>\n )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type DocumentGroupEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n LoadingBlock,\n ScrollContainer,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {EventsTimeline} from '../../timeline/events/EventsTimeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nexport function EventsSelector({showList}: {showList: boolean}) {\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n const [listHeight, setListHeight] = useState(0)\n const {setTimelineRange} = useDocumentPane()\n const getScrollerRef = useCallback(\n (el: HTMLDivElement | null) => {\n if (!listHeight && el) {\n /**\n * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n */\n setListHeight(el.clientHeight ? el.clientHeight - 1 : 0)\n setScrollRef(el)\n }\n },\n [listHeight],\n )\n const {\n events,\n nextCursor,\n loading,\n error,\n revision,\n loadMoreEvents,\n findRangeForRevision,\n expandEvent,\n } = useEvents()\n\n const {t} = useTranslation('studio')\n const toast = useToast()\n\n const selectRev = useCallback(\n (event: DocumentGroupEvent) => {\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = () => {\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 }\n try {\n run()\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 // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = () => {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n }\n try {\n run()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineRange, t, timelineStore, toast],\n )\n\n const handleLoadMore = useCallback(() => {\n // If updated, be sure to update the TimeLineMenu component as well\n if (!loading) {\n timelineStore?.loadMore()\n }\n }, [loading, timelineStore])\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n {timelineError || selectedReleaseId ? (\n <TimelineError versionError={Boolean(selectedReleaseId)} />\n ) : (\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n {listHeight &&\n // This forces the list to unmount and remount, which is needed to reset the scroll position\n showList ? (\n <Timeline\n chunks={chunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={realRevChunk}\n onLoadMore={handleLoadMore}\n onSelect={selectRev}\n listMaxHeight={`${listHeight}px`}\n />\n ) : null}\n </Scroller>\n </BoundaryElementProvider>\n )}\n </Card>\n </Flex>\n )\n}\n","import {CloseIcon, InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Flex, TabList, TabPanel, Text} from '@sanity/ui'\nimport {useState} from 'react'\nimport {\n type DocumentInspectorProps,\n isReleaseDocument,\n type TargetPerspective,\n type TFunction,\n Translate,\n usePerspective,\n useSource,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Tab, Tooltip} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesInspector} from './ChangesInspector'\nimport {EventsInspector} from './EventsInspector'\nimport {EventsSelector} from './EventsSelector'\nimport {HistorySelector} from './HistorySelector'\n\nconst FadeInFlex = styled(Flex)`\n opacity: 0;\n transition: opacity 200ms;\n &[data-ready] {\n opacity: 1;\n }\n`\nconst TABS = ['history', 'review'] as const\nconst isValidTab = (tab: string | undefined): tab is (typeof TABS)[number] =>\n // @ts-expect-error TS doesn't understand the type guard\n tab && TABS.includes(tab)\n\nexport function ChangesTabs(props: DocumentInspectorProps) {\n const {params, setParams} = usePaneRouter()\n const source = useSource()\n const [parentRef, setParentRef] = useState<HTMLDivElement | null>(null)\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const isReady = params?.inspect === HISTORY_INSPECTOR_NAME\n const {selectedPerspective} = usePerspective()\n\n const paneRouterTab = isValidTab(params?.changesInspectorTab)\n ? params.changesInspectorTab\n : TABS[0]\n\n const setPaneRouterTab = (tab: (typeof TABS)[number]) =>\n setParams({\n ...params,\n changesInspectorTab: tab,\n // Reset the since when changing the tab, as it's not relevant for the history tab\n since: tab === 'history' ? undefined : params?.since,\n })\n\n return (\n <FadeInFlex\n direction=\"column\"\n padding={0}\n height=\"fill\"\n data-ready={isReady ? '' : undefined}\n ref={setParentRef}\n >\n <Card paddingBottom={1}>\n <Flex align=\"center\" padding={3} gap={2}>\n <TabList space={1} flex={1}>\n <Tab\n aria-controls=\"history-panel\"\n id=\"history-tab\"\n label={t('changes.tab.history')}\n onClick={() => setPaneRouterTab('history')}\n selected={paneRouterTab === 'history'}\n />\n <Tab\n aria-controls=\"review-changes-panel\"\n id=\"changes-tab\"\n label={t('changes.tab.review-changes')}\n onClick={() => setPaneRouterTab('review')}\n selected={paneRouterTab === 'review'}\n />\n </TabList>\n <Button\n aria-label={t('changes.action.close-label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={props.onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Flex>\n </Card>\n <Card padding={2} marginBottom={3} marginX={3} tone=\"neutral\" border radius={3}>\n <Flex gap={2} align=\"flex-start\">\n <Tooltip\n portal\n placement=\"bottom-end\"\n boundaryElement={parentRef}\n content={\n <Box flex={1} padding={1}>\n <Text size={1}>\n <Translate t={t} i18nKey=\"changes.banner.tooltip\" />\n </Text>\n </Box>\n }\n >\n <Text size={0} muted>\n <InfoOutlineIcon fontSize={1} />\n </Text>\n </Tooltip>\n <Text size={0} muted>\n <Translate\n t={t}\n values={{\n perspective: perspectiveLabel(selectedPerspective, {t, tCore}),\n }}\n i18nKey=\"changes.banner.description\"\n />\n </Text>\n </Flex>\n </Card>\n\n <TabPanel\n aria-labelledby=\"history-tab\"\n height=\"fill\"\n hidden={paneRouterTab !== 'history'}\n id=\"history-panel\"\n >\n {source.beta?.eventsAPI?.documents ? (\n <EventsSelector showList={paneRouterTab === 'history'} />\n ) : (\n <HistorySelector showList={paneRouterTab === 'history'} />\n )}\n </TabPanel>\n\n <TabPanel\n aria-labelledby=\"review-tab\"\n hidden={paneRouterTab !== 'review'}\n id=\"review-panel\"\n height=\"fill\"\n >\n {source.beta?.eventsAPI?.documents ? (\n <>\n {paneRouterTab === 'review' ? (\n <EventsInspector showChanges={paneRouterTab === 'review'} />\n ) : null}\n </>\n ) : (\n <ChangesInspector showChanges={paneRouterTab === 'review'} />\n )}\n </TabPanel>\n </FadeInFlex>\n )\n}\n\nfunction perspectiveLabel(\n perspective: TargetPerspective,\n {t, tCore}: {t: TFunction; tCore: TFunction},\n): string {\n if (isReleaseDocument(perspective)) {\n return perspective.metadata.title || tCore('release.placeholder-untitled-release')\n }\n\n if (perspective === 'drafts') {\n return t('compare-versions.status.draft')\n }\n\n if (perspective === 'published') {\n return t('compare-versions.status.published')\n }\n\n return perspective\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","import {Box, Card, Flex, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {useCallback} from 'react'\nimport {\n getPublishedId,\n getReferencePaths,\n pathToString,\n type SanityDocument,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {IncomingReferencePreview} from '../../../../components/incomingReferencesDecoration/IncomingReferencePreview'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\nconst FadeInFlex = motion.create(Flex)\n\nexport const IncomingReferenceDocument = (props: {\n document: SanityDocument\n referenceToId: string\n}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const {document, referenceToId} = props\n const referencePaths = getReferencePaths(document, referenceToId)\n const id = document._id\n const schema = useSchema()\n const {navigate} = useRouter()\n const {routerPanesState, groupIndex} = usePaneRouter()\n\n const type = document?._type\n\n const handleClick = useCallback(() => {\n if (!type) return // This should not happen\n navigate({\n panes: [\n ...routerPanesState.slice(0, groupIndex + 1),\n [{id: getPublishedId(id), params: {type, path: pathToString(referencePaths[0])}}],\n ],\n })\n }, [routerPanesState, groupIndex, type, navigate, id, referencePaths])\n\n const schemaType = schema.get(document._type)\n if (!schemaType)\n return (\n <Card radius={2} tone=\"critical\">\n <Box paddingY={4} paddingX={3}>\n <Text size={1}>\n {t('incoming-references-pane.schema-type-not-found', {type: document._type})}\n </Text>\n </Box>\n </Card>\n )\n\n return (\n <Card radius={2} tone=\"default\">\n <FadeInFlex initial={{opacity: 0}} animate={{opacity: 1}} gap={1} align=\"center\">\n <Box flex={1}>\n <IncomingReferencePreview\n type={schemaType}\n value={document}\n onClick={handleClick}\n path={referencePaths[0]}\n />\n </Box>\n </FadeInFlex>\n </Card>\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {map} from 'rxjs'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n LoadingBlock,\n useClient,\n useDocumentPreviewStore,\n useSchema,\n useSource,\n useTranslation,\n} from 'sanity'\n\nimport {CrossDatasetIncomingReferenceDocumentPreview} from '../../../../components/incomingReferencesDecoration/CrossDatasetIncomingReference/CrossDatasetIncomingReferenceDocumentPreview'\nimport {\n type CrossDatasetIncomingReferenceDocument,\n getCrossDatasetIncomingReferences,\n} from '../../../../components/incomingReferencesDecoration/CrossDatasetIncomingReference/getCrossDatasetIncomingReferences'\nimport {getIncomingReferences} from '../../../../components/incomingReferencesDecoration/getIncomingReferences'\nimport {\n INCOMING_REFERENCES_ITEM_HEIGHT,\n IncomingReferencesListContainer,\n} from '../../../../components/incomingReferencesDecoration/shared'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPaneInfo} from '../../useDocumentPaneInfo'\nimport {IncomingReferenceDocument} from './IncomingReferenceDocument'\n\ninterface TypeSectionProps<T> {\n type: string\n documents: T[]\n renderItem: CommandListRenderItemCallback<T>\n getItemKey: (index: number) => string\n emptyMessage: string\n}\n\nfunction TypeSection<T>({\n type,\n documents,\n renderItem,\n getItemKey,\n emptyMessage,\n}: TypeSectionProps<T>) {\n const schema = useSchema()\n const {t} = useTranslation(structureLocaleNamespace)\n const schemaType = schema.get(type)\n const title = schemaType?.title || type\n\n return (\n <Stack key={type} padding={2} space={1} marginBottom={2}>\n <Flex align=\"center\" justify=\"space-between\" paddingBottom={2} gap={2}>\n <Box padding={2}>\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n </Flex>\n {documents.length > 0 ? (\n <Card radius={2} padding={1} border tone=\"default\">\n <IncomingReferencesListContainer $itemCount={documents.length}>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={t('incoming-references-input.list-label', {type: title})}\n canReceiveFocus\n fixedHeight\n getItemKey={getItemKey}\n itemHeight={INCOMING_REFERENCES_ITEM_HEIGHT}\n items={documents}\n onlyShowSelectionWhenActive\n overscan={5}\n renderItem={renderItem}\n wrapAround={false}\n />\n </IncomingReferencesListContainer>\n </Card>\n ) : (\n <Box padding={0}>\n <Card border radius={3} padding={1} tone=\"default\">\n <Box paddingY={3} paddingX={2}>\n <Text size={1} muted>\n {emptyMessage}\n </Text>\n </Box>\n </Card>\n </Box>\n )}\n </Stack>\n )\n}\n\nexport function IncomingReferencesList() {\n const {documentId} = useDocumentPaneInfo()\n const {t} = useTranslation(structureLocaleNamespace)\n const {getClient} = useSource()\n const documentPreviewStore = useDocumentPreviewStore()\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const references$ = useMemo(\n () =>\n getIncomingReferences({\n documentId,\n documentPreviewStore,\n getClient,\n }).pipe(\n map(({documents}) => {\n const documentsByType = documents.reduce(\n (acc, doc) => {\n const type = doc._type\n // If the type exists add the document to it.\n if (acc[type]) acc[type].push(doc)\n // else, create the type with the document.\n else acc[type] = [doc]\n return acc\n },\n {} as Record<string, SanityDocument[]>,\n )\n return Object.entries(documentsByType).map(([type, docs]) => ({type, documents: docs}))\n }),\n map((list) => ({list, loading: false})),\n ),\n [documentId, documentPreviewStore, getClient],\n )\n const references = useObservable(references$, null)\n\n const crossDatasetIncomingRefs$ = useMemo(\n () =>\n getCrossDatasetIncomingReferences({documentId, client, documentPreviewStore}).pipe(\n map(({documents}) => {\n const documentsByType = documents.reduce(\n (acc, doc) => {\n const type = doc.type\n // If the type exists add the document to it.\n if (acc[type]) acc[type].push(doc)\n // else, create the type with the document.\n else acc[type] = [doc]\n return acc\n },\n {} as Record<string, CrossDatasetIncomingReferenceDocument[]>,\n )\n return Object.entries(documentsByType).map(([type, docs]) => ({type, documents: docs}))\n }),\n map((list) => ({list, loading: false})),\n ),\n [client, documentId, documentPreviewStore],\n )\n\n const crossDatasetRefs = useObservable(crossDatasetIncomingRefs$, null)\n\n const renderSameDatasetItem = useCallback<CommandListRenderItemCallback<SanityDocument>>(\n (document) => <IncomingReferenceDocument document={document} referenceToId={documentId} />,\n [documentId],\n )\n\n const renderCrossDatasetItem = useCallback<\n CommandListRenderItemCallback<CrossDatasetIncomingReferenceDocument>\n >((document) => <CrossDatasetIncomingReferenceDocumentPreview document={document} />, [])\n\n const emptyMessage = t('incoming-references-pane.no-references-found')\n\n return (\n <>\n {references?.loading ? (\n <LoadingBlock showText title={t('incoming-references-input.types-loading')} />\n ) : (\n references?.list.map(({type, documents}) => (\n <TypeSection\n key={type}\n type={type}\n documents={documents}\n renderItem={renderSameDatasetItem}\n getItemKey={(index) => documents[index]._id}\n emptyMessage={emptyMessage}\n />\n ))\n )}\n {crossDatasetRefs?.loading ? (\n <LoadingBlock showText title={t('incoming-references-input.types-loading-cross-dataset')} />\n ) : (\n crossDatasetRefs?.list.map(({type, documents}) => (\n <TypeSection\n key={type}\n type={type}\n documents={documents}\n renderItem={renderCrossDatasetItem}\n getItemKey={(index) => documents[index].id}\n emptyMessage={emptyMessage}\n />\n ))\n )}\n </>\n )\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type DocumentInspectorComponent, type DocumentInspectorProps, useTranslation} from 'sanity'\n\nimport {DocumentInspectorHeader} from '../../documentInspector/DocumentInspectorHeader'\nimport {IncomingReferencesList} from './IncomingReferencesList'\n\nexport const IncomingReferencesInspector: DocumentInspectorComponent = (\n props: DocumentInspectorProps,\n) => {\n const {t} = useTranslation()\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={props.onClose}\n title={t('incoming-references.title')}\n />\n <Card flex={1} overflow=\"auto\" padding={3}>\n <IncomingReferencesList />\n </Card>\n </Flex>\n )\n}\n","import {SyncIcon} from '@sanity/icons'\nimport {type DocumentInspector, useTranslation} from 'sanity'\n\nimport {INCOMING_REFERENCES_INSPECTOR_NAME} from '../../constants'\nimport {IncomingReferencesInspector} from './IncomingReferencesInspector'\n\nexport const incomingReferencesInspector: DocumentInspector = {\n name: INCOMING_REFERENCES_INSPECTOR_NAME,\n useMenuItem: () => {\n const {t} = useTranslation()\n\n return {\n icon: SyncIcon,\n title: t('incoming-references.title'),\n }\n },\n component: IncomingReferencesInspector,\n}\n","/* eslint-disable no-loop-func */\n\nimport {type Path, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {isArray, isRecord} from 'sanity'\n\n// eslint-disable-next-line max-statements\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 the value is undefined, it likely means that is has been deleted, so return the result\n if (typeof v === 'undefined') {\n return result\n }\n\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 // in situations where the segment key exists but it could not be found in the values array\n // means that the specific item has been deleted from the array\n // and therefore we not need to continue running the validation for it\n if (typeof v === 'undefined') {\n return result\n }\n\n if (!isRecord(v)) {\n throw new Error(`Array item not found: [_key == ${segment._key}]`)\n }\n\n // Try to find the type by _type property first\n let ofType = s.of.find((i) => isRecord(v) && i.name === v?._type)\n\n // If _type is not set (anonymous object), and there's only one object type, use it\n if (!ofType && !v?._type) {\n const objectTypes = s.of.filter((i) => i.jsonType === 'object')\n if (objectTypes.length === 1) {\n ofType = objectTypes[0]\n }\n }\n\n if (!ofType) {\n throw new Error(`Array item type not found: .${v?._type}`)\n }\n\n s = ofType\n\n result.push(s)\n\n continue\n }\n\n throw new Error(`Invalid path segment: ${JSON.stringify(segment)}`)\n }\n\n return result\n}\n","import {\n ErrorOutlineIcon,\n type IconComponent,\n InfoOutlineIcon,\n WarningOutlineIcon,\n} from '@sanity/icons'\nimport {\n type ObjectSchemaType,\n type Path,\n type SanityDocument,\n type SchemaType,\n type ValidationMarker,\n} from '@sanity/types'\nimport {Box, Card, type CardTone, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, Fragment, useCallback, useMemo, useState} from 'react'\nimport {type DocumentInspectorProps, isGoingToUnpublish, useTranslation} from 'sanity'\n\nimport {ErrorBoundary} from '../../../../../ui-components'\nimport {DocumentInspectorHeader} from '../../documentInspector'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {getPathTitles} from './getPathTitles'\n\nconst MARKER_ICON: Record<'error' | 'warning' | 'info', IconComponent> = {\n error: ErrorOutlineIcon,\n warning: WarningOutlineIcon,\n info: InfoOutlineIcon,\n}\n\nconst MARKER_TONE: Record<'error' | 'warning' | 'info', CardTone> = {\n error: 'critical',\n warning: 'caution',\n info: 'primary',\n}\n\nexport function ValidationInspector(props: DocumentInspectorProps) {\n const {onClose} = props\n const {onFocus, onPathOpen, schemaType, validation, value, editState} = useDocumentPane()\n const {t} = useTranslation('validation')\n\n const handleOpen = useCallback(\n (path: Path) => {\n onPathOpen(path)\n onFocus(path)\n },\n [onFocus, onPathOpen],\n )\n\n const isVersionGoingToUnpublish =\n editState && editState.version && isGoingToUnpublish(editState.version)\n\n return (\n <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <DocumentInspectorHeader\n as=\"header\"\n closeButtonLabel={t('panel.close-button-aria-label')}\n flex=\"none\"\n onClose={onClose}\n title={t('panel.title')}\n />\n\n <Card flex={1} overflow=\"auto\" padding={3}>\n {isVersionGoingToUnpublish ? (\n <Box padding={2}>\n <Text muted size={1}>\n {t('panel.unpublish-message')}\n </Text>\n </Box>\n ) : (\n <>\n {validation.length === 0 && (\n <Box padding={2}>\n <Text muted size={1}>\n {t('panel.no-errors-message')}\n </Text>\n </Box>\n )}\n {validation.length > 0 && (\n <Stack space={2}>\n {validation.map((marker, i) => (\n <ValidationCard\n // oxlint-disable-next-line no-array-index-key\n key={i}\n marker={marker}\n onOpen={handleOpen}\n schemaType={schemaType}\n value={value}\n />\n ))}\n </Stack>\n )}\n </>\n )}\n </Card>\n </Flex>\n )\n}\n\nfunction ValidationCard(props: {\n marker: ValidationMarker\n onOpen: (path: Path) => void\n schemaType: ObjectSchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {marker, onOpen, schemaType, value} = props\n const handleOpen = useCallback(() => onOpen(marker.path), [marker, onOpen])\n const [errorInfo, setErrorInfo] = useState<{error: Error; info: ErrorInfo} | null>(null)\n const Icon = MARKER_ICON[marker.level]\n\n return (\n <ErrorBoundary onCatch={setErrorInfo}>\n {errorInfo && (\n <Card padding={3} radius={2} tone=\"critical\">\n <Text size={1}>{errorInfo.error.message}</Text>\n </Card>\n )}\n\n {!errorInfo && (\n <Card\n __unstable_focusRing\n as=\"button\"\n onClick={handleOpen}\n padding={3}\n radius={2}\n tone={MARKER_TONE[marker.level]}\n >\n <Flex align=\"flex-start\" gap={3}>\n <Box flex=\"none\">\n <Text size={1}>\n <Icon />\n </Text>\n </Box>\n\n <Stack flex={1} space={2}>\n <DocumentNodePathBreadcrumbs\n path={marker.path}\n schemaType={schemaType}\n value={value}\n />\n\n <Text muted size={1}>\n {marker.message}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n </ErrorBoundary>\n )\n}\n\nfunction DocumentNodePathBreadcrumbs(props: {\n path: Path\n schemaType: SchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {path, schemaType, value} = props\n\n const pathTitles = useMemo(() => {\n try {\n return getPathTitles({path, schemaType, value})\n } catch (e) {\n console.error(e)\n }\n return null\n }, [path, schemaType, value])\n\n if (!pathTitles?.length) return null\n\n return (\n <Text size={1}>\n {pathTitles.map((t, i) => (\n // oxlint-disable-next-line no-array-index-key\n <Fragment key={i}>\n {i > 0 && <span style={{color: 'var(--card-muted-fg-color)', opacity: 0.5}}> / </span>}\n <span style={{fontWeight: 500}}>{t.title || t.name}</span>\n </Fragment>\n ))}\n </Text>\n )\n}\n","import {CheckmarkCircleIcon, ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {useMemo} from 'react'\nimport {\n type DocumentInspector,\n type DocumentInspectorMenuItem,\n type DocumentInspectorUseMenuItemProps,\n type FormNodeValidation,\n isGoingToUnpublish,\n isValidationError,\n isValidationWarning,\n usePerspective,\n useTranslation,\n useValidationStatus,\n} from 'sanity'\n\nimport {VALIDATION_INSPECTOR_NAME} from '../../constants'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {ValidationInspector} from './ValidationInspector'\n\nfunction useMenuItem(props: DocumentInspectorUseMenuItemProps): DocumentInspectorMenuItem {\n const {documentType} = props\n const {t} = useTranslation('validation')\n const {selectedReleaseId} = usePerspective()\n const {value} = useDocumentPane()\n\n const {validation: validationMarkers} = useValidationStatus(\n value._id,\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 const isDocumentGoingToUnpublish = isGoingToUnpublish(value)\n\n const icon = useMemo(() => {\n if (hasErrors) return ErrorOutlineIcon\n if (hasWarnings) return WarningOutlineIcon\n return CheckmarkCircleIcon\n }, [hasErrors, hasWarnings])\n\n const tone = useMemo(() => {\n if (hasErrors) return 'critical'\n if (hasWarnings) return 'caution'\n return 'positive'\n }, [hasErrors, hasWarnings])\n\n return {\n hidden: validation.length === 0 || isDocumentGoingToUnpublish,\n icon,\n title: t('panel.title'),\n tone,\n showAsAction: true,\n }\n}\n\nexport const validationInspector: DocumentInspector = {\n name: VALIDATION_INSPECTOR_NAME,\n component: ValidationInspector,\n useMenuItem,\n}\n","import omit from 'lodash-es/omit.js'\nimport {decodeJsonParams, encodeJsonParams, route} from 'sanity/router'\n\nimport {type RouterPaneGroup, type RouterPanes, type RouterPaneSibling} from './types'\n\nconst EMPTY_PARAMS = {}\n\nfunction legacyEditParamsToState(params: string): Record<string, unknown> {\n try {\n return JSON.parse(decodeURIComponent(params))\n } catch {\n console.warn('Failed to parse JSON parameters')\n return {}\n }\n}\n\nfunction encodePanesSegment(panes: RouterPanes): string {\n return (panes || [])\n .map((group) => group.map(encodeChunks).join('|'))\n .map(encodeURIComponent)\n .join(';')\n}\n\nfunction 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 if (chunk) {\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\nfunction 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 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 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, type DocumentActionComponent} from 'sanity'\n\nimport {\n useDeleteAction,\n useDiscardChangesAction,\n useDuplicateAction,\n useHistoryRestoreAction,\n usePublishAction,\n useUnpublishAction,\n} from './documentActions'\nimport {useLiveEditBadge} from './documentBadges'\nimport {getIntentState} from './getIntentState'\nimport {structureUsEnglishLocaleBundle} from './i18n'\nimport {changesInspector} from './panes/document/inspectors/changes'\nimport {incomingReferencesInspector} from './panes/document/inspectors/incomingReferences'\nimport {validationInspector} from './panes/document/inspectors/validation'\nimport {router} from './router'\nimport {type StructureToolOptions} from './types'\n\nconst documentActions = [\n usePublishAction,\n useUnpublishAction,\n useDiscardChangesAction,\n useDuplicateAction,\n useDeleteAction,\n useHistoryRestoreAction,\n]\n\nconst destructiveActionNames: DocumentActionComponent['action'][] = ['delete', 'discardChanges']\n\nconst documentBadges = [useLiveEditBadge]\n\nconst inspectors = [validationInspector, changesInspector, incomingReferencesInspector]\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, context) => {\n const combinedActions = Array.from(new Set([...prevActions, ...documentActions]))\n\n // Separate destructive actions to place at end\n const destructiveActions = combinedActions.filter((action) =>\n destructiveActionNames.includes(action.action),\n )\n const otherActions = combinedActions.filter(\n (action) => !destructiveActionNames.includes(action.action),\n )\n\n if (context.versionType === 'published') {\n // Place the unpublish action as the primary action if the document is the published version.\n const sortedActions = [...otherActions].sort((a, b) => {\n if (a.action === 'unpublish') return -1\n if (b.action === 'unpublish') return 1\n return 0\n })\n return [...sortedActions, ...destructiveActions]\n }\n\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 [...otherActions, ...destructiveActions]\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 const handle: Record<string, boolean> = {}\n // We can handle any create intent as long as it has a `type` parameter\n // but we are best at `structure` mode\n if ('mode' in params) handle.mode = params.mode === 'structure'\n // we also know how to deal with templates, where other tools might not\n if ('template' in params) handle.template = true\n\n return Object.keys(handle).length ? handle : 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":["useCreatePathSyncChannel","$","_c","t0","for","Subject","DIFF_VIEW_SEARCH_PARAMETER","DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER","DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER","DIFF_SEARCH_PARAM_DELIMITER","useDiffViewRouter","navigate","state","routerState","useRouter","t1","mode","previousDocument","nextDocument","next","fromPairs","_searchParams","type","id","join","toPairs","navigateDiffView","filter","_temp","exitDiffView","t2","key","includes","diffViewModes","isDiffViewMode","maybeDiffViewMode","useDiffViewState","undefined","onParamsError","searchParams","URLSearchParams","get","anyParamSet","some","t3","t4","t5","t6","parseParams","params","t7","errors","result","t8","useEffect","t9","isActive","param","previousDocumentType","previousDocumentId","split","Boolean","nextDocumentType","nextDocumentId","push","length","documents","previous","useScrollMirror","elements","existentElements","scrollMirror","ScrollMirror","destroy","element","findRelease","documentId","releases","isPublishedId","isDraftId","find","_id","getReleaseIdFromReleaseDocumentId","getVersionFromId","VersionModeHeaderLayout","styled","header","withConfig","displayName","componentId","VersionModeHeaderLayoutSection","div","VersionModeHeader","t","useTranslation","structureLocaleNamespace","data","documentVersions","useDocumentVersions","activeReleases","useActiveReleases","flatMap","releasesIds","release","releaseId","fetchingState","releasesState","selectedDocumentId","onSelectPreviousRelease","selectedDocumentId_0","onSelectNextRelease","t10","t11","Symbol","t12","t13","justifySelf","t14","CloseIcon","t15","t16","VersionMenu","onSelectRelease","role","document","getPublishedId","published","draft","useEditState","selected","tStructure","tCore","useWorkspace","drafts","enabled","isDraftModelEnabled","getMenuButtonProps","map","VersionMenuItem","onSelect","isSelected","getDraftId","getVersionId","onClick","releasePerspective","PUBLISHED","LATEST","minWidth","metadata","title","size","weight","releaseType","formatRelativeLocalePublishDate","isReleaseScheduledOrScheduling","text","tone","disabled","isReleaseDocument","getReleaseTone","icon","iconRight","isSystemBundleName","loading","error","DialogLayout","pickDocumentLayoutComponent","plugin","components","unstable_layout","usePathSyncChannel","syncChannel","source","pipe","distinctUntilChanged","_temp2","path","state_0","deepEquals","Scroller","DiffViewPaneLayout","Card","Container","UiContainer","DiffViewPane","forwardRef","ref","documentType","scrollElement","compareDocument","containerElement","useRef","portalElement","setPortalElement","useState","boundaryElement","setBoundaryElement","pick","defaultComponent","DocumentLayout","useMiddlewareComponents","isInteractive","onOpenReviewChanges","noop","onSetFocus","isReviewChangesOpen","t17","t18","DiffViewDocument","compareValue","useCompareValue","patchChannel","perspective","perspectiveName","selectedPerspectiveName","comparisonValue","displayInlineChanges","formState","onChange","onFocus","onBlur","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","collapsedFieldSets","ready","collapsedPaths","schemaType","value","onProgrammaticFocus","openPath","onPathOpen","onPathOpenFromForm","useDocumentForm","isLoading","pathSyncChannel","subscription","subscribe","path_0","unsubscribe","focusPath","changed","focused","groups","validation","members","sanitizeBundleName","hasUpstreamVersion","presence","isVersionId","compareDocumentEditState","bb0","version","bundle","createPatchChannel","Link","a","EditReferenceLinkComponent","children","_documentId","intent","href","useIntentLink","DiffView","previousPaneElement","setPreviousPaneElement","nextPaneElement","setNextPaneElement","referenceInputOptionsContext","useContext","ReferenceInputOptionsContext","disableNew","diffViewReferenceInputOptionsContext","DiffViewDocumentLayout","toast","useToast","status","description","input","PANE_DEBUG","PANE_COLLAPSED_WIDTH","PANE_DEFAULT_MIN_WIDTH","usePaneLayout","pane","PaneLayoutContext","Error","Root","Layer","PaneDivider","resize","dragging","setDragging","event","preventDefault","startX","pageX","handleMouseMove","e","deltaX","handleMouseUp","e_0","window","removeEventListener","addEventListener","handleMouseDown","Pane","props","forwardedRef","currentMaxWidthProp","currentMinWidthProp","maxWidthProp","minWidthProp","restProps","currentMinWidth","currentMaxWidth","flex","maxWidth","flexProp","rootElement","setRootElement","collapse","collapsed","layoutCollapsed","expand","expandedElement","mount","panes","p","indexOf","paneIndex","nextPane","isLast","expanded","nextCollapsed","current","useImperativeHandle","refValue","setRef","useLayoutEffect","handleCollapse","handleExpand","index","contextValue","bb1","hidden","divider","Infinity","style","t19","t20","t21","t22","t23","t24","t25","usePane","PaneContext","PaneContent","as","overflow","padding","toLowerCaseNoSpaces","str","toLocaleLowerCase","replaceAll","MENU_GROUP_POPOVER_PROPS","constrainSize","placement","portal","PaneMenuButtonItem","isAfterGroup","node","getI18nText","useGetI18nText","child","childIndex","child_0","childIndex_0","PaneContextMenuItemResolver","PaneContextMenuItem","reason","tooltipContent","useI18nText","showSelectionIndicator","hideSelectionIndicator","hotkey","CheckmarkIcon","onAction","MenuItem","PaneContextIntentMenuItem","intentLink","handleClick","CONTEXT_MENU_POPOVER_PROPS","nodesHasTone","nodes","PaneContextMenuButton","actionsNodes","useId","hasCritical","hasCaution","nodeIndex","RootCard","PaneFooter","$border","css","Layout","Flex","TitleCard","theme","fg","bg","sanity","color","card","TitleTextSkeleton","TextSkeleton","TitleText","Text","PaneHeader","actions","backButton","border","contentAfter","subActions","tabs","tabIndex","appendTitle","paneElement","paneRect","useElementRect","height","innerHeight","width","layoutStyle","handleTitleClick","handleLayoutClick","showTabsOrSubActions","getDisabledReason","disabledReason","ariaLabel","isDisabled","PaneHeaderActionButton","console","warn","PaneHeaderMenuItemActionButton","hotkeys","content","PaneHeaderActionIntentButton","PaneHeaderMenuGroupActionButton","UnknownIcon","Button","idx","_calcPaneResize","cache","left","right","sum","leftMinWidth","rightMinWidth","leftMaxWidth","Math","min","rightMaxWidth","minDeltaX","rightMinDeltaX","maxDeltaX","leftMaxDeltaX","_deltaX","max","leftW","rightW","leftFlex","rightFlex","_getDOMPath","el","parentElement","Array","from","childNodes","unshift","EMPTY_PATH","_sortElements","WeakMap","set","_sortByElementPath","b","_a","_b","len","i","aIndex","bIndex","sort","createPaneLayoutController","observers","optionsMap","userCollapsedElementSet","Set","rootWidth","maximizedElement","resizeDataMap","Map","resizing","add","_notifyObservers","delete","maximize","options","original","splice","leftElement","leftIndex","leftOptions","rightElement","rightOptions","offsetWidth","leftResizeData","rightResizeData","nextRootElement","setRootWidth","nextRootWidth","observer","_elements","dataMap","lastElement","collapsedWidth","remaingWidth","userCollapsed","has","sizeCollapsed","resizeData","maximized","PaneLayout","onCollapse","onExpand","controller","setState","paneLayout","ErrorPane","paneKey","Delay","ms","setReady","timeoutId","setTimeout","clearTimeout","getWaitMessages","thresholds","messageKey","isDev","message","src","of","merge","threshold","mapTo","delay","DEFAULT_MESSAGE_KEY","Content","LoadingPane","memo","messageProp","resolvedMessage","currentMessage","setCurrentMessage","sub","contentElement","setContentElement","mounted","setMounted","_raf2","DELAY","useDocumentPane","documentPane","DocumentPaneContext","CommentsWrapper","CommentsProviderWrapper","useCommentsEnabled","connectionState","inspector","openInspector","selectedReleaseId","usePerspective","setParams","usePaneRouter","resolveIntentLink","selectedCommentId","comment","scheduledDraft","paramsRef","commentId","inspect","COMMENTS_INSPECTOR_NAME","location","origin","getCommentLink","handleClearSelectedComment","name","handleOpenCommentsInspector","DocumentActionsProvider","editState","isInitialValueLoading","revisionId","onCompleteRef","candidate","matchingReleaseName","revision","initialValueResolved","actionProps","onComplete","EMPTY_ARRAY","states","r","SUPPORTED_LINKED_TO_CANVAS_ACTIONS","ActionsGuardWrapper","getDocumentIdForCanvasLink","isLinked","useCanvasCompanionDoc","s","action","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","INCOMING_REFERENCES_INSPECTOR_NAME","DocumentInspectorMenuItemsResolver","inspectors","onMenuItems","menuItems","setMenuItems","newFieldActions","prev","setMenuItem","index_0","useMenuItem","defineInspectorMenuItemComponent","InspectorMenuItems","InspectorMenuItem","menuItem","useUnique","useDocumentPaneInfo","documentPaneInfo","DocumentPaneInfoContext","useDocumentTitle","isDeleted","lastRevisionDocument","isPublishedPerspective","documentValue","subscribed","prepareForPreview","deletedDocumentPreview","error_0","useValuePreview","IGNORE_OPS","DocumentOperationResults","pushToast","documentPaneValue","documentTitleInfo","titleError","useDocumentOperationEvent","prevEvent","paneRouter","handleOpenDialog","useDocumentLimitsUpsellContext","op","documentTitleBase","slice","documentTitle","cleanupId","isDocumentLimitError","closable","duration","context","Strong","closeCurrentAndAfter","isLiveEditEnabled","liveEdit","hasObsoleteDraft","workspace","draftExists","mustChooseNewDocumentDestination","isSelectedPerspectiveWriteable","isNewDocument","position","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","useObservable","newValue","setKey","VIEW_MODE_PARSED","VIEW_MODE_RAW","VIEW_MODES","lru","LRU","maxSize","isExpanded","keyPath","cached","isArray","isRecord","toggleExpanded","selectElement","sel","getSelection","range","createRange","removeAllRanges","selectNodeContents","addRange","select","target","maybeSelectAll","keyCode","metaKey","ctrlKey","currentTarget","isDocumentLike","isString","_type","JSONInspectorWrapper","fonts","space","code","family","sizes","fontSize","rem","syntax","property","constant","string","boolean","number","Search","query","handleChange","SearchIcon","InspectDialog","onInspectClose","dialogIdPrefix","viewModeId","onViewModeChange","viewMode","setParsedViewMode","setRawViewMode","DocumentTitle","bottom","outline","ignoreCase","JSON","stringify","Banner","Icon","rest","paddingY","DeletedDocumentBanners","isDeleting","selectedPerspective","isDraftPerspective","DeletedDocumentBanner","restore","useDocumentOperation","navigateIntent","execute","handleRestore","ReadOnlyIcon","ArchivedReleaseBanner","DocumentRemoveIcon","DeprecatedDocumentTypeBanner","isDeprecatedSchemaType","deprecated","ErrorOutlineIcon","AskToEditDialogOpened","defineEvent","AskToEditRequestSent","MAX_NOTE_LENGTH","DialogBody","Box","attrs","align","direction","justify","RequestPermissionDialog","onRequestSubmitted","telemtry","useTelemetry","dialogId","projectId","useProjectId","apiVersion","client","useClient","zOffset","useZIndex","isSubmitting","setIsSubmitting","note","setNote","msgError","setMsgError","hasTooManyRequests","setHasTooManyRequests","hasBeenDenied","setHasBeenDenied","adminRole","observable","roles","request","url","startWith","catchError","requestedRole","method","body","requestUrl","then","log","catch","err","statusCode","response","errMessage","finally","onSubmit","fullscreen","cancelButton","confirmButton","role_0","appliesToUsers","LOADING_STATE","EMPTY_STATE","DECLINED_STATE","PENDING_STATE","EXPIRED_STATE","useRoleRequestsStatus","checkRoleRequests","checkRoleRequests$","tag","requests","projectRequests","resourceId","declinedRequest","isAfter","addWeeks","Date","createdAt","isBefore","InsufficientPermissionBanner","requiredPermission","currentUser","useCurrentUser","roleRequestStatus","requestStatusLoading","requestStatusError","requestSent","setRequestSent","requestPending","currentUserRoles","isOnlyViewer","showRequestPermissionDialog","setShowRequestPermissionDialog","listFormat","useListFormat","telemetry","roleTitles","formatToParts","Roles","count","part","ReferenceChangedBanner","documentPreviewStore","useDocumentPreviewStore","groupIndex","routerPanesState","replaceCurrent","BackLink","routerReferenceId","parentSibling","parentId","hasHistoryOpen","rev","parentRefPath","pathFromString","parentRefPathSegment","publishedId","keyedSegmentIndex","findIndex","isSystemBundle","availability","pathGet","snapshot","_ref","concat","unstable_observePathsDocumentPair","debounceTime","referenceInfoObservable","referenceInfo","handleReloadReference","available","SyncIcon","WarningOutlineIcon","ScheduledDraftOverrideBanner","draftDocument","firstDocument","scheduledDraftDocument","useScheduledDraftDocument","draftPublishedId","scheduledPublishedId","draftRev","_rev","scheduledBaseRev","_system","base","PaneRouterContext","ArchivedReleaseDocumentBanner","archivedReleases","useArchivedReleases","historyEvent","since","historyVersion","handleGoBack","isCardinalityOneRelease","displayTitle","VersionBadge","BadgeWithTone","getVersionInlineBadge","archivedRelease","Image","img","CANVAS_IMAGE_URL","CANVAS_APP_NAME","CanvasPopoverContent","isLockedByCanvas","useClickOutsideEvent","popoverHeading","popoverDescription","LaunchIcon","CanvasLinkedBannerContent","open","setOpen","documentVariantType","getDocumentVariantType","variantText","togglePopover","InfoOutlineIcon","CanvasLinkedBanner","displayed","companionDoc","navigateToCanvas","useNavigateToCanvasDoc","canvasDocumentId","ChooseNewDocumentDestinationBanner","isPerspectiveWriteable","menuItemProps","releaseDoc","releaseTitle","CreateLinkedBanner","documentLinkedBannerContent","CreateLinkedBannerContent","useSanityCreateConfig","getSanityCreateLinkMetadata","createLinkMetadata","TOAST_DELAY","DocumentNotInReleaseBanner","currentRelease","isScheduledRelease","createVersion","useVersionOperations","isAnonymousBundle","versionCreateState","setVersionCreateState","lastUpdate","bundleId","handleAddToRelease","now","useCurrentTime","getTime","useConditionalToast","updateIntervalMs","currentTime","setCurrentTime","intervalId","setInterval","clearInterval","ResolvedLiveEdit","ObsoleteDraftBanner","i18nKey","isEditBlocking","isPublishing","setPublishing","isDiscarding","setDiscarding","publish","discardChanges","liveEditResolveType","handlePublish","handleDiscard","diffViewRouter","compareDraft","OpenReleaseToEditBanner","isPinnedDraftOrPublished","onlyHasVersions","useOnlyHasVersions","OpenReleaseToEditBannerInner","setPerspective","useSetPerspective","currentVersion","version_0","documentVersionReleases","handleGoToEdit","firstRelease","fallback","PausedScheduledDraftBanner","PauseIcon","RevisionNotFoundBanner","revisionNotFound","ScheduledReleaseBanner","date","LockIcon","UnpublishedDocumentBanner","isCurrentVersionGoingToUnpublish","isGoingToUnpublish","UnpublishIcon","TitleContainer","Stack","heading","FormHeader","isSingleton","__experimental_formPreviewTitle","ev","FormView","margins","fieldActions","inspectOpen","documentStore","useDocumentStore","useDocumentPresence","isLocked","transactionSyncLock","pair","documentEvents","tap","prepareMutationEvent","prepareRebaseEvent","hasRev","patches","handleInitialValue","useEffectEvent","formRef","setFormRef","focusedFirstDescendant","setFocusedFirstDescendant","focusFirstDescendant","isReadOnly","readOnly","mutations","mut","patch","fromMutationPatches","remotePatches","remoteMutations","localPatches","localMutations","DocumentHeaderTabs","activeViewId","views","tabPanelId","view","DocumentHeaderTab","label","viewId","setView","DEFAULT_VALUE","paneDataItems","routerPanes","resolvedPanes","maximizedPane","setMaximizedPane","useResolvedPanesList","ResolvedPanesContext","_DEBUG","Object","freeze","LOADING_PANE","DOCUMENT_PANEL_PORTAL_ELEMENT","FocusDocumentPaneClicked","FocusDocumentPaneCollapsed","FocusDocumentPaneNavigated","DocumentHeaderBreadcrumbItem","paneData","router","useRouterState","perspectiveStack","staticTitle","previewValue","useDocumentPreviewValues","DocumentHeaderBreadcrumb","currentPaneIndex","isDocumentPane","Fragment","DocumentHeaderTitle","hasMaximizedPane","FavoriteToggle","documentExists","isFavorited","isReady","favorite","unfavorite","useManageFavorite","DocumentPanelSubHeader","activeWorkspace","useActiveWorkspace","showTabs","showBackButton","ArrowLeftIcon","dataset","favoriteToggle","DocumentBox","ScrollContainer","$disabled","DocumentPanel","footerHeight","headerHeight","isInspectOpen","setDocumentPanelPortalElement","footer","permissions","isPermissionsLoading","isSanityCreateLinked","showCreateBanner","parentPortal","usePortal","_portalElement","documentScrollElement","setDocumentScrollElement","formContainerElement","_createdAt","activeView","splitPanes","formViewHidden","ActiveViewComponent","historical","activeViewNode","prevDocumentIdRef","scrollTo","inspectDialog","showInspector","filteredReleases","useFilteredReleases","isPaused","isPausedDraft","usePausedScheduledDraft","documentInScheduledRelease","currentReleases","notCurrentReleases","scheduledCardinalityOneRelease","displayedIsDraft","isPinnedDraftOrPublish","displayedHasObsoleteDraft","granted","t26","t27","banners","portalElements","showFormView","isPausedCardinalityOneRelease","useHistoryRestoreAction","isConfirmDialogOpen","setConfirmDialogOpen","handleConfirm","handleCancel","handle","onCancel","onConfirm","dialog","isRevisionInitial","isRevisionLatest","onHandle","RevertIcon","isMenuNodeButton","renderAsButton","isNotMenuNodeButton","negate","resolveMenuNodes","menuItemGroups","keyOffset","mapFieldActionToPaneMenuNode","itemGroup","g","i18n","ungroupedItems","item","group","shortcut","actionHandler","showAsAction","childIdx","POPOVER_FALLBACK_PLACEMENTS","DIALOG_WIDTH_TO_UI_WIDTH","small","medium","large","full","ConfirmDialog","referenceElement","cancelButtonIcon","cancelButtonText","confirmButtonIcon","confirmButtonText","ModalDialog","showCloseButton","Dialog","PopoverDialog","Popover","PopoverDialogContent","isTopLayer","useLayer","useGlobalKeyDown","DocumentActionPortalProvider","ActionStateDialog","modalId","unknownModal","ActionDialogWrapper","actionStates","actionIndex","setActionIndex","currentAction","handleAction","ActionMenuButton","idPrefix","setReferenceElement","preventOverflow","popoverProps","actionState","renderActionDialog","ActionMenuListItem","String","replace","tooltipProps","toUpperCase","DocumentURLCopied","DocumentIDCopied","InlineChangesSwitchedOn","InlineChangesSwitchedOff","CopyDocumentActions","buildIntentUrl","useStudioUrl","versionReleaseId","contextAwareDocumentId","intentParams","copyUrl","navigator","clipboard","writeText","handleCopyLink","handleCopyId","ShareIcon","LinkIcon","TargetIcon","useChipScrollPosition","containerRef","showGradient","setShowGradient","checkOverflow","container","scrollWidth","clientWidth","scrollLeft","isAtEnd","setupObservers","container_0","intersectionObserver","mutationObserver","IntersectionObserver","entries","entry","isIntersecting","updateLastChipObserver","disconnect","lastChip","observe","MutationObserver","childList","subtree","intersectionObserver_0","mutationObserver_0","NonReleaseVersionsSelect","nonReleaseVersions","onSelectBundle","onCopyToDraftsNavigate","getVersionDisplay","releasesLoading","nonReleaseDropdownOpen","setNonReleaseDropdownOpen","popoverReferenceElement","setPopoverReferenceElement","v","extract","selectedNonReleaseVersion","otherNonReleaseVersions","popoverRef","matches","versionDisplay","isVersion","ChevronUpIcon","ChevronDownIcon","nonReleaseVersionId","versionDisplay_0","v_0","xs","predicate","match","TooltipContent","intendedPublishAt","DATE_TIME_FORMAT","dateStyle","timeStyle","DocumentPerspectiveList","dateTimeFormat","useDateTimeFormat","schema","useSchema","isCreatingDocument","defaultPerspective","useGetDefaultPerspective","onSetScheduledDraftPerspective","useSingleDocRelease","handleCopyToDraftsNavigate","newPerspective","handlePerspectiveChange","isLiveEdit","isPublishedChipDisabled","isReleaseHistoryMatch","getReleaseChipState","isPublishSelected","displayedId","isDraftSelected","isDraftDisabled","filteredVersionIds","useAgentVersionDisplay","versionDocumentId","release_0","_updatedAt","format","inCreation","fullTitle","isTruncated","release_1","displayTitle_0","fullTitle_0","isTruncated_0","HorizontalScroller","getTheme_v2","$showGradient","rgba","DocumentPanelHeader","_props","onMenuAction","onPaneClose","onPaneSplit","onSetMaximizedPane","unstable_languageFilter","hasGroupSiblings","useFieldActions","scrollContainerRef","menuNodes","menuButtonNodes","contextMenuNodes","showSplitPaneButton","splitViews","showSplitPaneCloseButton","showPaneGroupCloseButton","isMaximizedPane","handleFocusPane","LanguageFilterComponent","SplitVerticalIcon","CollapseIcon","ExpandIcon","DocumentPanelHeaderActionDialogDeferred","useDeferredValue","DocumentPanelHeaderActionDialog","SpacerButton","pointerEvents","visibility","BADGE_TONES","primary","success","warning","danger","DocumentBadgesInner","DocumentBadgesDeferred","DocumentBadges","badges","renderDocumentBadges","badge","whiteSpace","DISABLED_REASON_TITLE_KEY","NOTHING_TO_DELETE","NOT_READY","useDeleteAction","isAgentBundle","isAgentBundleName","deleteOp","setIsDeleting","sortedDocumentList","useDocumentVersionTypeSortedList","hasScheduledRelease","versions","permission","useDocumentPairPermissions","TrashIcon","getTitle","ConfirmDeleteDialog","ConfirmDiscardDialog","publishedExists","DISABLED_REASON_KEY","NO_CHANGES","NOT_PUBLISHED","useDiscardChangesAction","isPublished","ResetIcon","NOTHING_TO_DUPLICATE","useDuplicateAction","mapDocument","duplicate","isDuplicating","setDuplicating","dupeId","uuid","duplicateSuccess","firstValueFrom","operationEvents","CopyIcon","DocumentPublished","PublishButtonClicked","PublishButtonDisabledStart","PublishButtonDisabledComplete","LIVE_EDIT_ENABLED","ALREADY_PUBLISHED","PUBLISHED_STATE","publishedAt","AlreadyPublished","useTemporalPhrase","timeSincePublished","useRelativeTime","usePublishAction","publishState","setPublishState","changesOpen","validationStatus","useValidationStatus","syncState","useSyncState","isValidationErrorMarker","hasValidationErrors","publishScheduled","setPublishScheduled","isSyncing","isValidating","currentPublishRevision","stage","publishRevision","doPublish","validationComplete","didPublish","nextState","timer","isWaitingToPublish","isRemoteEvent","publishedImmediately","previouslyPublished","PublishIcon","useUnpublishAction","unpublish","isDraft","DocumentStatusBarActionsInner","__internal_tasks","useSource","showingRevision","firstActionState","menuActionStates","buttonElement","setButtonElement","marginTop","marginBottom","shouldShowScheduleAsFirstActionButton","isSanityDefinedAction","showFirstActionButton","sideMenuItems","footerAction","DocumentStatusBarActions","RenderDocumentStatusBarActions","_temp3","HistoryStatusBarActions","_temp4","RenderHistoryStatusBarActions","_temp5","toLowerCase","TIMELINE_ICON_COMPONENTS","create","AddIcon","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","selected_0","chunk_0","chunk_1","filteredChunks","parentId_0","prev_0","next_0","handleExpandParent","chunk_2","selectedIndex","chunk_3","timelineChunk","c","handleSelectChunk","chunk_4","activeIndex","renderItem","TimelineError","versionError","TIMELINE_MENU_PORTAL","TimelineMenu","setTimelineRange","timelineError","timelineStore","button","setButton","setPopoverRef","useTimelineSelector","realRevChunk","sinceTime","handleOpen","focus","revChunk","run","sinceId","revId","findRangeForRev","selectRev","sinceChunk","run_0","sinceId_0","revId_0","findRangeForSince","selectSince","loadMore","handleLoadMore","revLabel","formatParams","buttonLabel","state_3","state_2","state_1","StyledMotionPath","motion","Circle","Arrows","Checkmark","rotateAnimation","keyframes","RotateGroup","root","syncing","scale","transition","saved","changes","circle","strokeDasharray","strokeDashoffset","opacity","arrows","checkmark","pathLength","AnimatedStatusIcon","STATUS_DICTIONARY","DocumentStatusPulse","currentStatus","MotionButton","MotionBox","getDocumentStatusKey","timelineKey","ButtonSkeleton","margin","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","EventsContext","revisionEvent","useResizeObserver","onResize","resizeObserver","unobserve","CONTAINER_BREAKPOINT","AnimatedCard","DocumentStatusBar","actionsBoxRef","onDocumentChange","CreateLinkedActions","documentLinkedActions","setCollapsed","contentRect","handleResize","shouldRender","flexShrink","marginLeft","KeyboardShortcutResponder","actionsBoxElement","onActionStart","onKeyDown","rootRef","As","activeAction","matchingStates","isHotkey","matchingState","handleKeyDown","DocumentActionShortcuts","setActiveIndex","HiddenCheckmarkIcon","getInspectorItems","currentInspector","hasValue","inspectorMenuItems","getInspectItem","JsonIcon","getCompareVersionsItem","documentIdStack","previousId","TransferIcon","getInlineChangesItem","getProductionPreviewItem","previewUrl","EarthAmericasIcon","getMenuItems","inspectorItems","items","DocumentLayoutError","DIALOG_PROVIDER_POSITION","DocumentLayoutFooter","documentPanelPortalElement","setFooterElement","setActionsBoxElement","zOffsets","StyledChangeConnectorRoot","ChangeConnectorRoot","stickyParams","paneParams","footerElement","headerElement","setHeaderElement","useGlobalCopyPasteElementHandler","setInspectorMenuItems","rootFieldActionNodes","setRootFieldActionNodes","footerRect","headerRect","useDocumentIdStack","handleKeyUp","onConnectorSetFocus","changesInspectorTab","paneDialog","useDocumentLayoutComponent","useDocumentLastRev","historyStore","useHistoryStore","setLastRevisionDocument","setLoading","useTimelineStore","lastNonDeletedRevId","getDocumentAtRevision","getInitialValueTemplateOpts","templates","opts","payload","panePayload","structureNodeTemplate","templateName","urlTemplate","template","typeTemplates","templateParams","useDocumentPaneInitialValue","paneOptions","useTemplates","templateParameters","initialValueRaw","useInitialValue","useDocumentPaneInspector","inspectorsResolver","inspectorName","setInspectorName","inspectParamRef","historyInspector","closeInspectorName","i_1","result_0","nextInspectorName","nextInspector","i_2","currentParams","result_1","onOpen","handleHistoryClose","reviewChanges","handleHistoryOpen","toggleLegacyInspect","handleLegacyInspectClose","nextInspectorName_0","nextInspector_0","i_3","handleInspectorAction","i_0","isSanityDocument","usePreviewUrl","resolveProductionUrl","BehaviorSubject","subject","asObservable","switchMap","DocumentPaneProvider","onFocusPath","forcedVersion","store","timelineReady","revisionDocument","onOlderRevision","sinceDocument","isPristine","setDocumentMeta","useCopyPaste","documentActions","documentBadges","unstable_fieldActions","fieldActionsResolver","languageFilterResolver","draftsEnabled","setPaneParams","viewsProp","documentIdRaw","initialValue","getIsDeleted","upstreamEditState","upstream","selectUpstreamVersion","getComparisonValue","editState_0","seeingHistoryDocument","getIsReadOnly","getDisplayed","initialFocusPath","getFormDocumentValue","editState_1","upstreamEditState_0","formReady","formStateRef","getDocumentVersionType","actionsVersionType","versionType","documentActionsContext","nextPath","pathToString","handlePathOpen","languageFilter","t28","t29","t30","strict","t31","newSince","newRev","t32","closeCurrent","handlePaneClose","t33","duplicateCurrent","handlePaneSplit","t34","toggleInlineChanges","t35","startsWith","handleMenuAction","t36","t37","t38","isDeleted_1","t39","currentDisplayed","t40","t41","t42","t43","t44","pathRef","paramPath","t45","urlPath","currentOpenPathString","pathFromUrl","resolveKeyedPath","syncPathFromUrl","t46","t47","t48","t49","t50","t51","releaseDocument","DivergenceAutofocus","divergenceNavigator","useDocumentDivergences","focusedDivergence","focusDivergentPath","DocumentEventsPane","usePaneOptions","showingPublishedOnDraft","eventsStore","useEventsStore","sinceRevision","historyStoreProps","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","DocumentPaneWithLegacyTimelineStore","setTimelineError","onError","revTime","sinceAttributes","timelineDisplayed","_temp6","_temp7","state_4","state_5","DocumentPerspectiveProvider","excludedPerspectives","DocumentPaneProviderWrapper","handleSetScheduledDraftPerspective","useResetHistoryParams","isMounted","_perspective","preserveRev","updateHistoryParams","DocumentPane","parentSourceName","DocumentPaneInner","resolveNewDocumentOptions","isLoaded","isDocumentLoaded","useDocumentType","templateItems","templatePermissions","isTemplatePermissionsLoading","useTemplatePermissions","mergeDocumentType","providerProps","ReferenceChildLink","handleEditReference","childParams","routerPanesStateLength","activePath","Code","ChildLink","childId","childParameters","childPayload","ParameterizedLink","currentPanes","siblingIndex","nextParams","nextPayload","currentGroup","currentSibling","nextSibling","nextGroup","emptyArray","PaneRouterProvider","flatIndex","resolvePathFromState","routerPaneGroups","lastPane","modifier","currentItem","nextPanes","createNextRouterState","modifier_0","nextRouterState_0","nextRouterState","modifyCurrentGroup","nextRouterState_1","siblings","createPathWithParams","siblings_0","item_0","setPayload","nextParams_0","stickyParams_0","siblings_1","item_1","siblings_3","item_3","duplicatedItem","restParams","omit","groupLength","ctx","siblings_2","item_2","sibling","UnknownPane","paneMap","lazy","documentList","list","StructureToolPane","active","childItemId","itemId","PaneComponent","prevParams","prevPayload","isEqual","keys","DocTitle","ChevronWrapper","CrossDatasetReferencesDetails","details","CrossDatasetReferencesSummary","summary","Table","table","DocumentIdFlex","OtherReferenceCount","difference","totalCount","references","PaneItemPreview","layout","sortOrder","versionsInfo","useDocumentVersionInfo","by","ordering","viewOptions","getPreviewStateObservable","previewStateObservable","previewIsLoading","tooltip","getPreviewValueWithFallback","ReferencePreviewLink","documentPresence","linkProps","EllipsisText","VersionItemPreview","versionId","documentVariant","systemTitle","backgroundColor","VersionsPreviewList","ConfirmDeleteDialogBody","crossDatasetReferences","internalReferences","datasetNames","hasUnknownDatasetNames","onReferenceLinkClick","renderPreviewItem","confirmationMessage","normalizedDatasetNames","datasets","datasetSubtitle","borderTop","documentCount","datasetName","referenceId","reference","isClientError","POLL_INTERVAL","visiblePoll$","getVisiblePoll$","fromEvent","visibilityState","visible","EMPTY","shareReplay","refCount","bufferSize","getDocumentExistence","versionedClient","draftId","requestOptions","uri","getDataUrl","json","excludeContent","omitted","nonExistant","doc","fetchCrossDatasetReferences","checkDocumentId","currentDataset","config","useInternalReferences","createHookFromObservableFactory","listenQuery","fetch","listen","transitions","throttleTime","useCrossDatasetReferences","useReferringDocuments","DEFAULT_STUDIO_CLIENT_OPTIONS","isInternalReferencesLoading","isCrossDatasetReferencesLoading","projectIds","crossDatasetReference_1","crossDatasetReference","crossDatasetReference_0","LoadingContainer","showConfirmButton","versionsLoading","ConfirmDeleteDialogContainer","setError","handleRetry","IntentButton","linkRef","InsufficientPermissionsMessageTooltip","reveal","POPOVER_PROPS","getIntent","typeName","templateId","baseParams","initialDocumentId","parameters","PaneHeaderCreateButton","nothingGranted","every","reduce","permissionsById","firstItem","itemIndex","disabled_0","intent_0","acc","permission_0","isNonNullable","hashObject","sortObject","keyA","keyB","localeCompare","parse","PaneHeaderActions","initialValueTemplateItems","actionHandlers","initialValueTemplateItemsFromStructure","EMPTY_OBJECT","toggleHandler","setMenuItemState","_menuItemId","handler","paramsWithId","actionNodes","menuItemIndex","initialValueTemplateItemFromMenuItems","uniqBy","combinedInitialValueTemplates","initialDocumentId_0","template_0","menuItemIndex_0","templateParams_0","MissingSchemaType","getIconWithFallback","defaultIcon","PaneItem","pressed","hasSchemaType","clicked","setClicked","DocumentIcon","FolderIcon","preview","preloading","setPreload","timeoutRef","startTransition","handleMouseEnter","handleMouseLeave","PreloadDocumentPane","RenderActionCollectionState","DocumentActionsStateContext","filteredStates","RenderBadgeCollectionState","badgeProps","INITIAL_STATE","resolveRawFilterCallback","filterResolver","getClient","resolvedFilter","filterParams","getIncomingReferences","filterQueryRaw","filterParamsRaw","unstable_observeDocument","filterQuery","unstable_observeDocumentIdSet","insert","documentIds","mergeMapArray","seenPublishedId","pId","INCOMING_REFERENCES_ITEM_HEIGHT","INCOMING_REFERENCES_MAX_VISIBLE_ITEMS","IncomingReferencesListContainer","$itemCount","CrossDatasetIncomingReferenceDocumentPreview","studioUrl","rel","getCrossDatasetIncomingReferences","observeDocumentTypeFromId","subtitle","media","previewPaths","getPreviewPaths","observePaths","IncomingReferenceDocumentActionsInner","setIsExecutingAction","isExecutingAction","IncomingReferenceDocumentActions","renderActions","IncomingReferencePreview","variants","animate","actionInProgress","repeat","ease","ErrorCard","IncomingReferenceDocument","referenceToId","getReferencePaths","referencePaths","randomIdCache","assignId","obj","cachedValue","nanoid","PARTIAL_PAGE_LIMIT","FULL_LIST_LIMIT","DEFAULT_ORDERING","field","EMPTY_RECORD","RootBox","$opacity","CommandListBox","SKELETON_ITEMS","LoadingView","num","DocumentListPaneContent","isRetrying","autoRetry","filterIsSimpleTypeConstraint","hasMaxItems","hasSearchQuery","isLazyLoading","muted","isConnected","retryCount","canRetry","loadingVariant","onEndReached","onRetry","paneTitle","searchInputElement","showIcons","setShouldRender","handleEndReached","isLastItem","showSpinner","showMaxItemsMessage","limit","noDocumentsContent","isOnline","onLine","mainContent","removePublishedWithDrafts","collate","hasDraft","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","types","isSplat","findStaticTypesInFilter","DocumentListLoadTimeMeasured","maxSampleRate","swr","createSWR","listenSearchQuery","groqFilter","searchQuery","staticTypeNames","maxFieldDepth","searchStrategy","sortBy","extendedProjection","events$","defer","includeAllVersions","includeResult","mergeMap","isFirst","throwError","share","welcome$","mutationAndReconnect$","partition","swrKey","fiilter","asyncScheduler","leading","trailing","exhaustMapWithTrailing","typeNames","getSearchableTypes","getExtendedProjection","search","createSearch","strategy","maxDepth","doFetch","__unstable_extendedProjection","comments","skipSortByScore","hits","hit","scan","connected","fromCache","INITIAL_QUERY_STATE","isLoadingFullList","isRetriableError","ChannelError","ServerError","ClientError","useDocumentList","searchFilter","paramsProp","useSearchMaxFieldDepth","typeNameFromFilter","onRetry$","onFetchFullList$","onLoadFullList","listenSearchQueryArgs","durationMs","searchStringLength","returnedDocuments","partialList$","measureFirstMatch","fullList$","withLatestFrom","take","lastError","caught$","safeError","retries","NEVER","retrying","takeUntil","catchWithCount","queryResults$","canRetry_0","autoRetry_0","retryCount_0","event_0","observableCallback","nonErrorThrownWarning","thrown","rotate","fadeIn","AnimatedSpinnerIcon","SpinnerIcon","SubtleSpinnerIcon","DelayedSubtleSpinnerIcon","DocumentListPane","sortOrderRaw","displayOptions","useShallowUnique","staticTypes","setSearchQuery","searchInputValue","setSearchInputValue","setSearchInputElement","trim","documentListIsLoading","event$","debounce","handleQueryChange","useObservableEvent","handleClearSearch","handleSearchKeyDown","enableSearchSpinner","setEnableSearchSpinner","bb2","textInputIcon","useReconnectingToast","customMenuItemState","initialValueTemplates","setLayout","setSortOrder","setCustomMenuItemState","newState","fromEntries","StructurePaneHeader","DocumentSheetListSelect","row","selectedAnchor","setSelectedAnchor","meta","handleOnClick","useCallback","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","nextAnchorDetails","activeElement","HTMLElement","blur","clearAndSetFocusSelection","resetFocusSelection","visibleColumns","getVisibleLeafColumns","columnIndexAfterMove","col","colId","rowIndex","changeSelectionColumn","direction_0","previousSelection","anchorIndex","getNextIndex","startingIndex","firstSelectedIndex","lastIndexSelected","nextIndex","changeSelectionRange","setSelectedAnchorCell","nextAnchorCellDetails","handleEscapePress","isShiftKey","direction_1","offset","newSelectedCellRowIndex","handleUpDownKey","key_0","bb96","handleAnchorKeydown","contains","handleAnchorClick","focusAnchorCell","colId_0","rowIndex_0","getStateByCellId","submitFocusedCell","anchorCellDetails","DataCell","td","PinnedDataCell","SheetListCellInner","getValue","column","cellId","renderValue","setRenderValue","isDirty","setIsDirty","inputRef","cellState","handleOnFocus","patchDocument","handleProgrammaticFocus","HTMLInputElement","handleOnMouseDown","detail","handleOnEnterDown","handleOnChange","handleOnBlur","handlePaste","clipboardData","getData","handleCopy","toString","getBorderStyle","inputProps","boxShadow","SheetListCell","cell","isPinned","getIsPinned","Cell","borderWidth","getIsLastColumn","getStart","borderRight","getSize","flexRender","columnDef","getContext","VISIBLE_COLUMN_LIMIT","PreviewCell","useMemo","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","columnId","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","addIdsToMenuItems","addSelectedStateToMenuItems","storedValue","itemValue","setPrevious","shallowEquals","defaultLayout","defaultOrdering","sourceName","defaultSortOrder","menuItemsWithIds","menuItemsWithSelectedState","isSheetListLayout","useLiveEditBadge","liveEditSchemaType","activePanes","setActivePanes","getIntentState","editDocumentId","canHandleIntent","getPaneParams","task","Grid","ChangesInspector","showChanges","scrollRef","setScrollRef","diff","selectionState","isComparingCurrent","structureT","FieldWrapper","rootDiff","showFromValue","documentContext","getIsSelectable","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","EventTimelineItem","cursor","PublishedEventMenu","portalContext","versionRevisionId","handleOpenReleaseDocument","handleOpenDraftDocument","releaseFallback","isMenuDisabled","RELEASES_INTENT","textDecoration","children_0","children_1","fallbackPlacements","children_2","TimelineItemWrapper","CHILDREN_ITEMS_VARIANTS","exit","ITEM_HEIGHT","EventsTimeline","allEvents","hasMoreEvents","selectedEventId","fetchEventChildren","selectedEvent","expandingParents","setExpandingParents","isCreateDocumentVersionEvent","isEditDocumentVersionEvent","event_1","isExpanding","prev_1","next_1","event_2","event_3","isPublishDocumentVersionEvent","creationEvent","renderOptionsMenu","event_4","showExpandingLoader","isLastEvent_0","isLastEvent","event_5","EventsTimelineMenu","nextCursor","eventsError","findRangeForRevision","loadMoreEvents","expandEvent","revEvent","sinceEvent","since_0","rev_0","SpinnerContainer","DIFF_INITIAL_VALUE","CompareWithPublishedView","diffInput","wrap","EventsInspector","getChangesList","changesList$","diffLoading","diffError","toEvent","sinceEvents","sameRevisionSelected","SameRevisionSelected","EventsSelector","showList","listHeight","setListHeight","getScrollerRef","initialLoad","HistorySelector","FadeInFlex","TABS","isValidTab","tab","ChangesTabs","parentRef","setParentRef","paneRouterTab","setPaneRouterTab","perspectiveLabel","changesInspector","RestoreIcon","TypeSection","getItemKey","emptyMessage","IncomingReferencesList","_temp8","crossDatasetRefs","renderSameDatasetItem","renderCrossDatasetItem","_temp9","type_3","documents_1","type_4","documents_2","document_0","list_0","documents_0","documentsByType_0","documentsByType","type_2","docs_0","docs","acc_0","doc_0","type_1","type_0","IncomingReferencesInspector","incomingReferencesInspector","getPathTitles","f","itemType","_key","objectTypes","MARKER_ICON","MARKER_TONE","ValidationInspector","isVersionGoingToUnpublish","marker","ValidationCard","errorInfo","setErrorInfo","level","DocumentNodePathBreadcrumbs","pathTitles","fontWeight","validationMarkers","hasErrors","isValidationError","hasWarnings","isValidationWarning","isDocumentGoingToUnpublish","CheckmarkCircleIcon","validationInspector","legacyEditParamsToState","decodeURIComponent","encodePanesSegment","encodeChunks","encodeURIComponent","legacyEditParamsToPath","toState","pathSegment","parsePanesSegment","toPath","route","intents","transform","panePattern","isParam","test","isPayloadLike","exclusiveParams","isTruthy","parseChunks","tryParseBase64Payload","firstSibling","paneIsFirstSibling","sameAsFirst","encodedPayload","encodeJsonParams","encodedParams","valueFromFirstSibling","flat","parseOldPanesSegment","restOfSiblings","buffer","payloadChunk","tryParsePayload","decodeJsonParams","destructiveActionNames","definePlugin","MasterDetailIcon","prevActions","combinedActions","destructiveActions","otherActions","prevBadges","prevInspectors","tools","canHandleCreateIntent","canHandleEditIntent","controlsDocumentTitle","__internalApplicationType","bundles","structureUsEnglishLocaleBundle"],"mappings":"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"}
|