sanity 3.94.1 → 3.94.2-next.1.a8381d7633
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/lib/_chunks-cjs/version.js +1 -1
- package/lib/_chunks-es/version.mjs +1 -1
- package/package.json +25 -25
- package/dist/BehaviorSubject-CU-WJrzA.mjs +0 -30
- package/dist/BehaviorSubject-CU-WJrzA.mjs.map +0 -1
- package/dist/BroadcastDisplayedDocument-BSV9T3BU.mjs +0 -20
- package/dist/BroadcastDisplayedDocument-BSV9T3BU.mjs.map +0 -1
- package/dist/DisplayedDocumentBroadcaster-DZ65n35Q.mjs +0 -62
- package/dist/DisplayedDocumentBroadcaster-DZ65n35Q.mjs.map +0 -1
- package/dist/LiveQueries-Crz53eU5.mjs +0 -407
- package/dist/LiveQueries-Crz53eU5.mjs.map +0 -1
- package/dist/Observable-CCQtH8Gg.mjs +0 -546
- package/dist/Observable-CCQtH8Gg.mjs.map +0 -1
- package/dist/PostMessageDocuments-BjgsJxz4.mjs +0 -72
- package/dist/PostMessageDocuments-BjgsJxz4.mjs.map +0 -1
- package/dist/PostMessagePerspective-pucY-E6a.mjs +0 -22
- package/dist/PostMessagePerspective-pucY-E6a.mjs.map +0 -1
- package/dist/PostMessagePreviewSnapshots-CRQgRg4_.mjs +0 -71
- package/dist/PostMessagePreviewSnapshots-CRQgRg4_.mjs.map +0 -1
- package/dist/PostMessageRefreshMutations-D944RbO3.mjs +0 -66
- package/dist/PostMessageRefreshMutations-D944RbO3.mjs.map +0 -1
- package/dist/PostMessageSchema-3eOtr1bs.mjs +0 -516
- package/dist/PostMessageSchema-3eOtr1bs.mjs.map +0 -1
- package/dist/PostMessageTelemetry-DMTQDJeN.mjs +0 -20
- package/dist/PostMessageTelemetry-DMTQDJeN.mjs.map +0 -1
- package/dist/PresentationToolGrantsCheck-B0q4AQ3b.mjs +0 -3999
- package/dist/PresentationToolGrantsCheck-B0q4AQ3b.mjs.map +0 -1
- package/dist/QRCodeSVG-hyTW2xeN.mjs +0 -648
- package/dist/QRCodeSVG-hyTW2xeN.mjs.map +0 -1
- package/dist/Refractor-Zss2QEe8.mjs +0 -2568
- package/dist/Refractor-Zss2QEe8.mjs.map +0 -1
- package/dist/SourceContext-QxJD1Wrm.mjs +0 -111
- package/dist/SourceContext-QxJD1Wrm.mjs.map +0 -1
- package/dist/StructureToolProvider-B-7cwz7l.mjs +0 -2287
- package/dist/StructureToolProvider-B-7cwz7l.mjs.map +0 -1
- package/dist/ViteDevServerStopped-CgIEqy9p.mjs +0 -57
- package/dist/ViteDevServerStopped-CgIEqy9p.mjs.map +0 -1
- package/dist/_createContext.mjs +0 -38
- package/dist/_createContext.mjs.map +0 -1
- package/dist/_singletons.mjs +0 -216
- package/dist/_singletons.mjs.map +0 -1
- package/dist/browser-B0Q9qZJS.mjs +0 -478
- package/dist/browser-B0Q9qZJS.mjs.map +0 -1
- package/dist/browser-DmX5VEcE.mjs +0 -324
- package/dist/browser-DmX5VEcE.mjs.map +0 -1
- package/dist/desk.mjs +0 -53
- package/dist/desk.mjs.map +0 -1
- package/dist/first-Cz545eV-.mjs +0 -42
- package/dist/first-Cz545eV-.mjs.map +0 -1
- package/dist/index-B2GCDfau.mjs +0 -96
- package/dist/index-B2GCDfau.mjs.map +0 -1
- package/dist/index-BRIelBPK.mjs +0 -6946
- package/dist/index-BRIelBPK.mjs.map +0 -1
- package/dist/index-BUB137yJ.mjs +0 -144
- package/dist/index-BUB137yJ.mjs.map +0 -1
- package/dist/index-C3PGPrdL.mjs +0 -1192
- package/dist/index-C3PGPrdL.mjs.map +0 -1
- package/dist/index-C9NvTy6s.mjs +0 -319
- package/dist/index-C9NvTy6s.mjs.map +0 -1
- package/dist/index-DCkQlgdi.mjs +0 -4001
- package/dist/index-DCkQlgdi.mjs.map +0 -1
- package/dist/index-DG-3plB0.mjs +0 -71
- package/dist/index-DG-3plB0.mjs.map +0 -1
- package/dist/index-RoxwhtVB.mjs +0 -5600
- package/dist/index-RoxwhtVB.mjs.map +0 -1
- package/dist/index-iMZR29eF.mjs +0 -756
- package/dist/index-iMZR29eF.mjs.map +0 -1
- package/dist/index-wVXq9rWS.mjs +0 -244
- package/dist/index-wVXq9rWS.mjs.map +0 -1
- package/dist/index.mjs +0 -137385
- package/dist/index.mjs.map +0 -1
- package/dist/lodash-Vz5dH_Dm.mjs +0 -3679
- package/dist/lodash-Vz5dH_Dm.mjs.map +0 -1
- package/dist/pane-Bm_57XKB.mjs +0 -5
- package/dist/pane-Bm_57XKB.mjs.map +0 -1
- package/dist/pane-Dopl4BjD.mjs +0 -5
- package/dist/pane-Dopl4BjD.mjs.map +0 -1
- package/dist/presentation-DsIky7Cj.mjs +0 -556
- package/dist/presentation-DsIky7Cj.mjs.map +0 -1
- package/dist/presentation.mjs +0 -10
- package/dist/presentation.mjs.map +0 -1
- package/dist/publishReplay-PuJoYJpp.mjs +0 -92
- package/dist/publishReplay-PuJoYJpp.mjs.map +0 -1
- package/dist/refractor-Bg1S3YDK.mjs +0 -26
- package/dist/refractor-Bg1S3YDK.mjs.map +0 -1
- package/dist/resources-BQsCEzu1.mjs +0 -60
- package/dist/resources-BQsCEzu1.mjs.map +0 -1
- package/dist/resources-BahMtJuO.mjs +0 -177
- package/dist/resources-BahMtJuO.mjs.map +0 -1
- package/dist/resources-CjkBN4z6.mjs +0 -126
- package/dist/resources-CjkBN4z6.mjs.map +0 -1
- package/dist/resources-Dc-6ZcPg.mjs +0 -157
- package/dist/resources-Dc-6ZcPg.mjs.map +0 -1
- package/dist/resources-DqxSuDsr.mjs +0 -37
- package/dist/resources-DqxSuDsr.mjs.map +0 -1
- package/dist/resources-_gTjFWLH.mjs +0 -517
- package/dist/resources-_gTjFWLH.mjs.map +0 -1
- package/dist/resources-kA1bao30.mjs +0 -358
- package/dist/resources-kA1bao30.mjs.map +0 -1
- package/dist/router.mjs +0 -721
- package/dist/router.mjs.map +0 -1
- package/dist/stegaEncodeSourceMap-DCG9Ba1H.mjs +0 -358
- package/dist/stegaEncodeSourceMap-DCG9Ba1H.mjs.map +0 -1
- package/dist/structure.mjs +0 -57
- package/dist/structure.mjs.map +0 -1
- package/dist/structureTool-Bth1vd8r.mjs +0 -13150
- package/dist/structureTool-Bth1vd8r.mjs.map +0 -1
- package/dist/switchMap-DHVUskpL.mjs +0 -54
- package/dist/switchMap-DHVUskpL.mjs.map +0 -1
- package/dist/v4-zH-CAum7.mjs +0 -24798
- package/dist/v4-zH-CAum7.mjs.map +0 -1
- package/dist/version-DoE_JnhG.mjs +0 -5
- package/dist/version-DoE_JnhG.mjs.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"structureTool-Bth1vd8r.mjs","sources":["../src/structure/components/DocTitle.tsx","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.styles.tsx","../src/structure/components/paneItem/PaneItemPreview.tsx","../src/structure/components/paneRouter/BackLink.tsx","../src/structure/components/pane/usePaneLayout.ts","../src/structure/components/paneRouter/usePaneRouter.ts","../src/structure/components/confirmDeleteDialog/ReferencePreviewLink.tsx","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.tsx","../src/structure/components/confirmDeleteDialog/useReferringDocuments.ts","../src/structure/components/confirmDeleteDialog/ConfirmDeleteDialog.tsx","../src/structure/components/confirmDeleteDialog/index.tsx","../src/structure/components/Delay.tsx","../src/structure/components/pane/constants.ts","../src/structure/components/pane/PaneDivider.tsx","../src/structure/components/pane/Pane.tsx","../src/structure/components/pane/PaneContent.styles.tsx","../src/structure/components/pane/usePane.ts","../src/structure/components/pane/PaneContent.tsx","../src/structure/util/toLowerCaseNoSpaces.tsx","../src/structure/components/pane/PaneMenuButtonItem.tsx","../src/structure/components/pane/PaneContextMenuButton.tsx","../src/structure/components/pane/PaneFooter.styles.tsx","../src/structure/components/pane/PaneFooter.tsx","../src/structure/components/pane/PaneHeader.styles.tsx","../src/structure/components/pane/PaneHeader.tsx","../src/structure/components/pane/PaneHeaderActionButton.tsx","../src/structure/components/pane/PaneLayout.styles.tsx","../src/structure/components/pane/helpers/_calcPaneResize.ts","../src/structure/components/pane/helpers/_getDOMPath.ts","../src/structure/components/pane/helpers/_sortElements.ts","../src/structure/components/pane/paneLayoutController.ts","../src/structure/components/pane/PaneLayout.tsx","../src/structure/menuNodes.ts","../src/structure/components/IntentButton.tsx","../src/structure/components/paneHeaderActions/InsufficientPermissionsMessageTooltip.tsx","../src/structure/components/paneHeaderActions/PaneHeaderCreateButton.tsx","../src/structure/components/paneHeaderActions/PaneHeaderActions.tsx","../src/structure/components/MissingSchemaType.tsx","../src/structure/components/paneItem/PaneItem.tsx","../src/structure/components/RenderActionCollectionState.tsx","../src/structure/components/RenderBadgeCollectionState.tsx","../src/structure/diffView/hooks/useCreatePathSyncChannel.ts","../src/structure/diffView/constants.ts","../src/structure/diffView/hooks/useDiffViewRouter.ts","../src/structure/diffView/types/diffViewMode.ts","../src/structure/diffView/hooks/useDiffViewState.ts","../../../node_modules/.pnpm/scrollmirror@1.2.3/node_modules/scrollmirror/dist/ScrollMirror.modern.js","../src/structure/diffView/hooks/useScrollMirror.tsx","../src/structure/diffView/versionMode/components/VersionModeHeader.tsx","../src/structure/diffView/components/DialogLayout.ts","../src/structure/panes/document/document-layout/pickDocumentLayoutComponent.ts","../src/structure/diffView/hooks/usePathSyncChannel.ts","../src/structure/diffView/components/Scroller.ts","../src/structure/diffView/components/DiffViewPane.tsx","../src/structure/diffView/components/EditReferenceLinkComponent.tsx","../src/structure/diffView/components/DiffView.tsx","../src/structure/diffView/plugin/DiffViewDocumentLayout.tsx","../src/structure/panes/error/ErrorPane.tsx","../src/structure/panes/loading/getWaitMessages.ts","../src/structure/panes/loading/LoadingPane.tsx","../src/structure/panes/document/useDocumentPane.tsx","../src/structure/panes/document/comments/CommentsWrapper.tsx","../src/structure/hooks/useFilteredReleases.ts","../src/structure/hooks/useDocumentIdStack.ts","../src/structure/useStructureTool.ts","../src/structure/panes/document/constants.ts","../src/structure/panes/document/DocumentInspectorMenuItemsResolver.tsx","../src/structure/panes/document/useDocumentTitle.ts","../src/structure/panes/document/DocumentOperationResults.tsx","../src/structure/components/paneItem/helpers.tsx","../src/structure/panes/document/documentInspector/DocumentInspectorHeader.tsx","../src/structure/panes/document/documentInspector/DocumentInspectorPanel.tsx","../../../node_modules/.pnpm/debounce@1.2.1/node_modules/debounce/index.js","../../../node_modules/.pnpm/md5-o-matic@0.1.1/node_modules/md5-o-matic/lib/md5omatic.js","../../../node_modules/.pnpm/@rexxars+react-json-inspector@9.0.1_react@18.3.1/node_modules/@rexxars/react-json-inspector/dist/index.js","../src/structure/useStructureToolSetting.ts","../src/structure/panes/document/inspectDialog/constants.ts","../src/structure/panes/document/inspectDialog/helpers.ts","../src/structure/panes/document/inspectDialog/InspectDialog.styles.tsx","../src/structure/panes/document/inspectDialog/Search.tsx","../src/structure/panes/document/inspectDialog/InspectDialog.tsx","../src/structure/panes/document/documentPanel/banners/Banner.tsx","../src/structure/panes/document/documentPanel/banners/DeletedDocumentBanners.tsx","../src/structure/panes/document/documentPanel/banners/DeprecatedDocumentTypeBanner.tsx","../src/structure/components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry.ts","../src/structure/components/requestPermissionDialog/RequestPermissionDialog.tsx","../src/structure/components/requestPermissionDialog/useRoleRequestsStatus.tsx","../src/structure/panes/document/documentPanel/banners/InsufficientPermissionBanner.tsx","../src/structure/panes/document/documentPanel/banners/ReferenceChangedBanner.tsx","../src/structure/panes/document/documentPanel/banners/ArchivedReleaseDocumentBanner.tsx","../src/structure/panes/document/documentPanel/banners/CanvasLinkedBanner.tsx","../src/structure/panes/document/documentPanel/banners/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/DraftLiveEditBanner.tsx","../src/structure/panes/document/documentPanel/banners/OpenReleaseToEditBanner.tsx","../src/structure/panes/document/documentPanel/banners/RevisionNotFoundBanner.tsx","../src/structure/panes/document/documentPanel/banners/ScheduledReleaseBanner.tsx","../src/structure/panes/document/documentPanel/banners/UnpublishedDocumentBanner.tsx","../src/structure/panes/document/documentPanel/documentViews/FormHeader.tsx","../src/structure/panes/document/documentPanel/documentViews/FormView.tsx","../src/structure/panes/document/documentPanel/header/DocumentHeaderTabs.tsx","../src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.tsx","../src/structure/panes/document/documentPanel/header/FavoriteToggle.tsx","../src/structure/panes/document/documentPanel/header/DocumentPanelSubHeader.tsx","../src/structure/panes/document/documentPanel/DocumentPanel.tsx","../src/structure/constants.ts","../src/structure/panes/document/statusBar/dialogs/constants.ts","../src/structure/panes/document/statusBar/dialogs/ConfirmDialog.tsx","../src/structure/panes/document/statusBar/dialogs/ModalDialog.tsx","../src/structure/panes/document/statusBar/dialogs/PopoverDialog.tsx","../src/structure/panes/document/statusBar/ActionStateDialog.tsx","../src/structure/panes/document/statusBar/ActionMenuButton.tsx","../src/structure/documentActions/DeleteAction.tsx","../src/structure/documentActions/DiscardChangesAction.tsx","../src/structure/documentActions/DuplicateAction.tsx","../src/structure/documentActions/HistoryRestoreAction.tsx","../src/structure/documentActions/__telemetry__/documentActions.telemetry.ts","../src/structure/documentActions/PublishAction.tsx","../src/structure/documentActions/UnpublishAction.tsx","../src/structure/panes/document/statusBar/DocumentStatusBarActions.tsx","../src/structure/panes/document/documentPanel/header/hook/useChipScrollPosition.tsx","../src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveList.tsx","../src/structure/panes/document/documentPanel/header/DocumentPanelHeader.tsx","../src/structure/components/spacerButton/SpacerButton.tsx","../src/structure/panes/document/statusBar/DocumentBadges.tsx","../src/structure/panes/document/timeline/constants.ts","../src/structure/panes/document/timeline/helpers.ts","../src/structure/panes/document/timeline/expandableTimelineItemButton.tsx","../src/structure/panes/document/timeline/timeline.styled.tsx","../src/structure/panes/document/timeline/timelineI18n.ts","../src/structure/panes/document/timeline/userAvatarStack.tsx","../src/structure/panes/document/timeline/timelineItem.tsx","../src/structure/panes/document/timeline/utils.ts","../src/structure/panes/document/timeline/timeline.tsx","../src/structure/panes/document/timeline/TimelineError.tsx","../src/structure/panes/document/timeline/timelineMenu.tsx","../src/structure/panes/document/statusBar/DocumentStatusPulse/AnimatedStatusIcon.tsx","../src/structure/panes/document/statusBar/DocumentStatusPulse/DocumentStatusPulse.tsx","../src/structure/panes/document/statusBar/DocumentStatusLine.tsx","../src/structure/panes/document/statusBar/RevisionStatusLine.tsx","../src/structure/panes/document/statusBar/useResizeObserver.ts","../src/structure/panes/document/statusBar/DocumentStatusBar.tsx","../src/structure/panes/document/keyboardShortcuts/DocumentActionShortcuts.tsx","../src/structure/panes/document/menuItems.ts","../src/structure/panes/document/document-layout/DocumentLayoutError.tsx","../src/structure/panes/document/document-layout/DocumentLayoutFooter.tsx","../src/structure/panes/document/document-layout/DocumentLayout.tsx","../src/structure/panes/document/document-layout/useDocumentLayoutComponent.ts","../src/structure/panes/document/__telemetry__/documentPanes.telemetry.ts","../src/structure/panes/document/getInitialValueTemplateOpts.ts","../src/structure/panes/document/useDocumentPaneInitialValue.ts","../src/structure/panes/document/useDocumentPaneInspector.ts","../src/structure/panes/document/usePreviewUrl.ts","../src/structure/panes/document/DocumentPaneProvider.tsx","../src/structure/panes/document/DocumentEventsPane.tsx","../src/structure/panes/document/DocumentPaneLegacyTimeline.tsx","../src/structure/panes/document/DocumentPaneProviderWrapper.tsx","../src/structure/panes/document/useResetHistoryParams.ts","../src/structure/panes/document/DocumentPane.tsx","../src/structure/panes/documentList/constants.ts","../src/structure/panes/documentList/DocumentListPaneContent.tsx","../src/structure/panes/documentList/helpers.ts","../src/structure/panes/documentList/listenSearchQuery.ts","../src/structure/panes/documentList/useDocumentList.ts","../src/structure/panes/documentList/DocumentListPane.tsx","../src/structure/panes/documentList/PaneHeader.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/structure/panes/documentList/sheetList/DocumentSheetListSelect.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListProvider.tsx","../src/structure/panes/documentList/sheetList/SheetListCell.tsx","../src/structure/panes/documentList/sheetList/useDocumentSheetColumns.tsx","../src/structure/panes/documentList/sheetList/ColumnsControl.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListFilter.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListHeader.tsx","../src/structure/panes/documentList/sheetList/DocumentSheetListPaginator.tsx","../src/structure/panes/documentList/sheetList/useDocumentSheetListStore.ts","../src/structure/panes/documentList/sheetList/useDocumentSheetList.ts","../src/structure/panes/documentList/sheetList/DocumentSheetListPane.tsx","../src/structure/panes/documentList/PaneContainer.tsx","../src/structure/documentBadges/LiveEditBadge.ts","../src/structure/getIntentState.ts","../src/structure/panes/document/inspectors/changes/ChangesInspector.tsx","../src/structure/panes/document/timeline/events/EventTimelineItem.tsx","../src/structure/panes/document/timeline/events/PublishedEventMenu.tsx","../src/structure/panes/document/timeline/events/EventsTimeline.tsx","../src/structure/panes/document/timeline/events/EventsTimelineMenu.tsx","../src/structure/panes/document/inspectors/changes/EventsInspector.tsx","../src/structure/panes/document/inspectors/changes/EventsSelector.tsx","../src/structure/panes/document/inspectors/changes/HistorySelector.tsx","../src/structure/panes/document/inspectors/changes/ChangesTabs.tsx","../src/structure/panes/document/inspectors/changes/index.ts","../src/structure/panes/document/inspectors/validation/getPathTitles.ts","../src/structure/panes/document/inspectors/validation/ValidationInspector.tsx","../src/structure/panes/document/inspectors/validation/index.ts","../src/structure/router.ts","../src/structure/structureTool.ts"],"sourcesContent":["import {type SanityDocumentLike} from '@sanity/types'\nimport {unstable_useValuePreview as useValuePreview, useSchema, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface DocTitleProps {\n document: SanityDocumentLike\n}\n\nexport function DocTitle(props: DocTitleProps) {\n const {document: documentValue} = props\n const schema = useSchema()\n const schemaType = schema.get(documentValue._type)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const {error, value} = useValuePreview({\n schemaType: schemaType!,\n value: documentValue,\n })\n\n if (!schemaType) {\n return <code>{t('doc-title.unknown-schema-type.text', {schemaType: documentValue._type})}</code>\n }\n\n if (error) {\n return <>{t('doc-title.error.text', {errorMessage: error.message})}</>\n }\n\n return (\n <>\n {value?.title || (\n <span style={{color: 'var(--card-muted-fg-color)'}}>{t('doc-title.fallback.text')}</span>\n )}\n </>\n )\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Flex, Inline, rem, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\nexport const ChevronWrapper = styled(Box)`\n margin-left: auto;\n`\n\nexport const CrossDatasetReferencesDetails = styled.details`\n flex: none;\n\n &[open] ${ChevronWrapper} {\n transform: rotate(180deg);\n }\n`\n\nexport const CrossDatasetReferencesSummary = styled.summary`\n list-style: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n`\n\nexport const Table = styled.table`\n width: 100%;\n text-align: left;\n padding: 0 ${({theme}) => rem(theme.sanity.space[2])};\n border-collapse: collapse;\n\n th {\n padding: ${({theme}) => rem(theme.sanity.space[1])};\n }\n\n td {\n padding: 0 ${({theme}) => rem(theme.sanity.space[1])};\n }\n\n tr > *:last-child {\n text-align: right;\n }\n`\n\nexport const DocumentIdFlex = styled(Flex)`\n min-height: 33px;\n`\n\nexport const OtherReferenceCount = (props: {totalCount: number; references: unknown[]}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const difference = props.totalCount - props.references.length\n\n if (!difference) return null\n\n return (\n <Box padding={2}>\n <Inline space={2}>\n <Text size={1} muted>\n {t('confirm-delete-dialog.other-reference-count.title', {count: difference})}\n </Text>\n\n <Tooltip\n portal\n placement=\"top\"\n content={t('confirm-delete-dialog.other-reference-count.tooltip')}\n >\n <Text size={1} muted>\n <InfoOutlineIcon />\n </Text>\n </Tooltip>\n </Inline>\n </Box>\n )\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {Flex} from '@sanity/ui'\nimport {type ComponentType, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n type DocumentPresence,\n DocumentPreviewPresence,\n type DocumentPreviewStore,\n DocumentStatus,\n DocumentStatusIndicator,\n type GeneralPreviewLayoutKey,\n getPreviewStateObservable,\n getPreviewValueWithFallback,\n SanityDefaultPreview,\n useDocumentVersionInfo,\n usePerspective,\n} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../ui-components'\n\nexport interface PaneItemPreviewProps {\n documentPreviewStore: DocumentPreviewStore\n icon: ComponentType | false\n layout: GeneralPreviewLayoutKey\n presence?: DocumentPresence[]\n schemaType: SchemaType\n value: SanityDocument\n}\n\n/**\n * Preview component for _documents_ rendered in structure panes.\n *\n * Note that non-document previews are not handled by this component,\n * despite being pane items! Non-document previews bypass this entirely\n * and are rendered by `<SanityDefaultPreview>`.\n */\nexport function PaneItemPreview(props: PaneItemPreviewProps) {\n const {icon, layout, presence, schemaType, value} = props\n\n const versionsInfo = useDocumentVersionInfo(value._id)\n\n const {perspectiveStack} = usePerspective()\n const previewStateObservable = useMemo(() => {\n return getPreviewStateObservable(\n props.documentPreviewStore,\n schemaType,\n value._id,\n perspectiveStack,\n )\n }, [props.documentPreviewStore, schemaType, value._id, perspectiveStack])\n\n const {\n snapshot,\n original,\n isLoading: previewIsLoading,\n } = useObservable(previewStateObservable, {\n snapshot: null,\n isLoading: true,\n original: null,\n })\n\n const isLoading = previewIsLoading\n\n const status = isLoading ? null : (\n <TooltipDelayGroupProvider>\n <Flex align=\"center\" gap={3}>\n {presence && presence.length > 0 && <DocumentPreviewPresence presence={presence} />}\n <DocumentStatusIndicator\n draft={versionsInfo.draft}\n published={versionsInfo.published}\n versions={versionsInfo.versions}\n />\n </Flex>\n </TooltipDelayGroupProvider>\n )\n\n const tooltip = (\n <DocumentStatus\n draft={versionsInfo.draft}\n published={versionsInfo.published}\n versions={versionsInfo.versions}\n />\n )\n\n return (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({snapshot, original, fallback: value})}\n isPlaceholder={isLoading}\n icon={icon}\n layout={layout}\n status={status}\n tooltip={tooltip}\n />\n )\n}\n","import {type ComponentType, type ForwardedRef, forwardRef, useContext, useMemo} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\nimport {StateLink} from 'sanity/router'\n\nimport {type BackLinkProps} from './types'\n\n/**\n * @internal\n */\nexport const BackLink = forwardRef(function BackLink(\n props: BackLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const {routerPanesState, groupIndex} = useContext(PaneRouterContext)\n const panes = useMemo(() => routerPanesState.slice(0, groupIndex), [groupIndex, routerPanesState])\n const state = useMemo(() => ({panes}), [panes])\n\n return <StateLink {...props} ref={ref} state={state} />\n}) as ComponentType<BackLinkProps>\n","import {useContext} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePaneLayout(): PaneLayoutContextValue {\n const pane = useContext(PaneLayoutContext)\n\n if (!pane) {\n throw new Error('PaneLayout: missing context value')\n }\n\n return pane\n}\n","import {useContext} from 'react'\nimport {PaneRouterContext} from 'sanity/_singletons'\n\nimport {type PaneRouterContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta\n */\nexport function usePaneRouter(): PaneRouterContextValue {\n return useContext(PaneRouterContext)\n}\n","import {type SanityDocument, type SchemaType} from '@sanity/types'\nimport {type ReactNode, useCallback} from 'react'\nimport {\n type FIXME,\n getPublishedId,\n PreviewCard,\n useDocumentPresence,\n useDocumentPreviewStore,\n} from 'sanity'\n\nimport {PaneItemPreview} from '../paneItem/PaneItemPreview'\nimport {usePaneRouter} from '../paneRouter'\n\nconst EMPTY_ARRAY: [] = []\n\ninterface ReferencePreviewLinkProps {\n onClick?: () => void\n type: SchemaType & {icon?: any}\n value: SanityDocument\n}\n\nexport function ReferencePreviewLink(props: ReferencePreviewLinkProps) {\n const {onClick, type, value} = props\n const publishedId = getPublishedId(value?._id)\n const documentPresence = useDocumentPresence(publishedId)\n const documentPreviewStore = useDocumentPreviewStore()\n const {ReferenceChildLink} = usePaneRouter()\n\n const Link = useCallback(\n function LinkComponent(linkProps: {children: ReactNode}) {\n return (\n <ReferenceChildLink\n documentId={value?._id}\n documentType={type?.name}\n parentRefPath={EMPTY_ARRAY}\n {...linkProps}\n />\n )\n },\n [ReferenceChildLink, type?.name, value?._id],\n )\n\n return (\n <PreviewCard __unstable_focusRing as={Link as FIXME} data-as=\"a\" onClick={onClick} radius={2}>\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={type?.icon}\n layout=\"compact\"\n presence={documentPresence?.length > 0 ? documentPresence : EMPTY_ARRAY}\n schemaType={type}\n value={value}\n />\n </PreviewCard>\n )\n}\n","import {\n ChevronDownIcon,\n CopyIcon,\n DocumentsIcon,\n UnknownIcon,\n WarningOutlineIcon,\n} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {SanityDefaultPreview, Translate, useSchema, useTranslation} from 'sanity'\n\nimport {Button} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {\n ChevronWrapper,\n CrossDatasetReferencesDetails,\n CrossDatasetReferencesSummary,\n DocumentIdFlex,\n OtherReferenceCount,\n Table,\n} from './ConfirmDeleteDialogBody.styles'\nimport {ReferencePreviewLink} from './ReferencePreviewLink'\nimport {type ReferringDocuments} from './useReferringDocuments'\n\ntype DeletionConfirmationDialogBodyProps = Required<ReferringDocuments> & {\n documentTitle: React.ReactNode\n action: 'unpublish' | 'delete'\n onReferenceLinkClick?: () => void\n}\n\n/**\n * The inner part of the `ConfirmDeleteDialog`. This is ran when both the\n * `crossDatasetReferences` and `internalReferences` are loaded.\n */\nexport function ConfirmDeleteDialogBody({\n crossDatasetReferences,\n internalReferences,\n documentTitle,\n totalCount,\n action,\n datasetNames,\n hasUnknownDatasetNames,\n onReferenceLinkClick,\n}: DeletionConfirmationDialogBodyProps) {\n const schema = useSchema()\n const toast = useToast()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const renderPreviewItem = useCallback(\n (item: any) => {\n const type = schema.get(item._type)\n if (type) {\n return <ReferencePreviewLink type={type} value={item} onClick={onReferenceLinkClick} />\n }\n\n return (\n // Padding added to match the ReferencePreviewLink styling\n <Box padding={2}>\n <SanityDefaultPreview\n icon={UnknownIcon}\n title={t('confirm-delete-dialog.preview-item.preview-unavailable.title')}\n subtitle={t('confirm-delete-dialog.preview-item.preview-unavailable.subtitle', {\n documentId: item._id,\n })}\n layout=\"default\"\n />\n </Box>\n )\n },\n [schema, t, onReferenceLinkClick],\n )\n\n if (internalReferences?.totalCount === 0 && crossDatasetReferences?.totalCount === 0) {\n return (\n <Text as=\"p\" size={1}>\n <Translate\n t={t}\n i18nKey=\"confirm-delete-dialog.confirmation.text\"\n context={action}\n components={{DocumentTitle: () => <strong>{documentTitle}</strong>}}\n />\n </Text>\n )\n }\n\n // We do some extra checks to handle cases where you have unavailable dataset\n // name(s) due to permissions, both alone and in combination with known datasets\n\n // This normalizes one or more undefined dataset names to the catch-all `unavailable`\n const normalizedDatasetNames = [\n ...datasetNames,\n ...(hasUnknownDatasetNames ? ['unavailable'] : []),\n ]\n\n const datasetSubtitle = t('confirm-delete-dialog.cdr-summary.subtitle', {\n count: normalizedDatasetNames.length,\n datasets: normalizedDatasetNames.join(', '),\n context: hasUnknownDatasetNames && normalizedDatasetNames.length ? 'unavailable' : '',\n })\n\n return (\n <Flex direction=\"column\" gap={4}>\n <Card padding={3} radius={2} tone=\"caution\" flex=\"none\">\n <Flex>\n <Text aria-hidden=\"true\" size={1}>\n <WarningOutlineIcon />\n </Text>\n <Box flex={1} marginLeft={3}>\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referring-document-count.text\"\n components={{DocumentTitle: () => documentTitle}}\n t={t}\n values={{count: totalCount}}\n />\n </Text>\n </Box>\n </Flex>\n </Card>\n <Box flex=\"none\">\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referring-documents-descriptor.text\"\n t={t}\n context={action}\n components={{DocumentTitle: () => documentTitle}}\n />\n </Text>\n </Box>\n <Card radius={2} shadow={1} flex=\"auto\" padding={2}>\n <Flex direction=\"column\">\n {internalReferences.totalCount > 0 && (\n <Stack as=\"ul\" marginBottom={2} space={2} data-testid=\"internal-references\">\n {internalReferences?.references.map((item) => (\n <Box as=\"li\" key={item._id}>\n {renderPreviewItem(item)}\n </Box>\n ))}\n\n {internalReferences.totalCount > internalReferences.references.length && (\n <Box as=\"li\" padding={3}>\n <OtherReferenceCount {...internalReferences} />\n </Box>\n )}\n </Stack>\n )}\n\n {crossDatasetReferences.totalCount > 0 && (\n <CrossDatasetReferencesDetails\n data-testid=\"cross-dataset-references\"\n style={{\n // only add the border if needed\n borderTop:\n internalReferences.totalCount > 0\n ? '1px solid var(--card-shadow-outline-color)'\n : undefined,\n }}\n >\n <CrossDatasetReferencesSummary>\n <Card\n as=\"a\"\n marginTop={internalReferences.totalCount > 0 ? 2 : 0}\n radius={2}\n shadow={1}\n paddingY={1}\n >\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={1}>\n <Text size={1}>\n <DocumentsIcon />\n </Text>\n <Stack space={2}>\n <Text textOverflow=\"ellipsis\" size={1}>\n {t('confirm-delete-dialog.cdr-summary.title', {\n count: normalizedDatasetNames.length,\n documentCount: t('confirm-delete-dialog.cdr-summary.document-count', {\n count: crossDatasetReferences.totalCount,\n }),\n })}\n </Text>\n <Text title={datasetSubtitle} textOverflow=\"ellipsis\" size={1} muted>\n {datasetSubtitle}\n </Text>\n </Stack>\n <ChevronWrapper>\n <Text muted size={1}>\n <ChevronDownIcon />\n </Text>\n </ChevronWrapper>\n </Flex>\n </Card>\n </CrossDatasetReferencesSummary>\n\n <Box overflow=\"auto\" paddingTop={2}>\n <Table>\n <thead>\n <tr>\n <th>\n <Text muted size={1} style={{minWidth: '5rem'}} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.project-id.label')}\n </Text>\n </th>\n <th>\n <Text muted size={1} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.dataset.label')}\n </Text>\n </th>\n <th>\n <Text muted size={1} weight=\"medium\">\n {t('confirm-delete-dialog.cdr-table.document-id.label')}\n </Text>\n </th>\n </tr>\n </thead>\n <tbody>\n {crossDatasetReferences.references\n .filter((reference): reference is Required<typeof reference> => {\n return 'projectId' in reference\n })\n .map(({projectId, datasetName, documentId}, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <tr key={`${documentId}-${index}`}>\n <td>\n <Text size={1}>{projectId}</Text>\n </td>\n <td>\n <Text size={1}>{datasetName || 'unavailable'}</Text>\n </td>\n <td>\n <DocumentIdFlex align=\"center\" gap={2} justify=\"flex-end\">\n <Text textOverflow=\"ellipsis\" size={1}>\n {documentId || 'unavailable'}\n </Text>\n {documentId && (\n <Button\n mode=\"bleed\"\n icon={CopyIcon}\n tooltipProps={{\n content: t(\n 'confirm-delete-dialog.cdr-table.copy-id-button.tooltip',\n ),\n }}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => {\n navigator.clipboard.writeText(documentId).catch(() => {\n toast.push({\n status: 'error',\n title: t(\n 'confirm-delete-dialog.cdr-table.id-copied-toast.title-failed',\n ),\n })\n })\n }}\n />\n )}\n </DocumentIdFlex>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n\n <OtherReferenceCount {...crossDatasetReferences} />\n </Box>\n </CrossDatasetReferencesDetails>\n )}\n </Flex>\n </Card>\n <Box flex=\"none\">\n <Text size={1}>\n <Translate\n i18nKey=\"confirm-delete-dialog.referential-integrity-disclaimer.text\"\n t={t}\n context={action}\n components={{DocumentTitle: () => documentTitle}}\n />\n </Text>\n </Box>\n </Flex>\n )\n}\n","import {type ClientError, type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {EMPTY, fromEvent, type Observable, of, timer} from 'rxjs'\nimport {\n catchError,\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n} from 'rxjs/operators'\nimport {\n type AvailabilityResponse,\n createHookFromObservableFactory,\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n type DocumentStore,\n getDraftId,\n getPublishedId,\n useClient,\n useDocumentStore,\n} from 'sanity'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nconst POLL_INTERVAL = 5000\n\n// only fetches when the document is visible\nlet visiblePoll$: Observable<number>\nconst getVisiblePoll$ = () => {\n if (!visiblePoll$) {\n visiblePoll$ = fromEvent(document, 'visibilitychange').pipe(\n // add empty emission to have this fire on creation\n startWith(null),\n map(() => document.visibilityState === 'visible'),\n distinctUntilChanged(),\n switchMap((visible) =>\n visible\n ? // using timer instead of interval since timer will emit on creation\n timer(0, POLL_INTERVAL)\n : EMPTY,\n ),\n shareReplay({refCount: true, bufferSize: 1}),\n )\n }\n return visiblePoll$\n}\n\nexport type ReferringDocuments = {\n isLoading: boolean\n totalCount: number\n projectIds: string[]\n datasetNames: string[]\n hasUnknownDatasetNames: boolean\n internalReferences?: {\n totalCount: number\n references: Array<{_id: string; _type: string}>\n }\n crossDatasetReferences?: {\n totalCount: number\n references: Array<{\n /**\n * The project ID of the document that is currently referencing the subject\n * document. Unlike `documentId` and `datasetName`, this should always be\n * defined.\n */\n projectId: string\n /**\n * The ID of the document that is currently referencing the subject\n * document. This will be omitted if there is no access to the current\n * project and dataset pair (e.g. if no `sanity-project-token` were\n * configured)\n */\n documentId?: string\n /**\n * The dataset name that is currently referencing the subject document.\n * This will be omitted if there is no access to the current project and\n * dataset pair (e.g. if no `sanity-project-token` were configured)\n */\n datasetName?: string\n }>\n }\n}\n\nfunction getDocumentExistence(\n documentId: string,\n {versionedClient}: {versionedClient: SanityClient},\n): Observable<string | undefined> {\n const draftId = getDraftId(documentId)\n const publishedId = getPublishedId(documentId)\n const requestOptions = {\n uri: versionedClient.getDataUrl('doc', `${draftId},${publishedId}`),\n json: true,\n query: {excludeContent: 'true'},\n tag: 'use-referring-documents.document-existence',\n }\n return versionedClient.observable.request<AvailabilityResponse>(requestOptions).pipe(\n map(({omitted}) => {\n const nonExistant = omitted.filter((doc) => doc.reason === 'existence')\n if (nonExistant.length === 2) {\n // None of the documents exist\n return undefined\n }\n\n if (nonExistant.length === 0) {\n // Both exist, so use the published one\n return publishedId\n }\n\n // If the draft does not exist, use the published ID, and vice versa\n return nonExistant.some((doc) => doc.id === draftId) ? publishedId : draftId\n }),\n )\n}\n\n/**\n * fetches the cross-dataset references using the client observable.request\n * method (for that requests can be automatically cancelled)\n */\nfunction fetchCrossDatasetReferences(\n documentId: string,\n context: {versionedClient: SanityClient},\n): Observable<ReferringDocuments['crossDatasetReferences']> {\n const {versionedClient} = context\n\n return getVisiblePoll$().pipe(\n switchMap(() => getDocumentExistence(documentId, context)),\n switchMap((checkDocumentId) => {\n if (!checkDocumentId) {\n return of({totalCount: 0, references: []})\n }\n\n const currentDataset = versionedClient.config().dataset\n\n return versionedClient.observable\n .request({\n url: `/data/references/${currentDataset}/documents/${checkDocumentId}/to?excludeInternalReferences=true&excludePaths=true`,\n tag: 'use-referring-documents.external',\n })\n .pipe(\n catchError((e) => {\n // it's possible that referencing document doesn't exist yet so the\n // API will return a 404. In those cases, we want to catch and return\n // a response with no references\n if (isClientError(e) && e.statusCode === 404) {\n return of({totalCount: 0, references: []})\n }\n\n throw e\n }),\n )\n }),\n )\n}\n\nconst useInternalReferences = createHookFromObservableFactory(\n ([documentId, documentStore]: [string, DocumentStore]) => {\n const referencesClause = '*[references($documentId)][0...100]{_id,_type}'\n const totalClause = 'count(*[references($documentId)])'\n const fetchQuery = `{\"references\":${referencesClause},\"totalCount\":${totalClause}}`\n const listenQuery = '*[references($documentId)]'\n\n return documentStore.listenQuery(\n {fetch: fetchQuery, listen: listenQuery},\n {documentId},\n {tag: 'use-referring-documents', transitions: ['appear', 'disappear'], throttleTime: 5000},\n ) as Observable<ReferringDocuments['internalReferences']>\n },\n)\n\nconst useCrossDatasetReferences = createHookFromObservableFactory(\n ([documentId, versionedClient]: [string, SanityClient]) => {\n // (documentId: string, versionedClient: SanityClient) => {\n return getVisiblePoll$().pipe(\n switchMap(() =>\n fetchCrossDatasetReferences(documentId, {\n versionedClient,\n }),\n ),\n )\n },\n)\n\nexport function useReferringDocuments(documentId: string): ReferringDocuments {\n const versionedClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const documentStore = useDocumentStore()\n const publishedId = getPublishedId(documentId)\n\n const [internalReferences, isInternalReferencesLoading] = useInternalReferences(\n useMemo(() => [publishedId, documentStore], [documentStore, publishedId]),\n )\n\n const [crossDatasetReferences, isCrossDatasetReferencesLoading] = useCrossDatasetReferences(\n useMemo(() => [publishedId, versionedClient], [publishedId, versionedClient]),\n )\n\n const projectIds = useMemo(() => {\n return Array.from(\n new Set(\n crossDatasetReferences?.references\n .map((crossDatasetReference) => crossDatasetReference.projectId)\n .filter(Boolean),\n ),\n ).sort()\n }, [crossDatasetReferences?.references])\n\n const datasetNames = useMemo(() => {\n return Array.from(\n new Set<string>(\n crossDatasetReferences?.references\n // .filter((name) => typeof name === 'string')\n .map((crossDatasetReference) => crossDatasetReference?.datasetName || '')\n .filter((datasetName) => Boolean(datasetName) && datasetName !== ''),\n ),\n ).sort()\n }, [crossDatasetReferences?.references])\n\n const hasUnknownDatasetNames = useMemo(() => {\n return Boolean(\n crossDatasetReferences?.references.some(\n (crossDatasetReference) => typeof crossDatasetReference.datasetName !== 'string',\n ),\n )\n }, [crossDatasetReferences?.references])\n\n return {\n totalCount: (internalReferences?.totalCount || 0) + (crossDatasetReferences?.totalCount || 0),\n projectIds,\n datasetNames,\n hasUnknownDatasetNames,\n internalReferences,\n crossDatasetReferences,\n isLoading: isInternalReferencesLoading || isCrossDatasetReferencesLoading,\n }\n}\n","import {Box, Flex} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {DocTitle} from '../DocTitle'\nimport {ConfirmDeleteDialogBody} from './ConfirmDeleteDialogBody'\nimport {useReferringDocuments} from './useReferringDocuments'\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n align: 'center',\n direction: 'column',\n justify: 'center',\n})`\n height: 110px;\n`\n\n/** @internal */\nexport interface ConfirmDeleteDialogProps {\n /**\n * Incoming document ID used to find other referencing documents. This\n * field respects draft IDs (e.g. if you pass in a published ID when one\n * doesn't exist the document title may not show up).\n */\n id: string\n /**\n * The schema typename of the incoming document\n */\n type: string\n /**\n * The name of the action being done. (e.g. the `'unpublish'` action requires\n * the same document deletion confirmation).\n */\n action?: 'delete' | 'unpublish'\n onCancel: () => void\n onConfirm: () => void\n}\n\n/**\n * A confirmation dialog used to prevent unwanted document deletes. Loads all\n * the referencing internal and cross-data references prior to showing the\n * delete button.\n *\n * @internal\n */\nexport function ConfirmDeleteDialog({\n id,\n type,\n action = 'delete',\n onCancel,\n onConfirm,\n}: ConfirmDeleteDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const dialogId = `deletion-confirmation-${useId()}`\n const {\n internalReferences,\n crossDatasetReferences,\n isLoading,\n totalCount,\n projectIds,\n datasetNames,\n hasUnknownDatasetNames,\n } = useReferringDocuments(id)\n const documentTitle = <DocTitle document={useMemo(() => ({_id: id, _type: type}), [id, type])} />\n const showConfirmButton = !isLoading\n\n return (\n <Dialog\n width={1}\n id={dialogId}\n header={t('confirm-delete-dialog.header.text', {context: action})}\n footer={{\n cancelButton: {\n onClick: onCancel,\n text: t('confirm-delete-dialog.cancel-button.text'),\n },\n confirmButton: showConfirmButton\n ? {\n text:\n totalCount > 0\n ? t('confirm-delete-dialog.confirm-anyway-button.text', {context: action})\n : t('confirm-delete-dialog.confirm-button.text', {context: action}),\n onClick: onConfirm,\n }\n : undefined,\n }}\n onClose={onCancel}\n onClickOutside={onCancel}\n >\n <DialogBody>\n {crossDatasetReferences && internalReferences && !isLoading ? (\n <ConfirmDeleteDialogBody\n crossDatasetReferences={crossDatasetReferences}\n internalReferences={internalReferences}\n documentTitle={documentTitle}\n isLoading={isLoading}\n totalCount={totalCount}\n action={action}\n projectIds={projectIds}\n datasetNames={datasetNames}\n hasUnknownDatasetNames={hasUnknownDatasetNames}\n onReferenceLinkClick={onCancel}\n />\n ) : (\n <LoadingContainer data-testid=\"loading-container\">\n <LoadingBlock showText title={t('confirm-delete-dialog.loading.text')} />\n </LoadingContainer>\n )}\n </DialogBody>\n </Dialog>\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {type ComponentProps, useCallback, useId, useState} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Dialog, ErrorBoundary} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {ConfirmDeleteDialog, type ConfirmDeleteDialogProps} from './ConfirmDeleteDialog'\n\nexport type {ConfirmDeleteDialogProps}\n\ntype ArgType<T> = T extends (arg: infer U) => unknown ? U : never\ntype ErrorInfo = ArgType<ComponentProps<typeof ErrorBoundary>['onCatch']>\n\n/** @internal */\nfunction ConfirmDeleteDialogContainer(props: ConfirmDeleteDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const id = useId()\n const [error, setError] = useState<ErrorInfo | null>(null)\n const handleRetry = useCallback(() => setError(null), [])\n\n return error ? (\n <Dialog\n id={`dialog-error-${id}`}\n data-testid=\"confirm-delete-error-dialog\"\n header={t('confirm-delete-dialog.error.title.text')}\n footer={{\n confirmButton: {\n text: t('confirm-delete-dialog.error.retry-button.text'),\n onClick: handleRetry,\n tone: 'default',\n },\n }}\n onClose={props.onCancel}\n >\n <Box padding={4}>\n <Text size={1}>{t('confirm-delete-dialog.error.message.text')}</Text>\n </Box>\n </Dialog>\n ) : (\n <ErrorBoundary onCatch={setError}>\n <ConfirmDeleteDialog {...props} />\n </ErrorBoundary>\n )\n}\n\nexport {ConfirmDeleteDialogContainer as ConfirmDeleteDialog}\n","import {useEffect, useState} from 'react'\n\nexport function Delay({\n children,\n ms = 0,\n}: {\n children?: React.JSX.Element | (() => React.JSX.Element)\n ms?: number\n}): React.JSX.Element {\n const [ready, setReady] = useState(ms <= 0)\n\n useEffect(() => {\n if (ms <= 0) {\n return undefined\n }\n\n const timeoutId = setTimeout(() => setReady(true), ms)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [ms])\n\n if (!ready || !children) {\n return <></>\n }\n\n return typeof children === 'function' ? children() : children\n}\n","/**\n * @internal\n */\nexport const PANE_DEBUG = false\n\n/**\n * @internal\n */\nexport const PANE_COLLAPSED_WIDTH = 51\n\n/**\n * @internal\n */\nexport const PANE_DEFAULT_MIN_WIDTH = PANE_COLLAPSED_WIDTH * 4\n","import {Layer} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {usePaneLayout} from './usePaneLayout'\n\nconst Root = styled(Layer)`\n position: relative;\n width: 1px;\n min-width: 1px;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 1px;\n background-color: var(--card-border-color);\n }\n\n &:not([data-disabled]) {\n cursor: ew-resize;\n width: 9px;\n min-width: 9px;\n margin: 0 -4px;\n\n &:before {\n left: 4px;\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 9px;\n bottom: 0;\n background-color: var(--card-border-color);\n opacity: 0;\n transition: opacity 150ms;\n }\n\n &[data-dragging]:after,\n &:hover:after {\n opacity: 0.2;\n }\n }\n`\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneDivider({\n disabled,\n element,\n}: {\n disabled?: boolean\n element: HTMLElement | null\n}) {\n const {resize} = usePaneLayout()\n const [dragging, setDragging] = useState(false)\n\n const handleMouseDown = useCallback(\n (event: any) => {\n if (!element) return\n\n setDragging(true)\n\n event.preventDefault()\n\n const startX = event.pageX\n\n resize('start', element, 0)\n\n const handleMouseMove = (e: MouseEvent) => {\n e.preventDefault()\n\n const deltaX = e.pageX - startX\n\n resize('move', element, deltaX)\n }\n\n const handleMouseUp = (e: MouseEvent) => {\n e.preventDefault()\n\n setDragging(false)\n\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n\n resize('end', element, 0)\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n },\n [element, resize],\n )\n\n return (\n <Root\n data-disabled={disabled ? '' : undefined}\n data-dragging={dragging ? '' : undefined}\n onMouseDown={handleMouseDown}\n />\n )\n}\n","import {BoundaryElementProvider, Card, type CardProps, Code, Flex} from '@sanity/ui'\nimport {\n type ForwardedRef,\n forwardRef,\n type HTMLProps,\n type ReactNode,\n useCallback,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {IsLastPaneProvider, LegacyLayerProvider} from 'sanity'\nimport {PaneContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {PANE_COLLAPSED_WIDTH, PANE_DEBUG, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {PaneDivider} from './PaneDivider'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneProps {\n children?: ReactNode\n currentMinWidth?: number\n currentMaxWidth?: number\n flex?: number\n id: string\n minWidth?: number\n maxWidth?: number\n selected?: boolean\n}\n\nconst Root = styled(Card)`\n outline: none;\n\n // NOTE: This will render a border to the right side of each pane\n // without taking up physical space.\n box-shadow: 1px 0 0 var(--card-border-color);\n`\n\n/**\n * @hidden\n * @internal\n */\n// eslint-disable-next-line complexity\nexport const Pane = forwardRef(function Pane(\n props: PaneProps &\n Omit<CardProps, 'as' | 'overflow'> &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'hidden' | 'id' | 'style'>,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n currentMinWidth: currentMinWidthProp,\n currentMaxWidth: currentMaxWidthProp,\n flex: flexProp = 1,\n id,\n minWidth: minWidthProp,\n maxWidth: maxWidthProp,\n selected = false,\n ...restProps\n } = props\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const {\n collapse,\n collapsed: layoutCollapsed,\n expand,\n expandedElement,\n mount,\n panes,\n } = usePaneLayout()\n const pane = panes.find((p) => p.element === rootElement)\n const paneIndex = pane && panes.indexOf(pane)\n const nextPane = typeof paneIndex === 'number' ? panes[paneIndex + 1] : undefined\n const isLast = paneIndex === panes.length - 1\n const expanded = expandedElement === rootElement\n const collapsed = layoutCollapsed ? false : pane?.collapsed || false\n const nextCollapsed = nextPane?.collapsed || false\n const ref = useRef<HTMLDivElement | null>(null)\n const flex = pane?.flex ?? flexProp\n const currentMinWidth = pane?.currentMinWidth ?? currentMinWidthProp\n const currentMaxWidth = pane?.currentMaxWidth ?? currentMaxWidthProp\n\n // Forward ref to parent\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const setRef = useCallback((refValue: HTMLDivElement | null) => {\n setRootElement(refValue)\n ref.current = refValue\n }, [])\n\n useLayoutEffect(() => {\n if (!rootElement) return undefined\n return mount(rootElement, {\n currentMinWidth: currentMinWidthProp,\n currentMaxWidth: currentMaxWidthProp,\n flex: flexProp,\n id,\n minWidth: minWidthProp,\n maxWidth: maxWidthProp,\n })\n }, [\n currentMinWidthProp,\n currentMaxWidthProp,\n flexProp,\n id,\n minWidthProp,\n maxWidthProp,\n mount,\n rootElement,\n ])\n\n const handleCollapse = useCallback(() => {\n if (!rootElement) return\n collapse(rootElement)\n }, [collapse, rootElement])\n\n const handleExpand = useCallback(() => {\n if (!rootElement) return\n expand(rootElement)\n }, [expand, rootElement])\n\n const contextValue = useMemo(\n () => ({\n collapse: handleCollapse,\n collapsed: layoutCollapsed ? false : collapsed,\n expand: handleExpand,\n index: paneIndex,\n isLast,\n rootElement,\n }),\n [collapsed, handleCollapse, handleExpand, isLast, layoutCollapsed, paneIndex, rootElement],\n )\n\n const minWidth = useMemo(() => {\n if (layoutCollapsed) {\n return undefined\n }\n\n if (collapsed) return PANE_COLLAPSED_WIDTH\n\n if (currentMinWidth === 0) {\n return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }\n\n if (isLast) {\n return minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }\n\n return currentMinWidth || minWidthProp || PANE_DEFAULT_MIN_WIDTH\n }, [collapsed, currentMinWidth, isLast, layoutCollapsed, minWidthProp])\n\n const maxWidth = useMemo(() => {\n if (collapsed) return PANE_COLLAPSED_WIDTH\n\n if (layoutCollapsed && isLast) {\n return undefined\n }\n\n if (isLast) {\n if (maxWidthProp) {\n return currentMaxWidth ?? maxWidthProp\n }\n\n return undefined\n }\n\n return currentMaxWidth ?? maxWidthProp\n }, [collapsed, currentMaxWidth, isLast, layoutCollapsed, maxWidthProp])\n\n const hidden = layoutCollapsed && !isLast\n\n const divider = useMemo(\n () =>\n !isLast &&\n !layoutCollapsed && (\n <LegacyLayerProvider zOffset=\"paneResizer\">\n <PaneDivider disabled={collapsed || nextCollapsed} element={rootElement} />\n </LegacyLayerProvider>\n ),\n [collapsed, isLast, layoutCollapsed, nextCollapsed, rootElement],\n )\n\n const style = useMemo(\n () => ({\n flex,\n minWidth,\n maxWidth: maxWidth === Infinity ? undefined : maxWidth,\n }),\n [flex, minWidth, maxWidth],\n )\n\n return (\n <>\n <LegacyLayerProvider zOffset=\"pane\">\n <PaneContext.Provider value={contextValue}>\n <IsLastPaneProvider isLastPane={isLast}>\n <Root\n data-testid=\"pane\"\n data-ui=\"Pane\"\n tone=\"inherit\"\n hidden={hidden}\n id={id}\n overflow={layoutCollapsed ? undefined : 'hidden'}\n {...restProps}\n data-pane-collapsed={collapsed ? '' : undefined}\n data-pane-index={paneIndex}\n data-pane-selected={selected ? '' : undefined}\n ref={setRef}\n style={style}\n >\n {PANE_DEBUG && (\n <Card padding={4} tone={expanded ? 'primary' : 'caution'}>\n <Code size={1}>\n {[\n `#${paneIndex}`,\n `collapsed=${collapsed}`,\n `currentMinWidth=${currentMinWidth}`,\n `currentMaxWidth=${currentMaxWidth}`,\n `flex=${flex}`,\n `minWidth=${minWidth}`,\n `maxWidth=${maxWidth}`,\n ].join('\\n')}\n </Code>\n </Card>\n )}\n\n <BoundaryElementProvider element={rootElement}>\n {!hidden && (\n <Flex direction=\"column\" height=\"fill\">\n {children}\n </Flex>\n )}\n </BoundaryElementProvider>\n </Root>\n </IsLastPaneProvider>\n </PaneContext.Provider>\n </LegacyLayerProvider>\n\n {divider}\n </>\n )\n})\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n position: relative;\n outline: none;\n`\n\nRoot.displayName = 'PaneContent__root'\n","import {useContext} from 'react'\nimport {PaneContext} from 'sanity/_singletons'\n\nimport {type PaneContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function usePane(): PaneContextValue {\n const pane = useContext(PaneContext)\n\n if (!pane) {\n throw new Error('Pane: missing context value')\n }\n\n return pane\n}\n","import {type BoxOverflow} from '@sanity/ui'\nimport {type ElementType, type ForwardedRef, forwardRef, type HTMLProps} from 'react'\n\nimport {Root} from './PaneContent.styles'\nimport {usePane} from './usePane'\nimport {usePaneLayout} from './usePaneLayout'\n\ninterface PaneContentProps {\n as?: ElementType | keyof React.JSX.IntrinsicElements\n overflow?: BoxOverflow\n padding?: number | number[]\n}\n\n/**\n * @hidden\n * @internal\n */\nexport const PaneContent = forwardRef(function PaneContent(\n props: PaneContentProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {as, children, overflow, padding, ...restProps} = props\n const {collapsed} = usePane()\n const {collapsed: layoutCollapsed} = usePaneLayout()\n\n return (\n <Root\n data-testid=\"pane-content\"\n forwardedAs={as}\n {...restProps}\n flex={1}\n hidden={collapsed}\n overflow={layoutCollapsed ? undefined : overflow}\n padding={padding}\n ref={ref}\n tone=\"inherit\"\n >\n {children}\n </Root>\n )\n})\n","/**\n * Remove the spaces and lower case the string\n *\n * @param str - string to remove the spaces and lower case\n * @returns str with no spaces and lower case\n */\nexport function toLowerCaseNoSpaces(str: string | undefined): string {\n if (!str) return ''\n return str.toLocaleLowerCase().replaceAll(' ', '')\n}\n","import {CheckmarkIcon} from '@sanity/icons'\nimport {MenuDivider, Text} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {TooltipOfDisabled, useGetI18nText, useI18nText} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {MenuGroup, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {toLowerCaseNoSpaces} from '../../util/toLowerCaseNoSpaces'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\nconst MENU_GROUP_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'left-start',\n portal: true,\n}\n\nexport function PaneMenuButtonItem(props: {\n disabled?: boolean\n isAfterGroup: boolean\n node: _PaneMenuNode\n}) {\n const {disabled, isAfterGroup, node} = props\n const getI18nText = useGetI18nText('i18n' in node ? node : undefined)\n\n if (node.type === 'divider') {\n return <MenuDivider />\n }\n\n const {title} = getI18nText(node)\n\n if (node.type === 'group') {\n if (node.children.length === 0) {\n return null\n }\n\n if (node.expanded) {\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n {node.children.map((child, childIndex) => (\n <PaneMenuButtonItem\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n ))}\n </>\n )\n }\n\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n <MenuGroup\n disabled={disabled}\n icon={node.icon}\n popover={MENU_GROUP_POPOVER_PROPS}\n text={title}\n >\n {node.children.map((child, childIndex) => (\n <PaneMenuButtonItem\n disabled={disabled || Boolean(node.disabled)}\n isAfterGroup={node.children[childIndex - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n ))}\n </MenuGroup>\n </>\n )\n }\n\n return (\n <>\n {isAfterGroup && <MenuDivider />}\n <PaneContextMenuItemResolver disabled={disabled} node={node} />\n </>\n )\n}\n\nfunction PaneContextMenuItemResolver(props: {disabled?: boolean; node: _PaneMenuItem}) {\n const {node} = props\n\n if (node.intent) {\n return <PaneContextIntentMenuItem {...props} intent={node.intent} />\n }\n\n return <PaneContextMenuItem {...props} />\n}\n\nfunction PaneContextMenuItem(props: {disabled?: boolean; node: _PaneMenuItem}) {\n const {disabled, node} = props\n const tooltipContent = typeof node.disabled === 'object' && (\n <Text size={1}>{node.disabled.reason}</Text>\n )\n const {title} = useI18nText(node)\n\n return (\n <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n <MenuItem\n disabled={disabled || Boolean(node.disabled)}\n hotkeys={node.hotkey?.split('+')}\n icon={node.icon}\n iconRight={node.iconRight || (node.selected && CheckmarkIcon)}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={node.onAction}\n pressed={node.selected}\n text={title}\n tone={node.tone}\n data-testid={`action-${toLowerCaseNoSpaces(node.title)}`}\n />\n </TooltipOfDisabled>\n )\n}\n\nfunction PaneContextIntentMenuItem(props: {\n disabled?: boolean\n intent: Intent\n node: _PaneMenuItem\n}) {\n const {disabled, intent, node} = props\n const tooltipContent = typeof node.disabled === 'object' && (\n <Text size={1}>{node.disabled.reason}</Text>\n )\n const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n intentLink.onClick(event)\n node.onAction()\n },\n [intentLink, node],\n )\n\n const {title} = useI18nText(node)\n\n return (\n <TooltipOfDisabled content={tooltipContent} placement=\"left\">\n <MenuItem\n as=\"a\"\n disabled={disabled || Boolean(node.disabled)}\n hotkeys={node.hotkey?.split('+')}\n href={intentLink.href}\n icon={node.icon}\n iconRight={node.selected ? CheckmarkIcon : undefined}\n onClick={handleClick}\n pressed={node.selected}\n text={title}\n tone={node.tone}\n />\n </TooltipOfDisabled>\n )\n}\n","import {Menu, MenuDivider} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {ContextMenuButton} from 'sanity'\n\nimport {MenuButton, type PopoverProps} from '../../../ui-components'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuItem, type _PaneMenuNode} from './types'\n\ninterface PaneContextMenuButtonProps {\n nodes: _PaneMenuNode[]\n actionsNodes?: ReactNode\n}\n\nconst CONTEXT_MENU_POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n}\n\nfunction nodesHasTone(nodes: _PaneMenuNode[], tone: NonNullable<_PaneMenuItem['tone']>): boolean {\n return nodes.some((node) => {\n return (\n (node.type === 'item' && node.tone === tone) ||\n (node.type === 'group' && nodesHasTone(node.children, tone))\n )\n })\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneContextMenuButton(props: PaneContextMenuButtonProps) {\n const {nodes, actionsNodes} = props\n const id = useId()\n\n const hasCritical = nodesHasTone(nodes, 'critical')\n const hasCaution = nodesHasTone(nodes, 'caution')\n\n return (\n <MenuButton\n button={\n <ContextMenuButton\n // eslint-disable-next-line no-nested-ternary\n tone={hasCritical ? 'critical' : hasCaution ? 'caution' : undefined}\n data-testid=\"pane-context-menu-button\"\n />\n }\n id={id}\n menu={\n <Menu>\n {actionsNodes && (\n <>\n {actionsNodes}\n <MenuDivider />\n </>\n )}\n {nodes.map((node, nodeIndex) => {\n const isAfterGroup = nodes[nodeIndex - 1]?.type === 'group'\n return <PaneMenuButtonItem isAfterGroup={isAfterGroup} key={node.key} node={node} />\n })}\n </Menu>\n }\n popover={CONTEXT_MENU_POPOVER_PROPS}\n />\n )\n}\n","import {Card, Layer} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Layer)`\n position: sticky;\n bottom: 0;\n`\n\nexport const RootCard = styled(Card)`\n padding-bottom: env(safe-area-inset-bottom);\n`\n","import {Box} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Root, RootCard} from './PaneFooter.styles'\nimport {usePane} from './usePane'\n\ninterface PaneFooterProps {\n children?: ReactNode\n padding?: number | number[]\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneFooter = forwardRef(function PaneFooter(\n props: PaneFooterProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {children, padding} = props\n const {collapsed} = usePane()\n\n return (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <Root data-testid=\"pane-footer\" hidden={collapsed} ref={ref}>\n <RootCard tone=\"inherit\">\n <Box padding={padding}>{children}</Box>\n </RootCard>\n </Root>\n </LegacyLayerProvider>\n )\n})\n","import {Card, Flex, Layer, Text, TextSkeleton, type Theme} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {css, styled} from 'styled-components'\n\ninterface RootProps {\n $border?: boolean\n}\n\nexport const Root = styled(Layer)<RootProps>(({$border}) => {\n return css`\n line-height: 0;\n position: sticky;\n top: 0;\n\n &:not([data-collapsed]):after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid ${$border ? 'var(--card-border-color)' : 'transparent'};\n opacity: 1;\n }\n `\n})\n\nexport const Layout = styled(Flex)`\n transform-origin: calc(51px / 2);\n\n [data-collapsed] > div > & {\n transform: rotate(90deg);\n }\n`\n\nexport const TitleCard = styled(Card)(({theme}: {theme: Theme}) => {\n const {fg, bg} = theme.sanity.color.card.enabled\n\n // Disable color updates on hover\n return css`\n background-color: ${bg};\n\n [data-ui='Text'] {\n color: ${fg};\n }\n `\n})\n\nexport const TitleTextSkeleton = styled(TextSkeleton)`\n width: 66%;\n max-width: 175px;\n`\n\nexport const TitleText = styled(Text)`\n cursor: default;\n outline: none;\n`\n","import {Box, Card, Flex, LayerProvider, useElementRect} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type ReactNode, useCallback, useMemo} from 'react'\nimport {LegacyLayerProvider} from 'sanity'\n\nimport {Layout, Root, TitleCard, TitleText, TitleTextSkeleton} from './PaneHeader.styles'\nimport {usePane} from './usePane'\n\nexport type TabsType = 'default' | 'dropdown'\n\n/**\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneHeaderProps {\n actions?: ReactNode\n backButton?: ReactNode\n border?: boolean\n contentAfter?: ReactNode\n loading?: boolean\n subActions?: ReactNode\n tabIndex?: number\n tabs?: ReactNode\n title: ReactNode\n appendTitle?: ReactNode\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport const PaneHeader = forwardRef(function PaneHeader(\n props: PaneHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n actions,\n backButton,\n border,\n contentAfter,\n loading,\n subActions,\n tabs,\n tabIndex,\n title,\n appendTitle,\n } = props\n const {collapse, collapsed, expand, rootElement: paneElement} = usePane()\n const paneRect = useElementRect(paneElement || null)\n\n const layoutStyle = useMemo(\n () => ({\n width: collapsed ? paneRect?.height || window.innerHeight : undefined,\n }),\n [collapsed, paneRect],\n )\n\n const handleTitleClick = useCallback(() => {\n if (collapsed) return\n collapse()\n }, [collapse, collapsed])\n\n const handleLayoutClick = useCallback(() => {\n if (!collapsed) return\n expand()\n }, [collapsed, expand])\n\n const showTabsOrSubActions = Boolean(!collapsed && (tabs || subActions))\n\n return (\n <LayerProvider zOffset={100}>\n <Root\n $border={border}\n data-collapsed={collapsed ? '' : undefined}\n data-testid=\"pane-header\"\n ref={ref}\n >\n <LegacyLayerProvider zOffset=\"paneHeader\">\n <Card data-collapsed={collapsed ? '' : undefined} tone=\"inherit\">\n <Layout\n direction=\"column\"\n gap={3}\n onClick={handleLayoutClick}\n padding={3}\n sizing=\"border\"\n style={layoutStyle}\n >\n <Flex align=\"flex-start\" gap={3}>\n {backButton && <Box flex=\"none\">{backButton}</Box>}\n\n <TitleCard\n __unstable_focusRing\n flex={1}\n onClick={handleTitleClick}\n paddingLeft={backButton ? 1 : 2}\n padding={2}\n tabIndex={tabIndex}\n >\n {loading && (\n <Box>\n <TitleTextSkeleton animated radius={1} size={1} />\n </Box>\n )}\n {!loading && (\n <Flex align=\"center\" gap={1}>\n <TitleText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n {title}\n </TitleText>\n {appendTitle}\n </Flex>\n )}\n </TitleCard>\n\n {actions && (\n <Box hidden={collapsed}>\n <LegacyLayerProvider zOffset=\"paneHeader\">{actions}</LegacyLayerProvider>\n </Box>\n )}\n </Flex>\n\n {showTabsOrSubActions && (\n <Flex align=\"center\" hidden={collapsed} overflow=\"auto\">\n <Box flex={1} marginRight={subActions ? 3 : 0}>\n {tabs}\n </Box>\n\n {subActions}\n </Flex>\n )}\n </Layout>\n\n {!collapsed && contentAfter}\n </Card>\n </LegacyLayerProvider>\n </Root>\n </LayerProvider>\n )\n})\n","import {UnknownIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useId} from 'react'\nimport {StatusButton, useI18nText, useTranslation} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\nimport {Button, MenuButton} from '../../../ui-components'\nimport {type Intent} from '../../structureBuilder'\nimport {PaneMenuButtonItem} from './PaneMenuButtonItem'\nimport {type _PaneMenuGroup, type _PaneMenuItem} from './types'\n\nfunction getDisabledReason(node: _PaneMenuItem) {\n if (!node.disabled) {\n return {disabledReason: undefined, ariaLabel: undefined, isDisabled: false}\n }\n\n /**\n * This component supports receiving a `reason: string | react.ReactNode`.\n * We are casting it as string, to avoid the ts error, as content will be rendered into the tooltip which only accepts string, but it won't crash if it's a ReactNode.\n * For the aria label, we want to check if it's actually a string, to avoid generating an aria-label with the value `[object Object]`.\n */\n const disabledReason =\n typeof node.disabled === 'object' ? (node.disabled.reason as string) : undefined\n const ariaLabel =\n typeof node.disabled === 'object' && typeof node.disabled?.reason === 'string'\n ? node.disabled.reason\n : 'This is disabled'\n\n return {disabledReason, ariaLabel, isDisabled: Boolean(node.disabled)}\n}\nexport interface PaneHeaderActionButtonProps {\n node: _PaneMenuItem | _PaneMenuGroup\n}\n\nexport function PaneHeaderActionButton(props: PaneHeaderActionButtonProps) {\n const {node} = props\n\n if (node.type === 'item') {\n return <PaneHeaderMenuItemActionButton node={node} />\n }\n\n if (node.type === 'group') {\n return <PaneHeaderMenuGroupActionButton node={node} />\n }\n\n console.warn('unknown menu node (expected `type: \"item\" | \"group\"`):', node)\n\n return null\n}\n\nexport interface PaneHeaderMenuItemActionButtonProps {\n node: _PaneMenuItem\n}\n\nexport function PaneHeaderMenuItemActionButton(props: PaneHeaderMenuItemActionButtonProps) {\n const {node} = props\n const {title} = useI18nText(node)\n const {t} = useTranslation()\n\n if (node.intent) {\n return <PaneHeaderActionIntentButton {...props} intent={node.intent} />\n }\n\n const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n return (\n <StatusButton\n disabled={isDisabled}\n icon={node.icon}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={node.onAction}\n selected={node.selected}\n tone={node.tone}\n aria-label={ariaLabel || title || t('status-button.aria-label')}\n tooltipProps={{\n hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n content: isDisabled ? disabledReason : title,\n }}\n />\n )\n}\n\nfunction PaneHeaderActionIntentButton(props: {intent: Intent; node: _PaneMenuItem}) {\n const {intent, node} = props\n const intentLink = useIntentLink({intent: intent.type, params: intent.params})\n const {t} = useTranslation()\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n intentLink.onClick(event)\n node.onAction()\n },\n [intentLink, node],\n )\n\n const {disabledReason, ariaLabel, isDisabled} = getDisabledReason(node)\n\n return (\n <StatusButton\n forwardedAs=\"a\"\n disabled={isDisabled}\n href={intentLink.href}\n icon={node.icon}\n onClick={handleClick}\n selected={node.selected}\n tone={node.tone}\n aria-label={ariaLabel || node.title || t('status-button.aria-label')}\n tooltipProps={{\n hotkeys: !isDisabled && node.hotkey ? node.hotkey.split('+') : undefined,\n content: isDisabled ? disabledReason : node.title,\n placement: 'bottom',\n portal: true,\n }}\n />\n )\n}\n\nexport interface PaneHeaderMenuGroupActionButtonProps {\n node: _PaneMenuGroup\n}\n\nfunction PaneHeaderMenuGroupActionButton(props: PaneHeaderMenuGroupActionButtonProps) {\n const {node} = props\n const {title} = useI18nText(node)\n\n return (\n <MenuButton\n button={\n <Button\n disabled={!!node.disabled}\n icon={node.icon ?? UnknownIcon}\n label={title}\n mode=\"bleed\"\n tooltipProps={{content: node.title, portal: true}}\n />\n }\n id={useId()}\n menu={\n <Menu>\n {node.children.map((child, idx) => {\n return (\n <PaneMenuButtonItem\n disabled={Boolean(node.disabled)}\n isAfterGroup={node.children[idx - 1]?.type === 'group'}\n key={child.key}\n node={child}\n />\n )\n })}\n </Menu>\n }\n />\n )\n}\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const Root = styled(Card)`\n transition: opacity 200ms;\n position: relative;\n z-index: 1;\n padding-left: env(safe-area-inset-left);\n padding-right: env(safe-area-inset-right);\n opacity: 0;\n\n &:not([hidden]) {\n display: flex;\n }\n\n &:not([data-collapsed]) {\n overflow: auto;\n }\n\n &[data-mounted] {\n opacity: 1;\n }\n\n &[data-resizing] {\n pointer-events: none;\n }\n`\n","import {PANE_DEFAULT_MIN_WIDTH} from '../constants'\nimport {type PaneConfigOpts, type PaneResizeCache} from '../types'\n\nexport function _calcPaneResize(\n cache: PaneResizeCache,\n left: PaneConfigOpts,\n right: PaneConfigOpts,\n deltaX: number,\n): {leftFlex: number; leftW: number; rightFlex: number; rightW: number} {\n const sum = {\n flex: cache.left.flex + cache.right.flex,\n width: cache.left.width + cache.right.width,\n }\n\n const leftMinWidth = left.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n const rightMinWidth = right.minWidth ?? PANE_DEFAULT_MIN_WIDTH\n\n const leftMaxWidth = Math.min(left.maxWidth || Infinity, sum.width - rightMinWidth)\n const rightMaxWidth = Math.min(right.maxWidth || Infinity, sum.width - leftMinWidth)\n\n // Get min. delta X\n let minDeltaX = leftMinWidth - cache.left.width\n const rightMinDeltaX = cache.right.width - rightMaxWidth\n if (minDeltaX < rightMinDeltaX) {\n minDeltaX = rightMinDeltaX\n }\n\n // Get max. delta X\n let maxDeltaX = cache.right.width - rightMinWidth\n const leftMaxDeltaX = leftMaxWidth - cache.left.width\n if (maxDeltaX > leftMaxDeltaX) {\n maxDeltaX = leftMaxDeltaX\n }\n\n const _deltaX = Math.min(Math.max(deltaX, minDeltaX), maxDeltaX)\n\n const leftW = cache.left.width + _deltaX\n const rightW = cache.right.width - _deltaX\n\n const leftFlex = (leftW / sum.width) * sum.flex\n const rightFlex = (rightW / sum.width) * sum.flex\n\n return {leftFlex, leftW, rightFlex, rightW}\n}\n","/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n const path: number[] = []\n\n let e = el\n\n while (e !== rootElement) {\n const parentElement = e.parentElement\n\n if (!parentElement) return path\n\n const children = Array.from(parentElement.childNodes)\n const index = children.indexOf(e)\n\n path.unshift(index)\n\n if (parentElement === rootElement) {\n return path\n }\n\n e = parentElement\n }\n\n return path\n}\n","import {_getDOMPath} from './_getDOMPath'\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement, elements: HTMLElement[]): void {\n // Create a map containing the DOM path of each pane element.\n // The DOM path is relative to the `rootElement`, and is used in the next step for sorting.\n const map = new WeakMap<HTMLElement, number[]>()\n\n for (const element of elements) {\n map.set(element, _getDOMPath(rootElement, element))\n }\n\n const _sortByElementPath = (a: HTMLElement, b: HTMLElement) => {\n const _a = map.get(a) || EMPTY_PATH\n const _b = map.get(b) || EMPTY_PATH\n\n const len = Math.max(_a.length, _b.length)\n\n // Loop until there are different indexes\n for (let i = 0; i < len; i += 1) {\n const aIndex = _a[i] || -1\n const bIndex = _b[i] || -1\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n }\n\n return 0\n }\n\n elements.sort(_sortByElementPath)\n}\n","import {PANE_COLLAPSED_WIDTH, PANE_DEFAULT_MIN_WIDTH} from './constants'\nimport {_calcPaneResize, _sortElements} from './helpers'\nimport {\n type PaneConfigOpts,\n type PaneData,\n type PaneResizeCache,\n type PaneResizeData,\n} from './types'\n\nexport interface PaneLayoutState {\n expandedElement: HTMLElement | null\n panes: PaneData[]\n resizing: boolean\n}\n\nexport type PaneLayoutStateObserver = (state: PaneLayoutState) => void\n\nexport interface PaneLayoutController {\n collapse: (element: HTMLElement) => void\n expand: (element: HTMLElement) => void\n mount: (element: HTMLElement, options: PaneConfigOpts) => () => void\n resize: (type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) => void\n setRootElement: (nextRootElement: HTMLElement | null) => void\n setRootWidth: (nextRootWidth: number) => void\n subscribe: (observer: PaneLayoutStateObserver) => () => void\n}\n\nexport function createPaneLayoutController(): PaneLayoutController {\n const observers: PaneLayoutStateObserver[] = []\n const elements: HTMLElement[] = []\n const optionsMap = new WeakMap<HTMLElement, PaneConfigOpts & {original: PaneConfigOpts}>()\n const userCollapsedElementSet = new Set<HTMLElement>()\n const cache: Partial<PaneResizeCache> = {}\n\n // Mutable internal state\n let rootElement: HTMLElement | null = null\n let rootWidth = 0\n let expandedElement: HTMLElement | null = null\n let resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n let resizing = false\n\n function collapse(element: HTMLElement) {\n userCollapsedElementSet.add(element)\n\n if (expandedElement === element) {\n expandedElement = null\n }\n\n _notifyObservers()\n }\n\n function expand(element: HTMLElement) {\n userCollapsedElementSet.delete(element)\n\n expandedElement = element\n\n _notifyObservers()\n }\n\n function mount(element: HTMLElement, options: PaneConfigOpts) {\n optionsMap.set(element, {...options, original: options})\n\n elements.push(element)\n\n if (rootElement) {\n _sortElements(rootElement, elements)\n }\n\n expand(element)\n\n return () => {\n const idx = elements.indexOf(element)\n\n if (idx > -1) {\n elements.splice(idx, 1)\n }\n\n optionsMap.delete(element)\n\n _notifyObservers()\n }\n }\n\n // eslint-disable-next-line complexity\n function resize(type: 'start' | 'move' | 'end', leftElement: HTMLElement, deltaX: number) {\n const leftIndex = elements.indexOf(leftElement)\n const leftOptions = optionsMap.get(leftElement)\n\n if (!leftOptions) return\n\n const rightElement = elements[leftIndex + 1]\n const rightOptions = optionsMap.get(rightElement)\n\n if (!rightOptions) return\n\n if (type === 'start') {\n resizing = true\n\n cache.left = {\n element: leftElement,\n flex: leftOptions.flex || 1,\n width: leftElement.offsetWidth,\n }\n\n cache.right = {\n element: rightElement,\n flex: rightOptions.flex || 1,\n width: rightElement.offsetWidth,\n }\n\n _notifyObservers()\n }\n\n if (type === 'move' && cache.left && cache.right) {\n resizeDataMap = new Map<HTMLElement, PaneResizeData>()\n\n const {leftW, rightW, leftFlex, rightFlex} = _calcPaneResize(\n cache as PaneResizeCache,\n leftOptions,\n rightOptions,\n deltaX,\n )\n\n // update resize cache\n resizeDataMap.set(leftElement, {flex: leftFlex, width: leftW})\n resizeDataMap.set(rightElement, {flex: rightFlex, width: rightW})\n\n _notifyObservers()\n }\n\n if (type === 'end') {\n resizing = false\n\n const leftResizeData = resizeDataMap.get(leftElement)\n const rightResizeData = resizeDataMap.get(rightElement)\n\n // Update left options\n optionsMap.set(leftElement, {\n ...leftOptions,\n currentMinWidth: 0,\n currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n flex: leftResizeData?.flex ?? leftOptions.flex,\n })\n\n // Update right options\n optionsMap.set(rightElement, {\n ...rightOptions,\n currentMinWidth: 0,\n currentMaxWidth: leftOptions.maxWidth ?? Infinity,\n flex: rightResizeData?.flex ?? rightOptions.flex,\n })\n\n // Reset resize data map\n resizeDataMap = new Map()\n\n // Reset cache\n delete cache.left\n delete cache.right\n\n _notifyObservers()\n }\n }\n\n function setRootElement(nextRootElement: HTMLElement | null) {\n rootElement = nextRootElement\n }\n\n function setRootWidth(nextRootWidth: number) {\n rootWidth = nextRootWidth\n _notifyObservers()\n }\n\n function subscribe(observer: PaneLayoutStateObserver) {\n observers.push(observer)\n\n return () => {\n const idx = observers.push(observer)\n\n if (idx > -1) {\n observers.splice(idx, 1)\n }\n }\n }\n\n return {collapse, expand, mount, resize, setRootElement, setRootWidth, subscribe}\n\n // eslint-disable-next-line complexity\n function _notifyObservers() {\n if (!rootWidth) return\n\n // Create a reversed array of pane elements, so we can loop over them backwards.\n // Place the expanded element first (so it has the least chance of being collapsed).\n const _elements: HTMLElement[] = []\n for (const element of elements) {\n if (element !== expandedElement) {\n _elements.unshift(element)\n }\n }\n if (expandedElement) {\n _elements.unshift(expandedElement)\n }\n\n const dataMap = new WeakMap<HTMLElement, PaneData>()\n const len = _elements.length\n const lastElement = _elements[0]\n const collapsedWidth = (len - 1) * PANE_COLLAPSED_WIDTH\n\n let remaingWidth = rootWidth - collapsedWidth\n\n for (const element of _elements) {\n const options = optionsMap.get(element)\n\n if (!options) {\n continue\n }\n\n const minWidth = options.currentMinWidth || options.minWidth || PANE_DEFAULT_MIN_WIDTH\n const isLast = element === lastElement\n\n // A pane is collapsed if:\n // - it’s explictly collapsed by the user\n const userCollapsed = userCollapsedElementSet.has(element)\n // - it’s minimum width is larger than the remaining width\n const sizeCollapsed = minWidth > remaingWidth\n // - if the element is not the last (expanded pane)\n const collapsed = isLast ? false : userCollapsed || sizeCollapsed\n\n const resizeData = resizeDataMap.get(element)\n\n // Collect pane data\n dataMap.set(element, {\n element: element,\n collapsed: collapsed,\n currentMinWidth: resizeData?.width ?? options.currentMinWidth,\n currentMaxWidth: resizeData?.width ?? options.currentMaxWidth,\n flex: resizeData?.flex ?? options.flex ?? 1,\n })\n\n // Update remaining width\n if (collapsed) {\n remaingWidth -= PANE_COLLAPSED_WIDTH\n } else {\n remaingWidth -= minWidth - PANE_COLLAPSED_WIDTH\n }\n }\n\n const panes: PaneData[] = []\n\n for (const element of elements) {\n const data = dataMap.get(element)\n\n if (data) panes.push(data)\n }\n\n for (const observer of observers) {\n observer({\n expandedElement: expandedElement || elements[elements.length - 1] || null,\n panes,\n resizing,\n })\n }\n }\n}\n","import {type CardProps, useElementRect} from '@sanity/ui'\nimport {type HTMLProps, useEffect, useMemo, useState} from 'react'\nimport {PaneLayoutContext} from 'sanity/_singletons'\n\nimport {Root} from './PaneLayout.styles'\nimport {createPaneLayoutController, type PaneLayoutState} from './paneLayoutController'\nimport {type PaneLayoutContextValue} from './types'\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport interface PaneLayoutProps {\n minWidth?: number\n onCollapse?: () => void\n onExpand?: () => void\n}\n\n/**\n *\n * @hidden\n * @beta This API will change. DO NOT USE IN PRODUCTION.\n */\nexport function PaneLayout(\n props: PaneLayoutProps &\n CardProps &\n Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'wrap'>,\n) {\n const {children, minWidth, onCollapse, onExpand, ...restProps} = props\n const [controller] = useState(() => createPaneLayoutController())\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const rootRect = useElementRect(rootElement)\n const width = rootRect?.width || 0\n const collapsed = width === undefined || !minWidth ? undefined : width < minWidth\n const [state, setState] = useState<PaneLayoutState>({\n expandedElement: null,\n panes: [],\n resizing: false,\n })\n\n // Set root element\n useEffect(() => controller.setRootElement(rootElement), [controller, rootElement])\n\n // Set root size\n useEffect(() => controller.setRootWidth(width), [controller, width])\n\n // Subscribe to state changes\n useEffect(() => controller.subscribe(setState), [controller])\n\n // Call the `onCollapse` and `onExpand` callbacks as the `collapsed` boolean changes\n useEffect(() => {\n if (collapsed === undefined) return\n if (collapsed && onCollapse) onCollapse()\n if (!collapsed && onExpand) onExpand()\n }, [collapsed, onCollapse, onExpand])\n\n // This is the context value that gives each pane the information they need\n const paneLayout: PaneLayoutContextValue = useMemo(\n () => ({\n collapse: controller.collapse,\n collapsed,\n expand: controller.expand,\n expandedElement: state.expandedElement,\n mount: controller.mount,\n panes: state.panes,\n resize: controller.resize,\n resizing: state.resizing,\n }),\n [collapsed, controller, state.expandedElement, state.panes, state.resizing],\n )\n\n return (\n <PaneLayoutContext.Provider value={paneLayout}>\n <Root\n data-ui=\"PaneLayout\"\n {...restProps}\n data-collapsed={collapsed ? '' : undefined}\n // The `data-resizing` attribute is used to improve cursor behavior\n data-resizing={state.resizing ? '' : undefined}\n // The `data-mounted` attribute is used to fade in the layout and prevent flash of\n // non-collapsed panes\n data-mounted={width ? '' : undefined}\n ref={setRootElement}\n >\n {children}\n </Root>\n </PaneLayoutContext.Provider>\n )\n}\n","/* eslint-disable camelcase */\n\nimport {negate} from 'lodash'\n\nimport {type _PaneMenuGroup, type _PaneMenuItem, type _PaneMenuNode} from './components/pane/types'\nimport {type DocumentFieldMenuActionNode, type PaneMenuItem, type PaneMenuItemGroup} from './types'\n\nexport function isMenuNodeButton(node: _PaneMenuNode): node is _PaneMenuItem | _PaneMenuGroup {\n return (node.type === 'item' || node.type === 'group') && node.renderAsButton\n}\n\nexport const isNotMenuNodeButton = negate(isMenuNodeButton)\n\nexport function resolveMenuNodes(params: {\n actionHandler: (item: PaneMenuItem) => void\n fieldActions?: DocumentFieldMenuActionNode[]\n menuItems: PaneMenuItem[]\n menuItemGroups: PaneMenuItemGroup[]\n}): _PaneMenuNode[] {\n const {fieldActions = [], menuItems, menuItemGroups} = params\n\n const nodes: _PaneMenuNode[] = []\n\n let keyOffset = 0\n\n for (let i = 0; i < fieldActions.length; i += 1) {\n const a = fieldActions[i]\n\n nodes.push(mapFieldActionToPaneMenuNode(a, `${i}-${a.type}`))\n }\n\n keyOffset += nodes.length\n\n const groups: _PaneMenuGroup[] = []\n\n for (const itemGroup of menuItemGroups) {\n const group = groups.find((g) => g.key === itemGroup.id)\n\n if (!group) {\n groups.push({\n type: 'group',\n key: itemGroup.id,\n\n children: [],\n expanded: true,\n renderAsButton: false,\n title: itemGroup.title,\n i18n: itemGroup.i18n,\n })\n }\n }\n\n const ungroupedItems: _PaneMenuItem[] = []\n\n for (let i = 0; i < menuItems.length; i += 1) {\n const item = menuItems[i]\n\n let group = item.group && groups.find((g) => g.key === item.group)\n const disabled = typeof item.disabled === 'string' ? {reason: item.disabled} : item.disabled\n\n if (item.group && !group) {\n group = {\n type: 'group',\n key: item.group,\n disabled,\n expanded: true,\n icon: item.icon,\n title: item.group,\n children: [],\n renderAsButton: false,\n }\n groups.push(group)\n }\n\n if (group) {\n group.children.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n disabled,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n } else {\n ungroupedItems.push({\n type: 'item',\n key: `${keyOffset + i}-item`,\n\n hotkey: item.shortcut,\n icon: item.icon,\n intent: item.intent,\n disabled,\n onAction: () => params.actionHandler(item),\n renderAsButton: item.showAsAction ?? false,\n selected: item.selected,\n title: item.title,\n i18n: item.i18n,\n tone: item.tone,\n })\n }\n }\n\n return [...ungroupedItems, ...groups, ...nodes]\n}\n\nfunction mapFieldActionToPaneMenuNode(a: DocumentFieldMenuActionNode, key: string): _PaneMenuNode {\n if (a.type === 'divider') {\n return {\n type: 'divider',\n key,\n }\n }\n\n if (a.type === 'group') {\n return {\n type: 'group',\n key,\n\n children: a.children.map((child, childIdx) =>\n mapFieldActionToPaneMenuNode(child, `${key}-${childIdx}-${child.type}`),\n ),\n disabled: a.disabled,\n expanded: a.expanded ?? true,\n icon: a.icon,\n title: a.title,\n i18n: a.i18n,\n renderAsButton: a.renderAsButton ?? false,\n }\n }\n\n return {\n type: 'item',\n key,\n intent: a.intent,\n disabled: a.disabled,\n icon: a.icon,\n iconRight: a.iconRight,\n onAction: a.onAction,\n renderAsButton: a.renderAsButton ?? false,\n selected: a.selected,\n title: a.title,\n i18n: a.i18n,\n tone: a.tone,\n }\n}\n","import {type ComponentProps, type ForwardedRef, forwardRef, type ReactNode, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, type ButtonProps} from '../../ui-components'\nimport {type PaneMenuItem} from '../types'\n\ntype RouterIntent = NonNullable<PaneMenuItem['intent']>\n\nexport const IntentButton = forwardRef(function IntentButton(\n props: {\n intent: RouterIntent\n } & ButtonProps &\n Omit<ComponentProps<typeof Button>, 'as' | 'href' | 'type'>,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const {intent, ...restProps} = props\n\n const Link = useMemo(\n () =>\n // eslint-disable-next-line @typescript-eslint/no-shadow\n forwardRef(function Link(\n linkProps: {children: ReactNode},\n linkRef: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n ref={linkRef}\n searchParams={intent.searchParams}\n />\n )\n }),\n [intent],\n )\n\n return props.disabled ? (\n <Button {...restProps} as=\"a\" role=\"link\" aria-disabled=\"true\" />\n ) : (\n <Button {...restProps} as={Link} data-as=\"a\" ref={ref as ForwardedRef<HTMLButtonElement>} />\n )\n})\n","import {type ComponentProps, type ReactNode} from 'react'\nimport {InsufficientPermissionsMessage, useCurrentUser, useTranslation} from 'sanity'\n\nimport {Tooltip} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\n\ninterface InsufficientPermissionsMessageTooltipProps {\n reveal: boolean\n /**\n * delegates to `InsufficientPermissionsMessage`'s `context` prop\n * @see InsufficientPermissionsMessage\n */\n context: ComponentProps<typeof InsufficientPermissionsMessage>['context']\n loading: boolean\n children: ReactNode\n}\n\nexport function InsufficientPermissionsMessageTooltip({\n reveal,\n context,\n loading,\n children,\n}: InsufficientPermissionsMessageTooltipProps) {\n const currentUser = useCurrentUser()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!reveal) {\n return <>{children}</>\n }\n\n return (\n <Tooltip\n content={\n loading ? (\n t('insufficient-permissions-message-tooltip.loading-text')\n ) : (\n <InsufficientPermissionsMessage context={context} currentUser={currentUser} />\n )\n }\n portal\n >\n {/* this wrapping div is to allow mouse events */}\n {/* while the child element is disabled */}\n <div>{children}</div>\n </Tooltip>\n )\n}\n","import {AddIcon} from '@sanity/icons'\nimport {Menu} from '@sanity/ui'\nimport {type ComponentProps, type ForwardedRef, forwardRef, useMemo} from 'react'\nimport {\n type InitialValueTemplateItem,\n isPublishedPerspective,\n type ReleaseId,\n type Template,\n type TemplatePermissionsResult,\n useGetI18nText,\n useIsReleaseActive,\n usePerspective,\n useTemplatePermissions,\n useTemplates,\n useTranslation,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {Button, MenuButton, MenuItem, type PopoverProps} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {IntentButton} from '../IntentButton'\nimport {InsufficientPermissionsMessageTooltip} from './InsufficientPermissionsMessageTooltip'\n\nexport type PaneHeaderIntentProps = ComponentProps<typeof IntentButton>['intent']\n\nconst POPOVER_PROPS: PopoverProps = {\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n}\n\nconst getIntent = (\n templates: Template[],\n item: InitialValueTemplateItem,\n version?: ReleaseId,\n): PaneHeaderIntentProps | null => {\n const typeName = templates.find((t) => t.id === item.templateId)?.schemaType\n if (!typeName) return null\n\n const baseParams = {\n template: item.templateId,\n type: typeName,\n version,\n id: item.initialDocumentId,\n }\n\n return {\n type: 'create',\n params: item.parameters ? [baseParams, item.parameters] : baseParams,\n searchParams: version ? [['perspective', version]] : undefined,\n }\n}\n\ninterface PaneHeaderCreateButtonProps {\n templateItems: InitialValueTemplateItem[]\n}\n\nexport function PaneHeaderCreateButton({templateItems}: PaneHeaderCreateButtonProps) {\n const templates = useTemplates()\n const {selectedReleaseId, selectedPerspective} = usePerspective()\n const isReleaseActive = useIsReleaseActive()\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const getI18nText = useGetI18nText([...templateItems, ...templates])\n\n const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n templateItems,\n })\n\n const nothingGranted = useMemo(() => {\n return (\n !isTemplatePermissionsLoading &&\n templatePermissions?.every((permission) => !permission.granted)\n )\n }, [isTemplatePermissionsLoading, templatePermissions])\n\n const permissionsById = useMemo(() => {\n if (!templatePermissions) return {}\n return templatePermissions.reduce<Record<string, TemplatePermissionsResult | undefined>>(\n (acc, permission) => {\n acc[permission.id] = permission\n return acc\n },\n {},\n )\n }, [templatePermissions])\n\n if (nothingGranted) {\n return (\n <InsufficientPermissionsMessageTooltip\n context=\"create-document-type\"\n reveal\n loading={isTemplatePermissionsLoading}\n >\n <Button\n aria-label={t('pane-header.disabled-created-button.aria-label')}\n icon={AddIcon}\n data-testid=\"action-intent-button\"\n disabled\n mode=\"bleed\"\n // This button handles the tooltip in a special way, won't reuse the forced tooltip.\n tooltipProps={null}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n const disabledByPerspectiveTooltipProps = {\n content: tCore(\n isPublishedPerspective(selectedPerspective)\n ? 'new-document.disabled-published.tooltip'\n : 'new-document.disabled-release.tooltip',\n ),\n }\n\n if (templateItems.length === 1) {\n const firstItem = templateItems[0]\n const permissions = permissionsById[firstItem.id]\n const disabled = !permissions?.granted || !isReleaseActive\n const intent = getIntent(templates, firstItem, selectedReleaseId)\n if (!intent) return null\n\n return (\n <InsufficientPermissionsMessageTooltip\n reveal={disabled}\n loading={isTemplatePermissionsLoading}\n context=\"create-document-type\"\n >\n <IntentButton\n aria-label={getI18nText(firstItem).title}\n icon={firstItem.icon || AddIcon}\n intent={intent}\n mode=\"bleed\"\n disabled={disabled}\n data-testid=\"action-intent-button\"\n tooltipProps={\n disabled\n ? disabledByPerspectiveTooltipProps\n : {content: t('pane-header.create-new-button.tooltip')}\n }\n />\n </InsufficientPermissionsMessageTooltip>\n )\n }\n\n return (\n <MenuButton\n button={\n <Button\n icon={AddIcon}\n mode=\"bleed\"\n disabled={!isReleaseActive}\n data-testid=\"multi-action-intent-button\"\n tooltipProps={\n isReleaseActive\n ? {content: t('pane-header.create-new-button.tooltip')}\n : disabledByPerspectiveTooltipProps\n }\n />\n }\n id=\"create-menu\"\n menu={\n <Menu>\n {templateItems.map((item, itemIndex) => {\n const permissions = permissionsById[item.id]\n const disabled = !permissions?.granted\n const intent = getIntent(templates, item, selectedReleaseId)\n const template = templates.find((i) => i.id === item.templateId)\n if (!template || !intent) return null\n\n const Link = forwardRef((linkProps, linkRef: ForwardedRef<never>) =>\n disabled ? (\n <button type=\"button\" disabled {...linkProps} ref={linkRef} />\n ) : (\n <IntentLink\n {...linkProps}\n intent={intent.type}\n params={intent.params}\n searchParams={intent.searchParams}\n ref={linkRef}\n />\n ),\n )\n\n Link.displayName = 'Link'\n\n const {title} = getI18nText({\n ...item,\n // replace the title with the template title\n title: item.title || getI18nText(template).title,\n })\n\n return (\n <InsufficientPermissionsMessageTooltip\n context=\"create-document-type\"\n key={item.id}\n reveal={disabled}\n loading={isTemplatePermissionsLoading}\n >\n <MenuItem\n as={Link}\n data-as={disabled ? 'button' : 'a'}\n text={title}\n aria-label={\n disabled ? t('pane-header.disabled-created-button.aria-label') : title\n }\n disabled={disabled}\n data-testid={`action-intent-button-${itemIndex}`}\n />\n </InsufficientPermissionsMessageTooltip>\n )\n })}\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {uniqBy} from 'lodash'\nimport {memo, useCallback, useMemo} from 'react'\nimport {EMPTY_ARRAY, EMPTY_OBJECT, type InitialValueTemplateItem, useTemplates} from 'sanity'\n\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../menuNodes'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {PaneContextMenuButton} from '../pane/PaneContextMenuButton'\nimport {PaneHeaderActionButton} from '../pane/PaneHeaderActionButton'\nimport {PaneHeaderCreateButton} from './PaneHeaderCreateButton'\n\nfunction isNonNullable<T>(value: T): value is NonNullable<T> {\n return value !== null && value !== undefined\n}\n\n/**\n * hashes an object to a string where the order of the keys don't matter\n */\nconst hashObject = (value: unknown) => {\n const sortObject = (v: unknown): unknown => {\n if (typeof v !== 'object' || !v) return v\n if (Array.isArray(v)) return v.map(sortObject)\n return Object.entries(v).sort(([keyA], [keyB]) => keyA.localeCompare(keyB, 'en'))\n }\n\n const normalize = (v: unknown) => JSON.parse(JSON.stringify(v))\n\n return JSON.stringify(sortObject(normalize(value)))\n}\n\ninterface PaneHeaderActionsProps {\n initialValueTemplateItems?: InitialValueTemplateItem[]\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n}\n\nexport const PaneHeaderActions = memo(function PaneHeaderActions(props: PaneHeaderActionsProps) {\n const {\n initialValueTemplateItems: initialValueTemplateItemsFromStructure = EMPTY_ARRAY,\n menuItems = EMPTY_ARRAY,\n menuItemGroups = EMPTY_ARRAY,\n actionHandlers = EMPTY_OBJECT as Record<string, StructureToolPaneActionHandler>,\n } = props\n\n const templates = useTemplates()\n\n const handleAction = useCallback(\n (item: PaneMenuItem) => {\n if (typeof item.action === 'string' && !(item.action in actionHandlers)) {\n console.warn('No handler for action:', item.action)\n return false\n }\n\n const handler =\n // eslint-disable-next-line no-nested-ternary\n typeof item.action === 'function'\n ? item.action\n : typeof item.action === 'string'\n ? actionHandlers[item.action]\n : null\n\n if (handler) {\n handler(item.params as Record<string, string>)\n return true\n }\n\n return false\n },\n [actionHandlers],\n )\n\n const menuNodes = useMemo(\n () =>\n resolveMenuNodes({\n actionHandler: handleAction,\n menuItemGroups,\n menuItems: menuItems\n // remove items with `create` intents because those will get combined\n // into one action button (see `initialValueTemplateItemFromMenuItems`)\n .filter((item) => item.intent?.type !== 'create'),\n }),\n [handleAction, menuItemGroups, menuItems],\n )\n\n const actionNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n\n const initialValueTemplateItemFromMenuItems = useMemo(() => {\n return menuItems\n .map((item, menuItemIndex) => {\n if (item.intent?.type !== 'create') return null\n\n const {params} = item.intent\n if (!params) return null\n\n const intentParams = Array.isArray(params) ? params[0] : params\n const templateParams = Array.isArray(params) ? params[1] : undefined\n\n // fallback to the schema type name as the template ID.\n // by default, the initial template values are populated from every\n // document type in the schema\n const templateId = intentParams.template || intentParams.type\n if (!templateId) return null\n\n // eslint-disable-next-line max-nested-callbacks\n const template = templates.find((t) => t.id === templateId)\n // the template doesn't exist then the action might be disabled\n if (!template) return null\n\n const initialDocumentId = intentParams.id\n\n return {\n item,\n template,\n templateParams,\n menuItemIndex,\n initialDocumentId,\n }\n })\n .filter(isNonNullable)\n .map(({initialDocumentId, item, template, menuItemIndex, templateParams}) => {\n const initialValueTemplateItem: InitialValueTemplateItem = {\n id: `menuItem${menuItemIndex}`,\n initialDocumentId,\n templateId: template.id,\n type: 'initialValueTemplateItem',\n title: item.title || template.title,\n i18n: item.i18n || template.i18n,\n icon: item.icon as InitialValueTemplateItem['icon'],\n description: template.description,\n parameters: templateParams,\n schemaType: template.schemaType,\n }\n\n return initialValueTemplateItem\n })\n }, [menuItems, templates])\n\n const combinedInitialValueTemplates = useMemo(() => {\n // this de-dupes create actions\n return uniqBy(\n [...initialValueTemplateItemFromMenuItems, ...initialValueTemplateItemsFromStructure],\n (item) => hashObject([item.initialDocumentId, item.templateId, item.parameters]),\n )\n }, [initialValueTemplateItemFromMenuItems, initialValueTemplateItemsFromStructure])\n\n return (\n <Flex gap={1}>\n {combinedInitialValueTemplates.length > 0 && (\n <PaneHeaderCreateButton templateItems={combinedInitialValueTemplates} />\n )}\n\n {actionNodes.map((node) => (\n <PaneHeaderActionButton key={node.key} node={node} />\n ))}\n\n {contextMenuNodes.length > 0 && <PaneContextMenuButton nodes={contextMenuNodes} />}\n </Flex>\n )\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {type GeneralPreviewLayoutKey, SanityDefaultPreview, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nexport interface MissingSchemaTypeProps {\n layout?: GeneralPreviewLayoutKey\n value: SanityDocument\n}\n\nexport function MissingSchemaType(props: MissingSchemaTypeProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const {layout, value} = props\n\n return (\n <SanityDefaultPreview\n title={\n <em>\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.title\"\n components={{Code: 'code'}}\n values={{documentType: value._type}}\n />\n </em>\n }\n subtitle={\n <Translate\n t={t}\n i18nKey=\"pane-item.missing-schema-type.subtitle\"\n components={{Code: 'code'}}\n values={{documentId: value._id}}\n />\n }\n // eslint-disable-next-line react/jsx-no-bind\n media={() => <WarningOutlineIcon />}\n layout={layout}\n />\n )\n}\n","import {ChevronRightIcon, DocumentIcon, FolderIcon} from '@sanity/icons'\nimport {\n isSanityDocument,\n type PreviewValue,\n type SanityDocument,\n type SchemaType,\n} from '@sanity/types'\nimport {Box, type CardProps, Text} from '@sanity/ui'\nimport {\n type ComponentType,\n type MouseEvent,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n type FIXME,\n type GeneralPreviewLayoutKey,\n getPublishedId,\n PreviewCard,\n SanityDefaultPreview,\n useDocumentPresence,\n useDocumentPreviewStore,\n useEditState,\n useSchema,\n} from 'sanity'\n\nimport {MissingSchemaType} from '../MissingSchemaType'\nimport {usePaneRouter} from '../paneRouter'\nimport {PaneItemPreview} from './PaneItemPreview'\n\ninterface PaneItemProps {\n id: string\n layout?: GeneralPreviewLayoutKey\n icon?: ComponentType<any> | false\n pressed?: boolean\n selected?: boolean\n title?: string\n value?: PreviewValue | SanityDocument\n schemaType?: SchemaType\n margin?: CardProps['margin']\n marginBottom?: CardProps['marginBottom']\n marginTop?: CardProps['marginTop']\n}\n\n/**\n * Return `false` if we explicitly disable the icon.\n * Otherwise return the passed icon or the schema type icon as a backup.\n */\nexport function getIconWithFallback(\n icon: ComponentType<any> | false | undefined,\n schemaType: SchemaType | undefined,\n defaultIcon: ComponentType<any>,\n): ComponentType<any> | false {\n if (icon === false) {\n return false\n }\n\n return icon || (schemaType && schemaType.icon) || defaultIcon || false\n}\n\nexport function PaneItem(props: PaneItemProps) {\n const {\n icon,\n id,\n layout = 'default',\n pressed,\n schemaType,\n selected,\n title,\n value,\n margin,\n marginBottom,\n marginTop,\n } = props\n const schema = useSchema()\n const documentPreviewStore = useDocumentPreviewStore()\n const {ChildLink} = usePaneRouter()\n const documentPresence = useDocumentPresence(id)\n const hasSchemaType = Boolean(schemaType && schemaType.name && schema.get(schemaType.name))\n const [clicked, setClicked] = useState<boolean>(false)\n\n const preview = useMemo(() => {\n if (value && isSanityDocument(value)) {\n if (!schemaType || !hasSchemaType) {\n return <MissingSchemaType value={value} />\n }\n\n return (\n <PaneItemPreview\n documentPreviewStore={documentPreviewStore}\n icon={getIconWithFallback(icon, schemaType, DocumentIcon)}\n layout={layout}\n schemaType={schemaType}\n value={value}\n presence={documentPresence}\n />\n )\n }\n\n // Always render non-document values as compact previews\n return (\n <SanityDefaultPreview\n status={\n <Box style={{opacity: 0.5}}>\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n }\n icon={getIconWithFallback(icon, schemaType, FolderIcon)}\n layout=\"compact\"\n title={title}\n />\n )\n }, [\n documentPreviewStore,\n hasSchemaType,\n icon,\n layout,\n schemaType,\n title,\n value,\n documentPresence,\n ])\n\n const handleClick = useCallback((e: MouseEvent<HTMLElement>) => {\n if (e.metaKey) {\n setClicked(false)\n return\n }\n\n setClicked(true)\n }, [])\n\n // Reset `clicked` state when `selected` prop changes\n useEffect(() => setClicked(false), [selected])\n\n // Preloads the edit state on hover, using concurrent rendering with `startTransition` so preloads can be interrupted and not block rendering\n const [preloading, setPreload] = useState(false)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const handleMouseEnter = useCallback(() => {\n timeoutRef.current = setTimeout(() => startTransition(() => setPreload(true)), 400)\n }, [])\n const handleMouseLeave = useCallback(() => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n startTransition(() => setPreload(false))\n }, [])\n\n return (\n <PreviewCard\n data-testid={`pane-item-${title}`}\n __unstable_focusRing\n as={ChildLink as FIXME}\n // @ts-expect-error - `childId` is a valid prop on `ChildLink`\n childId={id}\n data-as=\"a\"\n margin={margin}\n marginBottom={marginBottom}\n marginTop={marginTop}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n pressed={pressed}\n radius={2}\n selected={selected || clicked}\n sizing=\"border\"\n tabIndex={-1}\n tone=\"inherit\"\n >\n {preview}\n {preloading && schemaType?.name && value && isSanityDocument(value) && (\n <PreloadDocumentPane documentId={id} documentType={schemaType.name} />\n )}\n </PreviewCard>\n )\n}\n\nfunction PreloadDocumentPane(props: {documentId: string; documentType: string}) {\n const {documentId, documentType} = props\n // Preload the edit state for the document, and keep it alive until mouse leave\n useEditState(getPublishedId(documentId), documentType)\n\n return null\n}\nPreloadDocumentPane.displayName = 'PreloadDocumentPane'\n","import {memo, type ReactNode, useMemo} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionGroup,\n type DocumentActionProps,\n getDraftId,\n GetHookCollectionState,\n getPublishedId,\n useCanvasCompanionDoc,\n useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\n\n/** @internal */\nexport interface Action<Args, Description> {\n (args: Args): Description | null\n}\nexport interface ResolvedAction extends DocumentActionDescription {\n action?: DocumentActionComponent['action']\n}\n\n/** @internal */\nexport interface RenderActionCollectionProps {\n actions: Action<DocumentActionProps, DocumentActionDescription>[]\n actionProps: Omit<DocumentActionProps, 'onComplete'>\n children: (props: {states: ResolvedAction[]}) => ReactNode\n onActionComplete?: () => void\n group?: DocumentActionGroup\n}\n\n/** @internal */\nexport const RenderActionCollectionState = memo((props: RenderActionCollectionProps) => {\n const {actions, children, actionProps, onActionComplete, group} = props\n\n return (\n <GetHookCollectionState<Omit<DocumentActionProps, 'onComplete'>, ResolvedAction>\n onReset={onActionComplete}\n hooks={actions}\n args={actionProps}\n group={group}\n >\n {({states}) => (\n <ActionsGuardWrapper\n states={states}\n documentId={\n actionProps.liveEditSchemaType\n ? getPublishedId(actionProps.id)\n : getDraftId(actionProps.id)\n }\n >\n {children}\n </ActionsGuardWrapper>\n )}\n </GetHookCollectionState>\n )\n})\nRenderActionCollectionState.displayName = 'Memo(RenderActionCollectionState)'\n\n/**\n * This is a list of the actions that are supported when a document is linked to Canvas.\n * Custom actions and actions that are not supported by Canvas will be disabled and will include a tooltip explaining that the action is not supported.\n */\nconst SUPPORTED_LINKED_TO_CANVAS_ACTIONS: DocumentActionComponent['action'][] = [\n 'delete',\n 'duplicate',\n 'publish',\n 'unpublish',\n 'unlinkFromCanvas',\n 'editInCanvas',\n 'linkToCanvas',\n 'schedule',\n]\n\ninterface ActionsGuardWrapperProps {\n states: ResolvedAction[]\n documentId: string\n children: (props: {states: ResolvedAction[]}) => ReactNode\n}\n\nconst ActionsGuardWrapper = (props: ActionsGuardWrapperProps) => {\n const {states, children, documentId} = props\n const {t} = useTranslation(structureLocaleNamespace)\n const {isLinked} = useCanvasCompanionDoc(documentId)\n\n const result = useMemo(() => {\n if (isLinked) {\n return children({\n states: states.map((s) => {\n if (!s.action || !SUPPORTED_LINKED_TO_CANVAS_ACTIONS.includes(s.action)) {\n return {\n ...s,\n disabled: true,\n title: t('action.disabled-by-canvas.tooltip'),\n }\n }\n return s\n }),\n })\n }\n return children({states})\n }, [children, states, t, isLinked])\n\n return result\n}\n","import {memo, type ReactNode} from 'react'\nimport {\n type DocumentBadgeDescription,\n type DocumentBadgeProps,\n type EditStateFor,\n GetHookCollectionState,\n} from 'sanity'\n\n/** @internal */\nexport interface Badge<Args, Description> {\n (args: Args): Description | null\n}\n\n/** @internal */\nexport interface RenderBadgeCollectionProps {\n badges: Badge<DocumentBadgeProps, DocumentBadgeDescription>[]\n badgeProps: EditStateFor\n children: (props: {states: DocumentBadgeDescription[]}) => ReactNode\n}\n\n/** @internal */\nexport const RenderBadgeCollectionState = memo((props: RenderBadgeCollectionProps) => {\n const {badges, children, badgeProps} = props\n\n return (\n <GetHookCollectionState<EditStateFor, DocumentBadgeDescription>\n hooks={badges}\n args={badgeProps}\n >\n {children}\n </GetHookCollectionState>\n )\n})\nRenderBadgeCollectionState.displayName = 'Memo(RenderBadgeCollectionState)'\n","import {useMemo} from 'react'\nimport {Subject} from 'rxjs'\n\nimport {type PathSyncChannel, type PathSyncState} from '../types/pathSyncChannel'\n\n/**\n * @internal\n */\nexport function useCreatePathSyncChannel(): PathSyncChannel {\n return useMemo(() => new Subject<PathSyncState>(), [])\n}\n","/**\n * @internal\n */\nexport const DIFF_VIEW_SEARCH_PARAMETER = 'diffView'\n\n/**\n * @internal\n */\nexport const DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER = 'previousDocument'\n\n/**\n * @internal\n */\nexport const DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER = 'nextDocument'\n\n/**\n * @internal\n */\nexport const DIFF_SEARCH_PARAM_DELIMITER = ','\n","import {fromPairs, toPairs} from 'lodash'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n DIFF_SEARCH_PARAM_DELIMITER,\n DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n DIFF_VIEW_SEARCH_PARAMETER,\n} from '../constants'\nimport {type DiffViewMode} from '../types/diffViewMode'\n\ntype NavigateDiffView = (\n options: {\n mode?: DiffViewMode\n } & Partial<\n Record<\n 'previousDocument' | 'nextDocument',\n {\n type: string\n id: string\n }\n >\n >,\n) => void\n\nexport interface DiffViewRouter {\n navigateDiffView: NavigateDiffView\n exitDiffView: () => void\n}\n\n/**\n * @internal\n */\nexport function useDiffViewRouter(): DiffViewRouter {\n const {navigate, state: routerState} = useRouter()\n\n const navigateDiffView = useCallback<NavigateDiffView>(\n ({mode, previousDocument, nextDocument}) => {\n const next = {\n ...fromPairs(routerState._searchParams),\n ...(mode\n ? {\n [DIFF_VIEW_SEARCH_PARAMETER]: mode,\n }\n : {}),\n ...(previousDocument\n ? {\n [DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER]: [\n previousDocument.type,\n previousDocument.id,\n ].join(DIFF_SEARCH_PARAM_DELIMITER),\n }\n : {}),\n ...(nextDocument\n ? {\n [DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER]: [nextDocument.type, nextDocument.id].join(\n DIFF_SEARCH_PARAM_DELIMITER,\n ),\n }\n : {}),\n }\n\n navigate({\n ...routerState,\n _searchParams: toPairs(next),\n })\n },\n [navigate, routerState],\n )\n\n const exitDiffView = useCallback(() => {\n navigate({\n ...routerState,\n _searchParams: (routerState._searchParams ?? []).filter(\n ([key]) =>\n ![\n DIFF_VIEW_SEARCH_PARAMETER,\n DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n ].includes(key),\n ),\n })\n }, [navigate, routerState])\n\n return {\n navigateDiffView,\n exitDiffView,\n }\n}\n","/**\n * @internal\n */\nexport const diffViewModes = ['version'] as const\n\n/**\n * @internal\n */\nexport type DiffViewMode = (typeof diffViewModes)[number]\n","import {useEffect, useMemo} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {\n DIFF_SEARCH_PARAM_DELIMITER,\n DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER,\n DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER,\n DIFF_VIEW_SEARCH_PARAMETER,\n} from '../constants'\nimport {type DiffViewMode, diffViewModes} from '../types/diffViewMode'\n\nfunction isDiffViewMode(maybeDiffViewMode: unknown): maybeDiffViewMode is DiffViewMode {\n return diffViewModes.includes(maybeDiffViewMode as DiffViewMode)\n}\n\ntype DiffViewState =\n | {\n isActive: true\n state: 'ready'\n mode: DiffViewMode\n documents: Record<\n 'previous' | 'next',\n {\n type: string\n id: string\n }\n >\n }\n | {\n isActive: true\n state: 'error'\n mode: DiffViewMode\n documents?: never\n }\n | {\n isActive: false\n state?: never\n mode?: never\n documents?: never\n }\n\nexport function useDiffViewState({\n onParamsError,\n}: {\n onParamsError?: (errors: DiffViewStateErrorWithInput[]) => void\n} = {}): DiffViewState {\n const {state: routerState} = useRouter()\n const searchParams = new URLSearchParams(routerState._searchParams)\n const previousDocument = searchParams.get(DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER)\n const nextDocument = searchParams.get(DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER)\n const mode = searchParams.get(DIFF_VIEW_SEARCH_PARAMETER)\n const anyParamSet = [previousDocument, nextDocument, mode].some((param) => param !== null)\n\n const params = useMemo(\n () =>\n parseParams({\n previousDocument: previousDocument ?? '',\n nextDocument: nextDocument ?? '',\n mode: mode ?? '',\n }),\n [mode, nextDocument, previousDocument],\n )\n\n useEffect(() => {\n if (params.result === 'error' && anyParamSet) {\n onParamsError?.(params.errors)\n }\n }, [anyParamSet, onParamsError, params])\n\n if (params.result === 'error') {\n return {\n isActive: false,\n }\n }\n\n return {\n state: 'ready',\n isActive: true,\n ...params.params,\n }\n}\n\ntype DiffViewStateError =\n | 'invalidModeParam'\n | 'invalidPreviousDocumentParam'\n | 'invalidNextDocumentParam'\n\ntype DiffViewStateErrorWithInput = [error: DiffViewStateError, input: unknown]\n\ninterface ParamsSuccess {\n result: 'success'\n params: Pick<DiffViewState & {state: 'ready'}, 'mode' | 'documents'>\n}\n\ninterface ParamsError {\n result: 'error'\n errors: DiffViewStateErrorWithInput[]\n}\n\nfunction parseParams({\n previousDocument,\n nextDocument,\n mode,\n}: {\n previousDocument: string\n nextDocument: string\n mode: string\n}): ParamsSuccess | ParamsError {\n const errors: DiffViewStateErrorWithInput[] = []\n\n const [previousDocumentType, previousDocumentId] = previousDocument\n .split(DIFF_SEARCH_PARAM_DELIMITER)\n .filter(Boolean)\n\n const [nextDocumentType, nextDocumentId] = nextDocument\n .split(DIFF_SEARCH_PARAM_DELIMITER)\n .filter(Boolean)\n\n if (!isDiffViewMode(mode)) {\n errors.push(['invalidModeParam', mode])\n }\n\n if (typeof previousDocumentType === 'undefined' || typeof previousDocumentId === 'undefined') {\n errors.push(['invalidPreviousDocumentParam', previousDocument])\n }\n\n if (typeof nextDocumentType === 'undefined' || typeof nextDocumentId === 'undefined') {\n errors.push(['invalidNextDocumentParam', nextDocument])\n }\n\n if (errors.length !== 0) {\n return {\n result: 'error',\n errors,\n }\n }\n\n return {\n result: 'success',\n params: {\n mode,\n documents: {\n previous: {\n type: previousDocumentType,\n id: previousDocumentId,\n },\n next: {\n type: nextDocumentType,\n id: nextDocumentId,\n },\n },\n },\n } as ParamsSuccess\n}\n","const e=()=>new Promise(e=>{requestAnimationFrame(()=>e())}),t=({clientWidth:e,clientHeight:t,scrollWidth:o,scrollHeight:r})=>r>t||o>e,o=e=>{const t=window.getComputedStyle(e).overflow;return t.includes(\"auto\")||t.includes(\"scroll\")},r=e=>{if(null==e)return{x:0,y:0};const{scrollTop:t,scrollHeight:o,clientHeight:r,scrollLeft:n,scrollWidth:l,clientWidth:s}=e,i=o-r;return{x:n?n/Math.max(1e-5,l-s):0,y:t?t/Math.max(1e-5,i):0}};function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)({}).hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},n.apply(null,arguments)}function l(e){return e.matches(\"body *\")?e:window}class s{constructor(l,s={}){var i,c=this;this.elements=void 0,this.defaults={vertical:!0,horizontal:!0,debug:!0},this.options=void 0,this.paused=!1,this.logger=void 0,this.handleScroll=async function(t){if(c.paused)return;if(!t.currentTarget)return;const o=c.getScrollContainer(t.currentTarget);await e(),c.mirrorScrollPositions(r(o),o)},this.elements=[...l].filter(Boolean).map(e=>this.getScrollContainer(e)),this.elements=[...new Set(this.elements)],this.options=n({},this.defaults,s),this.options.debug&&(this.logger=(i=\"[scroll-mirror]\",{log:(...e)=>console.log(i,...e),warn:(...e)=>console.warn(i,...e),error:(...e)=>console.error(i,...e)}),function(e,r){if(e.length<1)null==r||r.warn(\"No elements provided.\");else{e.length<2&&(null==r||r.warn(\"Only one element provided.\",e)),e.some(e=>!e)&&(null==r||r.error(\"Some elements are not defined.\",e));for(const n of e)n instanceof HTMLElement&&!t(n)&&(null==r||r.warn(\"Element doesn't have overflow:\",n)),n instanceof HTMLElement&&n.matches(\"body *\")&&!o(n)&&(null==r||r.warn('No \"overflow: auto;\" or \"overflow: scroll;\" set on element:',n))}}(this.elements,this.logger)),this.elements.forEach(e=>this.addScrollHandler(e)),this.elements.includes(document.documentElement)&&this.mirrorScrollPositions(r(document.documentElement),document.documentElement)}pause(){this.paused=!0}resume(){this.paused=!1}destroy(){this.elements.forEach(e=>this.removeScrollHandler(e))}addScrollHandler(e){this.removeScrollHandler(e),l(e).addEventListener(\"scroll\",this.handleScroll,{passive:!0})}removeScrollHandler(e){l(e).removeEventListener(\"scroll\",this.handleScroll)}getScrollContainer(e){return e instanceof HTMLElement&&e.matches(\"body *\")?e:document.documentElement}mirrorScrollPositions(e,t=void 0){this.elements.forEach(o=>{t!==o&&(this.removeScrollHandler(o),this.setScrollPosition(e,o),window.requestAnimationFrame(()=>{this.addScrollHandler(o)}))})}setScrollPosition(e,t){const{vertical:o,horizontal:r}=this.options,n=t.scrollWidth-t.clientWidth,l=t.scrollHeight-t.clientHeight;o&&l&&t.scrollTo({top:l*e.y,behavior:\"instant\"}),r&&n&&t.scrollTo({left:n*e.x,behavior:\"instant\"})}get progress(){const e=this.elements.find(e=>t(e));return r(e)}set progress(e){\"number\"==typeof e&&(e={x:e,y:e});const t=n({},this.progress,e);(function(e,t){let o=!0;for(const[r,n]of Object.entries(e))(\"number\"!=typeof n||n<0||n>1)&&(null==t||t.error(`progress.${r} must be a number between 0-1`),o=!1);return o})(t,this.logger)&&this.mirrorScrollPositions(t)}}export{s as default,r as getScrollProgress,o as hasCSSOverflow,t as hasOverflow,e as nextTick};\n//# sourceMappingURL=ScrollMirror.modern.js.map\n","import {useEffect} from 'react'\nimport ScrollMirror from 'scrollmirror'\n\n/**\n * Use the ScrollMirror library to synchronise the scroll position for an array of elements.\n *\n * @internal\n */\nexport function useScrollMirror(elements: (HTMLElement | null)[]): void {\n useEffect(() => {\n const existentElements = elements.filter((element) => element !== null)\n\n if (existentElements.length === 0) {\n return undefined\n }\n\n const scrollMirror = new ScrollMirror(existentElements)\n return () => scrollMirror.destroy()\n }, [elements])\n}\n","import {CloseIcon, LockIcon, TransferIcon} from '@sanity/icons'\nimport {\n Box,\n // eslint-disable-next-line no-restricted-imports -- we need more control over how the `Button` component is rendered\n Button,\n type ButtonTone,\n Flex,\n Menu,\n // eslint-disable-next-line no-restricted-imports -- the `VersionModeHeader` component needs more control over how the `MenuItem` component is rendered\n MenuItem,\n Stack,\n Text,\n} from '@sanity/ui'\n// eslint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {type ComponentProps, type ComponentType, useCallback, useMemo} from 'react'\nimport {\n type DocumentLayoutProps,\n formatRelativeLocalePublishDate,\n getDraftId,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n getVersionId,\n isDraftId,\n isPublishedId,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n ReleaseAvatar,\n type ReleaseDocument,\n useActiveReleases,\n useDocumentVersions,\n useEditState,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useDiffViewRouter} from '../../hooks/useDiffViewRouter'\nimport {useDiffViewState} from '../../hooks/useDiffViewState'\n\nconst VersionModeHeaderLayout = styled.header`\n display: grid;\n grid-area: header;\n grid-template-columns: 1fr min-content 1fr;\n border-block-end: 1px solid var(--card-border-color);\n`\n\nconst VersionModeHeaderLayoutSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`\n\n/**\n * The header component that is rendered when diff view is being used to compare versions of a\n * document.\n *\n * @internal\n */\nexport const VersionModeHeader: ComponentType<\n {state: 'pending' | 'ready' | 'error'} & Pick<DocumentLayoutProps, 'documentId'>\n> = ({documentId, state}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const {data: documentVersions} = useDocumentVersions({documentId})\n const {exitDiffView, navigateDiffView} = useDiffViewRouter()\n const {documents} = useDiffViewState()\n const activeReleases = useActiveReleases()\n const releasesIds = documentVersions.flatMap((id) => getVersionFromId(id) ?? [])\n\n const releases = useMemo(() => {\n return activeReleases.data.filter((release) => {\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n return typeof releaseId !== 'undefined' && releasesIds.includes(releaseId)\n })\n }, [activeReleases.data, releasesIds])\n\n const onSelectPreviousRelease = useCallback(\n (selectedDocumentId: string): void => {\n if (typeof documents?.previous !== 'undefined') {\n navigateDiffView({\n previousDocument: {\n ...documents.previous,\n id: selectedDocumentId,\n },\n })\n }\n },\n [documents?.previous, navigateDiffView],\n )\n\n const onSelectNextRelease = useCallback(\n (selectedDocumentId: string): void => {\n if (typeof documents?.next !== 'undefined') {\n navigateDiffView({\n nextDocument: {\n ...documents.next,\n id: selectedDocumentId,\n },\n })\n }\n },\n [documents?.next, navigateDiffView],\n )\n\n return (\n <VersionModeHeaderLayout>\n <VersionModeHeaderLayoutSection>\n <Box padding={4}>\n <Text as=\"h1\" size={1} muted>\n {t('compare-versions.title')}\n </Text>\n </Box>\n {typeof documents?.previous !== 'undefined' && (\n <VersionMenu\n releases={releases}\n onSelectRelease={onSelectPreviousRelease}\n role=\"previous\"\n documentId={documentId}\n state={state}\n document={documents.previous}\n />\n )}\n </VersionModeHeaderLayoutSection>\n <Flex align=\"center\" paddingX={3}>\n <Text size={1}>\n <TransferIcon />\n </Text>\n </Flex>\n <VersionModeHeaderLayoutSection>\n {typeof documents?.next !== 'undefined' && (\n <VersionMenu\n releases={releases}\n onSelectRelease={onSelectNextRelease}\n role=\"next\"\n documentId={documentId}\n state={state}\n document={documents.next}\n />\n )}\n <Box\n padding={3}\n style={{\n justifySelf: 'end',\n }}\n >\n <Button icon={CloseIcon} mode=\"bleed\" onClick={exitDiffView} padding={2} />\n </Box>\n </VersionModeHeaderLayoutSection>\n </VersionModeHeaderLayout>\n )\n}\n\ninterface VersionMenuProps {\n state: 'pending' | 'ready' | 'error'\n releases: ReleaseDocument[]\n role: 'previous' | 'next'\n onSelectRelease: (releaseId: string) => void\n documentId: string\n document: {\n type: string\n id: string\n }\n}\n\nconst VersionMenu: ComponentType<VersionMenuProps> = ({\n releases = [],\n onSelectRelease,\n role,\n documentId,\n document,\n}) => {\n const {published, draft} = useEditState(getPublishedId(document.id), document.type)\n const selected = useMemo(() => findRelease(document.id, releases), [document.id, releases])\n const {t: tStructure} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n return (\n <MenuButton\n id={role}\n button={\n <Button\n type=\"button\"\n mode=\"bleed\"\n padding={2}\n paddingRight={3}\n radius=\"full\"\n selected\n {...getMenuButtonProps({selected, tCore, tStructure})}\n />\n }\n menu={\n <Menu>\n {published && (\n <VersionMenuItem\n type=\"published\"\n onSelect={onSelectRelease}\n isSelected={selected === 'published'}\n documentId={documentId}\n />\n )}\n {draft && (\n <VersionMenuItem\n type=\"draft\"\n onSelect={onSelectRelease}\n isSelected={selected === 'draft'}\n documentId={documentId}\n />\n )}\n {releases.map((release) => (\n <VersionMenuItem\n key={release._id}\n release={release}\n onSelect={onSelectRelease}\n isSelected={typeof selected !== 'string' && selected?._id === release._id}\n documentId={documentId}\n />\n ))}\n </Menu>\n }\n />\n )\n}\n\ntype VersionMenuItemProps = {\n onSelect: (releaseId: string) => void\n isSelected?: boolean\n documentId: string\n} & (\n | {\n release: ReleaseDocument\n type?: never\n }\n | {\n type: 'published' | 'draft'\n release?: never\n }\n)\n\nconst VersionMenuItem: ComponentType<VersionMenuItemProps> = ({\n type,\n release,\n onSelect,\n isSelected,\n documentId,\n}) => {\n const {t: tCore} = useTranslation()\n const {t: tStructure} = useTranslation(structureLocaleNamespace)\n\n const onClick = useCallback(() => {\n if (type === 'draft') {\n onSelect(getDraftId(documentId))\n return\n }\n\n if (type === 'published') {\n onSelect(getPublishedId(documentId))\n return\n }\n\n if (typeof release?._id !== 'undefined') {\n onSelect(getVersionId(documentId, getReleaseIdFromReleaseDocumentId(release._id)))\n }\n }, [type, onSelect, documentId, release?._id])\n\n if (type) {\n const tone: ButtonTone = type === 'published' ? 'positive' : 'caution'\n\n return (\n <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n <Flex gap={1}>\n <ReleaseAvatar padding={2} tone={tone} />\n <Box paddingY={2}>\n <Text size={1} weight=\"medium\">\n {tStructure(['compare-versions.status', type].join('.'))}\n </Text>\n </Box>\n </Flex>\n </MenuItem>\n )\n }\n\n const tone: ButtonTone = release ? getReleaseTone(release) : 'neutral'\n\n return (\n <MenuItem padding={1} paddingRight={3} onClick={onClick} pressed={isSelected}>\n <Flex gap={1}>\n <ReleaseAvatar padding={2} tone={tone} />\n <Stack flex={1} paddingY={2} paddingRight={2} space={2}>\n <Text size={1} weight=\"medium\">\n {release.metadata.title || tCore('release.placeholder-untitled-release')}\n </Text>\n {['asap', 'undecided'].includes(release.metadata.releaseType) && (\n <Text muted size={1}>\n {tCore(`release.type.${release.metadata.releaseType}`)}\n </Text>\n )}\n {release.metadata.releaseType === 'scheduled' && (\n <Text muted size={1}>\n {formatRelativeLocalePublishDate(release)}\n </Text>\n )}\n </Stack>\n <Flex flex=\"none\">\n {isReleaseScheduledOrScheduling(release) && (\n <Box padding={2}>\n <Text size={1}>\n <LockIcon />\n </Text>\n </Box>\n )}\n </Flex>\n </Flex>\n </MenuItem>\n )\n}\n\nfunction getMenuButtonProps({\n selected,\n tCore,\n tStructure,\n}: {\n selected?: ReleaseDocument | 'published' | 'draft'\n tCore: TFunction\n tStructure: TFunction\n}): Pick<ComponentProps<typeof Button>, 'text' | 'tone' | 'icon' | 'iconRight' | 'disabled'> {\n if (typeof selected === 'undefined') {\n return {\n text: tCore('common.loading'),\n tone: 'neutral',\n disabled: true,\n }\n }\n\n if (isReleaseDocument(selected)) {\n const tone: ButtonTone = selected ? getReleaseTone(selected) : 'neutral'\n\n return {\n text: selected?.metadata.title || tCore('release.placeholder-untitled-release'),\n icon: <ReleaseAvatar padding={1} tone={tone} />,\n iconRight: selected && isReleaseScheduledOrScheduling(selected) ? <LockIcon /> : undefined,\n tone,\n }\n }\n\n const tone: ButtonTone = selected === 'published' ? 'positive' : 'caution'\n\n return {\n text: tStructure(['compare-versions.status', selected].join('.')),\n icon: <ReleaseAvatar padding={1} tone={tone} />,\n tone,\n }\n}\n\n/**\n * If the provided document id represents a version, find and return the corresponding release\n * document. Otherwise, return a string literal signifying whether the document id represents a\n * published or draft document.\n */\nfunction findRelease(\n documentId: string,\n releases: ReleaseDocument[],\n): ReleaseDocument | 'published' | 'draft' | undefined {\n if (isPublishedId(documentId)) {\n return 'published'\n }\n\n if (isDraftId(documentId)) {\n return 'draft'\n }\n\n return releases.find(\n ({_id}) => getReleaseIdFromReleaseDocumentId(_id) === getVersionFromId(documentId),\n )\n}\n","import {styled} from 'styled-components'\n\nexport const DialogLayout = styled.div`\n --offset-block: 40px;\n display: grid;\n height: calc(100vh - var(--offset-block));\n min-height: 0;\n overflow: hidden;\n grid-template-areas:\n 'header header'\n 'previous-document next-document';\n grid-template-columns: 1fr 1fr;\n grid-template-rows: min-content minmax(0, 1fr);\n`\n","import {type ComponentType} from 'react'\nimport {type DocumentLayoutProps, type PluginOptions} from 'sanity'\n\n/**\n * Pick the document layout component when composing the component middleware chain.\n */\nexport function pickDocumentLayoutComponent(plugin: PluginOptions) {\n return plugin.document?.components?.unstable_layout as ComponentType<\n Omit<DocumentLayoutProps, 'renderDefault'>\n >\n}\n","import {type Path} from '@sanity/types'\nimport {useCallback, useMemo} from 'react'\nimport deepEquals from 'react-fast-compare'\nimport {distinctUntilChanged, filter, map, type Observable} from 'rxjs'\n\nimport {type PathSyncChannelProps, type PathSyncState} from '../types/pathSyncChannel'\n\ntype Push = (state: PathSyncState) => void\n\n/**\n * Synchronise the open path between multiple document panes.\n *\n * @internal\n */\nexport function usePathSyncChannel({syncChannel, id}: PathSyncChannelProps): {\n push: Push\n path: Observable<Path>\n} {\n const push = useCallback<Push>(\n (state) => syncChannel.next({...state, source: id}),\n [id, syncChannel],\n )\n\n const path = useMemo(\n () =>\n syncChannel.pipe(\n distinctUntilChanged<PathSyncState>((previous, next) =>\n deepEquals(previous.path, next.path),\n ),\n filter(({source}) => source !== id),\n map((state) => state.path),\n ),\n [id, syncChannel],\n )\n\n return {\n path,\n push,\n }\n}\n","import {styled} from 'styled-components'\n\nexport const Scroller = styled.div`\n position: relative;\n height: 100%;\n overflow: auto;\n scroll-behavior: smooth;\n scrollbar-width: var(--scrollbar-width);\n overscroll-behavior: contain;\n will-change: scroll-position;\n`\n","import {type Path, type SanityDocument} from '@sanity/types'\nimport {\n BoundaryElementProvider,\n Card,\n Container as UiContainer,\n DialogProvider,\n PortalProvider,\n} from '@sanity/ui'\nimport {noop} from 'lodash'\nimport {\n type ComponentType,\n type CSSProperties,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n ChangeIndicatorsTracker,\n createPatchChannel,\n FormBuilder,\n getPublishedId,\n getVersionFromId,\n isDraftId,\n isPublishedId,\n isVersionId,\n LoadingBlock,\n useDocumentForm,\n useEditState,\n useMiddlewareComponents,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {CommentsEnabledContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {pickDocumentLayoutComponent} from '../../panes/document/document-layout/pickDocumentLayoutComponent'\nimport {usePathSyncChannel} from '../hooks/usePathSyncChannel'\nimport {type PathSyncChannel} from '../types/pathSyncChannel'\nimport {Scroller} from './Scroller'\n\nconst DiffViewPaneLayout = styled(Card)`\n position: relative;\n grid-area: var(--grid-area);\n`\n\nconst Container = styled(UiContainer)`\n width: auto;\n`\n\ninterface DiffViewPaneProps {\n documentType: string\n documentId: string\n role: 'previous' | 'next'\n scrollElement: HTMLElement | null\n syncChannel: PathSyncChannel\n compareDocument: {\n type: string\n id: string\n }\n}\n\nexport const DiffViewPane = forwardRef<HTMLDivElement, DiffViewPaneProps>(function DiffViewPane(\n {role, documentType, documentId, scrollElement, syncChannel, compareDocument},\n ref,\n) {\n const containerElement = useRef<HTMLDivElement | null>(null)\n const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)\n\n const DocumentLayout = useMiddlewareComponents({\n pick: pickDocumentLayoutComponent,\n defaultComponent: useCallback(\n () => (\n <DiffViewDocument\n compareDocument={compareDocument}\n documentId={documentId}\n documentType={documentType}\n role={role}\n scrollElement={scrollElement}\n syncChannel={syncChannel}\n />\n ),\n [compareDocument, documentId, documentType, role, scrollElement, syncChannel],\n ),\n })\n\n return (\n <ReviewChangesContext.Provider\n value={{\n // Render the change indicators inertly, because the diff view modal does not currently\n // provide a way to display document inspectors.\n isInteractive: false,\n onOpenReviewChanges: noop,\n onSetFocus: noop,\n isReviewChangesOpen: false,\n }}\n >\n <ChangeIndicatorsTracker>\n <VirtualizerScrollInstanceProvider\n scrollElement={scrollElement}\n containerElement={containerElement}\n >\n <BoundaryElementProvider element={boundaryElement}>\n <DiffViewPaneLayout\n ref={setBoundaryElement}\n style={\n {\n '--grid-area': `${role}-document`,\n } as CSSProperties\n }\n borderLeft={role === 'next'}\n >\n <Scroller\n ref={ref}\n style={\n {\n // The scroll position is synchronised between panes. This style hides the\n // scrollbar for all panes except the one displaying the next document.\n '--scrollbar-width': role !== 'next' && 'none',\n } as CSSProperties\n }\n >\n <PortalProvider element={portalElement}>\n <DialogProvider position=\"absolute\">\n <Container ref={containerElement} padding={4} width={1}>\n <DocumentLayout documentId={documentId} documentType={documentType} />\n </Container>\n </DialogProvider>\n </PortalProvider>\n </Scroller>\n <div data-testid=\"diffView-document-panel-portal\" ref={setPortalElement} />\n </DiffViewPaneLayout>\n </BoundaryElementProvider>\n </VirtualizerScrollInstanceProvider>\n </ChangeIndicatorsTracker>\n </ReviewChangesContext.Provider>\n )\n})\n\nconst DiffViewDocument: ComponentType<DiffViewPaneProps> = ({\n role,\n documentType,\n documentId,\n syncChannel,\n compareDocument,\n}) => {\n const compareValue = useCompareValue({compareDocument})\n const [patchChannel] = useState(() => createPatchChannel())\n\n const {\n formState,\n onChange,\n onFocus,\n onBlur,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n collapsedFieldSets,\n ready,\n collapsedPaths,\n schemaType,\n value,\n onProgrammaticFocus,\n ...documentForm\n } = useDocumentForm({\n documentId: getPublishedId(documentId),\n documentType,\n selectedPerspectiveName: perspectiveName(documentId),\n releaseId: getVersionFromId(documentId),\n comparisonValue: compareValue,\n })\n\n const isLoading = formState === null || !ready\n\n const pathSyncChannel = usePathSyncChannel({\n id: role,\n syncChannel,\n })\n\n const onPathOpen = useCallback(\n (path: Path) => {\n documentForm.onPathOpen(path)\n pathSyncChannel.push({source: role, path})\n },\n [documentForm, pathSyncChannel, role],\n )\n\n useEffect(() => {\n const subscription = pathSyncChannel.path.subscribe(onProgrammaticFocus)\n return () => subscription.unsubscribe()\n }, [onProgrammaticFocus, pathSyncChannel.path])\n\n return isLoading ? (\n <LoadingBlock showText />\n ) : (\n <CommentsEnabledContext.Provider\n value={{\n enabled: false,\n mode: null,\n }}\n >\n <FormBuilder\n // eslint-disable-next-line camelcase\n __internal_patchChannel={patchChannel}\n id={`diffView-pane-${role}`}\n onChange={onChange}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onPathBlur={onBlur}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n collapsedPaths={collapsedPaths}\n collapsedFieldSets={collapsedFieldSets}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n validation={formState.validation}\n members={formState.members}\n presence={formState.presence}\n schemaType={schemaType}\n value={value}\n />\n </CommentsEnabledContext.Provider>\n )\n}\n\nfunction perspectiveName(documentId: string): string | undefined {\n if (isVersionId(documentId)) {\n return getVersionFromId(documentId)\n }\n\n if (isPublishedId(documentId)) {\n return 'published'\n }\n\n return undefined\n}\n\ntype UseCompareValueOptions = Pick<DiffViewPaneProps, 'compareDocument'>\n\n/**\n * Fetch the contents of `compareDocument` for comparison with another version of the document.\n */\nfunction useCompareValue({compareDocument}: UseCompareValueOptions): SanityDocument | undefined {\n const compareDocumentEditState = useEditState(\n getPublishedId(compareDocument.id),\n compareDocument.type,\n 'low',\n getVersionFromId(compareDocument.id),\n )\n\n return useMemo(() => {\n if (isVersionId(compareDocument.id)) {\n return compareDocumentEditState.version ?? undefined\n }\n\n if (isDraftId(compareDocument.id)) {\n return compareDocumentEditState.draft ?? undefined\n }\n\n if (isPublishedId(compareDocument.id)) {\n return compareDocumentEditState.published ?? undefined\n }\n\n return undefined\n }, [\n compareDocument.id,\n compareDocumentEditState.draft,\n compareDocumentEditState.published,\n compareDocumentEditState.version,\n ])\n}\n","import {type ReferenceInputOptions} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nconst Link = styled.a`\n flex: 1;\n text-decoration: none;\n color: inherit;\n`\n\nexport const EditReferenceLinkComponent: ReferenceInputOptions['EditReferenceLinkComponent'] = ({\n children,\n documentId: _documentId,\n documentType,\n}) => {\n const {href} = useIntentLink({\n intent: 'edit',\n params: {\n id: _documentId,\n type: documentType,\n },\n })\n\n return (\n <Link href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </Link>\n )\n}\n","import {type ComponentType, useContext, useMemo, useState} from 'react'\nimport {type DocumentLayoutProps} from 'sanity'\nimport {ReferenceInputOptionsContext} from 'sanity/_singletons'\n\nimport {Dialog} from '../../../ui-components/dialog/Dialog'\nimport {useCreatePathSyncChannel} from '../hooks/useCreatePathSyncChannel'\nimport {useDiffViewRouter} from '../hooks/useDiffViewRouter'\nimport {useDiffViewState} from '../hooks/useDiffViewState'\nimport {useScrollMirror} from '../hooks/useScrollMirror'\nimport {VersionModeHeader} from '../versionMode/components/VersionModeHeader'\nimport {DialogLayout} from './DialogLayout'\nimport {DiffViewPane} from './DiffViewPane'\nimport {EditReferenceLinkComponent} from './EditReferenceLinkComponent'\n\nexport const DiffView: ComponentType<Pick<DocumentLayoutProps, 'documentId'>> = ({documentId}) => {\n const {documents, state, mode} = useDiffViewState()\n const {exitDiffView} = useDiffViewRouter()\n const syncChannel = useCreatePathSyncChannel()\n const [previousPaneElement, setPreviousPaneElement] = useState<HTMLElement | null>(null)\n const [nextPaneElement, setNextPaneElement] = useState<HTMLElement | null>(null)\n const referenceInputOptionsContext = useContext(ReferenceInputOptionsContext)\n\n const diffViewReferenceInputOptionsContext = useMemo(\n () => ({\n ...referenceInputOptionsContext,\n disableNew: true,\n EditReferenceLinkComponent,\n }),\n [referenceInputOptionsContext],\n )\n\n useScrollMirror([previousPaneElement, nextPaneElement])\n\n return (\n <ReferenceInputOptionsContext.Provider value={diffViewReferenceInputOptionsContext}>\n <Dialog\n id=\"diffView\"\n width=\"auto\"\n onClose={exitDiffView}\n padding={false}\n __unstable_hideCloseButton\n >\n <DialogLayout>\n {mode === 'version' && <VersionModeHeader documentId={documentId} state={state} />}\n {state === 'ready' && (\n <>\n <DiffViewPane\n documentType={documents.previous.type}\n documentId={documents.previous.id}\n role=\"previous\"\n ref={setPreviousPaneElement}\n scrollElement={previousPaneElement}\n syncChannel={syncChannel}\n compareDocument={documents.previous}\n />\n <DiffViewPane\n documentType={documents.next.type}\n documentId={documents.next.id}\n role=\"next\"\n ref={setNextPaneElement}\n scrollElement={nextPaneElement}\n syncChannel={syncChannel}\n // The previous document's edit state is used to calculate the diff inroduced by the next document.\n compareDocument={documents.previous}\n />\n </>\n )}\n </DialogLayout>\n </Dialog>\n </ReferenceInputOptionsContext.Provider>\n )\n}\n","import {useToast} from '@sanity/ui'\nimport {type ComponentType, type PropsWithChildren} from 'react'\nimport {type DocumentLayoutProps, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {DiffView} from '../components/DiffView'\nimport {useDiffViewState} from '../hooks/useDiffViewState'\n\nexport const DiffViewDocumentLayout: ComponentType<\n PropsWithChildren<Pick<DocumentLayoutProps, 'documentId' | 'documentType'>>\n> = ({children, documentId}) => {\n const toast = useToast()\n const {t} = useTranslation(structureLocaleNamespace)\n const {isActive} = useDiffViewState({\n onParamsError: (errors) => {\n toast.push({\n id: 'diffViewParamsParsingError',\n status: 'error',\n title: t('compare-version.error.invalidParams.title'),\n description: (\n <ul>\n {errors.map(([error, input]) => (\n <li key={error}>\n {t(`compare-version.error.${error}`, {\n input,\n })}\n </li>\n ))}\n </ul>\n ),\n })\n },\n })\n\n return (\n <>\n {children}\n {isActive && <DiffView documentId={documentId} />}\n </>\n )\n}\n","import {Box, type CardTone} from '@sanity/ui'\n\nimport {Pane, PaneContent, PaneHeader} from '../../components/pane'\n\n/**\n * @internal\n */\nexport function ErrorPane(props: {\n children?: React.ReactNode\n currentMinWidth?: number\n flex?: number\n minWidth?: number\n paneKey: string\n title?: React.ReactNode\n tone?: CardTone\n}) {\n const {\n children,\n currentMinWidth,\n flex,\n minWidth,\n paneKey,\n title = 'Error',\n tone = 'critical',\n } = props\n\n return (\n <Pane\n currentMinWidth={currentMinWidth}\n flex={flex}\n id={paneKey}\n minWidth={minWidth}\n tone={tone}\n >\n <PaneHeader title={title} />\n <PaneContent overflow=\"auto\">\n <Box paddingX={4} paddingY={5}>\n {children}\n </Box>\n </PaneContent>\n </Pane>\n )\n}\n","import {merge, type Observable, of} from 'rxjs'\nimport {delay, mapTo} from 'rxjs/operators'\nimport {isDev} from 'sanity'\n\n/**\n * @internal\n */\nexport type WaitMessage = {messageKey: string} | {message: string}\n\n/**\n * @internal\n */\nexport function getWaitMessages(path: string[]): Observable<WaitMessage> {\n const thresholds: (WaitMessage & {ms: number})[] = [\n {ms: 300, messageKey: 'panes.resolving.default-message'},\n {ms: 5000, messageKey: 'panes.resolving.slow-resolve-message'},\n ]\n\n if (isDev) {\n const message = [\n 'Check console for errors?',\n 'Is your observable/promise resolving?',\n path.length > 0 ? `Structure path: ${path.join(' ➝ ')}` : '',\n ]\n\n thresholds.push({\n ms: 10000,\n message: message.join('\\n'),\n })\n }\n\n const src = of(null)\n\n return merge(\n ...thresholds.map((threshold) =>\n src.pipe(\n mapTo(\n 'messageKey' in threshold\n ? {messageKey: threshold.messageKey}\n : {message: threshold.message},\n ),\n delay(threshold.ms),\n ),\n ),\n )\n}\n","import {_raf2, type CardTone, Flex} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useState} from 'react'\nimport {type Observable} from 'rxjs'\nimport {LoadingBlock, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay} from '../../components/Delay'\nimport {Pane, PaneContent} from '../../components/pane'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {getWaitMessages, type WaitMessage} from './getWaitMessages'\n\ninterface LoadingPaneProps {\n delay?: number\n flex?: number\n message?: string | ((p: string[]) => string | Observable<WaitMessage>)\n minWidth?: number\n paneKey: string\n path?: string\n selected?: boolean\n title?: string\n tone?: CardTone\n}\n\nconst DELAY = false\nconst DEFAULT_MESSAGE_KEY = 'panes.resolving.default-message'\n\nconst Content = styled(Flex)`\n opacity: 0;\n transition: opacity 200ms;\n\n &[data-mounted] {\n opacity: 1;\n }\n`\n\n/**\n * @internal\n */\nexport const LoadingPane = memo((props: LoadingPaneProps) => {\n const {\n delay = 300,\n flex,\n message: messageProp = getWaitMessages,\n minWidth,\n paneKey,\n path,\n selected,\n title,\n tone,\n } = props\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const resolvedMessage = useMemo(() => {\n if (typeof messageProp === 'function') {\n return messageProp(path ? path.split(';') : [])\n }\n\n return messageProp\n }, [messageProp, path])\n\n const [currentMessage, setCurrentMessage] = useState<string | null>(() => {\n if (typeof resolvedMessage === 'string') return resolvedMessage\n return t(DEFAULT_MESSAGE_KEY)\n })\n\n useEffect(() => {\n if (typeof resolvedMessage !== 'object') return undefined\n if (typeof resolvedMessage.subscribe !== 'function') return undefined\n\n const sub = resolvedMessage.subscribe((message) => {\n setCurrentMessage('messageKey' in message ? t(message.messageKey) : message.message)\n })\n\n return () => sub.unsubscribe()\n }, [resolvedMessage, t])\n\n const [contentElement, setContentElement] = useState<HTMLDivElement | null>(null)\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n if (!contentElement) return undefined\n return _raf2(() => setMounted(true))\n }, [contentElement])\n\n const content = (\n <Content\n align=\"center\"\n data-mounted={mounted ? '' : undefined}\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n ref={setContentElement}\n >\n <LoadingBlock showText title={title || currentMessage} />\n </Content>\n )\n\n return (\n <Pane flex={flex} id={paneKey} minWidth={minWidth} selected={selected} tone={tone}>\n <PaneContent>{DELAY ? <Delay ms={delay}>{content}</Delay> : content}</PaneContent>\n </Pane>\n )\n})\n\nLoadingPane.displayName = 'Memo(LoadingPane)'\n","import {useContext} from 'react'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\n\n/** @internal */\nexport function useDocumentPane(): DocumentPaneContextValue {\n const documentPane = useContext(DocumentPaneContext)\n\n if (!documentPane) {\n throw new Error('DocumentPane: missing context value')\n }\n\n return documentPane\n}\n","import {useCallback, useLayoutEffect, useRef} from 'react'\nimport {\n COMMENTS_INSPECTOR_NAME,\n CommentsEnabledProvider,\n CommentsProvider,\n useCommentsEnabled,\n usePerspective,\n useStudioUrl,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface CommentsWrapperProps {\n children: React.ReactNode\n documentId: string\n documentType: string\n}\n\n/**\n * @internal\n * A wrapper that conditionally wraps the document layout in a comments provider\n * if the feature is enabled for the project and the current document.\n */\nexport function CommentsWrapper(props: CommentsWrapperProps) {\n const {children, documentId, documentType} = props\n\n return (\n <CommentsEnabledProvider documentId={documentId} documentType={documentType}>\n <CommentsProviderWrapper documentId={documentId} documentType={documentType}>\n {children}\n </CommentsProviderWrapper>\n </CommentsEnabledProvider>\n )\n}\n\nfunction CommentsProviderWrapper(props: CommentsWrapperProps) {\n const {children, documentId, documentType} = props\n\n const {enabled} = useCommentsEnabled()\n const {connectionState, onPathOpen, inspector, openInspector} = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const {params, setParams, createPathWithParams} = usePaneRouter()\n const {studioUrl} = useStudioUrl(window.location.origin)\n\n const selectedCommentId = params?.comment\n const paramsRef = useRef(params)\n\n useLayoutEffect(() => {\n paramsRef.current = params\n }, [params])\n\n const getCommentLink = useCallback(\n (commentId: string) => {\n // Generate a path based on the current pane params.\n // We force a value for `inspect` to ensure that this is included in URLs when comments\n // are created outside of the inspector context (i.e. directly on the field)\n // @todo: consider filtering pane router params and culling all non-active RHS panes prior to generating this link\n const path = createPathWithParams({\n ...paramsRef.current,\n comment: commentId,\n inspect: COMMENTS_INSPECTOR_NAME,\n })\n return `${studioUrl}${path}`\n },\n [createPathWithParams, studioUrl],\n )\n\n const handleClearSelectedComment = useCallback(() => {\n setParams({...paramsRef.current, comment: undefined})\n }, [setParams])\n\n const handleOpenCommentsInspector = useCallback(() => {\n if (inspector?.name === COMMENTS_INSPECTOR_NAME) return\n\n openInspector(COMMENTS_INSPECTOR_NAME)\n }, [inspector?.name, openInspector])\n\n // If comments are not enabled, render the default document layout\n if (!enabled) {\n return <>{children}</>\n }\n\n return (\n <CommentsProvider\n documentId={documentId}\n documentType={documentType}\n getCommentLink={getCommentLink}\n isCommentsOpen={inspector?.name === COMMENTS_INSPECTOR_NAME}\n isConnecting={connectionState === 'connecting'}\n onClearSelectedComment={handleClearSelectedComment}\n onCommentsOpen={handleOpenCommentsInspector}\n onPathOpen={onPathOpen}\n selectedCommentId={selectedCommentId}\n sortOrder=\"desc\"\n type=\"field\"\n releaseId={selectedReleaseId}\n >\n {children}\n </CommentsProvider>\n )\n}\n","import {useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getVersionFromId,\n type ReleaseDocument,\n useActiveReleases,\n useArchivedReleases,\n useDocumentVersions,\n usePerspective,\n} from 'sanity'\n\nimport {usePaneRouter} from '../components/paneRouter/usePaneRouter'\nimport {type DocumentPaneContextValue} from '../panes/document/DocumentPaneContext'\n\ntype FilterReleases = {\n notCurrentReleases: ReleaseDocument[]\n currentReleases: ReleaseDocument[]\n inCreation: ReleaseDocument | null\n}\n\n/**\n * @internal\n */\nexport function useFilteredReleases({\n displayed,\n documentId,\n}: Pick<DocumentPaneContextValue, 'displayed' | 'documentId'>): FilterReleases {\n const {selectedReleaseId} = usePerspective()\n const {data: releases} = useActiveReleases()\n const {data: archivedReleases} = useArchivedReleases()\n const {data: documentVersions} = useDocumentVersions({documentId})\n const isCreatingDocument = displayed && !displayed._createdAt\n const {params} = usePaneRouter()\n\n return useMemo(() => {\n if (!documentVersions) return {notCurrentReleases: [], currentReleases: [], inCreation: null}\n // Gets the releases ids from the document versions, it means, the releases that the document belongs to\n const releasesIds = documentVersions.map((id) => getVersionFromId(id))\n const activeReleases = releases.reduce(\n (acc: FilterReleases, release) => {\n const versionDocExists = releasesIds.includes(\n getReleaseIdFromReleaseDocumentId(release._id),\n )\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n const isCreatingThisVersion =\n isCreatingDocument &&\n releaseId === getVersionFromId(displayed._id || '') &&\n releaseId === selectedReleaseId\n\n if (isCreatingThisVersion) {\n acc.inCreation = release\n } else if (versionDocExists) {\n acc.currentReleases.push(release)\n } else {\n acc.notCurrentReleases.push(release)\n }\n return acc\n },\n {notCurrentReleases: [], currentReleases: [], inCreation: null},\n )\n\n // without historyVersion, version is not in an archived release\n if (!params?.historyVersion) return activeReleases\n\n const archivedRelease = archivedReleases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n )\n\n // only for explicitly archived releases; published releases use published perspective\n if (archivedRelease?.state === 'archived') {\n activeReleases.currentReleases.push(archivedRelease)\n }\n\n return activeReleases\n }, [\n archivedReleases,\n isCreatingDocument,\n displayed?._id,\n documentVersions,\n params?.historyVersion,\n releases,\n selectedReleaseId,\n ])\n}\n","import {useMemo} from 'react'\nimport {getReleaseIdFromReleaseDocumentId, getVersionId} from 'sanity'\n\nimport {type DocumentPaneContextValue} from '../panes/document/DocumentPaneContext'\nimport {useFilteredReleases} from './useFilteredReleases'\n\n/**\n * @internal\n */\nexport interface DocumentIdStack {\n /**\n * The position of the displayed document within the stack.\n */\n position: number\n /**\n * The id of the previous document in the stack.\n */\n previousId?: string\n /**\n * The id of the next document in the stack.\n */\n nextId?: string\n /**\n * An array of document ids comprising the stack the displayed document is a member of, ordered per\n * release layering.\n */\n stack: string[]\n}\n\n/**\n * Get a stack of document ids representing existing versions of the provided document with release\n * layering applied.\n *\n * @internal\n */\nexport function useDocumentIdStack({\n displayed,\n documentId,\n editState,\n}: Pick<DocumentPaneContextValue, 'displayed' | 'documentId' | 'editState'>): DocumentIdStack {\n const filteredReleases = useFilteredReleases({displayed, documentId})\n const systemStack = [editState?.published?._id, editState?.draft?._id]\n\n const releaseStack = filteredReleases.currentReleases.map(\n (release) =>\n editState?.id && getVersionId(editState.id, getReleaseIdFromReleaseDocumentId(release._id)),\n )\n\n const stack = systemStack.concat(releaseStack).filter((id) => typeof id === 'string')\n\n const position = useMemo(\n () => stack.findIndex((id) => id === displayed?._id),\n [displayed?._id, stack],\n )\n\n const previousId = useMemo(() => stack[position - 1] ?? undefined, [position, stack])\n const nextId = useMemo(() => stack[position + 1] ?? undefined, [position, stack])\n\n return {\n position,\n previousId,\n nextId,\n stack,\n }\n}\n","import {useContext} from 'react'\nimport {StructureToolContext} from 'sanity/_singletons'\n\nimport {type StructureToolContextValue} from './types'\n\n/** @internal */\nexport function useStructureTool(): StructureToolContextValue {\n const structureTool = useContext(StructureToolContext)\n if (!structureTool) throw new Error(`StructureTool: missing context value`)\n\n return structureTool\n}\n","import {type PaneRouterContextValue} from '../../components'\nimport {type PaneMenuItemGroup} from '../../types'\n\nexport const DOCUMENT_PANEL_MIN_WIDTH = 320\nexport const DOCUMENT_PANEL_INITIAL_MIN_WIDTH = 600\n\nexport const DOCUMENT_INSPECTOR_MIN_WIDTH = 320\nexport const DOCUMENT_INSPECTOR_MAX_WIDTH = 540\n\nexport const EMPTY_PARAMS: NonNullable<PaneRouterContextValue['params']> = {}\n\nexport const INSPECT_ACTION_PREFIX = 'inspect:'\n\nexport const DEFAULT_MENU_ITEM_GROUPS: PaneMenuItemGroup[] = [{id: 'inspectors'}, {id: 'links'}]\n\n// inspectors\nexport const HISTORY_INSPECTOR_NAME = 'sanity/structure/history'\nexport const VALIDATION_INSPECTOR_NAME = 'sanity/structure/validation'\n","import {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, useUnique} from 'sanity'\n\ninterface DocumentInspectorMenuItemsResolverProps {\n documentId: string\n documentType: string\n inspectors: DocumentInspector[]\n onMenuItems: (items: DocumentInspectorMenuItem[]) => void\n}\n\n// The menu item in a document inspector are resolved in a React hook (`useMenuItem`).\n// This means that the menu item needs to be resolved in a React component (in accordance with the rules of hooks).\n// In this component, we map over the configured inspectors and render a `InspectorMenuItem` for each.\n// The `InspectorMenuItem` will resolve the menu item in a React hook and call the `setMenuItem` callback\n// with the resolved menu item and the index of the inspector.\n// Finally, we call the `onMenuItems` callback with the resolved menu items.\nexport function DocumentInspectorMenuItemsResolver(props: DocumentInspectorMenuItemsResolverProps) {\n const {documentId, documentType, inspectors, onMenuItems} = props\n\n const len = inspectors.length\n const [menuItems, setMenuItems] = useState<DocumentInspectorMenuItem[]>(() =>\n Array.from(new Array(len)),\n )\n\n useEffect(() => {\n if (menuItems.length !== len) {\n const newFieldActions = Array.from(new Array(len))\n\n for (let i = 0; i < len; i++) {\n newFieldActions[i] = menuItems[i]\n }\n\n setMenuItems(newFieldActions)\n }\n }, [len, menuItems])\n\n const setMenuItem = useCallback((index: number, node: DocumentInspectorMenuItem) => {\n setMenuItems((prev) => {\n const next = [...prev]\n next[index] = node\n return next\n })\n }, [])\n\n useEffect(() => {\n onMenuItems(menuItems.filter(Boolean))\n }, [menuItems, onMenuItems])\n\n const InspectorMenuItems = useMemo(() => {\n return inspectors.map((inspector, index) => {\n return inspector.useMenuItem\n ? ([\n defineInspectorMenuItemComponent({\n documentId,\n documentType,\n index,\n setMenuItem,\n useMenuItem: inspector.useMenuItem,\n }),\n inspector.name,\n ] as const)\n : ([() => null, ''] as const)\n })\n }, [documentId, documentType, inspectors, setMenuItem])\n\n return (\n <>\n {InspectorMenuItems.map(([InspectorMenuItem, key]) => key && <InspectorMenuItem key={key} />)}\n </>\n )\n}\nDocumentInspectorMenuItemsResolver.displayName = 'DocumentInspectorMenuItemsResolver'\n\nfunction defineInspectorMenuItemComponent({\n documentId,\n documentType,\n index,\n setMenuItem,\n useMenuItem,\n}: {\n documentId: string\n documentType: string\n index: number\n setMenuItem: (index: number, node: DocumentInspectorMenuItem) => void\n useMenuItem: NonNullable<DocumentInspector['useMenuItem']>\n}) {\n return memo(function InspectorMenuItem() {\n const menuItem = useMenuItem({\n documentId,\n documentType,\n })\n const node = useUnique(menuItem)\n\n useEffect(() => {\n setMenuItem(index, node)\n }, [node])\n\n return null\n })\n}\n","import {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\n\n/**\n * useDocumentTitle hook return type.\n *\n * @beta\n * @hidden\n */\ninterface UseDocumentTitle {\n error?: string\n title?: string\n}\n\n/**\n * React hook that returns the document title for the current document in the document pane.\n *\n * @beta\n * @hidden\n *\n * @returns The document title or error. See {@link UseDocumentTitle}\n */\nexport function useDocumentTitle(): UseDocumentTitle {\n const {connectionState, schemaType, title, displayed} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n const subscribed = Boolean(displayed)\n\n const {error, value} = useValuePreview({\n enabled: subscribed,\n schemaType,\n value: displayed,\n })\n\n if (connectionState === 'connecting' && !subscribed) {\n return {error: undefined, title: undefined}\n }\n\n if (title) {\n return {error: undefined, title}\n }\n\n if (!displayed) {\n return {\n error: undefined,\n title: t('panes.document-header-title.new.text', {\n schemaType: schemaType?.title || schemaType?.name,\n }),\n }\n }\n\n if (error) {\n return {\n error: t('panes.document-list-pane.error.text', {error: error.message}),\n title: undefined,\n }\n }\n\n return {error: undefined, title: value?.title}\n}\n","import {useToast} from '@sanity/ui'\nimport {memo, useEffect, useMemo, useRef} from 'react'\nimport {Translate, useDocumentOperationEvent, useTranslation} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {useDocumentPane} from './useDocumentPane'\nimport {useDocumentTitle} from './useDocumentTitle'\n\nconst IGNORE_OPS = ['patch', 'commit']\n\nexport const DocumentOperationResults = memo(function DocumentOperationResults() {\n const {push: pushToast} = useToast()\n const {documentId, documentType, value: documentPaneValue} = useDocumentPane()\n const documentTitleInfo = useDocumentTitle()\n const titleError = documentTitleInfo.error\n const event: any = useDocumentOperationEvent(documentId, documentType)\n const prevEvent = useRef(event)\n const paneRouter = usePaneRouter()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const title = useMemo(() => {\n // If title isn't set from document preview, use the title from the document pane value\n if (\n !documentTitleInfo.title &&\n !titleError &&\n !IGNORE_OPS.includes(event?.op) &&\n typeof documentPaneValue.title === 'string' &&\n event?.type === 'success'\n ) {\n return documentPaneValue.title\n }\n return documentTitleInfo.title\n }, [documentTitleInfo.title, titleError, event, documentPaneValue.title])\n //Truncate the document title and add \"...\" if it is over 25 characters\n const documentTitleBase = title || t('panes.document-operation-results.operation-undefined-title')\n const documentTitle =\n documentTitleBase.length > 25 ? `${documentTitleBase.slice(0, 25)}...` : documentTitleBase\n\n useEffect(() => {\n if (!event || event === prevEvent.current) return\n\n let cleanupId: number | undefined\n\n if (event.type === 'error') {\n pushToast({\n closable: true,\n duration: 30000, // 30s\n status: 'error',\n title: t('panes.document-operation-results.operation-error', {context: event.op}),\n description: (\n <details>\n <summary>{t('panes.document-operation-results.error.summary.title')}</summary>\n {event.error.message}\n </details>\n ),\n })\n }\n\n if (event.type === 'success' && !IGNORE_OPS.includes(event.op)) {\n pushToast({\n closable: true,\n status: 'success',\n title: (\n <Translate\n context={event.op}\n i18nKey=\"panes.document-operation-results.operation-success\"\n t={t}\n values={{\n op: event.op,\n title: documentTitle,\n }}\n components={{\n Strong: 'strong',\n }}\n />\n ),\n })\n }\n\n /**\n * If the document was deleted successfully, close the pane.\n */\n if (event.type === 'success' && event.op === 'delete') {\n // Wait until next tick to allow deletion toasts to appear first\n cleanupId = setTimeout(() => paneRouter.closeCurrentAndAfter(), 0) as any as number\n }\n\n prevEvent.current = event\n\n // eslint-disable-next-line consistent-return\n return () => clearTimeout(cleanupId)\n }, [event, paneRouter, pushToast, t, documentTitle])\n\n return null\n})\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {type PreviewValue, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {assignWith} from 'lodash'\nimport {type ReactNode} from 'react'\nimport {combineLatest, type Observable, of} from 'rxjs'\nimport {map, startWith} from 'rxjs/operators'\nimport {type DocumentPreviewStore, getDraftId, getPublishedId} from 'sanity'\n\nimport {type PaneItemPreviewState} from './types'\n\nexport const isLiveEditEnabled = (schemaType: SchemaType) => schemaType.liveEdit === true\n\nexport const getMissingDocumentFallback = (item: SanityDocument) => ({\n title: <em>{item.title ? String(item.title) : 'Missing document'}</em>,\n subtitle: <em>{item.title ? `Missing document ID: ${item._id}` : `Document ID: ${item._id}`}</em>,\n media: () => <WarningOutlineIcon />,\n})\n\nexport const getValueWithFallback = ({\n value,\n draft,\n published,\n}: {\n value: SanityDocument\n draft?: Partial<SanityDocument> | PreviewValue | null\n published?: Partial<SanityDocument> | PreviewValue | null\n}) => {\n const snapshot = draft || published\n\n if (!snapshot) {\n return getMissingDocumentFallback(value)\n }\n\n return assignWith({}, snapshot, value, (objValue, srcValue) => {\n return typeof srcValue === 'undefined' ? objValue : srcValue\n })\n}\n\nexport function getPreviewStateObservable(\n documentPreviewStore: DocumentPreviewStore,\n schemaType: SchemaType,\n documentId: string,\n title: ReactNode,\n): Observable<PaneItemPreviewState> {\n const draft$ = isLiveEditEnabled(schemaType)\n ? of({snapshot: null})\n : documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getDraftId(documentId)},\n schemaType,\n )\n\n const published$ = documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getPublishedId(documentId)},\n schemaType,\n )\n\n return combineLatest([draft$, published$]).pipe(\n map(([draft, published]) => ({\n draft: draft.snapshot ? {title, ...draft.snapshot} : null,\n isLoading: false,\n published: published.snapshot ? {title, ...published.snapshot} : null,\n })),\n startWith({draft: null, isLoading: true, published: null}),\n )\n}\n","import {CloseIcon} from '@sanity/icons'\nimport {Box, Card, type CardProps, Flex, Text} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport interface DocumentInspectorHeaderProps {\n as?: CardProps['as']\n closeButtonLabel: string\n flex?: CardProps['flex']\n onClose: () => void\n title: ReactNode\n}\n\nconst Root = styled(Card)({\n position: 'relative',\n zIndex: 1,\n lineHeight: 0,\n})\n\n/** @internal */\nexport function DocumentInspectorHeader(\n props: DocumentInspectorHeaderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n const {as: forwardedAs, children, closeButtonLabel, onClose, title, ...restProps} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Root {...restProps} as={forwardedAs}>\n <Flex padding={2}>\n <Box flex={1} padding={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n <Box flex=\"none\" padding={1}>\n <Button\n aria-label={closeButtonLabel}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Box>\n </Flex>\n {children}\n </Root>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Resizable} from 'sanity'\n\nimport {usePane} from '../../../components'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DOCUMENT_INSPECTOR_MAX_WIDTH, DOCUMENT_INSPECTOR_MIN_WIDTH} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentInspectorPanelProps {\n documentId: string\n documentType: string\n flex?: number | number[]\n}\n\nexport function DocumentInspectorPanel(\n props: DocumentInspectorPanelProps,\n): React.JSX.Element | null {\n const {documentId, documentType, flex} = props\n const {collapsed} = usePane()\n const {closeInspector, inspector} = useDocumentPane()\n const {features} = useStructureTool()\n\n const handleClose = useCallback(() => {\n if (inspector) closeInspector(inspector.name)\n }, [closeInspector, inspector])\n\n if (collapsed || !inspector) return null\n\n const Component = inspector.component\n const element = (\n <Component onClose={handleClose} documentId={documentId} documentType={documentType} />\n )\n\n if (features.resizablePanes) {\n return (\n <Resizable\n as=\"aside\"\n data-ui=\"DocumentInspectorPanel\"\n flex={flex}\n resizerPosition=\"left\"\n maxWidth={DOCUMENT_INSPECTOR_MAX_WIDTH}\n minWidth={DOCUMENT_INSPECTOR_MIN_WIDTH}\n >\n {element}\n </Resizable>\n )\n }\n\n return (\n <Box as=\"aside\" data-ui=\"DocumentInspectorPanel\" flex={flex}>\n {element}\n </Box>\n )\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","\"use strict\";\n\n/**\n * Expose `md5omatic(str)`.\n */\n \nmodule.exports = md5omatic;\n\n/**\n * Hash any string using message digest.\n *\n * @param {String} str\n * @return {String}\n * @api public\n */\n \nfunction md5omatic(str) {\n var x = str2blks_MD5(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for(var i=0; i<x.length; i += 16)\n {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n\n a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);\n d = ff(d, a, b, c, x[i+ 1], 12, -389564586);\n c = ff(c, d, a, b, x[i+ 2], 17, 606105819);\n b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);\n a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);\n d = ff(d, a, b, c, x[i+ 5], 12, 1200080426);\n c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);\n b = ff(b, c, d, a, x[i+ 7], 22, -45705983);\n a = ff(a, b, c, d, x[i+ 8], 7 , 1770035416);\n d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);\n c = ff(c, d, a, b, x[i+10], 17, -42063);\n b = ff(b, c, d, a, x[i+11], 22, -1990404162);\n a = ff(a, b, c, d, x[i+12], 7 , 1804603682);\n d = ff(d, a, b, c, x[i+13], 12, -40341101);\n c = ff(c, d, a, b, x[i+14], 17, -1502002290);\n b = ff(b, c, d, a, x[i+15], 22, 1236535329);\n a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);\n d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\n c = gg(c, d, a, b, x[i+11], 14, 643717713);\n b = gg(b, c, d, a, x[i+ 0], 20, -373897302);\n a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);\n d = gg(d, a, b, c, x[i+10], 9 , 38016083);\n c = gg(c, d, a, b, x[i+15], 14, -660478335);\n b = gg(b, c, d, a, x[i+ 4], 20, -405537848);\n a = gg(a, b, c, d, x[i+ 9], 5 , 568446438);\n d = gg(d, a, b, c, x[i+14], 9 , -1019803690);\n c = gg(c, d, a, b, x[i+ 3], 14, -187363961);\n b = gg(b, c, d, a, x[i+ 8], 20, 1163531501);\n a = gg(a, b, c, d, x[i+13], 5 , -1444681467);\n d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);\n c = gg(c, d, a, b, x[i+ 7], 14, 1735328473);\n b = gg(b, c, d, a, x[i+12], 20, -1926607734);\n a = hh(a, b, c, d, x[i+ 5], 4 , -378558);\n d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);\n c = hh(c, d, a, b, x[i+11], 16, 1839030562);\n b = hh(b, c, d, a, x[i+14], 23, -35309556);\n a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\n d = hh(d, a, b, c, x[i+ 4], 11, 1272893353);\n c = hh(c, d, a, b, x[i+ 7], 16, -155497632);\n b = hh(b, c, d, a, x[i+10], 23, -1094730640);\n a = hh(a, b, c, d, x[i+13], 4 , 681279174);\n d = hh(d, a, b, c, x[i+ 0], 11, -358537222);\n c = hh(c, d, a, b, x[i+ 3], 16, -722521979);\n b = hh(b, c, d, a, x[i+ 6], 23, 76029189);\n a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);\n d = hh(d, a, b, c, x[i+12], 11, -421815835);\n c = hh(c, d, a, b, x[i+15], 16, 530742520);\n b = hh(b, c, d, a, x[i+ 2], 23, -995338651);\n a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);\n d = ii(d, a, b, c, x[i+ 7], 10, 1126891415);\n c = ii(c, d, a, b, x[i+14], 15, -1416354905);\n b = ii(b, c, d, a, x[i+ 5], 21, -57434055);\n a = ii(a, b, c, d, x[i+12], 6 , 1700485571);\n d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);\n c = ii(c, d, a, b, x[i+10], 15, -1051523);\n b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);\n a = ii(a, b, c, d, x[i+ 8], 6 , 1873313359);\n d = ii(d, a, b, c, x[i+15], 10, -30611744);\n c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);\n b = ii(b, c, d, a, x[i+13], 21, 1309151649);\n a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);\n d = ii(d, a, b, c, x[i+11], 10, -1120210379);\n c = ii(c, d, a, b, x[i+ 2], 15, 718787259);\n b = ii(b, c, d, a, x[i+ 9], 21, -343485551);\n\n a = addme(a, olda);\n b = addme(b, oldb);\n c = addme(c, oldc);\n d = addme(d, oldd);\n }\n\n return rhex(a) + rhex(b) + rhex(c) + rhex(d);\n};\n\nvar hex_chr = \"0123456789abcdef\";\n\nfunction bitOR(a, b)\n{\n var lsb = (a & 0x1) | (b & 0x1);\n var msb31 = (a >>> 1) | (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction bitXOR(a, b)\n{\n var lsb = (a & 0x1) ^ (b & 0x1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction bitAND(a, b)\n{\n var lsb = (a & 0x1) & (b & 0x1);\n var msb31 = (a >>> 1) & (b >>> 1);\n\n return (msb31 << 1) | lsb;\n}\n\nfunction addme(x, y)\n{\n var lsw = (x & 0xFFFF)+(y & 0xFFFF);\n var msw = (x >> 16)+(y >> 16)+(lsw >> 16);\n\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\nfunction rhex(num)\n{\n var str = \"\";\n var j;\n\n for(j=0; j<=3; j++)\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + hex_chr.charAt((num >> (j * 8)) & 0x0F);\n\n return str;\n}\n\nfunction str2blks_MD5(str)\n{\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array(nblk * 16);\n var i;\n\n for(i=0; i<nblk * 16; i++)\n blks[i] = 0;\n\n for(i=0; i<str.length; i++)\n blks[i >> 2] |= str.charCodeAt(i) << (((str.length * 8 + i) % 4) * 8);\n\n blks[i >> 2] |= 0x80 << (((str.length * 8 + i) % 4) * 8);\n\n var l = str.length * 8;\n blks[nblk * 16 - 2] = (l & 0xFF);\n blks[nblk * 16 - 2] |= ((l >>> 8) & 0xFF) << 8;\n blks[nblk * 16 - 2] |= ((l >>> 16) & 0xFF) << 16;\n blks[nblk * 16 - 2] |= ((l >>> 24) & 0xFF) << 24;\n\n return blks;\n}\n\nfunction rol(num, cnt)\n{\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\nfunction cmn(q, a, b, x, s, t)\n{\n return addme(rol((addme(addme(a, q), addme(x, t))), s), b);\n}\n\nfunction ff(a, b, c, d, x, s, t)\n{\n return cmn(bitOR(bitAND(b, c), bitAND((~b), d)), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t)\n{\n return cmn(bitOR(bitAND(b, d), bitAND(c, (~d))), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t)\n{\n return cmn(bitXOR(bitXOR(b, c), d), a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t)\n{\n return cmn(bitXOR(c, bitOR(b, (~d))), a, b, x, s, t);\n}","import { jsx, jsxs } from \"react/jsx-runtime\";\nimport { Component, useCallback } from \"react\";\nimport debounce from \"debounce\";\nimport md5OMatic from \"md5-o-matic\";\nlet id = Math.ceil(Math.random() * 10);\nconst uid = () => ++id;\nfunction type(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\nfunction isPrimitive(value) {\n const t = type(value);\n return t !== \"Object\" && t !== \"Array\";\n}\nclass Highlighter extends Component {\n shouldComponentUpdate(p) {\n return p.highlight !== this.props.highlight;\n }\n render() {\n const str = this.props.string || \"\", highlight = this.props.highlight || \"\", highlightStart = str.search(highlight);\n if (!highlight || highlightStart === -1)\n return /* @__PURE__ */ jsx(\"span\", { children: str });\n const highlightLength = highlight.source.length, highlightString = str.slice(\n highlightStart,\n highlightStart + highlightLength\n );\n return /* @__PURE__ */ jsx(\"span\", { children: str.split(highlight).map(function(part, index) {\n return /* @__PURE__ */ jsxs(\"span\", { children: [\n index > 0 ? /* @__PURE__ */ jsx(\"span\", { className: \"json-inspector__hl\", children: highlightString }) : null,\n part\n ] }, index);\n }) });\n }\n}\nfunction isObject(value) {\n return typeof value == \"object\" && value !== null && !Array.isArray(value);\n}\nconst PATH_PREFIX = \".root.\";\nclass Leaf extends Component {\n constructor(props) {\n super(props), this.state = {\n expanded: this._isInitiallyExpanded(this.props)\n };\n }\n render() {\n const { label, data, root, id: inputId } = this.props, id2 = \"id_\" + uid(), d = {\n path: this.keypath(),\n key: label.toString(),\n value: data\n }, onLabelClick = this._onClick.bind(this, d);\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-testid\": root ? \"leaf-root\" : \"leaf-child\",\n \"aria-expanded\": this.state.expanded,\n \"data-root\": root || void 0,\n className: this.getClassName(),\n id: \"leaf-\" + this._rootPath(),\n children: [\n /* @__PURE__ */ jsx(\n \"input\",\n {\n className: \"json-inspector__radio\",\n type: \"radio\",\n name: id2,\n id: inputId,\n tabIndex: -1\n }\n ),\n /* @__PURE__ */ jsxs(\n \"label\",\n {\n className: \"json-inspector__line\",\n htmlFor: id2,\n onClick: onLabelClick,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__flatpath\", children: d.path }),\n /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__key\", children: [\n this.format(d.key),\n \":\",\n this.renderInteractiveLabel(d.key, !0)\n ] }),\n this.renderTitle(),\n this.renderShowOriginalButton()\n ]\n }\n ),\n this.renderChildren()\n ]\n }\n );\n }\n renderTitle() {\n const data = this.data(), t = type(data);\n if (Array.isArray(data)) {\n const length = data.length;\n return /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__value json-inspector__value_helper\", children: [\n length > 0 ? \"[\\u2026] \" : \"[] \",\n items(length)\n ] });\n }\n if (typeof data == \"object\" && data !== null) {\n const keys = Object.keys(data).length;\n return /* @__PURE__ */ jsxs(\"span\", { className: \"json-inspector__value json-inspector__value_helper\", children: [\n keys > 0 ? \"{\\u2026} \" : \"{} \",\n properties(keys)\n ] });\n }\n return /* @__PURE__ */ jsxs(\n \"span\",\n {\n className: \"json-inspector__value json-inspector__value_\" + t.toLowerCase(),\n children: [\n this.format(String(data)),\n this.renderInteractiveLabel(data, !1)\n ]\n }\n );\n }\n renderChildren() {\n const {\n verboseShowOriginal,\n query,\n id: id2,\n isExpanded,\n interactiveLabel,\n onClick,\n getOriginal\n } = this.props, childPrefix = this._rootPath(), data = this.data();\n return this.state.expanded && (isObject(data) || Array.isArray(data)) ? Object.keys(data).map((key) => {\n const value = data[key], shouldGetOriginal = !this.state.original || (verboseShowOriginal ? query : !1);\n return /* @__PURE__ */ jsx(\n Leaf,\n {\n data: value,\n label: key,\n prefix: childPrefix,\n onClick,\n id: id2,\n query,\n getOriginal: shouldGetOriginal ? getOriginal : void 0,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal\n },\n getLeafKey(key, value)\n );\n }) : null;\n }\n renderShowOriginalButton() {\n const { data, getOriginal, query } = this.props;\n return isPrimitive(data) || this.state.original || !getOriginal || !query || query.test(this.keypath()) ? null : /* @__PURE__ */ jsx(\n \"span\",\n {\n className: \"json-inspector__show-original\",\n onClick: this._onShowOriginalClick\n }\n );\n }\n renderInteractiveLabel(originalValue, isKey) {\n const InteractiveLabel = this.props.interactiveLabel;\n return typeof InteractiveLabel == \"function\" ? /* @__PURE__ */ jsx(\n InteractiveLabel,\n {\n value: String(originalValue),\n originalValue,\n isKey,\n keypath: this.keypath()\n }\n ) : null;\n }\n static getDerivedStateFromProps(props, state) {\n return props.query ? {\n expanded: !props.query.test(props.label)\n } : null;\n }\n componentDidUpdate(prevProps) {\n prevProps.query && !this.props.query && this.setState({\n expanded: this._isInitiallyExpanded(this.props)\n });\n }\n _rootPath() {\n return (this.props.prefix || \"\") + \".\" + this.props.label;\n }\n keypath() {\n return this._rootPath().slice(PATH_PREFIX.length);\n }\n data() {\n return this.state.original || this.props.data;\n }\n format(str) {\n return /* @__PURE__ */ jsx(Highlighter, { string: str, highlight: this.props.query });\n }\n getClassName() {\n let cn = \"json-inspector__leaf\";\n return this.props.root && (cn += \" json-inspector__leaf_root\"), this.state.expanded && (cn += \" json-inspector__leaf_expanded\"), isPrimitive(this.props.data) || (cn += \" json-inspector__leaf_composite\"), cn;\n }\n toggle() {\n this.setState({\n expanded: !this.state.expanded\n });\n }\n _onClick(data, e) {\n this.toggle(), this.props.onClick && this.props.onClick(data), e.stopPropagation();\n }\n _onShowOriginalClick = (e) => {\n this.setState({\n original: this.props.getOriginal?.(this.keypath())\n }), e.stopPropagation();\n };\n _isInitiallyExpanded(p) {\n if (p.root)\n return !0;\n const keypath = this.keypath();\n return p.query ? !p.query.test(keypath) && typeof p.getOriginal == \"function\" : p.isExpanded ? p.isExpanded(keypath, p.data) : !1;\n }\n}\nfunction items(count) {\n return count + (count === 1 ? \" item\" : \" items\");\n}\nfunction properties(count) {\n return count + (count === 1 ? \" property\" : \" properties\");\n}\nfunction getLeafKey(key, value) {\n if (isPrimitive(value)) {\n const hash = md5OMatic(String(value));\n return key + \":\" + hash;\n } else\n return key + \"[\" + type(value) + \"]\";\n}\nconst noop = (...args) => {\n}, SearchBar = ({ onChange = noop }) => {\n const onSearchChange = useCallback(\n (evt) => onChange(evt.target.value),\n [onChange]\n );\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n className: \"json-inspector__search\",\n type: \"search\",\n placeholder: \"Search\",\n onChange: onSearchChange\n }\n );\n};\nfunction isEmpty(object) {\n return isObject(object) ? Object.keys(object).length === 0 : Array.isArray(object) ? object.length === 0 : object === null || typeof object != \"string\" || typeof object != \"number\" ? !0 : Object.keys(object).length === 0;\n}\nconst getFilterer = memoize(\n (data, opts) => {\n const options = opts || { cacheResults: !0 }, cache = {};\n return function(query) {\n if (!options.cacheResults)\n return find(data, query, options);\n let subquery;\n if (!cache[query]) {\n for (var i = query.length - 1; i > 0; i -= 1)\n if (subquery = query.slice(0, i), cache[subquery]) {\n cache[query] = find(cache[subquery], query, options);\n break;\n }\n }\n return cache[query] || (cache[query] = find(data, query, options)), cache[query];\n };\n }\n);\nfunction find(data, query, options) {\n return !isObject(data) && !Array.isArray(data) ? {} : Object.keys(data).reduce(function(acc, key) {\n const value = data[key];\n let matches;\n return value ? typeof value != \"object\" ? ((contains(query, key, options) || contains(query, value, options)) && (acc[key] = value), acc) : contains(query, key, options) ? (acc[key] = value, acc) : (matches = find(value, query, options), isEmpty(matches) || Object.assign(acc, pair(key, matches)), acc) : acc;\n }, {});\n}\nfunction contains(query, value, options) {\n if (!value)\n return !1;\n var haystack = String(value), needle = query;\n return options?.ignoreCase && (haystack = haystack.toLowerCase(), needle = needle.toLowerCase()), haystack.indexOf(needle) !== -1;\n}\nfunction pair(key, value) {\n return { [key]: value };\n}\nfunction memoize(fn) {\n let lastData, lastOptions, lastResult;\n return (data, options) => ((!lastResult || data !== lastData || options !== lastOptions) && (lastData = data, lastOptions = options, lastResult = fn(data, options)), lastResult);\n}\nconst PATH_DELIMITER = \".\";\nfunction integer(str) {\n return parseInt(str, 10);\n}\nfunction lens(data, path) {\n var p = path.split(PATH_DELIMITER), segment = p.shift();\n if (!segment)\n return data;\n if (Array.isArray(data) && data[integer(segment)])\n return lens(data[integer(segment)], p.join(PATH_DELIMITER));\n if (isObject(data) && segment in data)\n return lens(data[segment], p.join(PATH_DELIMITER));\n}\nconst defaultValidateQuery = (query) => query.length >= 2, defaultFilterOptions = { cacheResults: !0, ignoreCase: !1 };\nclass JsonInspector extends Component {\n static defaultProps = {\n data: null,\n search: SearchBar,\n searchOptions: {\n debounceTime: 0\n },\n className: \"\",\n id: \"json-\" + Date.now(),\n onClick: noop,\n filterOptions: {\n cacheResults: !0,\n ignoreCase: !1\n },\n validateQuery: function(query) {\n return query.length >= 2;\n },\n /**\n * Decide whether the leaf node at given `keypath` should be expanded initially.\n *\n * @param keypath - Path to the node\n * @param value - Value of the node\n * @returns True if node should be expanded, false otherwise\n */\n isExpanded: function(keypath, value) {\n return !1;\n },\n verboseShowOriginal: !1\n };\n constructor(props) {\n super(props), this.state = {\n query: \"\",\n filterer: getFilterer(props.data, props.filterOptions)\n };\n }\n render() {\n const {\n data: rawData,\n className,\n onClick,\n id: id2,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal,\n filterOptions = defaultFilterOptions,\n validateQuery = defaultValidateQuery\n } = this.props, isQueryValid = this.state.query !== \"\" && validateQuery(this.state.query), data = isQueryValid ? this.state.filterer(this.state.query) : rawData, isNotFound = isQueryValid && isEmpty(data);\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-testid\": \"json-inspector\",\n className: \"json-inspector \" + className,\n children: [\n this.renderToolbar(),\n isNotFound ? /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__not-found\", children: \"Nothing found\" }) : /* @__PURE__ */ jsx(\n Leaf,\n {\n data,\n onClick,\n id: id2,\n getOriginal: this.getOriginal,\n query: isQueryValid ? new RegExp(\n this.state.query,\n filterOptions.ignoreCase ? \"i\" : \"\"\n ) : null,\n label: \"root\",\n root: !0,\n isExpanded,\n interactiveLabel,\n verboseShowOriginal\n }\n )\n ]\n }\n );\n }\n renderToolbar() {\n const Search = this.props.search;\n return Search ? /* @__PURE__ */ jsx(\"div\", { className: \"json-inspector__toolbar\", children: /* @__PURE__ */ jsx(\n Search,\n {\n onChange: debounce(\n this.search,\n this.props.searchOptions?.debounceTime\n ),\n data: this.props.data,\n query: this.state.query\n }\n ) }) : null;\n }\n search = (query) => {\n this.setState({ query });\n };\n static getDerivedStateFromProps(nextProps, prevState) {\n const filterer = getFilterer(nextProps.data, nextProps.filterOptions);\n return filterer === prevState.filterer ? null : { ...prevState, filterer };\n }\n shouldComponentUpdate(nextProps, prevState) {\n return prevState.query !== this.state.query || nextProps.data !== this.props.data || nextProps.onClick !== this.props.onClick;\n }\n createFilterer = (data, options) => {\n this.setState({\n filterer: getFilterer(data, options)\n });\n };\n getOriginal = (path) => lens(this.props.data, path);\n}\nexport {\n JsonInspector\n};\n//# sourceMappingURL=index.js.map\n","import {useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {map} from 'rxjs/operators'\nimport {useKeyValueStore} from 'sanity'\n\nconst STRUCTURE_TOOL_NAMESPACE = 'studio.structure-tool'\n\n/**\n * @internal\n */\nexport function useStructureToolSetting<ValueType>(\n namespace: string,\n key: string | null,\n defaultValue?: ValueType,\n): [ValueType | undefined, (_value: ValueType) => void] {\n const keyValueStore = useKeyValueStore()\n\n const keyValueStoreKey = [STRUCTURE_TOOL_NAMESPACE, namespace, key].filter(Boolean).join('.')\n\n const value$ = useMemo(() => {\n return keyValueStore\n .getKey(keyValueStoreKey)\n .pipe(map((value) => (value === null ? defaultValue : value)))\n }, [defaultValue, keyValueStore, keyValueStoreKey])\n\n const value = useObservable(value$, defaultValue) as ValueType\n const set = useCallback(\n (newValue: ValueType) => {\n if (newValue !== value) {\n keyValueStore.setKey(keyValueStoreKey, newValue as string)\n }\n },\n [keyValueStore, keyValueStoreKey, value],\n )\n\n return useMemo(() => [value, set], [set, value])\n}\n","export const VIEW_MODE_PARSED = {id: 'parsed', title: 'document-inspector.view-mode.parsed'}\nexport const VIEW_MODE_RAW = {id: 'raw', title: 'document-inspector.view-mode.raw-json'}\nexport const VIEW_MODES = [VIEW_MODE_PARSED, VIEW_MODE_RAW]\n","import {type SanityDocumentLike} from '@sanity/types'\nimport LRU from 'quick-lru'\nimport {isRecord, isString} from 'sanity'\n\nconst lru = new LRU({maxSize: 1000})\n\nexport function isExpanded(keyPath: any, value: any): any {\n const cached = lru.get(keyPath)\n\n if (cached === undefined) {\n lru.set(keyPath, Array.isArray(value) || isRecord(value))\n return isExpanded(keyPath, value)\n }\n\n return cached\n}\n\nexport function toggleExpanded(event: any): void {\n const {path} = event\n const current = lru.get(path)\n\n if (current === undefined) {\n // something is wrong\n return\n }\n\n lru.set(path, !current)\n}\n\nexport function selectElement(element: HTMLElement): void {\n const sel = window.getSelection()\n\n if (sel) {\n const range = document.createRange()\n\n sel.removeAllRanges()\n range.selectNodeContents(element)\n sel.addRange(range)\n }\n}\n\nexport function select(event: any): void {\n selectElement(event.currentTarget)\n}\n\nexport function maybeSelectAll(event: any): void {\n const selectAll = event.keyCode === 65 && (event.metaKey || event.ctrlKey)\n\n if (!selectAll) {\n return\n }\n\n event.preventDefault()\n\n selectElement(event.currentTarget)\n}\n\nexport function isDocumentLike(value: unknown): value is SanityDocumentLike {\n return isRecord(value) && isString(value._id) && isString(value._type)\n}\n","import {rem, type Theme} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const JSONInspectorWrapper = styled.div(({theme}: {theme: Theme}) => {\n const {color, fonts, space} = theme.sanity\n\n return css`\n & .json-inspector,\n & .json-inspector .json-inspector__selection {\n font-family: ${fonts.code.family};\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n color: var(--card-code-fg-color);\n }\n\n & .json-inspector .json-inspector__leaf {\n padding-left: ${rem(space[4])};\n }\n\n & .json-inspector .json-inspector__leaf.json-inspector__leaf_root {\n padding-top: ${rem(space[3])};\n padding-left: 0;\n }\n\n & .json-inspector > .json-inspector__leaf_root > .json-inspector__line > .json-inspector__key {\n display: none;\n }\n\n & .json-inspector .json-inspector__line {\n display: block;\n position: relative;\n cursor: default;\n }\n\n & .json-inspector .json-inspector__line::after {\n content: '';\n position: absolute;\n top: 0;\n left: -200px;\n right: -50px;\n bottom: 0;\n z-index: -1;\n pointer-events: none;\n }\n\n & .json-inspector .json-inspector__line:hover::after {\n background: var(--card-code-bg-color);\n }\n\n & .json-inspector .json-inspector__leaf_composite > .json-inspector__line {\n cursor: pointer;\n }\n\n & .json-inspector .json-inspector__leaf_composite > .json-inspector__line::before {\n content: '▸ ';\n margin-left: calc(0 - ${rem(space[4])} + 3px);\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n }\n\n &\n .json-inspector\n .json-inspector__leaf_expanded.json-inspector__leaf_composite\n > .json-inspector__line::before {\n content: '▾ ';\n font-size: ${fonts.code.sizes[1].fontSize}px;\n line-height: ${fonts.code.sizes[1].lineHeight}px;\n }\n\n & .json-inspector .json-inspector__radio,\n & .json-inspector .json-inspector__flatpath {\n display: none;\n }\n\n & .json-inspector .json-inspector__value {\n margin-left: ${rem(space[4] / 2)};\n }\n\n &\n .json-inspector\n > .json-inspector__leaf_root\n > .json-inspector__line\n > .json-inspector__key\n + .json-inspector__value {\n margin: 0;\n }\n\n & .json-inspector .json-inspector__key {\n color: ${color.syntax.property};\n }\n\n & .json-inspector .json-inspector__value_helper,\n & .json-inspector .json-inspector__value_null {\n color: ${color.syntax.constant};\n }\n\n & .json-inspector .json-inspector__not-found {\n padding-top: ${rem(space[3])};\n }\n\n & .json-inspector .json-inspector__value_string {\n color: ${color.syntax.string};\n }\n\n & .json-inspector .json-inspector__value_boolean {\n color: ${color.syntax.boolean};\n }\n\n & .json-inspector .json-inspector__value_number {\n color: ${color.syntax.number};\n }\n\n & .json-inspector .json-inspector__show-original {\n display: inline-block;\n padding: 0 6px;\n cursor: pointer;\n }\n\n & .json-inspector .json-inspector__show-original:hover {\n color: inherit;\n }\n\n & .json-inspector .json-inspector__show-original::before {\n content: '↔';\n }\n\n & .json-inspector .json-inspector__show-original:hover::after {\n content: ' expand';\n }\n `\n})\n","import {SearchIcon} from '@sanity/icons'\nimport {TextInput} from '@sanity/ui'\nimport {type ChangeEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../i18n'\n\nexport function Search(props: {onChange: (q: string) => void; query: string}) {\n const {onChange, query} = props\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value),\n [onChange],\n )\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <TextInput\n icon={SearchIcon}\n onChange={handleChange}\n placeholder={t('document-inspector.search.placeholder')}\n radius={2}\n value={query || ''}\n />\n )\n}\n","import {JsonInspector} from '@rexxars/react-json-inspector'\nimport {type SanityDocument} from '@sanity/types'\nimport {Card, Code, Flex, TabList, TabPanel} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {Translate, useTranslation} from 'sanity'\n\nimport {Dialog, Tab} from '../../../../ui-components'\nimport {DocTitle} from '../../../components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureToolSetting} from '../../../useStructureToolSetting'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {VIEW_MODE_PARSED, VIEW_MODE_RAW, VIEW_MODES} from './constants'\nimport {isDocumentLike, isExpanded, maybeSelectAll, select, toggleExpanded} from './helpers'\nimport {JSONInspectorWrapper} from './InspectDialog.styles'\nimport {Search} from './Search'\n\ninterface InspectDialogProps {\n value: Partial<SanityDocument> | null\n}\n\nexport function InspectDialog(props: InspectDialogProps) {\n const {value} = props\n const {onInspectClose, paneKey} = useDocumentPane()\n const dialogIdPrefix = `${paneKey}_inspect_`\n\n /* this creates a view mode (the default that it opens with is the parsed tab) that is saved based on the paneKey\n where the inspect dialog lives.\n This also means that when a page is loaded, the state of the tabs remains and doesn't revert to the pane tab */\n const [viewModeId, onViewModeChange] = useStructureToolSetting(\n 'inspect-view-mode',\n null,\n 'parsed',\n )\n\n /* based on the view mode it shows the right tab content */\n const viewMode = VIEW_MODES.find((mode) => mode.id === viewModeId)\n\n const setParsedViewMode = useCallback(() => {\n onViewModeChange(VIEW_MODE_PARSED.id)\n }, [onViewModeChange])\n\n const setRawViewMode = useCallback(() => {\n onViewModeChange(VIEW_MODE_RAW.id)\n }, [onViewModeChange])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Dialog\n bodyHeight=\"fill\"\n id={`${dialogIdPrefix}dialog`}\n header={\n isDocumentLike(value) ? (\n <Translate\n t={t}\n i18nKey=\"document-inspector.dialog.title\"\n components={{\n DocumentTitle: () => (\n <em>\n <DocTitle document={value} />\n </em>\n ),\n }}\n />\n ) : (\n <em>{t('document-inspector.dialog.title-no-value')}</em>\n )\n }\n onClose={onInspectClose}\n onClickOutside={onInspectClose}\n padding={false}\n width={2}\n >\n <Flex direction=\"column\" height=\"fill\">\n <Card\n padding={3}\n paddingTop={0}\n shadow={1}\n style={{position: 'sticky', bottom: 0, zIndex: 3}}\n >\n <TabList space={1}>\n <Tab\n aria-controls={`${dialogIdPrefix}tabpanel`}\n id={`${dialogIdPrefix}tab-${VIEW_MODE_PARSED.id}`}\n label={t(VIEW_MODE_PARSED.title)}\n onClick={setParsedViewMode}\n selected={viewMode === VIEW_MODE_PARSED}\n />\n <Tab\n aria-controls={`${dialogIdPrefix}tabpanel`}\n id={`${dialogIdPrefix}tab-${VIEW_MODE_RAW.id}`}\n label={t(VIEW_MODE_RAW.title)}\n onClick={setRawViewMode}\n selected={viewMode === VIEW_MODE_RAW}\n />\n </TabList>\n </Card>\n\n <TabPanel\n aria-labelledby={`${dialogIdPrefix}tab-${viewModeId}`}\n flex={1}\n id={`${dialogIdPrefix}tabpanel`}\n overflow=\"auto\"\n padding={4}\n style={{outline: 'none'}}\n >\n {viewMode === VIEW_MODE_PARSED && (\n <JSONInspectorWrapper>\n <JsonInspector\n data={value}\n isExpanded={isExpanded}\n onClick={toggleExpanded}\n search={Search}\n filterOptions={{ignoreCase: true}}\n />\n </JSONInspectorWrapper>\n )}\n\n {viewMode === VIEW_MODE_RAW && (\n <Code\n language=\"json\"\n tabIndex={0}\n onKeyDown={maybeSelectAll}\n onDoubleClick={select}\n onFocus={select}\n size={1}\n >\n {JSON.stringify(value, null, 2)}\n </Code>\n )}\n </TabPanel>\n </Flex>\n </Dialog>\n )\n}\n","import {Box, type ButtonMode, type ButtonTone, Card, type CardTone, Flex, Text} from '@sanity/ui'\nimport {type ComponentType, type ElementType, type ReactNode} from 'react'\n\nimport {Button} from '../../../../../ui-components'\n\ninterface BannerProps {\n action?: {\n as?: ElementType | keyof React.JSX.IntrinsicElements\n icon?: ComponentType\n onClick?: () => void\n text: string\n tone?: ButtonTone\n disabled?: boolean\n mode?: ButtonMode\n }\n content: ReactNode\n icon?: ComponentType\n tone?: CardTone\n paddingY?: number\n}\n\nexport function Banner(props: BannerProps) {\n const {action, content, icon: Icon, tone = 'transparent', paddingY = 2, ...rest} = props\n\n return (\n <Box padding={1}>\n <Card radius={3} paddingX={2} paddingY={paddingY} tone={tone} {...rest}>\n <Flex align=\"center\" gap={3} paddingX={2}>\n {Icon && (\n <Text size={0}>\n <Icon />\n </Text>\n )}\n\n <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n {content}\n </Flex>\n\n {action && (\n <Button {...action} mode={action.mode || 'ghost'} tone={action.tone || 'default'} />\n )}\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {DocumentRemoveIcon, ReadOnlyIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n isDraftPerspective,\n isPublishedPerspective,\n type ReleaseDocument,\n Translate,\n useDocumentOperation,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeletedDocumentBanners() {\n const {isDeleted, isDeleting, ready} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n if (!ready) return null\n if (\n !isPublishedPerspective(selectedPerspective) &&\n !isDraftPerspective(selectedPerspective) &&\n selectedPerspective.state === 'archived'\n ) {\n return <ArchivedReleaseBanner release={selectedPerspective as ReleaseDocument} />\n }\n if (isDeleted && !isDeleting) return <DeletedDocumentBanner />\n}\n\nfunction DeletedDocumentBanner() {\n const {documentId, documentType} = useDocumentPane()\n const {restore} = useDocumentOperation(documentId, documentType)\n const {navigateIntent} = useRouter()\n\n const handleRestore = useCallback(() => {\n restore.execute('lastRevision')\n navigateIntent('edit', {id: documentId, type: documentType})\n }, [documentId, documentType, navigateIntent, restore])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n return (\n <Banner\n action={{\n onClick: handleRestore,\n text: t('banners.deleted-document-banner.restore-button.text'),\n }}\n content={\n <Text size={1} weight=\"medium\">\n {t('banners.deleted-document-banner.text')}\n </Text>\n }\n data-testid=\"deleted-document-banner\"\n icon={ReadOnlyIcon}\n />\n )\n}\n\nconst ArchivedReleaseBanner = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n\n return (\n <Banner\n tone=\"caution\"\n content={\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banners.deleted-release-banner.text\"\n values={{title: release.metadata?.title || t('release.placeholder-untitled-release')}}\n />\n </Text>\n }\n data-testid=\"deleted-release-banner\"\n icon={DocumentRemoveIcon}\n />\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {isDeprecatedSchemaType, Translate, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function DeprecatedDocumentTypeBanner() {\n const {schemaType} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!isDeprecatedSchemaType(schemaType)) {\n return null\n }\n\n return (\n <Banner\n content={\n <Text size={1} weight=\"medium\">\n <Translate t={t} i18nKey=\"banners.deprecated-document-type-banner.text\" />{' '}\n {schemaType.deprecated.reason}\n </Text>\n }\n data-testid=\"deprecated-document-type-banner\"\n icon={ErrorOutlineIcon}\n />\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/** @internal */\nexport const AskToEditDialogOpened = defineEvent({\n name: 'Ask To Edit Dialog Opened',\n version: 1,\n description: 'User clicked the \"Ask to edit\" button in the document permissions banner',\n})\n\n/** @internal */\nexport const AskToEditRequestSent = defineEvent({\n name: 'Ask To Edit Request Sent',\n version: 1,\n description: 'User sent a role change request from the dialog',\n})\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, DialogProvider, Flex, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useId, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, map, type Observable, of, startWith} from 'rxjs'\nimport {type Role, useClient, useProjectId, useTranslation, useZIndex} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Dialog} from '../../../ui-components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {AskToEditRequestSent} from './__telemetry__/RequestPermissionDialog.telemetry'\nimport {type AccessRequest} from './useRoleRequestsStatus'\n\nconst MAX_NOTE_LENGTH = 150\n\n/** @internal */\nexport const DialogBody = styled(Box)`\n box-sizing: border-box;\n`\n\n/** @internal */\nexport const LoadingContainer = styled(Flex).attrs({\n align: 'center',\n direction: 'column',\n justify: 'center',\n})`\n height: 110px;\n`\n\n/** @internal */\nexport interface RequestPermissionDialogProps {\n onClose?: () => void\n onRequestSubmitted?: () => void\n}\n\n/**\n * A dialog that enables the user to request permission to change their\n * member role from \"Viewer\" to \"Editor\" or \"Admin\" depending on the\n * project's available roles.\n *\n * @internal\n */\nexport function RequestPermissionDialog({\n onClose,\n onRequestSubmitted,\n}: RequestPermissionDialogProps) {\n const {t} = useTranslation(structureLocaleNamespace)\n const telemtry = useTelemetry()\n const dialogId = `request-permissions-${useId()}`\n const projectId = useProjectId()\n const client = useClient({apiVersion: '2024-09-26'})\n const toast = useToast()\n const zOffset = useZIndex()\n\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const [note, setNote] = useState('')\n\n const [msgError, setMsgError] = useState<string | undefined>()\n const [hasTooManyRequests, setHasTooManyRequests] = useState<boolean>(false)\n const [hasBeenDenied, setHasBeenDenied] = useState<boolean>(false)\n\n const requestedRole$: Observable<'administrator' | 'editor'> = useMemo(() => {\n const adminRole = 'administrator' as const\n if (!projectId || !client) return of(adminRole)\n return client.observable\n .request<(Role & {appliesToUsers?: boolean})[]>({url: `/projects/${projectId}/roles`})\n .pipe(\n map((roles) => {\n const hasEditor = roles\n .filter((role) => role?.appliesToUsers)\n .find((role) => role.name === 'editor')\n return hasEditor ? 'editor' : adminRole\n }),\n startWith(adminRole),\n catchError(() => of(adminRole)),\n )\n }, [projectId, client])\n\n const requestedRole = useObservable(requestedRole$)\n\n const onSubmit = () => {\n setIsSubmitting(true)\n client\n .request<AccessRequest | null>({\n url: `/access/project/${projectId}/requests`,\n method: 'post',\n body: {note, requestUrl: window?.location.href, requestedRole, type: 'role'},\n })\n .then((request) => {\n if (request) {\n if (onRequestSubmitted) onRequestSubmitted()\n telemtry.log(AskToEditRequestSent)\n toast.push({title: 'Edit access requested'})\n }\n })\n .catch((err) => {\n const statusCode = err?.response?.statusCode\n const errMessage = err?.response?.body?.message\n if (statusCode === 429) {\n // User is over their cross-project request limit\n setHasTooManyRequests(true)\n setMsgError(errMessage)\n }\n if (statusCode === 409) {\n // If we get a 409, user has been denied on this project or has a valid pending request\n // valid pending request should be handled by GET request above\n setHasBeenDenied(true)\n setMsgError(errMessage)\n } else {\n toast.push({\n title: 'There was a problem submitting your request.',\n status: 'error',\n })\n }\n })\n .finally(() => {\n setIsSubmitting(false)\n })\n }\n\n return (\n <DialogProvider position={'fixed'} zOffset={zOffset.fullscreen}>\n <Dialog\n width={1}\n id={dialogId}\n header={t('request-permission-dialog.header.text')}\n footer={{\n cancelButton: {\n onClick: onClose,\n text: t('confirm-dialog.cancel-button.fallback-text'),\n },\n confirmButton: {\n onClick: onSubmit,\n loading: isSubmitting,\n disabled: hasTooManyRequests || hasBeenDenied,\n text: t('request-permission-dialog.confirm-button.text'),\n tone: 'primary',\n type: 'submit',\n },\n }}\n onClose={onClose}\n onClickOutside={onClose}\n >\n <DialogBody>\n <Stack space={4}>\n <Text>{t('request-permission-dialog.description.text')}</Text>\n {hasTooManyRequests || hasBeenDenied ? (\n <Card tone={'caution'} padding={3} radius={2} shadow={1}>\n <Text size={1}>\n {hasTooManyRequests && (\n <>{msgError ?? t('request-permission-dialog.warning.limit-reached.text')}</>\n )}\n {hasBeenDenied && (\n <>{msgError ?? t('request-permission-dialog.warning.denied.text')}</>\n )}\n </Text>\n </Card>\n ) : (\n <Stack space={3} paddingBottom={0}>\n <TextInput\n placeholder={t('request-permission-dialog.note-input.placeholder.text')}\n disabled={isSubmitting}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onSubmit()\n }}\n maxLength={MAX_NOTE_LENGTH}\n value={note}\n onChange={(e) => {\n setNote(e.currentTarget.value)\n }}\n />\n\n <Text align=\"right\" muted size={1}>{`${note.length}/${MAX_NOTE_LENGTH}`}</Text>\n </Stack>\n )}\n </Stack>\n </DialogBody>\n </Dialog>\n </DialogProvider>\n )\n}\n","import {addWeeks, isAfter, isBefore} from 'date-fns'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\nimport {catchError, map, startWith} from 'rxjs/operators'\nimport {type SanityClient, useClient, useProjectId} from 'sanity'\n\n/** @internal */\nexport interface AccessRequest {\n id: string\n status: 'pending' | 'accepted' | 'declined'\n resourceId: string\n resourceType: 'project'\n createdAt: string\n updatedAt: string\n updatedByUserId: string\n requestedByUserId: string\n requestedRole: string\n type: 'access' | 'role'\n note: string\n}\n\nconst LOADING_STATE = {loading: true, error: false, status: undefined}\nconst EMPTY_STATE = {loading: false, error: false, status: 'none'}\nconst DECLINED_STATE = {loading: false, error: false, status: 'declined'}\nconst PENDING_STATE = {loading: false, error: false, status: 'pending'}\nconst EXPIRED_STATE = {loading: false, error: false, status: 'expired'}\n\n/** @internal */\nexport const useRoleRequestsStatus = () => {\n const client = useClient({apiVersion: '2024-07-01'})\n const projectId = useProjectId()\n\n const checkRoleRequests$ = useMemo(() => {\n if (!client || !projectId) {\n return of(EMPTY_STATE)\n }\n\n return checkRoleRequests(client, projectId)\n }, [client, projectId])\n\n const {loading, error, status} = useObservable(checkRoleRequests$, LOADING_STATE)\n return {data: status, loading, error}\n}\n\nfunction checkRoleRequests(client: SanityClient, projectId: string) {\n return client.observable\n .request<AccessRequest[] | null>({\n url: '/access/requests/me',\n tag: 'use-role-requests-status',\n })\n .pipe(\n map((requests) => {\n if (!requests || requests.length === 0) {\n return EMPTY_STATE\n }\n\n // Filter requests for the specific project and where type is 'role'\n const projectRequests = requests.filter(\n (request) => request.resourceId === projectId && request.type === 'role',\n )\n\n const declinedRequest = projectRequests.find((request) => request.status === 'declined')\n if (\n declinedRequest &&\n isAfter(addWeeks(new Date(declinedRequest.createdAt), 2), new Date())\n ) {\n return DECLINED_STATE\n }\n\n const pendingRequest = projectRequests.find(\n (request) =>\n request.status === 'pending' &&\n isAfter(addWeeks(new Date(request.createdAt), 2), new Date()),\n )\n if (pendingRequest) {\n return PENDING_STATE\n }\n\n const oldPendingRequest = projectRequests.find(\n (request) =>\n request.status === 'pending' &&\n isBefore(addWeeks(new Date(request.createdAt), 2), new Date()),\n )\n\n return oldPendingRequest ? EXPIRED_STATE : EMPTY_STATE\n }),\n catchError((err) => {\n console.error('Failed to fetch access requests', err)\n return of({loading: false, error: true, status: undefined})\n }),\n startWith(LOADING_STATE), // Start with loading state\n )\n}\n","import {ReadOnlyIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {Translate, useCurrentUser, useListFormat, useTranslation} from 'sanity'\n\nimport {\n RequestPermissionDialog,\n useRoleRequestsStatus,\n} from '../../../../components/requestPermissionDialog'\nimport {AskToEditDialogOpened} from '../../../../components/requestPermissionDialog/__telemetry__/RequestPermissionDialog.telemetry'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\ninterface InsufficientPermissionBannerProps {\n requiredPermission: 'update' | 'create'\n}\n\nexport function InsufficientPermissionBanner({\n requiredPermission,\n}: InsufficientPermissionBannerProps) {\n const currentUser = useCurrentUser()\n\n const {\n data: roleRequestStatus,\n loading: requestStatusLoading,\n error: requestStatusError,\n } = useRoleRequestsStatus()\n const [requestSent, setRequestSent] = useState(false)\n const requestPending = useMemo(\n () => roleRequestStatus === 'pending' || roleRequestStatus === 'declined' || requestSent,\n [roleRequestStatus, requestSent],\n )\n const currentUserRoles = currentUser?.roles || []\n const isOnlyViewer = currentUserRoles.length === 1 && currentUserRoles[0].name === 'viewer'\n const [showRequestPermissionDialog, setShowRequestPermissionDialog] = useState(false)\n\n const listFormat = useListFormat({style: 'short'})\n const {t} = useTranslation(structureLocaleNamespace)\n const telemetry = useTelemetry()\n\n const roleTitles = currentUserRoles.map((role) => role.title)\n const roles = listFormat\n .formatToParts(roleTitles)\n .map((part) =>\n part.type === 'element' ? <code key={part.value}>{part.value}</code> : part.value,\n )\n\n return (\n <>\n <Banner\n content={\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banners.permission-check-banner.missing-permission\"\n components={{Roles: () => <>{roles}</>}}\n values={{count: roles.length, roles: roleTitles}}\n context={requiredPermission}\n />\n </Text>\n }\n action={\n isOnlyViewer && roleRequestStatus && !requestStatusError && !requestStatusLoading\n ? {\n onClick: requestPending\n ? undefined\n : () => {\n setShowRequestPermissionDialog(true)\n telemetry.log(AskToEditDialogOpened)\n },\n text: requestPending\n ? t('banners.permission-check-banner.request-permission-button.sent')\n : t('banners.permission-check-banner.request-permission-button.text'),\n tone: requestPending ? 'default' : 'primary',\n disabled: requestPending,\n mode: requestPending ? 'bleed' : undefined,\n }\n : undefined\n }\n data-testid=\"permission-check-banner\"\n icon={ReadOnlyIcon}\n />\n {showRequestPermissionDialog && (\n <RequestPermissionDialog\n onClose={() => setShowRequestPermissionDialog(false)}\n onRequestSubmitted={() => {\n setRequestSent(true)\n setShowRequestPermissionDialog(false)\n }}\n />\n )}\n </>\n )\n}\n","import {CloseIcon, SyncIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {type KeyedSegment, type Reference} from '@sanity/types'\nimport {Text} from '@sanity/ui'\nimport {fromString as pathFromString, get as pathGet} from '@sanity/util/paths'\nimport {memo, useCallback, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, type Observable, of} from 'rxjs'\nimport {debounceTime, map} from 'rxjs/operators'\nimport {\n type DocumentAvailability,\n getPublishedId,\n useDocumentPreviewStore,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {type RouterPaneGroup} from '../../../../types'\nimport {Banner} from './Banner'\n\ninterface ParentReferenceInfo {\n loading: boolean\n result?: {\n availability: {\n draft: DocumentAvailability\n published: DocumentAvailability\n version?: DocumentAvailability\n }\n refValue: string | undefined\n }\n}\n\nexport const ReferenceChangedBanner = memo(() => {\n const documentPreviewStore = useDocumentPreviewStore()\n const {selectedReleaseId} = usePerspective()\n const {params, groupIndex, routerPanesState, replaceCurrent, BackLink} = usePaneRouter()\n const routerReferenceId = routerPanesState[groupIndex]?.[0].id\n const parentGroup = routerPanesState[groupIndex - 1] as RouterPaneGroup | undefined\n const parentSibling = parentGroup?.[0]\n const parentId = parentSibling?.id\n const hasHistoryOpen = Boolean(parentSibling?.params?.rev)\n const parentRefPath = useMemo(() => {\n return (params?.parentRefPath && pathFromString(params.parentRefPath)) || null\n }, [params?.parentRefPath])\n const {t} = useTranslation(structureLocaleNamespace)\n\n /**\n * Loads information regarding the reference field of the parent pane. This\n * is only applicable to child references (aka references-in-place).\n *\n * It utilizes the pane ID of the parent pane (which is a document ID) along\n * with the `parentRefPath` router param on the current pane to find the\n * current value of the reference field on the parent document.\n *\n * This is used to compare with the current pane's document ID. If the IDs\n * don't match then this banner should reveal itself\n */\n const referenceInfoObservable = useMemo((): Observable<ParentReferenceInfo> => {\n const parentRefPathSegment = parentRefPath?.[0] as string | undefined\n\n // short-circuit: this document pane is not a child reference pane\n if (!parentId || !parentRefPathSegment || !parentRefPath) {\n return of({loading: false})\n }\n\n const publishedId = getPublishedId(parentId)\n const path = pathFromString(parentRefPathSegment)\n\n // note: observePaths doesn't support keyed path segments, so we need to select the nearest parent\n const keyedSegmentIndex = path.findIndex(\n (p): p is KeyedSegment => typeof p == 'object' && '_key' in p,\n )\n\n return concat(\n // emit a loading state instantly\n of({loading: true}),\n // then emit the values from watching the published ID's path\n documentPreviewStore\n .unstable_observePathsDocumentPair(\n publishedId,\n (keyedSegmentIndex === -1 ? path : path.slice(0, keyedSegmentIndex)) as string[][],\n {\n version: selectedReleaseId,\n },\n )\n .pipe(\n // this debounce time is needed to prevent flashing banners due to\n // the router state updating faster than the content-lake state. we\n // debounce to wait for more emissions because the value pulled\n // initially could be stale.\n debounceTime(750),\n map(\n ({draft, published, version}): ParentReferenceInfo => ({\n loading: false,\n result: {\n availability: {\n draft: draft.availability,\n published: published.availability,\n ...(version?.availability\n ? {\n version: version.availability,\n }\n : {}),\n },\n refValue: pathGet<Reference>(\n version?.snapshot || draft.snapshot || published.snapshot,\n parentRefPath,\n )?._ref,\n },\n }),\n ),\n ),\n )\n }, [selectedReleaseId, documentPreviewStore, parentId, parentRefPath])\n const referenceInfo = useObservable(referenceInfoObservable, {loading: true})\n\n const handleReloadReference = useCallback(() => {\n if (referenceInfo.loading) return\n\n if (referenceInfo.result?.refValue) {\n replaceCurrent({\n id: referenceInfo.result.refValue,\n params: params as Record<string, string>,\n })\n }\n }, [referenceInfo.loading, referenceInfo.result, replaceCurrent, params])\n\n const shouldHide =\n // if `parentId` or `parentRefPath` is not present then this banner is n/a\n !parentId ||\n !parentRefPath ||\n // if viewing this pane via history, then hide\n hasHistoryOpen ||\n // if loading, hide\n referenceInfo.loading ||\n // if the parent document is not available (e.g. due to permission denied or\n // not found) we don't want to display a warning here, but instead rely on the\n // parent view to display the appropriate message\n (!referenceInfo.result?.availability.draft.available &&\n !referenceInfo.result?.availability.published.available) ||\n // if the references are the same, then hide the reference changed banner\n referenceInfo.result?.refValue === routerReferenceId\n\n if (shouldHide) return null\n\n return (\n <Banner\n action={\n referenceInfo.result?.refValue\n ? {\n onClick: handleReloadReference,\n icon: SyncIcon,\n text: t('banners.reference-changed-banner.reason-changed.reload-button.text'),\n }\n : {\n as: BackLink,\n icon: CloseIcon,\n text: t('banners.reference-changed-banner.reason-removed.close-button.text'),\n }\n }\n data-testid=\"reference-changed-banner\"\n content={\n <Text size={1} weight=\"medium\">\n {referenceInfo.result?.refValue\n ? t('banners.reference-changed-banner.reason-changed.text')\n : t('banners.reference-changed-banner.reason-removed.text')}\n </Text>\n }\n icon={WarningOutlineIcon}\n tone=\"caution\"\n />\n )\n})\n\nReferenceChangedBanner.displayName = 'Memo(ReferenceChangedBanner)'\n","import {Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getVersionInlineBadge,\n Translate,\n useArchivedReleases,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\nexport function ArchivedReleaseDocumentBanner(): React.JSX.Element {\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const {data: archivedReleases} = useArchivedReleases()\n\n const {params, setParams} = usePaneRouter()\n const handleGoBack = () => {\n setParams({\n ...params,\n rev: params?.historyEvent || undefined,\n since: undefined,\n historyVersion: undefined,\n })\n }\n\n const release = useMemo(() => {\n return archivedReleases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === params?.historyVersion,\n )\n }, [archivedReleases, params?.historyVersion])\n\n const description =\n release?.state === 'published'\n ? 'banners.published-release.description'\n : 'banners.archived-release.description'\n\n const title = release?.metadata.title || tCore('release.placeholder-untitled-release')\n\n return (\n <Banner\n tone=\"caution\"\n content={\n <Text size={1}>\n <Translate\n t={t}\n i18nKey={description}\n values={{\n title,\n }}\n components={{\n VersionBadge: getVersionInlineBadge(release),\n }}\n />\n </Text>\n }\n action={\n params?.archivedRelease\n ? undefined\n : {\n text: 'Go back to published version',\n onClick: handleGoBack,\n }\n }\n />\n )\n}\n","import {ComposeSparklesIcon, InfoOutlineIcon, LaunchIcon} from '@sanity/icons'\nimport {Box, Card, Container, Flex, Heading, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {\n getDocumentVariantType,\n useCanvasCompanionDoc,\n useNavigateToCanvasDoc,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../ui-components'\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nconst Image = styled.img`\n object-fit: cover;\n width: 100%;\n height: 100%;\n height: 180px;\n display: flex;\n`\nconst CANVAS_IMAGE_URL =\n 'https://cdn.sanity.io/images/pyrmmpch/production/b47224e2f3a7d1747e43b9da1ac31739250e628b-632x376.png'\n\nconst CANVAS_APP_NAME = 'Canvas'\nconst CanvasPopoverContent = ({onClose}: {onClose: () => void}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const ref = useRef<HTMLDivElement | null>(null)\n useClickOutsideEvent(onClose, () => [ref.current])\n\n return (\n <Card radius={3} overflow={'hidden'} width={0} ref={ref}>\n <Container width={0}>\n <Image src={CANVAS_IMAGE_URL} alt={'Canvas'} />\n <Flex paddingX={4} paddingBottom={4} paddingTop={3} direction={'column'}>\n <Flex paddingY={1} gap={2}>\n <Text size={1} weight=\"semibold\">\n {CANVAS_APP_NAME}\n </Text>\n <Text size={1} muted>\n <ComposeSparklesIcon />\n </Text>\n </Flex>\n <Box paddingTop={3}>\n <Heading size={1}>{t('canvas.banner.popover-heading')}</Heading>\n </Box>\n <Box paddingTop={4}>\n <Text size={1}>{t('canvas.banner.popover-description')}</Text>\n </Box>\n </Flex>\n <Flex width=\"full\" gap={3} justify=\"flex-end\" paddingX={4} paddingBottom={4}>\n <Button\n mode=\"bleed\"\n text={t('canvas.banner.popover-button-text')}\n autoFocus\n tone=\"primary\"\n href=\"https://snty.link/canvas-docs\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n as=\"a\"\n iconRight={LaunchIcon}\n />\n </Flex>\n </Container>\n </Card>\n )\n}\nconst CanvasLinkedBannerContent = ({documentId}: {documentId: string}) => {\n const {t} = useTranslation(structureLocaleNamespace)\n const [open, setOpen] = useState(false)\n const documentVariantType = getDocumentVariantType(documentId)\n const variantText = useMemo(() => {\n if (documentVariantType === 'published') return t('canvas.banner.linked-text.published')\n if (documentVariantType === 'draft') return t('canvas.banner.linked-text.draft')\n return t('canvas.banner.linked-text.version')\n }, [documentVariantType, t])\n\n const togglePopover = useCallback(() => setOpen((prev) => !prev), [])\n const onClose = useCallback(() => setOpen(false), [])\n return (\n <Flex align={'center'} gap={2}>\n <Text size={1} weight=\"medium\">\n {variantText}\n </Text>\n <Popover\n open={open}\n size={0}\n tone=\"default\"\n portal\n placement=\"bottom-start\"\n content={<CanvasPopoverContent onClose={onClose} />}\n >\n <Button\n tooltipProps={null}\n mode=\"bleed\"\n tone=\"default\"\n icon={InfoOutlineIcon}\n onClick={togglePopover}\n />\n </Popover>\n </Flex>\n )\n}\n\nexport function CanvasLinkedBanner() {\n const {documentId, displayed} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n const id = displayed?._id || documentId\n const {companionDoc} = useCanvasCompanionDoc(id)\n const navigateToCanvas = useNavigateToCanvasDoc(companionDoc?.canvasDocumentId, 'banner')\n\n if (!companionDoc) return null\n\n return (\n <Banner\n tone=\"neutral\"\n data-test-id=\"canvas-linked-banner\"\n paddingY={0}\n content={<CanvasLinkedBannerContent documentId={id} />}\n action={{\n mode: 'ghost',\n text: t('canvas.banner.edit-in-canvas-action'),\n onClick: navigateToCanvas,\n }}\n />\n )\n}\n","import {getSanityCreateLinkMetadata, useSanityCreateConfig} from 'sanity'\n\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function CreateLinkedBanner() {\n const {value} = useDocumentPane()\n const {documentLinkedBannerContent: CreateLinkedBannerContent} =\n useSanityCreateConfig().components ?? {}\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n\n if (!CreateLinkedBannerContent || !createLinkMetadata) return null\n\n return (\n <Banner\n tone=\"transparent\"\n data-test-id=\"sanity-create-read-only-banner\"\n content={<CreateLinkedBannerContent metadata={createLinkMetadata} />}\n />\n )\n}\n","import {Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionInlineBadge,\n LATEST,\n type ReleaseDocument,\n Translate,\n useConditionalToast,\n useTranslation,\n useVersionOperations,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\n// How long to wait after user hit the \"Add to release\"-button before displaying the \"waiting…\" toast\nconst TOAST_DELAY = 1000\n\ntype VersionCreateState = {\n status: 'creating' | 'created'\n lastUpdate: Date\n}\n\nexport function DocumentNotInReleaseBanner({\n documentId,\n currentRelease,\n value,\n isScheduledRelease,\n}: {\n documentId: string\n currentRelease: ReleaseDocument\n value?: Record<string, unknown>\n isScheduledRelease?: boolean\n}): React.JSX.Element {\n const tone = getReleaseTone(currentRelease ?? LATEST)\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const {createVersion} = useVersionOperations()\n\n const [versionCreateState, setVersionCreateState] = useState<VersionCreateState | undefined>()\n const toast = useToast()\n const handleAddToRelease = useCallback(async () => {\n if (currentRelease._id) {\n setVersionCreateState({status: 'creating', lastUpdate: new Date()})\n try {\n await createVersion(\n getReleaseIdFromReleaseDocumentId(currentRelease._id),\n documentId,\n value,\n )\n setVersionCreateState({status: 'created', lastUpdate: new Date()})\n } catch (err) {\n toast.push({\n status: 'error',\n closable: true,\n title: t('banners.release.error.title'),\n description: t('banners.release.error.description', {message: err.message}),\n })\n // Note: we only want to reset pending state in case of failure, not unconditionally the request completes (i.e. in a finally clause)\n // this is because the UI won't reflect that the document was successfully added to the release until we get the result back over the listener\n // once the listener event that adds the document to the release arrives the UI knows that a version exists,\n // and this banner will not be rendered anymore\n setVersionCreateState(undefined)\n }\n }\n }, [createVersion, currentRelease._id, documentId, t, toast, value])\n\n const now = useCurrentTime(200)\n\n useConditionalToast({\n status: 'info',\n id: 'add-document-to-release',\n enabled: Boolean(\n versionCreateState?.status === 'created' &&\n now.getTime() - versionCreateState.lastUpdate.getTime() > TOAST_DELAY,\n ),\n closable: true,\n title: t('banners.release.waiting.title'),\n description: t('banners.release.waiting.description'),\n })\n\n return (\n <Banner\n tone={tone}\n content={\n <Text size={1}>\n <Translate\n i18nKey=\"banners.release.not-in-release\"\n t={t}\n values={{\n title:\n currentRelease?.metadata?.title || tCore('release.placeholder-untitled-release'),\n }}\n components={{\n VersionBadge: getVersionInlineBadge(currentRelease),\n }}\n />\n </Text>\n }\n // Adding to a scheduled release is not allowed\n action={\n isScheduledRelease\n ? undefined\n : {\n text: t('banners.release.action.add-to-release'),\n tone: tone,\n disabled: Boolean(versionCreateState),\n onClick: handleAddToRelease,\n mode: 'default',\n }\n }\n />\n )\n}\n\nfunction useCurrentTime(updateIntervalMs: number): Date {\n const [currentTime, setCurrentTime] = useState(new Date())\n useEffect(() => {\n const intervalId = setInterval(() => {\n setCurrentTime(new Date())\n }, updateIntervalMs)\n return () => clearInterval(intervalId)\n }, [updateIntervalMs])\n return currentTime\n}\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface TypeInfo {\n liveEditResolveType: 'publish' | 'discard'\n}\n\n/**\n * When a draft in a live edit document is published\n * @internal\n */\nexport const ResolvedLiveEdit = defineEvent<TypeInfo>({\n name: 'LiveEdit Draft Resolved',\n version: 1,\n description: 'User resolved a draft of a live edit document to continue editing',\n})\n","import {type SanityDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\nimport {type ObjectSchemaType, Translate, useDocumentOperation, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {ResolvedLiveEdit} from './__telemetry__/DraftLiveEditBanner.telemetry'\nimport {Banner} from './Banner'\n\ninterface DraftLiveEditBannerProps {\n displayed: Partial<SanityDocument> | null\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function DraftLiveEditBanner({\n displayed,\n documentId,\n schemaType,\n}: DraftLiveEditBannerProps): React.JSX.Element | null {\n const {t} = useTranslation(structureLocaleNamespace)\n const [isPublishing, setPublishing] = useState(false)\n const [isDiscarding, setDiscarding] = useState(false)\n const telemetry = useTelemetry()\n\n const {publish, discardChanges} = useDocumentOperation(documentId, displayed?._type || '')\n\n const handlePublish = useCallback(() => {\n publish.execute()\n setPublishing(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'publish'})\n }, [publish, telemetry])\n\n const handleDiscard = useCallback(() => {\n discardChanges.execute()\n setDiscarding(true)\n telemetry.log(ResolvedLiveEdit, {liveEditResolveType: 'discard'})\n }, [discardChanges, telemetry])\n\n useEffect(() => {\n return () => {\n setPublishing(false)\n setDiscarding(false)\n }\n })\n\n return (\n <Banner\n content={\n <Flex align=\"center\" justify=\"space-between\" gap={2}>\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey={'banners.live-edit-draft-banner.text'}\n values={{schemaType: schemaType.title}}\n />\n </Text>\n\n <Button\n onClick={handlePublish}\n text={t('action.publish.live-edit.label')}\n tooltipProps={{content: t('banners.live-edit-draft-banner.publish.tooltip')}}\n loading={isPublishing}\n />\n\n <Button\n onClick={handleDiscard}\n text={t('banners.live-edit-draft-banner.discard.tooltip')}\n tooltipProps={{content: t('banners.live-edit-draft-banner.discard.tooltip')}}\n loading={isDiscarding}\n />\n </Flex>\n }\n data-testid=\"live-edit-type-banner\"\n icon={ErrorOutlineIcon}\n />\n )\n}\n","import {Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isVersionId,\n Translate,\n useActiveReleases,\n useDocumentVersions,\n useOnlyHasVersions,\n useSetPerspective,\n useTranslation,\n VersionInlineBadge,\n} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {Banner} from './Banner'\n\nexport function OpenReleaseToEditBanner({\n documentId,\n isPinnedDraftOrPublished,\n}: {\n documentId: string\n isPinnedDraftOrPublished: boolean\n}): React.JSX.Element | null {\n const onlyHasVersions = useOnlyHasVersions({documentId})\n\n /** this banner should only be rendered in specific cases\n * 1. when the document is not a draft or published\n * 2. when the document only has version or versions\n * 3. when the global perspective is not set (published or draft)\n */\n\n if (!isVersionId(documentId)) {\n return null\n }\n\n if (!onlyHasVersions || !isPinnedDraftOrPublished) {\n return null\n }\n\n return <OpenReleaseToEditBannerInner documentId={documentId} />\n}\n\nexport function OpenReleaseToEditBannerInner({\n documentId,\n}: {\n documentId: string\n}): React.JSX.Element {\n const {data: activeReleases} = useActiveReleases()\n const setPerspective = useSetPerspective()\n const releaseId = getVersionFromId(documentId) ?? ''\n const currentVersion = useMemo(\n () => activeReleases.find((version) => version._id.includes(releaseId)),\n [activeReleases, releaseId],\n )\n const {t: tCore} = useTranslation()\n\n const {data: documentVersions} = useDocumentVersions({documentId})\n\n const documentVersionsTitleList = useMemo(\n () =>\n activeReleases\n .filter((version) => {\n return documentVersions.find((release) => {\n const r = getVersionFromId(release) ?? ''\n return getReleaseIdFromReleaseDocumentId(version._id) === r\n })\n })\n .map((version) => version.metadata.title || tCore('release.placeholder-untitled-release')),\n [activeReleases, documentVersions, tCore],\n )\n const tone = currentVersion && getReleaseTone(currentVersion)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleGoToEdit = useCallback(async () => {\n setPerspective(releaseId)\n }, [releaseId, setPerspective])\n\n return (\n <Banner\n tone={tone}\n paddingY={0}\n data-testid=\"open-release-to-edit-banner\"\n content={\n <Flex direction={'row'} align=\"center\" justify=\"space-between\" flex={1}>\n <Text size={1}>\n <Flex direction={'row'} gap={1}>\n {documentVersionsTitleList.length > 1 ? (\n <Translate\n t={t}\n i18nKey=\"banners.release.navigate-to-edit-description-multiple\"\n components={{\n VersionBadge: () => (\n <VersionInlineBadge> {documentVersionsTitleList[0]}</VersionInlineBadge>\n ),\n }}\n values={{count: documentVersionsTitleList.length - 1}}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"banners.release.navigate-to-edit-description-single\"\n components={{\n VersionBadge: () => (\n <VersionInlineBadge> {documentVersionsTitleList[0]}</VersionInlineBadge>\n ),\n }}\n />\n )}\n </Flex>\n </Text>\n\n <Button\n text={t('banners.release.action.open-to-edit')}\n tone={tone}\n onClick={handleGoToEdit}\n />\n </Flex>\n }\n />\n )\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function RevisionNotFoundBanner() {\n const {revisionNotFound} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (!revisionNotFound) return null\n\n return (\n <Banner\n tone=\"caution\"\n data-test-id=\"revision-not-found-banner\"\n icon={WarningOutlineIcon}\n content={<Text size={1}>{t('banners.revision-not-found.description')}</Text>}\n />\n )\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseTone,\n LATEST,\n type ReleaseDocument,\n Translate,\n useTranslation,\n} from 'sanity'\n\nimport {Banner} from './Banner'\n\nexport function ScheduledReleaseBanner({\n currentRelease,\n}: {\n currentRelease: ReleaseDocument\n}): React.JSX.Element {\n const tone = getReleaseTone(currentRelease ?? LATEST)\n\n const {t: tCore} = useTranslation()\n\n return (\n <Banner\n tone={tone}\n icon={LockIcon}\n content={\n <Text size={1}>\n <Translate\n t={tCore}\n i18nKey=\"release.banner.scheduled-for-publishing-on\"\n values={{\n date: formatRelativeLocalePublishDate(currentRelease),\n }}\n />\n </Text>\n }\n />\n )\n}\n","import {UnpublishIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {\n getVersionInlineBadge,\n isGoingToUnpublish,\n isReleaseDocument,\n Translate,\n usePerspective,\n useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {Banner} from './Banner'\n\nexport function UnpublishedDocumentBanner() {\n const {value} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n const willBeUnpublished = isGoingToUnpublish(value)\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n if (isReleaseDocument(selectedPerspective) && willBeUnpublished) {\n const title =\n selectedPerspective.metadata?.title || tCore('release.placeholder-untitled-release')\n\n return (\n <Banner\n tone=\"critical\"\n content={\n <Text size={1}>\n <Translate\n t={t}\n i18nKey=\"banners.unpublished-release-banner.text\"\n values={{\n title,\n }}\n components={{\n VersionBadge: getVersionInlineBadge(selectedPerspective),\n }}\n />\n </Text>\n }\n icon={UnpublishIcon}\n />\n )\n }\n return null\n}\n","import {InfoOutlineIcon} from '@sanity/icons'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Heading, Inline, Stack, Text} from '@sanity/ui'\nimport {useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\ninterface DocumentHeaderProps {\n documentId: string\n schemaType: ObjectSchemaType\n title?: string\n}\n\n/**\n * Use CSS container queries to conditionally render headings at different sizes.\n * We hide this entire container (including the document type) if container queries\n * not supported in the current browser.\n *\n * Note that usage of container queries in `styled-components` is only supported in `6.x`.\n * As such, studios that include `\"styled-components\": \"<6\"` as a dependency will only see\n * the largest heading size here, even if their browser supports it!\n */\n\nexport const TitleContainer = styled(Stack)`\n ${({theme}) => {\n return css`\n @supports not (container-type: inline-size) {\n display: none !important;\n }\n\n container-type: inline-size;\n\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[4].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[4].lineHeight}px;\n overflow-wrap: break-word;\n text-wrap: pretty;\n }\n\n @container (max-width: 560px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[3].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[3].lineHeight}px;\n }\n }\n\n @container (max-width: 420px) {\n [data-heading] {\n font-size: ${theme.sanity.fonts.heading.sizes[2].fontSize}px;\n line-height: ${theme.sanity.fonts.heading.sizes[2].lineHeight}px;\n }\n }\n `\n }}\n`\n\n/**\n * Header containing current document title and type.\n * Document type is hidden if the document `_id` matches the current document `_type`.\n * The entire header is hidden if container queries are not supported.\n */\nexport const FormHeader = ({documentId, schemaType, title}: DocumentHeaderProps) => {\n const isSingleton = documentId === schemaType.name\n const description = schemaType.description\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (schemaType.__experimental_formPreviewTitle === false) {\n return null\n }\n return (\n <TitleContainer marginBottom={6} space={4}>\n {!isSingleton && (\n <Inline space={1}>\n <Text muted size={1}>\n {schemaType.title ?? schemaType.name}\n </Text>\n {description && (\n <Tooltip content={description} placement=\"right\">\n <InfoOutlineIcon data-testid=\"schema-description-icon\" />\n </Tooltip>\n )}\n </Inline>\n )}\n <Heading as=\"h2\" data-heading muted={!title} data-testid=\"document-panel-document-title\">\n {title ?? t('document-view.form-view.form-title-fallback')}\n </Heading>\n </TitleContainer>\n )\n}\n","/* eslint-disable no-nested-ternary */\nimport {Box, Container, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport {type FormEvent, forwardRef, useCallback, useEffect, useMemo, useState} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n type DocumentMutationEvent,\n type DocumentRebaseEvent,\n FormBuilder,\n type FormDocumentValue,\n fromMutationPatches,\n type PatchMsg,\n PresenceOverlay,\n useConditionalToast,\n useDocumentPresence,\n useDocumentStore,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {Delay} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {useDocumentTitle} from '../../useDocumentTitle'\nimport {FormHeader} from './FormHeader'\n\ninterface FormViewProps {\n hidden: boolean\n margins: [number, number, number, number]\n}\n\nconst preventDefault = (ev: FormEvent) => ev.preventDefault()\n\nexport const FormView = forwardRef<HTMLDivElement, FormViewProps>(function FormView(props, ref) {\n const {hidden, margins} = props\n\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n editState,\n documentId,\n documentType,\n fieldActions,\n onChange,\n validation,\n ready,\n formState,\n onFocus,\n connectionState,\n onBlur,\n onSetCollapsedPath,\n onPathOpen,\n onSetCollapsedFieldSet,\n onSetActiveFieldGroup,\n openPath,\n } = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n const {title} = useDocumentTitle()\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const [patchChannel] = useState(() => createPatchChannel())\n\n const isLocked = editState?.transactionSyncLock?.enabled\n const {t} = useTranslation(structureLocaleNamespace)\n\n const conditionalToastParams = useMemo(\n () => ({\n id: `sync-lock`,\n status: 'warning' as const,\n enabled: isLocked,\n title: t('document-view.form-view.sync-lock-toast.title'),\n description: t('document-view.form-view.sync-lock-toast.description'),\n closable: true,\n }),\n [isLocked, t],\n )\n\n useConditionalToast(conditionalToastParams)\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType, selectedReleaseId)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n }),\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel, selectedReleaseId])\n\n const hasRev = Boolean(value?._rev)\n const handleInitialValue = useEffectEvent(() => {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n })\n useEffect(() => {\n if (hasRev) {\n handleInitialValue()\n }\n // React to changes in hasRev only\n }, [hasRev])\n\n const [formRef, setFormRef] = useState<null | HTMLDivElement>(null)\n\n // We only want to run it on first mount\n const [focusedFirstDescendant, setFocusedFirstDescendant] = useState(false)\n useEffect(() => {\n // Only focus on the first descendant if there is not already a focus path\n // This is to avoid stealing focus from intent links\n if (!focusedFirstDescendant && ready && !formState?.focusPath.length && formRef) {\n setFocusedFirstDescendant(true)\n focusFirstDescendant(formRef)\n }\n }, [focusedFirstDescendant, formRef, formState?.focusPath.length, ready])\n\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n setFormRef(node)\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref],\n )\n\n const isReadOnly = connectionState === 'reconnecting' || formState?.readOnly || !editState?.ready\n\n return (\n <Container\n hidden={hidden}\n paddingX={4}\n paddingTop={5}\n paddingBottom={9}\n sizing=\"border\"\n width={1}\n >\n <PresenceOverlay margins={margins}>\n <Box\n as=\"form\"\n onSubmit={preventDefault}\n ref={setRef}\n data-testid=\"form-view\"\n data-read-only={isReadOnly ? 'true' : undefined}\n >\n {connectionState === 'connecting' && !editState?.draft && !editState?.published ? (\n <Delay ms={300}>\n {/* TODO: replace with loading block */}\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Spinner muted />\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n {t('document-view.form-view.loading')}\n </Text>\n </Box>\n </Flex>\n </Delay>\n ) : formState === null || hidden ? (\n <Box padding={2}>\n <Text>{t('document-view.form-view.form-hidden')}</Text>\n </Box>\n ) : (\n <>\n <FormHeader documentId={documentId} schemaType={formState.schemaType} title={title} />\n <FormBuilder\n __internal_fieldActions={fieldActions}\n __internal_patchChannel={patchChannel}\n changed={formState.changed}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focused={formState.focused}\n focusPath={formState.focusPath}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n openPath={openPath}\n presence={presence}\n readOnly={isReadOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={\n // note: the form state doesn't have a typed concept of a \"document\" value\n // but these should be compatible\n formState.value as FormDocumentValue\n }\n />\n </>\n )}\n </Box>\n </PresenceOverlay>\n </Container>\n )\n})\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches),\n ),\n }\n}\n","import {TabList} from '@sanity/ui'\nimport {type ComponentType, type ReactNode, useCallback} from 'react'\n\nimport {Tab} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components'\nimport {useDocumentPane} from '../../useDocumentPane'\n\n/**\n * This component will render the tabs for the document pane, following this rules:\n * if the view tabs are wider than 200px it collapses to a dropdown\n * if the header is smaller than 480px it collapses to a dropdown\n * For this we need to first measure the pane header width and then the tabs width.\n *\n * Gotcha, if the tabs are wider han 200px it renders a dropdown and if then the tabs change to be smaller than 200px\n * it will not change back to tabs, this is a limitation of the current implementation but an ok tradeoff to avoid mounting\n * ghost elements just to measure the width.\n */\nexport function DocumentHeaderTabs() {\n const {activeViewId, paneKey, views} = useDocumentPane()\n\n const tabPanelId = `${paneKey}tabpanel`\n\n return (\n <TabList space={1}>\n {views.map((view, index) => (\n <DocumentHeaderTab\n icon={view.icon}\n id={`${paneKey}tab-${view.id}`}\n isActive={activeViewId === view.id}\n key={view.id}\n label={view.title}\n tabPanelId={tabPanelId}\n viewId={index === 0 ? null : (view.id ?? null)}\n />\n ))}\n </TabList>\n )\n}\n\nfunction DocumentHeaderTab(props: {\n icon?: ComponentType | ReactNode\n id: string\n isActive: boolean\n label: string\n tabPanelId: string\n viewId: string | null\n}) {\n const {icon, id, isActive, label, tabPanelId, viewId, ...rest} = props\n const {ready, editState} = useDocumentPane()\n const {setView} = usePaneRouter()\n const handleClick = useCallback(() => setView(viewId), [setView, viewId])\n\n return (\n <Tab\n {...rest} // required to enable <TabList> keyboard navigation\n aria-controls={tabPanelId}\n disabled={!ready && !editState?.draft && !editState?.published}\n icon={icon}\n id={id}\n label={label}\n onClick={handleClick}\n selected={isActive}\n />\n )\n}\n","import {unstable_useValuePreview as useValuePreview, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nexport function DocumentHeaderTitle(): React.JSX.Element {\n const {connectionState, schemaType, title, value: documentValue} = useDocumentPane()\n const subscribed = Boolean(documentValue)\n\n const {error, value} = useValuePreview({\n enabled: subscribed,\n schemaType,\n value: documentValue,\n })\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (connectionState === 'connecting' && !subscribed) {\n return <></>\n }\n\n if (title) {\n return <>{title}</>\n }\n\n if (!documentValue) {\n return (\n <>\n {t('panes.document-header-title.new.text', {\n schemaType: schemaType?.title || schemaType?.name,\n })}\n </>\n )\n }\n\n if (error) {\n return <>{t('panes.document-header-title.error.text', {error: error.message})}</>\n }\n\n return (\n <>\n {value?.title || (\n <span style={{color: 'var(--card-muted-fg-color)'}}>\n {t('panes.document-header-title.untitled.text')}\n </span>\n )}\n </>\n )\n}\n","import {StarFilledIcon, StarIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {type ComponentType} from 'react'\nimport {useManageFavorite, type UseManageFavoriteProps, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {structureLocaleNamespace} from '../../../../i18n'\n\nexport const FavoriteToggle: ComponentType<UseManageFavoriteProps & {documentExists: boolean}> = ({\n documentExists,\n ...props\n}) => {\n const {isFavorited, isReady, favorite, unfavorite} = useManageFavorite(props)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const description = t(\n isFavorited\n ? 'document.favorites.remove-from-favorites'\n : 'document.favorites.add-to-favorites',\n )\n\n return (\n <Button\n mode=\"bleed\"\n onClick={isFavorited ? unfavorite : favorite}\n disabled={!isReady || !documentExists}\n aria-label={description}\n aria-live=\"assertive\"\n tooltipProps={{\n content: <Text size={1}>{description}</Text>,\n placement: 'right',\n }}\n >\n <Text size={1}>{isFavorited ? <StarFilledIcon /> : <StarIcon />}</Text>\n </Button>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, useMemo} from 'react'\nimport {CapabilityGate, getPublishedId, useActiveWorkspace, useTranslation} from 'sanity'\n\nimport {Button} from '../../../../../ui-components'\nimport {PaneHeader, usePane, usePaneRouter} from '../../../../components'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTabs} from './DocumentHeaderTabs'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {FavoriteToggle} from './FavoriteToggle'\n\n/**\n * When not collapsed this component will render the title and the tabs.\n * This component will render inside the document panel and not with the DocumentPanelHeader\n */\nexport const DocumentPanelSubHeader = memo(function DocumentPanelHeader() {\n const {editState, connectionState, views, documentId, displayed} = useDocumentPane()\n const {features} = useStructureTool()\n const {index, BackLink} = usePaneRouter()\n const {activeWorkspace} = useActiveWorkspace()\n const publishedDocId = getPublishedId(documentId)\n\n const showTabs = views.length > 1\n\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n // show the back button if both the feature is enabled and the current pane\n // is not the first\n const showBackButton = features.backButton && index > 0\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const title = useMemo(() => <DocumentHeaderTitle />, [])\n const tabs = useMemo(() => showTabs && <DocumentHeaderTabs />, [showTabs])\n\n const backButton = useMemo(\n () =>\n showBackButton && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('pane-header.back-button.text')}}\n />\n ),\n [BackLink, showBackButton, t],\n )\n\n const favoriteToggle = (\n <CapabilityGate capability=\"comlink\" condition=\"available\">\n <FavoriteToggle\n resourceType=\"studio\"\n documentId={publishedDocId}\n documentType={displayed?._type ?? ''}\n resourceId={[activeWorkspace.projectId, activeWorkspace.dataset].join('.')}\n schemaName={activeWorkspace.name}\n projectId={activeWorkspace.projectId}\n dataset={activeWorkspace.dataset}\n documentExists={\n (editState?.ready &&\n (editState.version ?? editState.draft ?? editState.published) !== null) ??\n false\n }\n />\n </CapabilityGate>\n )\n\n return (\n <PaneHeader\n loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n title={title}\n tabs={tabs}\n tabIndex={tabIndex}\n backButton={backButton}\n appendTitle={favoriteToggle}\n />\n )\n})\n","import {BoundaryElementProvider, Box, Flex, PortalProvider, usePortal} from '@sanity/ui'\nimport {useEffect, useMemo, useRef, useState} from 'react'\nimport {\n getSanityCreateLinkMetadata,\n getVersionFromId,\n isNewDocument,\n isReleaseDocument,\n isReleaseScheduledOrScheduling,\n isSanityCreateLinked,\n isSystemBundle,\n LegacyLayerProvider,\n type ReleaseDocument,\n ScrollContainer,\n usePerspective,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {PaneContent, usePane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {isLiveEditEnabled} from '../../../components/paneItem/helpers'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {DocumentInspectorPanel} from '../documentInspector'\nimport {InspectDialog} from '../inspectDialog'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {\n DeletedDocumentBanners,\n DeprecatedDocumentTypeBanner,\n InsufficientPermissionBanner,\n ReferenceChangedBanner,\n} from './banners'\nimport {ArchivedReleaseDocumentBanner} from './banners/ArchivedReleaseDocumentBanner'\nimport {CanvasLinkedBanner} from './banners/CanvasLinkedBanner'\nimport {CreateLinkedBanner} from './banners/CreateLinkedBanner'\nimport {DocumentNotInReleaseBanner} from './banners/DocumentNotInReleaseBanner'\nimport {DraftLiveEditBanner} from './banners/DraftLiveEditBanner'\nimport {OpenReleaseToEditBanner} from './banners/OpenReleaseToEditBanner'\nimport {RevisionNotFoundBanner} from './banners/RevisionNotFoundBanner'\nimport {ScheduledReleaseBanner} from './banners/ScheduledReleaseBanner'\nimport {UnpublishedDocumentBanner} from './banners/UnpublishedDocumentBanner'\nimport {FormView} from './documentViews'\nimport {DocumentPanelSubHeader} from './header/DocumentPanelSubHeader'\n\ninterface DocumentPanelProps {\n footerHeight: number | null\n headerHeight: number | null\n isInspectOpen: boolean\n rootElement: HTMLDivElement | null\n setDocumentPanelPortalElement: (el: HTMLElement | null) => void\n footer: React.ReactNode\n}\n\nconst DocumentBox = styled(Box)({\n position: 'relative',\n})\n\nconst Scroller = styled(ScrollContainer)<{$disabled: boolean}>(({$disabled}) => {\n if ($disabled) {\n return {height: '100%'}\n }\n\n return css`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n outline: none;\n `\n})\n\nexport const DocumentPanel = function DocumentPanel(props: DocumentPanelProps) {\n const {\n footerHeight,\n headerHeight,\n isInspectOpen,\n rootElement,\n setDocumentPanelPortalElement,\n footer,\n } = props\n const {\n activeViewId,\n displayed,\n documentId,\n editState,\n inspector,\n value,\n views,\n ready,\n schemaType,\n permissions,\n isPermissionsLoading,\n } = useDocumentPane()\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n const showCreateBanner = isSanityCreateLinked(createLinkMetadata)\n\n const {params} = usePaneRouter()\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const {collapsed} = usePane()\n const parentPortal = usePortal()\n const {features} = useStructureTool()\n const [_portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n const [documentScrollElement, setDocumentScrollElement] = useState<HTMLDivElement | null>(null)\n const formContainerElement = useRef<HTMLDivElement | null>(null)\n\n const requiredPermission = value._createdAt ? 'update' : 'create'\n\n const activeView = useMemo(\n () => views.find((view) => view.id === activeViewId) || views[0] || {type: 'form'},\n [activeViewId, views],\n )\n\n // Use a local portal container when split panes is supported\n const portalElement: HTMLElement | null = features.splitPanes\n ? _portalElement || parentPortal.element\n : parentPortal.element\n\n // Calculate the height of the header\n const margins: [number, number, number, number] = useMemo(() => {\n if (layoutCollapsed) {\n return [headerHeight || 0, 0, footerHeight ? footerHeight + 2 : 2, 0]\n }\n\n return [0, 0, 2, 0]\n }, [layoutCollapsed, footerHeight, headerHeight])\n\n const formViewHidden = activeView.type !== 'form'\n\n const activeViewNode = useMemo(() => {\n if (activeView.type === 'component' && activeView.component) {\n const ActiveViewComponent = activeView.component\n return (\n <ActiveViewComponent\n document={{\n draft: editState?.draft || null,\n displayed: displayed || value,\n historical: displayed,\n published: editState?.published || null,\n }}\n documentId={documentId}\n options={activeView.options}\n schemaType={schemaType}\n />\n )\n }\n return false\n }, [activeView, displayed, documentId, editState?.draft, editState?.published, schemaType, value])\n\n const isLiveEdit = isLiveEditEnabled(schemaType)\n\n // Scroll to top as `documentId` changes\n useEffect(() => {\n if (!documentScrollElement?.scrollTo) return\n documentScrollElement.scrollTo(0, 0)\n }, [documentId, documentScrollElement])\n\n // Pass portal element to `DocumentPane`\n useEffect(() => {\n if (portalElement) {\n setDocumentPanelPortalElement(portalElement)\n }\n }, [portalElement, setDocumentPanelPortalElement])\n\n const inspectDialog = useMemo(() => {\n return isInspectOpen ? <InspectDialog value={displayed || value} /> : null\n }, [isInspectOpen, displayed, value])\n\n const showInspector = Boolean(!collapsed && inspector)\n const {selectedPerspective, selectedReleaseId} = usePerspective()\n\n const banners = useMemo(() => {\n if (params?.historyVersion) {\n return <ArchivedReleaseDocumentBanner />\n }\n\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 if (documentInScheduledRelease) {\n return <ScheduledReleaseBanner currentRelease={selectedPerspective as ReleaseDocument} />\n }\n const isPinnedDraftOrPublish = isSystemBundle(selectedPerspective)\n\n if (\n displayed?._id &&\n getVersionFromId(displayed._id) !== selectedReleaseId &&\n ready &&\n !isPinnedDraftOrPublish &&\n isNewDocument(editState) === false\n ) {\n return (\n <DocumentNotInReleaseBanner\n documentId={value._id}\n currentRelease={selectedPerspective as ReleaseDocument}\n value={displayed || undefined}\n isScheduledRelease={isScheduledRelease}\n />\n )\n }\n\n if (\n activeView.type === 'form' &&\n isLiveEdit &&\n ready &&\n editState?.draft?._id &&\n !selectedReleaseId\n ) {\n return (\n <DraftLiveEditBanner\n displayed={displayed}\n documentId={documentId}\n schemaType={schemaType}\n />\n )\n }\n\n if (activeView.type !== 'form' || isPermissionsLoading) return null\n\n return (\n <>\n {showCreateBanner && <CreateLinkedBanner />}\n {!permissions?.granted && (\n <InsufficientPermissionBanner requiredPermission={requiredPermission} />\n )}\n <RevisionNotFoundBanner />\n <ReferenceChangedBanner />\n <DeprecatedDocumentTypeBanner />\n <CanvasLinkedBanner />\n <DeletedDocumentBanners />\n <UnpublishedDocumentBanner />\n <OpenReleaseToEditBanner\n documentId={displayed?._id ?? documentId}\n isPinnedDraftOrPublished={isPinnedDraftOrPublish}\n />\n </>\n )\n }, [\n params?.historyVersion,\n selectedPerspective,\n displayed,\n selectedReleaseId,\n editState,\n ready,\n activeView.type,\n isLiveEdit,\n isPermissionsLoading,\n showCreateBanner,\n permissions?.granted,\n requiredPermission,\n documentId,\n value._id,\n schemaType,\n ])\n const showFormView = features.resizablePanes || !showInspector\n return (\n <PaneContent>\n <Flex height=\"fill\">\n {showFormView && (\n <Flex height=\"fill\" direction=\"column\" width=\"fill\" flex={2}>\n <LegacyLayerProvider zOffset=\"paneHeader\">\n {banners}\n <DocumentPanelSubHeader />\n </LegacyLayerProvider>\n <DocumentBox flex={2} overflow=\"hidden\">\n <PortalProvider\n element={portalElement}\n __unstable_elements={{documentScrollElement: documentScrollElement}}\n >\n <BoundaryElementProvider element={documentScrollElement}>\n <VirtualizerScrollInstanceProvider\n scrollElement={documentScrollElement}\n containerElement={formContainerElement}\n >\n <Scroller\n $disabled={layoutCollapsed || false}\n data-testid=\"document-panel-scroller\"\n ref={setDocumentScrollElement}\n >\n <FormView\n hidden={formViewHidden}\n margins={margins}\n ref={formContainerElement}\n />\n {activeViewNode}\n </Scroller>\n\n {inspectDialog}\n\n <div data-testid=\"document-panel-portal\" ref={setPortalElement} />\n </VirtualizerScrollInstanceProvider>\n </BoundaryElementProvider>\n </PortalProvider>\n </DocumentBox>\n\n {footer}\n </Flex>\n )}\n {showInspector && (\n <BoundaryElementProvider element={rootElement}>\n <DocumentInspectorPanel\n documentId={documentId}\n documentType={schemaType.name}\n flex={1}\n />\n </BoundaryElementProvider>\n )}\n </Flex>\n </PaneContent>\n )\n}\nDocumentPanel.displayName = 'DocumentPanel'\n","/**\n * @internal\n */\nexport const _DEBUG = false\n\nexport const EMPTY_PARAMS = Object.freeze({})\nexport const LOADING_PANE = Symbol('LOADING_PANE')\n\nexport const DOCUMENT_PANEL_PORTAL_ELEMENT = 'documentPanelPortalElement'\n","import {type Placement} from '@sanity/ui'\n\nimport {type DialogProps} from '../../../../../ui-components'\n\nexport const POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['left', 'bottom']\n\nexport const DIALOG_WIDTH_TO_UI_WIDTH: {[key: string]: DialogProps['width']} = {\n small: 0,\n medium: 1,\n large: 2,\n full: 'auto',\n}\n","import {\n Box,\n Button, // eslint-disable-line no-restricted-imports\n Flex,\n Grid,\n Popover, // eslint-disable-line no-restricted-imports\n Text,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionConfirmDialogProps, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function ConfirmDialog(props: {\n dialog: DocumentActionConfirmDialogProps\n referenceElement: HTMLElement | null\n}) {\n const {dialog, referenceElement} = props\n\n return (\n <Popover\n content={<ConfirmDialogContent dialog={dialog} />}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open\n placement=\"top\"\n portal\n preventOverflow\n referenceElement={referenceElement}\n />\n )\n}\n\n/**\n * Dialog rendered by custom document actions of dialog type `confirm`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction ConfirmDialogContent(props: {dialog: DocumentActionConfirmDialogProps}) {\n const {dialog} = props\n const {\n cancelButtonIcon,\n cancelButtonText,\n confirmButtonIcon,\n confirmButtonText,\n // color,\n message,\n onCancel,\n onConfirm,\n tone,\n } = dialog\n const {t} = useTranslation(structureLocaleNamespace)\n const {isTopLayer} = useLayer()\n const ref = useRef<HTMLDivElement | null>(null)\n\n const handleGlobalKeyDown = useCallback(\n (event: any) => {\n if (event.key === 'Escape' && isTopLayer) onCancel()\n },\n [isTopLayer, onCancel],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(isTopLayer && onCancel, () => [ref.current])\n\n return (\n <Flex direction=\"column\" ref={ref} style={{minWidth: 320 - 16, maxWidth: 400}}>\n <Box flex={1} overflow=\"auto\" padding={4}>\n <Text>{message}</Text>\n </Box>\n <Box paddingX={4} paddingY={3} style={{borderTop: '1px solid var(--card-border-color)'}}>\n <Grid columns={2} gap={2}>\n <Button\n data-testid=\"confirm-dialog-cancel-button\"\n icon={cancelButtonIcon}\n onClick={onCancel}\n mode=\"ghost\"\n text={cancelButtonText || t('confirm-dialog.cancel-button.fallback-text')}\n />\n <Button\n data-testid=\"confirm-dialog-confirm-button\"\n icon={confirmButtonIcon}\n onClick={onConfirm}\n text={confirmButtonText || t('confirm-dialog.confirm-button.fallback-text')}\n tone={tone}\n />\n </Grid>\n </Box>\n </Flex>\n )\n}\n","import {\n Box,\n Dialog, // eslint-disable-line no-restricted-imports\n} from '@sanity/ui'\nimport {useId} from 'react'\nimport {type DocumentActionModalDialogProps, LegacyLayerProvider} from 'sanity'\n\nimport {DIALOG_WIDTH_TO_UI_WIDTH} from './constants'\n\n/**\n * Dialog rendered by custom document actions of dialog type `dialog`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nexport function ModalDialog(props: {dialog: DocumentActionModalDialogProps}) {\n const {dialog} = props\n const dialogId = useId()\n\n const footer = dialog.footer && (\n <Box paddingX={4} paddingY={3}>\n {dialog.footer}\n </Box>\n )\n\n return (\n <LegacyLayerProvider zOffset=\"fullscreen\">\n <Dialog\n animate\n __unstable_hideCloseButton={dialog.showCloseButton === false}\n footer={footer}\n header={dialog.header}\n id={dialogId}\n // eslint-disable-next-line react/jsx-handler-names\n onClose={dialog.onClose}\n // eslint-disable-next-line react/jsx-handler-names\n onClickOutside={dialog.onClose}\n width={dialog.width === undefined ? 1 : DIALOG_WIDTH_TO_UI_WIDTH[dialog.width]}\n >\n <Box padding={4}>{dialog.content}</Box>\n </Dialog>\n </LegacyLayerProvider>\n )\n}\n","import {\n Popover, // eslint-disable-line no-restricted-imports\n useClickOutsideEvent,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {useCallback, useRef} from 'react'\nimport {type DocumentActionPopoverDialogProps} from 'sanity'\n\nimport {POPOVER_FALLBACK_PLACEMENTS} from './constants'\n\nexport function PopoverDialog(props: {\n dialog: DocumentActionPopoverDialogProps\n referenceElement: HTMLElement | null\n}) {\n const {dialog, referenceElement} = props\n\n return (\n <Popover\n content={<PopoverDialogContent dialog={dialog} />}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open\n placement=\"top\"\n portal\n preventOverflow\n referenceElement={referenceElement}\n />\n )\n}\n\n/**\n * Popover rendered by custom document actions of dialog type `popover`.\n * As these are user configurable with public facing APIs, internal studio ui-components are not used.\n */\nfunction PopoverDialogContent(props: {dialog: DocumentActionPopoverDialogProps}) {\n const {dialog} = props\n const {content, onClose} = dialog\n const {isTopLayer} = useLayer()\n const ref = useRef<HTMLDivElement | null>(null)\n\n const handleGlobalKeyDown = useCallback(\n (event: any) => {\n if (event.key === 'Escape' && isTopLayer) onClose()\n },\n [isTopLayer, onClose],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(isTopLayer && onClose, () => [ref.current])\n\n return <div ref={ref}>{content}</div>\n}\n","import {PortalProvider, Text, usePortal} from '@sanity/ui'\nimport {type ReactNode, useId} from 'react'\nimport {type DocumentActionDialogProps} from 'sanity'\n\nimport {Dialog} from '../../../../ui-components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {ConfirmDialog} from './dialogs/ConfirmDialog'\nimport {ModalDialog} from './dialogs/ModalDialog'\nimport {PopoverDialog} from './dialogs/PopoverDialog'\n\nexport interface ActionStateDialogProps {\n dialog: DocumentActionDialogProps\n referenceElement?: HTMLElement | null\n}\n\n// A portal provider that uses the document panel portal element if it exists\n// as the portal element so that dialogs are scoped to the document panel\nfunction DocumentActionPortalProvider(props: {children: ReactNode}) {\n const {children} = props\n const {element, elements} = usePortal()\n const portalElement = elements?.[DOCUMENT_PANEL_PORTAL_ELEMENT] || element\n\n return <PortalProvider element={portalElement}>{children}</PortalProvider>\n}\n\nexport function ActionStateDialog(props: ActionStateDialogProps) {\n const {dialog, referenceElement = null} = props\n const modalId = useId()\n\n if (dialog.type === 'confirm') {\n return <ConfirmDialog dialog={dialog} referenceElement={referenceElement} />\n }\n\n if (dialog.type === 'popover') {\n return <PopoverDialog dialog={dialog} referenceElement={referenceElement} />\n }\n\n if (dialog.type === 'dialog' || !dialog.type) {\n return (\n <DocumentActionPortalProvider>\n <ModalDialog dialog={dialog} />\n </DocumentActionPortalProvider>\n )\n }\n\n if (dialog.type === 'custom') {\n return <DocumentActionPortalProvider>{dialog?.component}</DocumentActionPortalProvider>\n }\n\n // @todo: add validation?\n const unknownModal: any = dialog\n\n // eslint-disable-next-line no-console\n console.warn(`Unsupported modal type ${unknownModal.type}`)\n\n return (\n <Dialog\n id={modalId}\n // eslint-disable-next-line react/jsx-handler-names\n onClose={unknownModal.onClose}\n // eslint-disable-next-line react/jsx-handler-names\n onClickOutside={unknownModal.onClose}\n width={1}\n >\n {unknownModal.content || (\n // eslint-disable-next-line i18next/no-literal-string\n <Text size={1}>\n Unexpected modal type (<code>{unknownModal.type}</code>)\n </Text>\n )}\n </Dialog>\n )\n}\n","import {Menu} from '@sanity/ui'\nimport {memo, type ReactNode, useCallback, useId, useMemo, useState} from 'react'\nimport {\n ContextMenuButton,\n type DocumentActionDescription,\n LegacyLayerProvider,\n useTranslation,\n} from 'sanity'\n\nimport {MenuButton, MenuItem, type PopoverProps} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {ActionStateDialog} from './ActionStateDialog'\n\nexport interface ActionMenuButtonProps {\n actionStates: DocumentActionDescription[]\n disabled: boolean\n}\n\n/**\n * @internal\n */\nexport const ActionDialogWrapper = memo(function ActionDialogWrapper({\n actionStates,\n children,\n referenceElement,\n}: {\n actionStates: DocumentActionDescription[]\n children: ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n referenceElement?: HTMLElement | null\n}) {\n const [actionIndex, setActionIndex] = useState(-1)\n const currentAction = useMemo(() => actionStates[actionIndex], [actionIndex, actionStates])\n\n const handleAction = useCallback((idx: number) => {\n setActionIndex(idx)\n }, [])\n\n const result = useMemo(() => children({handleAction}), [children, handleAction])\n\n return (\n <>\n {currentAction && currentAction.dialog && (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <ActionStateDialog dialog={currentAction.dialog} referenceElement={referenceElement} />\n </LegacyLayerProvider>\n )}\n {result}\n </>\n )\n})\n\n/**\n * @internal\n */\nexport function ActionMenuButton(props: ActionMenuButtonProps) {\n const {actionStates, disabled} = props\n const idPrefix = useId()\n\n const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null)\n\n const popoverProps: PopoverProps = useMemo(\n () => ({\n placement: 'top-end',\n portal: true,\n preventOverflow: true,\n }),\n [],\n )\n\n const {t} = useTranslation(structureLocaleNamespace)\n const renderActionDialog = useCallback<\n ({handleAction}: {handleAction: (idx: number) => void}) => ReactNode\n >(\n ({handleAction}) => (\n <MenuButton\n id={`${idPrefix}-action-menu`}\n button={\n <ContextMenuButton\n aria-label={t('buttons.action-menu-button.aria-label')}\n disabled={disabled}\n data-testid=\"action-menu-button\"\n tooltipProps={{content: t('buttons.action-menu-button.tooltip')}}\n />\n }\n menu={\n <Menu padding={1}>\n {actionStates.map((actionState, idx) => (\n <ActionMenuListItem\n actionState={actionState}\n disabled={disabled}\n index={idx}\n // eslint-disable-next-line react/no-array-index-key\n key={idx}\n onAction={handleAction}\n />\n ))}\n </Menu>\n }\n popover={popoverProps}\n ref={setReferenceElement}\n />\n ),\n [actionStates, disabled, idPrefix, popoverProps, t],\n )\n\n return (\n <ActionDialogWrapper actionStates={actionStates} referenceElement={referenceElement}>\n {renderActionDialog}\n </ActionDialogWrapper>\n )\n}\n\ninterface ActionMenuListItemProps {\n actionState: DocumentActionDescription\n disabled: boolean\n index: number\n onAction: (idx: number) => void\n}\n\nexport function ActionMenuListItem(props: ActionMenuListItemProps) {\n const {actionState, disabled, index, onAction} = props\n const {onHandle} = actionState\n\n const handleClick = useCallback(() => {\n onAction(index)\n if (onHandle) onHandle()\n }, [index, onAction, onHandle])\n\n const hotkeys = useMemo(() => {\n return actionState.shortcut\n ? String(actionState.shortcut)\n .split('+')\n .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1))\n : undefined\n }, [actionState.shortcut])\n\n return (\n <MenuItem\n data-testid={`action-${actionState.label.replace(' ', '')}`}\n disabled={disabled || Boolean(actionState.disabled)}\n hotkeys={hotkeys}\n icon={actionState.icon}\n onClick={handleClick}\n text={actionState.label}\n tone={actionState.tone}\n {...(actionState.disabled && {tooltipProps: {content: actionState.title}})}\n />\n )\n}\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {TrashIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_TITLE_KEY = {\n NOTHING_TO_DELETE: 'action.delete.disabled.nothing-to-delete',\n NOT_READY: 'action.delete.disabled.not-ready',\n}\n\n/** @internal */\nexport const DeleteAction: DocumentActionComponent = ({id, type, draft, onComplete, release}) => {\n const {setIsDeleting: paneSetIsDeleting} = useDocumentPane()\n const {delete: deleteOp} = useDocumentOperation(id, type, release)\n const [isDeleting, setIsDeleting] = useState(false)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n onComplete()\n }, [onComplete])\n\n const handleConfirm = useCallback(() => {\n setIsDeleting(true)\n setConfirmDialogOpen(false)\n paneSetIsDeleting(true)\n deleteOp.execute()\n onComplete()\n }, [deleteOp, onComplete, paneSetIsDeleting])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'delete',\n })\n\n const currentUser = useCurrentUser()\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: TrashIcon,\n disabled: true,\n label: t('action.delete.label'),\n title: (\n <InsufficientPermissionsMessage context=\"delete-document\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n tone: 'critical',\n icon: TrashIcon,\n disabled: isDeleting || Boolean(deleteOp.disabled) || isPermissionsLoading,\n title: (deleteOp.disabled && t(DISABLED_REASON_TITLE_KEY[deleteOp.disabled])) || '',\n label: isDeleting ? t('action.delete.running.label') : t('action.delete.label'),\n shortcut: 'Ctrl+Alt+D',\n onHandle: handle,\n dialog: isConfirmDialogOpen && {\n type: 'custom',\n component: (\n <ConfirmDeleteDialog\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n action=\"delete\"\n id={draft?._id || id}\n type={type}\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n />\n ),\n },\n }\n }, [\n currentUser,\n deleteOp.disabled,\n draft?._id,\n handle,\n handleCancel,\n handleConfirm,\n id,\n isConfirmDialogOpen,\n isDeleting,\n isPermissionsLoading,\n permissions?.granted,\n t,\n type,\n ])\n}\n\nDeleteAction.action = 'delete'\nDeleteAction.displayName = 'DeleteAction'\n","/* eslint-disable import/no-extraneous-dependencies */\n\nimport {ResetIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDialogProps,\n InsufficientPermissionsMessage,\n isPublishedId,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_KEY = {\n NO_CHANGES: 'action.discard-changes.disabled.no-change',\n NOT_PUBLISHED: 'action.discard-changes.disabled.not-published',\n NOT_READY: 'action.discard-changes.disabled.not-ready',\n} as const\n\n/** @internal */\nexport const DiscardChangesAction: DocumentActionComponent = ({\n id,\n type,\n published,\n liveEdit,\n onComplete,\n release,\n}) => {\n const {discardChanges} = useDocumentOperation(id, type, release)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'discardDraft',\n })\n const currentUser = useCurrentUser()\n const {displayed} = useDocumentPane()\n\n const {t} = useTranslation(structureLocaleNamespace)\n const isPublished = displayed?._id && isPublishedId(displayed?._id)\n\n const handleConfirm = useCallback(() => {\n discardChanges.execute()\n onComplete()\n }, [discardChanges, onComplete])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const dialog: DocumentActionDialogProps | false = useMemo(\n () =>\n isConfirmDialogOpen && {\n type: 'confirm',\n tone: 'critical',\n onCancel: onComplete,\n onConfirm: handleConfirm,\n message: t('action.discard-changes.confirm-dialog.confirm-discard-changes'),\n },\n [handleConfirm, isConfirmDialogOpen, onComplete, t],\n )\n\n return useMemo(() => {\n if (!published || liveEdit || isPublished) {\n return null\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: ResetIcon,\n disabled: true,\n label: t('action.discard-changes.label'),\n title: (\n <InsufficientPermissionsMessage context=\"discard-changes\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n tone: 'critical',\n icon: ResetIcon,\n disabled: Boolean(discardChanges.disabled) || isPermissionsLoading,\n title: t((discardChanges.disabled && DISABLED_REASON_KEY[discardChanges.disabled]) || ''),\n label: t('action.discard-changes.label'),\n onHandle: handle,\n dialog,\n }\n }, [\n currentUser,\n dialog,\n discardChanges.disabled,\n handle,\n isPermissionsLoading,\n isPublished,\n liveEdit,\n permissions?.granted,\n published,\n t,\n ])\n}\n\nDiscardChangesAction.action = 'discardChanges'\nDiscardChangesAction.displayName = 'DiscardChangesAction'\n","import {CopyIcon} from '@sanity/icons'\nimport {uuid} from '@sanity/uuid'\nimport {useCallback, useMemo, useState} from 'react'\nimport {filter, firstValueFrom} from 'rxjs'\nimport {\n type DuplicateDocumentActionComponent,\n InsufficientPermissionsMessage,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useDocumentStore,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\n\nconst DISABLED_REASON_KEY = {\n NOTHING_TO_DUPLICATE: 'action.duplicate.disabled.nothing-to-duplicate',\n NOT_READY: 'action.duplicate.disabled.not-ready',\n}\n\n/** @internal */\nexport const DuplicateAction: DuplicateDocumentActionComponent = ({\n id,\n type,\n onComplete,\n release,\n mapDocument,\n}) => {\n const documentStore = useDocumentStore()\n const {duplicate} = useDocumentOperation(id, type, release)\n const {navigateIntent} = useRouter()\n const [isDuplicating, setDuplicating] = useState(false)\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n version: release,\n permission: 'duplicate',\n })\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const currentUser = useCurrentUser()\n\n const handle = useCallback(async () => {\n const dupeId = uuid()\n\n setDuplicating(true)\n\n // set up the listener before executing\n const duplicateSuccess = firstValueFrom(\n documentStore.pair\n .operationEvents(id, type)\n .pipe(filter((e) => e.op === 'duplicate' && e.type === 'success')),\n )\n duplicate.execute(dupeId, {mapDocument})\n\n // only navigate to the duplicated document when the operation is successful\n await duplicateSuccess\n navigateIntent('edit', {id: dupeId, type})\n\n onComplete()\n }, [documentStore.pair, duplicate, id, mapDocument, navigateIntent, onComplete, type])\n\n return useMemo(() => {\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n icon: CopyIcon,\n disabled: true,\n label: t('action.duplicate.label'),\n title: (\n <InsufficientPermissionsMessage context=\"duplicate-document\" currentUser={currentUser} />\n ),\n }\n }\n\n return {\n icon: CopyIcon,\n disabled: isDuplicating || Boolean(duplicate.disabled) || isPermissionsLoading,\n label: isDuplicating ? t('action.duplicate.running.label') : t('action.duplicate.label'),\n title: duplicate.disabled ? t(DISABLED_REASON_KEY[duplicate.disabled]) : '',\n onHandle: handle,\n }\n }, [\n currentUser,\n duplicate.disabled,\n handle,\n isDuplicating,\n isPermissionsLoading,\n permissions?.granted,\n t,\n ])\n}\n\nDuplicateAction.action = 'duplicate'\nDuplicateAction.displayName = 'DuplicateAction'\n","import {RevertIcon} from '@sanity/icons'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDialogProps,\n useDocumentOperation,\n useDocumentOperationEvent,\n useTranslation,\n} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\n/** @internal */\nexport const HistoryRestoreAction: DocumentActionComponent = ({\n id,\n type,\n revision,\n onComplete,\n release,\n}) => {\n const {restore} = useDocumentOperation(id, type, release)\n const {revisionNotFound} = useDocumentPane()\n const event = useDocumentOperationEvent(id, type)\n const {navigateIntent} = useRouter()\n const prevEvent = useRef(event)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleConfirm = useCallback(() => {\n restore.execute(revision!)\n onComplete()\n }, [restore, revision, onComplete])\n\n /**\n * If the restore operation is successful, navigate to the document edit view\n */\n useEffect(() => {\n if (!event || event === prevEvent.current) return\n\n if (event.type === 'success' && event.op === 'restore') {\n navigateIntent('edit', {id, type})\n }\n\n prevEvent.current = event\n }, [event, id, navigateIntent, type])\n\n const handle = useCallback(() => {\n setConfirmDialogOpen(true)\n }, [])\n\n const dialog: DocumentActionDialogProps | null = useMemo(() => {\n if (isConfirmDialogOpen) {\n return {\n type: 'confirm',\n tone: 'critical',\n onCancel: onComplete,\n onConfirm: handleConfirm,\n message: t('action.restore.confirm.message'),\n }\n }\n\n return null\n }, [handleConfirm, isConfirmDialogOpen, onComplete, t])\n\n const isRevisionInitial = revision === '@initial'\n const isRevisionLatest = revision === undefined // undefined means latest revision\n\n return useMemo(() => {\n if (isRevisionLatest || revisionNotFound) {\n return null\n }\n\n return {\n label: t('action.restore.label'),\n tone: 'caution',\n onHandle: handle,\n title: t(\n isRevisionInitial\n ? 'action.restore.disabled.cannot-restore-initial'\n : 'action.restore.tooltip',\n ),\n icon: RevertIcon,\n dialog,\n disabled: isRevisionInitial,\n }\n }, [dialog, handle, isRevisionInitial, isRevisionLatest, revisionNotFound, t])\n}\n\nHistoryRestoreAction.action = 'restore'\nHistoryRestoreAction.displayName = 'HistoryRestoreAction'\n","import {defineEvent} from '@sanity/telemetry'\n\ninterface DocumentPublishedInfo {\n /**\n * The document was created and published straight away\n */\n publishedImmediately: boolean\n\n /**\n * The document had a previously published version when it was published\n */\n previouslyPublished: boolean\n}\nexport const DocumentPublished = defineEvent<DocumentPublishedInfo>({\n name: 'Document Published',\n version: 1,\n description: 'User clicked the \"Publish\" button in the document pane',\n})\n","import {PublishIcon} from '@sanity/icons'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n InsufficientPermissionsMessage,\n isPublishedId,\n type TFunction,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useEditState,\n useRelativeTime,\n useSyncState,\n useTranslation,\n useValidationStatus,\n} from 'sanity'\n\nimport {structureLocaleNamespace, type StructureLocaleResourceKeys} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\nimport {DocumentPublished} from './__telemetry__/documentActions.telemetry'\n\nconst DISABLED_REASON_TITLE_KEY: Record<string, StructureLocaleResourceKeys> = {\n LIVE_EDIT_ENABLED: 'action.publish.live-edit.publish-disabled',\n ALREADY_PUBLISHED: 'action.publish.already-published.no-time-ago.tooltip',\n NO_CHANGES: 'action.publish.no-changes.tooltip',\n NOT_READY: 'action.publish.disabled.not-ready',\n} as const\n\nfunction getDisabledReason(\n reason: keyof typeof DISABLED_REASON_TITLE_KEY,\n publishedAt: string | undefined,\n t: TFunction,\n) {\n if (reason === 'ALREADY_PUBLISHED' && publishedAt) {\n return <AlreadyPublished publishedAt={publishedAt} />\n }\n return t(DISABLED_REASON_TITLE_KEY[reason])\n}\n\nfunction AlreadyPublished({publishedAt}: {publishedAt: string}) {\n const {t} = useTranslation(structureLocaleNamespace)\n const timeSincePublished = useRelativeTime(publishedAt, {useTemporalPhrase: true})\n return <span>{t('action.publish.already-published.tooltip', {timeSincePublished})}</span>\n}\n\n/** @internal */\n// eslint-disable-next-line complexity\nexport const PublishAction: DocumentActionComponent = (props) => {\n const {id, type, liveEdit, draft, published, release} = props\n const [publishState, setPublishState] = useState<'publishing' | 'published' | null>(null)\n const {publish} = useDocumentOperation(id, type)\n const validationStatus = useValidationStatus(id, type)\n const syncState = useSyncState(id, type)\n const {changesOpen, documentId, documentType, value} = useDocumentPane()\n const editState = useEditState(documentId, documentType)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const revision = (editState?.draft || editState?.published || {})._rev\n\n const hasValidationErrors = validationStatus.validation.some(isValidationErrorMarker)\n // we use this to \"schedule\" publish after pending tasks (e.g. validation and sync) has completed\n const [publishScheduled, setPublishScheduled] = useState<boolean>(false)\n const isSyncing = syncState.isSyncing\n const isValidating = validationStatus.isValidating\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n permission: 'publish',\n })\n\n const currentUser = useCurrentUser()\n\n // eslint-disable-next-line no-nested-ternary\n const title = publish.disabled\n ? getDisabledReason(publish.disabled, (published || {})._updatedAt, t) || ''\n : hasValidationErrors\n ? t('action.publish.validation-issues.tooltip')\n : ''\n\n const hasDraft = Boolean(draft)\n\n const doPublish = useCallback(() => {\n publish.execute()\n setPublishState('publishing')\n }, [publish])\n\n useEffect(() => {\n // make sure the validation status is about the current revision and not an earlier one\n const validationComplete =\n validationStatus.isValidating === false && validationStatus.revision !== revision\n\n if (!publishScheduled || isSyncing || !validationComplete) {\n return\n }\n\n if (!hasValidationErrors) {\n doPublish()\n }\n setPublishScheduled(false)\n }, [\n isSyncing,\n doPublish,\n hasValidationErrors,\n publishScheduled,\n validationStatus.revision,\n revision,\n isValidating,\n validationStatus.isValidating,\n ])\n\n useEffect(() => {\n const didPublish = publishState === 'publishing' && !hasDraft\n\n const nextState = didPublish ? 'published' : null\n const delay = didPublish ? 200 : 4000\n const timer = setTimeout(() => {\n setPublishState(nextState)\n }, delay)\n return () => clearTimeout(timer)\n }, [changesOpen, publishState, hasDraft])\n\n const telemetry = useTelemetry()\n\n const handle = useCallback(() => {\n telemetry.log(DocumentPublished, {\n publishedImmediately: !draft?._createdAt,\n previouslyPublished: Boolean(published),\n })\n if (\n syncState.isSyncing ||\n validationStatus.isValidating ||\n validationStatus.revision !== revision\n ) {\n setPublishScheduled(true)\n } else {\n doPublish()\n }\n }, [\n telemetry,\n draft?._createdAt,\n published,\n syncState.isSyncing,\n validationStatus.isValidating,\n validationStatus.revision,\n revision,\n doPublish,\n ])\n\n return useMemo(() => {\n if (release) {\n // Version documents are not publishable by this action, they should be published as part of a release\n return null\n }\n if (liveEdit) {\n // Live edit documents are not publishable by this action, they are published automatically\n return null\n }\n\n /**\n * When draft is null, if not a published or version document\n * then it means the draft is yet to be saved - in this case don't disabled\n * the publish button due to ALREADY_PUBLISHED reason\n */\n if (isPublishedId(value._id) && draft !== null) {\n return {\n tone: 'default',\n icon: PublishIcon,\n label: t('action.publish.label'),\n title: getDisabledReason('ALREADY_PUBLISHED', published?._updatedAt, t),\n disabled: true,\n }\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'default',\n icon: PublishIcon,\n label: t('action.publish.label'),\n title: (\n <InsufficientPermissionsMessage context=\"publish-document\" currentUser={currentUser} />\n ),\n disabled: true,\n }\n }\n\n const disabled = Boolean(\n publishScheduled ||\n editState?.transactionSyncLock?.enabled ||\n publishState === 'publishing' ||\n publishState === 'published' ||\n hasValidationErrors ||\n publish.disabled,\n )\n\n return {\n disabled: disabled || isPermissionsLoading,\n tone: 'default',\n label:\n // eslint-disable-next-line no-nested-ternary\n publishState === 'published'\n ? t('action.publish.published.label')\n : publishScheduled || publishState === 'publishing'\n ? t('action.publish.running.label')\n : t('action.publish.draft.label'),\n // @todo: Implement loading state, to show a `<Button loading />` state\n // loading: publishScheduled || publishState === 'publishing',\n icon: PublishIcon,\n // eslint-disable-next-line no-nested-ternary\n title: publishScheduled\n ? t('action.publish.waiting')\n : publishState === 'published' || publishState === 'publishing'\n ? null\n : title,\n shortcut: disabled || publishScheduled ? null : 'Ctrl+Alt+P',\n onHandle: handle,\n }\n }, [\n release,\n liveEdit,\n value._id,\n draft,\n isPermissionsLoading,\n permissions?.granted,\n publishScheduled,\n editState?.transactionSyncLock?.enabled,\n publishState,\n hasValidationErrors,\n publish.disabled,\n t,\n title,\n handle,\n published?._updatedAt,\n currentUser,\n ])\n}\n\nPublishAction.action = 'publish'\nPublishAction.displayName = 'PublishAction'\n","import {UnpublishIcon} from '@sanity/icons'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionModalDialogProps,\n InsufficientPermissionsMessage,\n isDraftId,\n useCurrentUser,\n useDocumentOperation,\n useDocumentPairPermissions,\n useTranslation,\n} from 'sanity'\n\nimport {ConfirmDeleteDialog} from '../components'\nimport {structureLocaleNamespace} from '../i18n'\nimport {useDocumentPane} from '../panes/document/useDocumentPane'\n\nconst DISABLED_REASON_KEY = {\n NOT_PUBLISHED: 'action.unpublish.disabled.not-published',\n NOT_READY: 'action.unpublish.disabled.not-ready',\n LIVE_EDIT_ENABLED: 'action.unpublish.disabled.live-edit-enabled',\n}\n\n/** @internal */\nexport const UnpublishAction: DocumentActionComponent = ({\n id,\n type,\n draft,\n onComplete,\n liveEdit,\n release,\n}) => {\n const {unpublish} = useDocumentOperation(id, type)\n const [isConfirmDialogOpen, setConfirmDialogOpen] = useState(false)\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id,\n type,\n permission: 'unpublish',\n })\n const currentUser = useCurrentUser()\n const {displayed} = useDocumentPane()\n const {t} = useTranslation(structureLocaleNamespace)\n\n const isDraft = displayed?._id && isDraftId(displayed?._id)\n\n const handleCancel = useCallback(() => {\n setConfirmDialogOpen(false)\n onComplete()\n }, [onComplete])\n\n const handleConfirm = useCallback(() => {\n setConfirmDialogOpen(false)\n unpublish.execute()\n onComplete()\n }, [onComplete, unpublish])\n\n const dialog: DocumentActionModalDialogProps | null = useMemo(() => {\n if (isConfirmDialogOpen) {\n return {\n type: 'dialog',\n onClose: onComplete,\n content: (\n <ConfirmDeleteDialog\n id={draft?._id || id}\n type={type}\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n action=\"unpublish\"\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n />\n ),\n }\n }\n\n return null\n }, [draft, id, handleCancel, handleConfirm, isConfirmDialogOpen, onComplete, type])\n\n return useMemo(() => {\n if (release || isDraft) {\n // Version documents cannot be unpublished by this action, they should be unpublished as part of a release\n // Draft documents can't either\n return null\n }\n if (liveEdit) {\n return null\n }\n\n if (!isPermissionsLoading && !permissions?.granted) {\n return {\n tone: 'critical',\n icon: UnpublishIcon,\n label: 'Unpublish',\n title: (\n <InsufficientPermissionsMessage context=\"unpublish-document\" currentUser={currentUser} />\n ),\n disabled: true,\n }\n }\n\n return {\n tone: 'critical',\n icon: UnpublishIcon,\n disabled: Boolean(unpublish.disabled) || isPermissionsLoading,\n label: t('action.unpublish.label'),\n title: unpublish.disabled ? t(DISABLED_REASON_KEY[unpublish.disabled]) : '',\n onHandle: () => setConfirmDialogOpen(true),\n dialog,\n }\n }, [\n release,\n isDraft,\n liveEdit,\n isPermissionsLoading,\n permissions?.granted,\n unpublish.disabled,\n t,\n dialog,\n currentUser,\n ])\n}\n\nUnpublishAction.action = 'unpublish'\nUnpublishAction.displayName = 'UnpublishAction'\n","/* eslint-disable no-warning-comments */\n/* eslint-disable camelcase */\nimport {Flex, LayerProvider, Stack, Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n Hotkeys,\n isSanityDefinedAction,\n usePerspective,\n useSource,\n} from 'sanity'\n\nimport {Button, Tooltip} from '../../../../ui-components'\nimport {RenderActionCollectionState, type ResolvedAction} from '../../../components'\nimport {HistoryRestoreAction} from '../../../documentActions'\nimport {toLowerCaseNoSpaces} from '../../../util/toLowerCaseNoSpaces'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {ActionMenuButton} from './ActionMenuButton'\nimport {ActionStateDialog} from './ActionStateDialog'\n\ninterface DocumentStatusBarActionsInnerProps {\n disabled: boolean\n showMenu: boolean\n states: ResolvedAction[]\n}\n\nconst DocumentStatusBarActionsInner = memo(function DocumentStatusBarActionsInner(\n props: DocumentStatusBarActionsInnerProps,\n) {\n const {disabled, showMenu, states} = props\n const {__internal_tasks} = useSource()\n const {editState} = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const [firstActionState, ...menuActionStates] = states\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n\n // TODO: This could be refactored to use the tooltip from the button if the firstAction.title was updated to a string.\n const tooltipContent = useMemo(() => {\n if (!firstActionState || (!firstActionState.title && !firstActionState.shortcut)) return null\n\n return (\n <Flex style={{maxWidth: 300}} align=\"center\" gap={3}>\n {firstActionState.title && <Text size={1}>{firstActionState.title}</Text>}\n {firstActionState.shortcut && (\n <Hotkeys\n data-testid=\"document-status-bar-hotkeys\"\n fontSize={1}\n style={{marginTop: -4, marginBottom: -4}}\n keys={String(firstActionState.shortcut)\n .split('+')\n .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1).toLowerCase())}\n />\n )}\n </Flex>\n )\n }, [firstActionState])\n const showFirstActionButton = selectedReleaseId\n ? // If the first action is a custom action and we are in a version document show it.\n firstActionState && !isSanityDefinedAction(firstActionState)\n : firstActionState && !editState?.liveEdit\n\n const sideMenuItems = useMemo(() => {\n return showFirstActionButton ? menuActionStates : [firstActionState, ...menuActionStates]\n }, [showFirstActionButton, firstActionState, menuActionStates])\n\n return (\n <Flex align=\"center\" gap={1}>\n {__internal_tasks && __internal_tasks.footerAction}\n {showFirstActionButton && (\n <LayerProvider zOffset={200}>\n <Tooltip disabled={!tooltipContent} content={tooltipContent} placement=\"top\">\n <Stack>\n <Button\n data-testid={`action-${toLowerCaseNoSpaces(firstActionState.label)}`}\n disabled={disabled || Boolean(firstActionState.disabled)}\n icon={firstActionState.icon}\n // eslint-disable-next-line react/jsx-handler-names\n onClick={firstActionState.onHandle}\n ref={setButtonElement}\n text={firstActionState.label}\n tone={firstActionState.tone || 'primary'}\n />\n </Stack>\n </Tooltip>\n </LayerProvider>\n )}\n {showMenu && menuActionStates.length > 0 && (\n <ActionMenuButton actionStates={sideMenuItems} disabled={disabled} />\n )}\n {firstActionState && firstActionState.dialog && (\n <ActionStateDialog dialog={firstActionState.dialog} referenceElement={buttonElement} />\n )}\n </Flex>\n )\n})\n\nexport const DocumentStatusBarActions = memo(function DocumentStatusBarActions() {\n const {\n actions: allActions,\n connectionState,\n documentId,\n editState,\n isInitialValueLoading,\n } = useDocumentPane()\n\n // The restore action has a dedicated place in the UI; it's only visible when the user is viewing\n // a different document revision. It must be omitted from this collection.\n const actions = useMemo(\n () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n [allActions],\n )\n const actionProps: Omit<DocumentActionProps, 'onComplete'> | null = useMemo(\n () => (editState ? {...editState, initialValueResolved: !isInitialValueLoading} : null),\n [editState, isInitialValueLoading],\n )\n\n const renderDocumentStatusBarActions = useCallback<\n (props: {states: ResolvedAction[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentStatusBarActionsInner\n disabled={connectionState !== 'connected'}\n showMenu={actions.length > 1}\n states={states}\n // Use document ID as key to make sure that the actions state is reset when the document changes\n key={documentId}\n />\n ),\n [actions.length, connectionState, documentId],\n )\n\n if (actions.length === 0 || !actionProps) {\n return null\n }\n\n return (\n <RenderActionCollectionState actions={actions} actionProps={actionProps} group=\"default\">\n {renderDocumentStatusBarActions}\n </RenderActionCollectionState>\n )\n})\n\nexport const HistoryStatusBarActions = memo(function HistoryStatusBarActions() {\n const {\n actions,\n connectionState,\n editState,\n revisionId: revision,\n isInitialValueLoading,\n } = useDocumentPane()\n\n const disabled = (editState?.draft || editState?.published || {})._rev === revision\n const actionProps: Omit<DocumentActionProps, 'onComplete'> | null = useMemo(\n () =>\n editState\n ? {\n ...editState,\n revision: revision || undefined,\n initialValueResolved: !isInitialValueLoading,\n }\n : null,\n [editState, revision, isInitialValueLoading],\n )\n\n // If multiple `restore` actions are defined, ensure only the final one is used.\n const historyActions = useMemo(() => (actions ?? []).filter(isRestoreAction).slice(-1), [actions])\n\n const renderDocumentStatusBarActions = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentStatusBarActionsInner\n disabled={connectionState !== 'connected' || Boolean(disabled)}\n showMenu={false}\n states={states}\n />\n ),\n [connectionState, disabled],\n )\n if (!actionProps) {\n return null\n }\n return (\n <RenderActionCollectionState actions={historyActions} actionProps={actionProps} group=\"default\">\n {renderDocumentStatusBarActions}\n </RenderActionCollectionState>\n )\n})\n\nexport function isRestoreAction(\n action: DocumentActionComponent,\n): action is DocumentActionComponent & {action: 'restore'} {\n return action.action === HistoryRestoreAction.action\n}\n","import {useEffect, useState} from 'react'\n\n/**\n * This hook is used to determine if the gradient should be shown on the chip scroll container.\n * It uses an IntersectionObserver to observe the last child of the container and sets the showGradient state based on the intersection.\n * @param containerRef - The ref to the container that contains all the chips\n * @returns showGradient - A boolean that determines if the gradient should be shown\n * @internal\n */\nexport function useChipScrollPosition(containerRef: React.RefObject<HTMLDivElement | null>) {\n const [showGradient, setShowGradient] = useState(false)\n\n useEffect(() => {\n const checkOverflow = () => {\n // container is the parent that contains all the chips\n const container = containerRef.current\n if (!container) return\n const {scrollWidth, clientWidth} = container\n const needsScrolling = scrollWidth > clientWidth\n\n if (!needsScrolling) {\n setShowGradient(false)\n return\n }\n\n // Check if scrolled to the end\n // becausee it doesn't need to show the gradient then\n const {scrollLeft} = container\n const isAtEnd = scrollLeft + clientWidth >= scrollWidth\n setShowGradient(!isAtEnd)\n }\n\n function setupObservers() {\n checkOverflow()\n // container is the parent that contains all the chips\n const container = containerRef.current\n if (!container) return {observer: null}\n\n const observer = new IntersectionObserver((entries) => {\n const entry = entries[0]\n\n if (entry) {\n setShowGradient(entry.isIntersecting)\n }\n })\n\n const lastChip = container.children[container.children.length - 1]\n observer.observe(lastChip)\n\n return {observer}\n }\n\n const {observer} = setupObservers()\n\n return () => {\n observer?.disconnect()\n }\n }, [containerRef])\n\n return showGradient\n}\n","import {Text} from '@sanity/ui'\nimport {memo, useCallback, useMemo} from 'react'\nimport {\n formatRelativeLocalePublishDate,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isDraftId,\n isPublishedId,\n isPublishedPerspective,\n isReleaseScheduledOrScheduling,\n isVersionId,\n type ReleaseDocument,\n Translate,\n useActiveReleases,\n useDateTimeFormat,\n type UseDateTimeFormatOptions,\n useOnlyHasVersions,\n usePerspective,\n useSchema,\n useSetPerspective,\n useTranslation,\n VersionChip,\n} from 'sanity'\n\nimport {isLiveEditEnabled} from '../../../../../components/paneItem/helpers'\nimport {usePaneRouter} from '../../../../../components/paneRouter/usePaneRouter'\nimport {useFilteredReleases} from '../../../../../hooks/useFilteredReleases'\nimport {useDocumentPane} from '../../../useDocumentPane'\n\nconst TooltipContent = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n\n if (release.state === 'archived') {\n return <Text size={1}>{t('release.chip.tooltip.archived')}</Text>\n }\n if (release.metadata.releaseType === 'asap') {\n return <Text size={1}>{t('release.type.asap')}</Text>\n }\n if (release.metadata.releaseType === 'scheduled') {\n const isActive = release.state === 'active'\n\n return (\n release.metadata.intendedPublishAt && (\n <Text size={1}>\n {isActive ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.intended-for-date\"\n values={{\n date: formatRelativeLocalePublishDate(release),\n }}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.scheduled-for-date\"\n values={{\n date: formatRelativeLocalePublishDate(release),\n }}\n />\n )}\n </Text>\n )\n )\n }\n\n if (release.metadata.releaseType === 'undecided') {\n return <Text size={1}>{t('release.type.undecided')}</Text>\n }\n return null\n}\n\nconst DATE_TIME_FORMAT: UseDateTimeFormatOptions = {\n dateStyle: 'medium',\n timeStyle: 'short',\n}\n\nexport const DocumentPerspectiveList = memo(function DocumentPerspectiveList() {\n const {selectedReleaseId, selectedPerspectiveName} = usePerspective()\n const {t} = useTranslation()\n const setPerspective = useSetPerspective()\n const {params, setParams} = usePaneRouter()\n const dateTimeFormat = useDateTimeFormat(DATE_TIME_FORMAT)\n const {loading} = useActiveReleases()\n const schema = useSchema()\n const {editState, displayed, documentType, documentId} = useDocumentPane()\n const isCreatingDocument = displayed && !displayed._createdAt\n const filteredReleases = useFilteredReleases({displayed, documentId})\n const onlyHasVersions = useOnlyHasVersions({documentId})\n\n const handlePerspectiveChange = useCallback(\n (perspective: Parameters<typeof setPerspective>[0]) => () => {\n if (perspective === 'published' && params?.historyVersion) {\n setParams({\n ...params,\n rev: params?.historyEvent || undefined,\n since: undefined,\n historyVersion: undefined,\n })\n }\n setPerspective(perspective)\n },\n [setPerspective, setParams, params],\n )\n\n const schemaType = schema.get(documentType)\n const isLiveEdit = schemaType ? isLiveEditEnabled(schemaType) : false\n\n const isPublishedChipDisabled = useMemo(() => {\n // If it's a live edit document the only option to edit it is through\n // the published perspective, users should be able to select it.\n if (isLiveEdit && !selectedReleaseId) return false\n\n // If it's not live edit, we want to check for the existence of the published doc.\n return !editState?.published\n }, [isLiveEdit, selectedReleaseId, editState?.published])\n\n const getReleaseChipState = useCallback(\n (release: ReleaseDocument): {selected: boolean; disabled?: boolean} => {\n if (!params?.historyVersion)\n return {\n selected:\n getReleaseIdFromReleaseDocumentId(release._id) ===\n getVersionFromId(displayed?._id || ''),\n }\n\n const isReleaseHistoryMatch =\n getReleaseIdFromReleaseDocumentId(release._id) === params.historyVersion\n\n return {selected: isReleaseHistoryMatch, disabled: isReleaseHistoryMatch}\n },\n [displayed?._id, params?.historyVersion],\n )\n\n const isPublishSelected: boolean = useMemo(() => {\n /**\n * The publish perspective is selected when:\n * - the document is live edit and there is no draft\n * - the document is published and the selected perspective is published\n */\n if (isLiveEdit && !editState?.draft?._id && !selectedReleaseId) return true\n if (\n isPublishedId(displayed?._id || '') &&\n isPublishedPerspective(selectedPerspectiveName || '')\n ) {\n return true\n }\n return false\n }, [\n displayed?._id,\n editState?.draft?._id,\n isLiveEdit,\n selectedPerspectiveName,\n selectedReleaseId,\n ])\n\n const isDraftSelected: boolean = useMemo(() => {\n const displayedId = displayed?._id || ''\n /** the draft is selected when:\n * not viewing a historical version,\n * when the document displayed is a draft,\n * when the perspective is null,\n * when the document is not published and the displayed version is draft,\n * when there is no draft (new document),\n */\n if (isPublishSelected) return false\n if (params?.historyVersion) return false\n if (selectedPerspectiveName) return false\n if (isVersionId(displayedId)) return false\n if (isDraftId(displayedId)) return true\n if (\n isPublishedId(displayedId) &&\n editState?.published &&\n isPublishedPerspective(selectedPerspectiveName || '')\n )\n return false\n return true\n }, [\n displayed?._id,\n editState?.published,\n isPublishSelected,\n params?.historyVersion,\n selectedPerspectiveName,\n ])\n\n const isDraftDisabled: boolean = useMemo(() => {\n // Draft is disabled when the document has no published or draft but has versions\n if (onlyHasVersions || (isCreatingDocument && selectedReleaseId)) {\n return true\n }\n\n // Draft is disabled when we are creating a new document inside a release\n // or when the document is live edit and there is no draft\n if (!editState?.draft && !isLiveEdit) {\n return false\n }\n\n if (isCreatingDocument && selectedReleaseId) return true\n if (isLiveEdit) return true\n return false\n }, [editState?.draft, isCreatingDocument, isLiveEdit, onlyHasVersions, selectedReleaseId])\n\n return (\n <>\n <VersionChip\n tooltipContent={\n <Text size={1}>\n {editState?.published && editState?.published?._updatedAt ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.published-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.published._updatedAt))}}\n />\n ) : (\n <>{t('release.chip.tooltip.not-published')}</>\n )}\n </Text>\n }\n disabled={isPublishedChipDisabled}\n onClick={handlePerspectiveChange('published')}\n selected={isPublishSelected}\n text={t('release.chip.published')}\n tone=\"positive\"\n contextValues={{\n documentId: editState?.published?._id || editState?.id || '',\n menuReleaseId: editState?.published?._id || editState?.id || '',\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType,\n fromRelease: 'published',\n isVersion: false,\n disabled: !editState?.published,\n }}\n />\n <VersionChip\n tooltipContent={\n <Text size={1}>\n {editState?.draft ? (\n <>\n {editState?.draft._updatedAt ? (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.edited-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._updatedAt))}}\n />\n ) : (\n <Translate\n t={t}\n i18nKey=\"release.chip.tooltip.created-date\"\n values={{date: dateTimeFormat.format(new Date(editState?.draft._createdAt))}}\n />\n )}\n </>\n ) : (\n <>\n {isLiveEdit\n ? t('release.chip.tooltip.draft-disabled.live-edit')\n : t('release.chip.tooltip.no-edits')}\n </>\n )}\n </Text>\n }\n selected={isDraftSelected}\n disabled={isDraftDisabled}\n text={t('release.chip.draft')}\n tone={editState?.draft ? 'caution' : 'neutral'}\n onClick={handlePerspectiveChange('drafts')}\n contextValues={{\n documentId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n menuReleaseId: editState?.draft?._id || editState?.published?._id || editState?.id || '',\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType: documentType,\n fromRelease: 'draft',\n isVersion: false,\n disabled: !editState?.draft,\n }}\n />\n {filteredReleases.inCreation && (\n <VersionChip\n tooltipContent={<TooltipContent release={filteredReleases.inCreation} />}\n selected\n onClick={() => {}}\n locked={false}\n tone={getReleaseTone(filteredReleases.inCreation)}\n text={\n filteredReleases.inCreation.metadata.title || t('release.placeholder-untitled-release')\n }\n contextValues={{\n disabled: true, // disable the chip context menu, this one is in creation\n documentId: displayed?._id || '',\n menuReleaseId: filteredReleases.inCreation._id,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType,\n fromRelease: getReleaseIdFromReleaseDocumentId(filteredReleases.inCreation._id),\n releaseState: filteredReleases.inCreation.state,\n isVersion: true,\n }}\n />\n )}\n\n {displayed &&\n filteredReleases.currentReleases?.map((release) => (\n <VersionChip\n key={release._id}\n tooltipContent={<TooltipContent release={release} />}\n {...getReleaseChipState(release)}\n onClick={handlePerspectiveChange(getReleaseIdFromReleaseDocumentId(release._id))}\n text={release.metadata.title || t('release.placeholder-untitled-release')}\n tone={getReleaseTone(release)}\n locked={isReleaseScheduledOrScheduling(release)}\n contextValues={{\n documentId: displayed?._id || '',\n menuReleaseId: release._id,\n releases: filteredReleases.notCurrentReleases,\n releasesLoading: loading,\n documentType: documentType,\n fromRelease: getReleaseIdFromReleaseDocumentId(release._id),\n releaseState: release.state,\n isVersion: true,\n }}\n />\n ))}\n </>\n )\n})\n","import {ArrowLeftIcon, CloseIcon, SplitVerticalIcon} from '@sanity/icons'\nimport {Box, Card, Flex} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, rgba} from '@sanity/ui/theme'\nimport {\n type ForwardedRef,\n forwardRef,\n memo,\n useCallback,\n useDeferredValue,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {type DocumentActionDescription, useFieldActions, useTranslation} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {\n PaneContextMenuButton,\n PaneHeader,\n PaneHeaderActionButton,\n RenderActionCollectionState,\n usePane,\n usePaneRouter,\n} from '../../../../components'\nimport {type _PaneMenuNode} from '../../../../components/pane/types'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {isMenuNodeButton, isNotMenuNodeButton, resolveMenuNodes} from '../../../../menuNodes'\nimport {type PaneMenuItem} from '../../../../types'\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {ActionDialogWrapper, ActionMenuListItem} from '../../statusBar/ActionMenuButton'\nimport {isRestoreAction} from '../../statusBar/DocumentStatusBarActions'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {DocumentHeaderTitle} from './DocumentHeaderTitle'\nimport {useChipScrollPosition} from './hook/useChipScrollPosition'\nimport {DocumentPerspectiveList} from './perspective/DocumentPerspectiveList'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface DocumentPanelHeaderProps {\n menuItems: PaneMenuItem[]\n}\n\nconst HorizontalScroller = styled(Card)<{$showGradient: boolean}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n scrollbar-width: none;\n z-index: 1;\n flex: 1;\n position: relative;\n > div {\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n }\n\n ${props.$showGradient &&\n css`\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 150px;\n background: linear-gradient(to right, ${rgba(theme.color.bg, 0)}, var(--card-bg-color));\n transition: 'opacity 300ms ease-out';\n pointer-events: none;\n }\n `}\n `\n})\n\nexport const DocumentPanelHeader = memo(\n forwardRef(function DocumentPanelHeader(\n _props: DocumentPanelHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n ) {\n const {menuItems} = _props\n const {\n actions: allActions,\n editState,\n onMenuAction,\n isInitialValueLoading,\n onPaneClose,\n onPaneSplit,\n menuItemGroups,\n schemaType,\n connectionState,\n views,\n unstable_languageFilter,\n } = useDocumentPane()\n const {features} = useStructureTool()\n const {index, BackLink, hasGroupSiblings} = usePaneRouter()\n const {actions: fieldActions} = useFieldActions()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const showGradient = useChipScrollPosition(scrollContainerRef)\n\n // The restore action has a dedicated place in the UI; it's only visible when the user is\n // viewing a different document revision. It must be omitted from this collection.\n const actions = useMemo(\n () => (allActions ?? []).filter((action) => !isRestoreAction(action)),\n [allActions],\n )\n\n const menuNodes = useMemo(\n () =>\n resolveMenuNodes({actionHandler: onMenuAction, fieldActions, menuItems, menuItemGroups}),\n [onMenuAction, fieldActions, menuItemGroups, menuItems],\n )\n\n const menuButtonNodes = useMemo(() => menuNodes.filter(isMenuNodeButton), [menuNodes])\n const contextMenuNodes = useMemo(() => menuNodes.filter(isNotMenuNodeButton), [menuNodes])\n const showTabs = views.length > 1\n\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n // there are three kinds of buttons possible:\n //\n // 1. split pane - creates a new split pane\n // 2. close split pane — closes the current split pane\n // 3. close pane group — closes the current pane group\n\n // show the split pane button if they're enabled and there is more than one\n // view available to use to create a split view\n const showSplitPaneButton = features.splitViews && onPaneSplit && views.length > 1\n\n // show the split pane button close button if the split button is showing\n // and there is more than one split pane open (aka has-siblings)\n const showSplitPaneCloseButton = showSplitPaneButton && hasGroupSiblings\n\n // show the back button if both the feature is enabled and the current pane\n // is not the first\n const showBackButton = features.backButton && index > 0\n\n // show the pane group close button if the `showSplitPaneCloseButton` is\n // _not_ showing (the split pane button replaces the group close button)\n // and if the back button is not showing (the back button and the close\n // button do the same thing and shouldn't be shown at the same time)\n // and if a BackLink component was provided\n const showPaneGroupCloseButton = !showSplitPaneCloseButton && !showBackButton && !!BackLink\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const renderPaneActions = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <DocumentPanelHeaderActionDialogDeferred\n contextMenuNodes={contextMenuNodes}\n setReferenceElement={setReferenceElement}\n referenceElement={referenceElement}\n states={states}\n />\n ),\n [contextMenuNodes, referenceElement],\n )\n\n const title = useMemo(() => <DocumentHeaderTitle />, [])\n const backButton = useMemo(\n () =>\n showBackButton && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('pane-header.back-button.text')}}\n />\n ),\n [BackLink, showBackButton, t],\n )\n const renderedActions = useMemo(\n () => (\n <Flex align=\"center\" gap={1}>\n {unstable_languageFilter.length > 0 && (\n <>\n {unstable_languageFilter.map((LanguageFilterComponent, idx) => {\n return (\n <LanguageFilterComponent\n // eslint-disable-next-line react/no-array-index-key\n key={`language-filter-${idx}`}\n schemaType={schemaType}\n />\n )\n })}\n </>\n )}\n\n {menuButtonNodes.map((item) => (\n <PaneHeaderActionButton key={item.key} node={item} />\n ))}\n {editState && (\n <RenderActionCollectionState\n actions={actions}\n actionProps={{...editState, initialValueResolved: !isInitialValueLoading}}\n group=\"paneActions\"\n >\n {renderPaneActions}\n </RenderActionCollectionState>\n )}\n\n {showSplitPaneButton && (\n <Button\n aria-label={t('buttons.split-pane-button.aria-label')}\n icon={SplitVerticalIcon}\n key=\"split-pane-button\"\n mode=\"bleed\"\n onClick={onPaneSplit}\n tooltipProps={{content: t('buttons.split-pane-button.tooltip')}}\n />\n )}\n\n {showSplitPaneCloseButton && (\n <Button\n icon={CloseIcon}\n key=\"close-view-button\"\n mode=\"bleed\"\n onClick={onPaneClose}\n tooltipProps={{content: t('buttons.split-pane-close-button.title')}}\n />\n )}\n\n {showPaneGroupCloseButton && (\n <Button\n icon={CloseIcon}\n key=\"close-view-button\"\n mode=\"bleed\"\n tooltipProps={{content: t('buttons.split-pane-close-group-button.title')}}\n as={BackLink}\n />\n )}\n </Flex>\n ),\n [\n BackLink,\n actions,\n editState,\n isInitialValueLoading,\n menuButtonNodes,\n onPaneClose,\n onPaneSplit,\n renderPaneActions,\n schemaType,\n showPaneGroupCloseButton,\n showSplitPaneButton,\n showSplitPaneCloseButton,\n t,\n unstable_languageFilter,\n ],\n )\n\n return (\n <TooltipDelayGroupProvider>\n {collapsed ? (\n <PaneHeader\n border\n ref={ref}\n loading={connectionState === 'connecting' && !editState?.draft && !editState?.published}\n title={title}\n tabIndex={tabIndex}\n backButton={backButton}\n />\n ) : (\n <Card hidden={collapsed} style={{lineHeight: 0}} borderBottom>\n <Flex gap={3} paddingY={3}>\n <HorizontalScroller $showGradient={showGradient}>\n <Flex\n flex={1}\n gap={1}\n overflow=\"auto\"\n paddingX={3}\n data-testid=\"document-perspective-list\"\n ref={scrollContainerRef}\n >\n <DocumentPerspectiveList />\n </Flex>\n </HorizontalScroller>\n\n <Box flex=\"none\" paddingRight={3}>\n {renderedActions}\n </Box>\n </Flex>\n </Card>\n )}\n </TooltipDelayGroupProvider>\n )\n }),\n)\n\nconst DocumentPanelHeaderActionDialogDeferred = memo(\n function DocumentPanelHeaderActionDialogDeferred(props: {\n states: DocumentActionDescription[]\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n referenceElement: HTMLElement | null\n contextMenuNodes: _PaneMenuNode[]\n }) {\n const {setReferenceElement, referenceElement, contextMenuNodes} = props\n /**\n * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n */\n const states = useDeferredValue(props.states)\n\n return (\n <DocumentPanelHeaderActionDialog\n setReferenceElement={setReferenceElement}\n referenceElement={referenceElement}\n contextMenuNodes={contextMenuNodes}\n states={states}\n />\n )\n },\n)\n\nconst DocumentPanelHeaderActionDialog = memo(function DocumentPanelHeaderActionDialog(props: {\n states: DocumentActionDescription[]\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>\n referenceElement: HTMLElement | null\n contextMenuNodes: _PaneMenuNode[]\n}) {\n const {states, setReferenceElement, contextMenuNodes, referenceElement} = props\n\n const renderActionDialog = useCallback<\n ({handleAction}: {handleAction: (idx: number) => void}) => React.ReactNode\n >(\n ({handleAction}) => (\n <div ref={setReferenceElement}>\n <PaneContextMenuButton\n nodes={contextMenuNodes}\n key=\"context-menu\"\n actionsNodes={\n states.length > 0\n ? states.map((actionState, actionIndex) => (\n <ActionMenuListItem\n key={actionState.label}\n actionState={actionState}\n disabled={Boolean(actionState.disabled)}\n index={actionIndex}\n onAction={handleAction}\n />\n ))\n : undefined\n }\n />\n </div>\n ),\n [contextMenuNodes, setReferenceElement, states],\n )\n\n return (\n <ActionDialogWrapper actionStates={states} referenceElement={referenceElement}>\n {renderActionDialog}\n </ActionDialogWrapper>\n )\n})\n","import {Button, type ButtonProps} from '../../../ui-components'\n\ninterface SpacerButtonProps {\n size?: ButtonProps['size']\n}\n\n/**\n * This renders a visually hidden <Button> component that is still contributes\n * to document layout.\n *\n * It's used to simplify padding in Sanity UI components that contain buttons which\n * may not always be rendered.\n *\n * TODO: let's find a more elegant solve to this layout shift problem\n *\n * @internal\n */\nexport function SpacerButton({size}: SpacerButtonProps) {\n return (\n <Button\n aria-hidden\n disabled\n size={size}\n style={{\n pointerEvents: 'none',\n visibility: 'hidden',\n width: 0,\n }}\n text=\"-\"\n />\n )\n}\n","import {Badge, type BadgeTone, Inline} from '@sanity/ui'\nimport {memo, useCallback, useDeferredValue} from 'react'\nimport {type DocumentBadgeDescription} from 'sanity'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {RenderBadgeCollectionState} from '../../../components'\nimport {useDocumentPane} from '../useDocumentPane'\n\ninterface DocumentBadgesInnerProps {\n states: DocumentBadgeDescription[]\n}\n\nconst BADGE_TONES: Record<string, BadgeTone | undefined> = {\n primary: 'primary',\n success: 'positive',\n warning: 'caution',\n danger: 'critical',\n}\n\nconst DocumentBadgesInner = memo(function DocumentBadgesInner({states}: DocumentBadgesInnerProps) {\n if (states.length === 0) {\n return null\n }\n return (\n <Inline space={1}>\n {states.map((badge, index) => (\n <Tooltip\n content={badge.title}\n disabled={!badge.title}\n key={`${badge.label}-${index}`}\n placement=\"top\"\n portal\n >\n <Badge\n fontSize={1}\n mode=\"outline\"\n paddingX={2}\n paddingY={1}\n radius={4}\n tone={badge.color ? BADGE_TONES[badge.color] : undefined}\n style={{whiteSpace: 'nowrap'}}\n >\n {badge.label}\n </Badge>\n </Tooltip>\n ))}\n </Inline>\n )\n})\n\nconst DocumentBadgesDeferred = memo(function DocumentBadgesDeferred(\n props: DocumentBadgesInnerProps,\n) {\n /**\n * The purpose of this component is to allow deferring the rendering of document action hook states if the main thread becomes very busy.\n * The `useDeferredValue` doesn't have an effect unless it's used to delay rendering a component that has `React.memo` to prevent unnecessary re-renders.\n */\n const states = useDeferredValue(props.states)\n return <DocumentBadgesInner states={states} />\n})\n\nexport function DocumentBadges() {\n const {badges, editState} = useDocumentPane()\n\n const renderDocumentBadges = useCallback<\n (props: {states: DocumentBadgeDescription[]}) => React.ReactNode\n >(({states}) => <DocumentBadgesDeferred states={states} />, [])\n\n if (!editState || !badges) return null\n\n return (\n <RenderBadgeCollectionState badges={badges} badgeProps={editState}>\n {renderDocumentBadges}\n </RenderBadgeCollectionState>\n )\n}\n","import {\n AddIcon,\n CloseIcon,\n EditIcon,\n type IconComponent,\n PublishIcon,\n TrashIcon,\n UnpublishIcon,\n} from '@sanity/icons'\n\nexport const TIMELINE_ICON_COMPONENTS: {[key: string]: IconComponent | undefined} = {\n create: AddIcon,\n delete: TrashIcon,\n discardDraft: CloseIcon,\n initial: AddIcon,\n editDraft: EditIcon,\n editLive: EditIcon,\n publish: PublishIcon,\n unpublish: UnpublishIcon,\n}\n","import {type IconComponent} from '@sanity/icons'\nimport {type ChunkType} from 'sanity'\n\nimport {TIMELINE_ICON_COMPONENTS} from './constants'\n\nexport function getTimelineEventIconComponent(type: ChunkType): IconComponent | undefined {\n return TIMELINE_ICON_COMPONENTS[type]\n}\n","import {ChevronLeftIcon} from '@sanity/icons'\nimport {type MouseEvent, useCallback} from 'react'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {TIMELINE_LIST_WRAPPER_ID} from './timeline'\n\n/**\n * This is a hack to force the scrollbar to not appear when the list is expanding,\n * if we don't do this the scrollbar will appear for a brief moment when the list is expanding and then disappear\n * when the list is fully expanded.\n */\nfunction hideScrollbarOnExpand(isExpanded: boolean) {\n // Do nothing if the list is already expanded\n if (isExpanded) return\n\n const listWrapper = document.getElementById(TIMELINE_LIST_WRAPPER_ID)\n\n if (listWrapper) {\n const firstChildren = listWrapper.children[0] as HTMLElement\n const hasScrollbar = firstChildren.scrollHeight > firstChildren.clientHeight\n if (!hasScrollbar) {\n //\n const currentStyle = getComputedStyle(firstChildren).overflowY\n // Add overflow hidden to the listWrapper to avoid the scrollbar to appear when expanding\n firstChildren.style.overflowY = 'hidden'\n setTimeout(() => {\n // Reset the overflow style after the list is expanded\n firstChildren.style.overflowY = currentStyle\n }, 0)\n }\n }\n}\n\nconst FlipIcon = styled(ChevronLeftIcon)`\n transition: transform 200ms;\n &[data-expanded='true'] {\n transform: rotate(-90deg);\n }\n`\n\nexport function ExpandableTimelineItemButton({\n isExpanded,\n onExpand,\n}: {\n isExpanded: boolean\n onExpand: () => void\n}) {\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleExpandClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n hideScrollbarOnExpand(isExpanded)\n onExpand()\n },\n [onExpand, isExpanded],\n )\n\n return (\n <Button\n mode=\"bleed\"\n icon={<FlipIcon data-expanded={isExpanded} />}\n tooltipProps={{\n content: isExpanded\n ? t('timeline-item.menu.action-collapse')\n : t('timeline-item.menu.action-expand'),\n }}\n onClick={handleExpandClick}\n />\n )\n}\n","import {Box, Flex, Stack} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nexport const StackWrapper = styled(Stack)`\n max-width: 200px;\n`\n\nexport const ListWrapper = styled(Flex)<{$maxHeight: string}>`\n max-height: ${(props) => props.$maxHeight};\n min-width: 244px;\n`\n\nexport const Root = styled(Box)<{$visible?: boolean}>(({$visible}) => {\n return css`\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n\n ${$visible &&\n css`\n opacity: 1;\n pointer-events: auto;\n `}\n `\n})\n","import {type ChunkType, type StudioLocaleResourceKeys} from 'sanity'\n\n/**\n * Maps from a chunk type to an i18n key for the operation\n *\n * @internal\n */\nexport const TIMELINE_ITEM_I18N_KEY_MAPPING: Record<ChunkType, StudioLocaleResourceKeys> = {\n initial: 'timeline.operation.created-initial',\n create: 'timeline.operation.created',\n publish: 'timeline.operation.published',\n editLive: 'timeline.operation.edited-live',\n editDraft: 'timeline.operation.edited-draft',\n unpublish: 'timeline.operation.unpublished',\n discardDraft: 'timeline.operation.draft-discarded',\n delete: 'timeline.operation.deleted',\n}\n","import {type AvatarSize, AvatarStack} from '@sanity/ui'\nimport {UserAvatar} from 'sanity'\n\ninterface UserAvatarStackProps {\n maxLength?: number\n userIds: string[]\n size?: AvatarSize\n withTooltip?: boolean\n}\n\nexport function UserAvatarStack({\n maxLength,\n userIds,\n size,\n withTooltip = true,\n}: UserAvatarStackProps) {\n return (\n <AvatarStack maxLength={maxLength} size={size}>\n {userIds.map((userId) => (\n <UserAvatar key={userId} user={userId} withTooltip={withTooltip} />\n ))}\n </AvatarStack>\n )\n}\n","import {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\n// eslint-disable-next-line camelcase\nimport {getTheme_v2, type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {type MouseEvent, useCallback, useMemo} from 'react'\nimport {\n AvatarSkeleton,\n type ChunkType,\n type RelativeTimeOptions,\n useDateTimeFormat,\n UserAvatar,\n useRelativeTime,\n useTranslation,\n useUser,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components'\nimport {getTimelineEventIconComponent} from './helpers'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\nimport {UserAvatarStack} from './userAvatarStack'\nimport {type ChunksWithCollapsedDrafts} from './utils'\n\nexport const IconBox = styled(Flex)<{$color: ThemeColorAvatarColorKey}>((props) => {\n const theme = getTheme_v2(props.theme)\n const color = props.$color\n\n return css`\n --card-icon-color: ${theme.color.avatar[color].fg};\n background-color: ${theme.color.avatar[color].bg};\n box-shadow: 0 0 0 1px var(--card-bg-color);\n\n position: absolute;\n width: ${theme.avatar.sizes[0].size}px;\n height: ${theme.avatar.sizes[0].size}px;\n right: -3px;\n bottom: -3px;\n border-radius: 50%;\n `\n})\n\nconst TIMELINE_ITEM_EVENT_TONE: Record<ChunkType | 'withinSelection', ThemeColorAvatarColorKey> = {\n initial: 'blue',\n create: 'blue',\n publish: 'green',\n editLive: 'green',\n editDraft: 'yellow',\n unpublish: 'orange',\n discardDraft: 'orange',\n delete: 'red',\n withinSelection: 'magenta',\n}\n\nexport interface TimelineItemProps {\n chunk: ChunksWithCollapsedDrafts\n isSelected: boolean\n onSelect: (chunk: ChunksWithCollapsedDrafts) => void\n collaborators?: Set<string>\n optionsMenu?: React.ReactNode\n}\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {\n minimal: true,\n useTemporalPhrase: true,\n}\n\nconst NameSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n width: 6ch;\n height: ${theme.font.text.sizes[0].lineHeight}px;\n `\n})\n\nconst UserLine = ({userId}: {userId: string}) => {\n const [user, loading] = useUser(userId)\n\n return (\n <Flex align=\"center\" gap={2} key={userId} padding={1}>\n <Box>{loading || !user ? <AvatarSkeleton animated /> : <UserAvatar user={user} />}</Box>\n <Box>\n {loading || !user?.displayName ? (\n <Text size={1}>\n <NameSkeleton animated />\n </Text>\n ) : (\n <Text muted size={1}>\n {user.displayName}\n </Text>\n )}\n </Box>\n </Flex>\n )\n}\nconst TooltipContent = ({collaborators}: {collaborators: string[]}) => {\n const {t} = useTranslation('studio')\n return (\n <Stack paddingBottom={1}>\n <Box padding={1} paddingBottom={2}>\n <Text size={1} weight=\"medium\">\n {t('timeline.changes.title')}\n </Text>\n </Box>\n {collaborators.map((userId) => (\n <UserLine key={userId} userId={userId} />\n ))}\n </Stack>\n )\n}\nexport function TimelineItem({\n chunk,\n isSelected,\n onSelect,\n collaborators,\n optionsMenu,\n}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const {type, endTimestamp: timestamp} = chunk\n const IconComponent = getTimelineEventIconComponent(type)\n const authorUserIds = Array.from(chunk.authors)\n const collaboratorsUsersIds = collaborators ? Array.from(collaborators) : []\n const isSelectable = type !== 'delete'\n const dateFormat = useDateTimeFormat({dateStyle: 'medium', timeStyle: 'short'})\n const date = new Date(timestamp)\n\n const updatedTimeAgo = useRelativeTime(date || '', RELATIVE_TIME_OPTIONS)\n\n const formattedTimestamp = useMemo(() => {\n const parsedDate = new Date(timestamp)\n const formattedDate = dateFormat.format(parsedDate)\n\n return formattedDate\n }, [timestamp, dateFormat])\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n evt.preventDefault()\n evt.stopPropagation()\n\n if (isSelectable) {\n onSelect(chunk)\n }\n },\n [onSelect, chunk, isSelectable],\n )\n\n return (\n <Flex align=\"center\" gap={1}>\n <Card\n as=\"button\"\n onClick={handleClick}\n padding={2}\n pressed={isSelected}\n radius={2}\n data-ui=\"timelineItem\"\n data-testid=\"timeline-item-button\"\n data-chunk-id={chunk.id}\n >\n <Flex align=\"center\" gap={3}>\n <div style={{position: 'relative'}}>\n <UserAvatarStack maxLength={3} userIds={authorUserIds} size={2} />\n <IconBox align=\"center\" justify=\"center\" $color={TIMELINE_ITEM_EVENT_TONE[type]}>\n <Text size={0}>{IconComponent && <IconComponent />}</Text>\n </IconBox>\n </div>\n <Stack space={2}>\n <Text size={1} weight=\"medium\">\n {t(TIMELINE_ITEM_I18N_KEY_MAPPING[type]) || <code>{type}</code>}\n </Text>\n\n <Text as=\"time\" size={1} muted dateTime={timestamp} title={formattedTimestamp}>\n {updatedTimeAgo}\n </Text>\n </Stack>\n\n {collaboratorsUsersIds.length > 0 && (\n <Flex flex={1} justify=\"flex-end\" align=\"center\">\n <Tooltip\n placement=\"top\"\n content={<TooltipContent collaborators={collaboratorsUsersIds} />}\n portal\n >\n <Box paddingLeft={2} paddingY={2}>\n <UserAvatarStack\n maxLength={3}\n userIds={collaboratorsUsersIds}\n size={0}\n withTooltip={false}\n />\n </Box>\n </Tooltip>\n </Flex>\n )}\n </Flex>\n </Card>\n {optionsMenu}\n </Flex>\n )\n}\n","import {type Chunk, type ChunkType} from 'sanity'\n\nexport type NonPublishChunk = Omit<Chunk, 'type'> & {\n type: Exclude<ChunkType, 'publish'>\n parentId?: string\n}\n\nexport type PublishChunk = Omit<Chunk, 'type'> & {\n type: 'publish'\n children: string[]\n collaborators: Set<string>\n}\n\nexport const isNonPublishChunk = (chunk: Chunk): chunk is NonPublishChunk =>\n chunk.type !== 'publish'\n\nexport const isPublishChunk = (chunk: Chunk): chunk is PublishChunk => chunk.type === 'publish'\n\n/**\n * searches for the previous publish action in the list of chunks\n * e.g. chunks = [publish, edit, publish, edit, edit] it needs to return the second publish action\n * e.g. chunks = [publish, edit, delete, edit, edit] it returns undefined\n */\n\nfunction getPreviousPublishAction(chunks: Chunk[]) {\n let previousPublish: PublishChunk | null = null\n // We need to iterate from the end to the start of the list\n for (let index = chunks.length - 1; index >= 0; index--) {\n const chunk = chunks[index]\n if (isPublishChunk(chunk)) {\n previousPublish = chunk\n break\n }\n if (chunk.type === 'editDraft') {\n continue\n } else break\n }\n\n return previousPublish\n}\nexport type ChunksWithCollapsedDrafts = NonPublishChunk | PublishChunk\n\n/**\n * Takes an array of chunks and adds them metadata necessary for the timeline view.\n * for draft chunks, it will add the parentId of the published chunk if this draft action is now published\n * for published, it will add the children array and the collaborators array\n */\nexport function addChunksMetadata(chunks: Chunk[]): ChunksWithCollapsedDrafts[] {\n const result: ChunksWithCollapsedDrafts[] = []\n\n for (const chunk of chunks) {\n if (isPublishChunk(chunk)) {\n result.push({\n ...chunk,\n type: 'publish',\n children: [],\n collaborators: new Set(), // Initialize the collaborators array\n })\n continue\n }\n if (isNonPublishChunk(chunk)) {\n const previousPublish = getPreviousPublishAction(result)\n if (chunk.type === 'editDraft' && previousPublish?.type === 'publish') {\n Array.from(chunk.authors).forEach((id) => {\n previousPublish.collaborators.add(id)\n })\n previousPublish.children.push(chunk.id)\n result.push({\n ...chunk,\n parentId: previousPublish.id,\n })\n continue\n }\n }\n if (isNonPublishChunk(chunk)) {\n result.push(chunk)\n }\n }\n\n return result\n}\n","import {Box, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type Chunk,\n CommandList,\n type CommandListRenderItemCallback,\n LoadingBlock,\n useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from './expandableTimelineItemButton'\nimport {ListWrapper, Root, StackWrapper} from './timeline.styled'\nimport {TimelineItem} from './timelineItem'\nimport {\n addChunksMetadata,\n type ChunksWithCollapsedDrafts,\n isNonPublishChunk,\n isPublishChunk,\n} from './utils'\n\ninterface TimelineProps {\n chunks: Chunk[]\n hasMoreChunks: boolean | null\n lastChunk?: Chunk | null\n onLoadMore: () => void\n onSelect: (chunk: Chunk) => void\n /**\n * The list needs a predefined max height for the scroller to work.\n */\n listMaxHeight?: string\n}\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const Timeline = ({\n chunks,\n hasMoreChunks,\n lastChunk: selectedChunk,\n onLoadMore,\n onSelect,\n listMaxHeight = 'calc(100vh - 280px)',\n}: TimelineProps) => {\n const [mounted, setMounted] = useState(false)\n const {t} = useTranslation('studio')\n const selectedChunkId = selectedChunk?.id\n const chunksWithMetadata = useMemo(() => addChunksMetadata(chunks), [chunks])\n\n const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n if (selectedChunkId) {\n // If the selected chunk is a draft, we need to expand its parent\n const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n if (selected && isNonPublishChunk(selected) && selected.parentId) {\n return new Set([selected.parentId])\n }\n }\n return new Set()\n })\n\n useEffect(() => {\n // This effect ensures that when we reload the timeline with a selected draft, we expand its parent.\n if (selectedChunkId) {\n const selected = chunksWithMetadata.find((chunk) => chunk.id === selectedChunkId)\n if (selected && isNonPublishChunk(selected) && selected.parentId) {\n const parentId = selected.parentId\n setExpandedParents((prev) => {\n if (prev.has(parentId)) return prev\n const next = new Set(prev)\n next.add(parentId)\n return next\n })\n }\n }\n }, [chunksWithMetadata, selectedChunkId])\n\n const filteredChunks = useMemo(() => {\n return chunksWithMetadata.filter((chunk) => {\n if (isPublishChunk(chunk) || !chunk.parentId) return true\n // If the chunk has a parent id keep it hidden until the parent is expanded.\n return expandedParents.has(chunk.parentId)\n })\n }, [chunksWithMetadata, expandedParents])\n\n useEffect(() => {\n // This effect ensures that we load more chunks if the list is not long enough.\n // This could happen if a parent chunk has multiple drafts, so you could end with a list of 50 transactions but only\n // 1 parent chunk, the publish, which squashed all the changes.\n // In that case, users will see the loading block at the bottom, but nothing will really be happening. Because they haven't reach the end of the list.\n if (filteredChunks.length < 16 && hasMoreChunks) {\n onLoadMore()\n }\n }, [filteredChunks, hasMoreChunks, onLoadMore])\n\n const handleExpandParent = useCallback(\n (parentId: string) => () =>\n setExpandedParents((prev) => {\n const next = new Set(prev)\n\n if (prev.has(parentId)) next.delete(parentId)\n else next.add(parentId)\n\n return next\n }),\n [],\n )\n\n const selectedIndex = useMemo(\n () =>\n selectedChunkId ? filteredChunks.findIndex((chunk) => chunk.id === selectedChunkId) : -1,\n [selectedChunkId, filteredChunks],\n )\n const handleSelectChunk = useCallback(\n (chunk: ChunksWithCollapsedDrafts) => {\n const timelineChunk = chunks.find((c) => c.id === chunk.id)\n if (timelineChunk) onSelect(timelineChunk)\n else {\n console.error('TimelineItem: chunk not found')\n onSelect(chunk)\n }\n },\n [chunks, onSelect],\n )\n\n const renderItem = useCallback<CommandListRenderItemCallback<(typeof filteredChunks)[number]>>(\n (chunk, {activeIndex}) => {\n const isFirst = activeIndex === 0\n\n return (\n <Box\n paddingBottom={1}\n paddingTop={isFirst ? 1 : 0}\n paddingRight={1}\n paddingLeft={isNonPublishChunk(chunk) && chunk.parentId ? 4 : 1}\n >\n <TimelineItem\n chunk={chunk}\n isSelected={selectedChunkId === chunk.id}\n onSelect={handleSelectChunk}\n collaborators={isPublishChunk(chunk) ? chunk.collaborators : undefined}\n optionsMenu={\n isPublishChunk(chunk) && chunk.children.length > 0 ? (\n <ExpandableTimelineItemButton\n isExpanded={expandedParents.has(chunk.id)}\n onExpand={handleExpandParent(chunk.id)}\n />\n ) : null\n }\n />\n {activeIndex === filteredChunks.length - 1 && hasMoreChunks && <LoadingBlock />}\n </Box>\n )\n },\n [\n expandedParents,\n filteredChunks.length,\n handleExpandParent,\n handleSelectChunk,\n hasMoreChunks,\n selectedChunkId,\n ],\n )\n\n useEffect(() => setMounted(true), [])\n\n return (\n <Root\n /**\n * We delay initial rendering if `selectedIndex` is present.\n * This is a _temporary_ workaround to allow the virtual <CommandList>\n * to scroll to a specific index prior to being displayed.\n *\n * Without this, there'll be a noticeable 'flash' where the virtual list\n * will render with its child items at the top and then scroll into position.\n */\n $visible={!selectedIndex || mounted}\n data-ui=\"timeline\"\n >\n {filteredChunks.length === 0 && (\n <StackWrapper padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </StackWrapper>\n )}\n\n {filteredChunks.length > 0 && (\n <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={t('timeline.list.aria-label')}\n autoFocus=\"list\"\n initialIndex={selectedIndex}\n initialScrollAlign=\"center\"\n itemHeight={57}\n items={filteredChunks}\n onEndReached={onLoadMore}\n onEndReachedIndexOffset={20}\n overscan={5}\n renderItem={renderItem}\n wrapAround={false}\n />\n </ListWrapper>\n )}\n </Root>\n )\n}\n\nTimeline.displayName = 'Timeline'\n","import {ErrorOutlineIcon} from '@sanity/icons'\nimport {Flex, Stack} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nexport function TimelineError({versionError}: {versionError?: boolean}) {\n const {t} = useTranslation('studio')\n\n return (\n <Flex align=\"flex-start\" gap={3} padding={4}>\n <TextWithTone tone=\"critical\">\n <ErrorOutlineIcon />\n </TextWithTone>\n <Stack space={4}>\n <TextWithTone size={1} tone=\"critical\" weight=\"medium\">\n {versionError\n ? t('timeline.error.load-document-changes-version-title')\n : t('timeline.error.load-document-changes-title')}\n </TextWithTone>\n <TextWithTone size={1} tone=\"critical\">\n {versionError\n ? t('timeline.error.load-document-changes-version-description')\n : t('timeline.error.load-document-changes-description')}\n </TextWithTone>\n </Stack>\n </Flex>\n )\n}\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n Flex,\n type Placement,\n PortalProvider,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {type Chunk, useTimelineSelector, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../ui-components'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {Timeline} from './timeline'\nimport {TimelineError} from './TimelineError'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING} from './timelineI18n'\n\ninterface TimelineMenuProps {\n chunk: Chunk | null\n mode: 'rev' | 'since'\n placement?: Placement\n}\n\nconst Root = styled(Popover)`\n overflow: hidden;\n overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nexport function TimelineMenu({chunk, mode, placement}: TimelineMenuProps) {\n const {setTimelineRange, timelineError, ready, timelineStore} = useDocumentPane()\n const [open, setOpen] = useState(false)\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n\n const toast = useToast()\n\n const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n\n const {t} = useTranslation('studio')\n\n const handleOpen = useCallback(() => {\n setOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setOpen(false)\n }, [])\n\n const handleGlobalKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (open && (event.key === 'Escape' || event.key === 'Tab')) {\n handleClose()\n button?.focus()\n }\n },\n [button, handleClose, open],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n const selectRev = useCallback(\n (revChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineRange, t, timelineStore, toast],\n )\n\n const selectSince = useCallback(\n (sinceChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForSince(sinceChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineRange, t, timelineStore, toast],\n )\n\n const handleLoadMore = useCallback(() => {\n if (!loading) {\n timelineStore?.loadMore()\n }\n }, [loading, timelineStore])\n\n const content = useMemo(() => {\n if (timelineError) return <TimelineError />\n\n if (mode === 'rev') {\n return (\n <Timeline\n chunks={chunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={realRevChunk}\n onLoadMore={handleLoadMore}\n onSelect={selectRev}\n />\n )\n }\n\n const filteredChunks = realRevChunk\n ? chunks.filter((c) => c.index < realRevChunk.index)\n : chunks\n return (\n <Timeline\n chunks={filteredChunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={sinceTime}\n onLoadMore={handleLoadMore}\n onSelect={selectSince}\n />\n )\n }, [\n chunks,\n handleLoadMore,\n hasMoreChunks,\n mode,\n realRevChunk,\n selectRev,\n selectSince,\n sinceTime,\n timelineError,\n ])\n\n const formatParams = {\n timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n }\n\n const revLabel = chunk\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[chunk.type], {\n context: 'timestamp',\n timestamp: new Date(chunk?.endTimestamp),\n formatParams,\n })\n : t('timeline.latest-revision')\n\n const sinceLabel = chunk\n ? t('timeline.since', {\n timestamp: new Date(chunk?.endTimestamp),\n formatParams,\n })\n : t('timeline.since-version-missing')\n\n const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n return (\n <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n <Root\n data-testid=\"timeline-menu\"\n constrainSize\n content={open && content}\n data-ui=\"versionMenu\"\n open={open}\n placement={placement}\n matchReferenceWidth\n portal\n ref={setPopoverRef}\n >\n <Flex width={'fill'}>\n <Button\n data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n disabled={!ready}\n mode=\"ghost\"\n onClick={open ? handleClose : handleOpen}\n ref={setButton}\n selected={open}\n width=\"fill\"\n tooltipProps={null}\n justify={'space-between'}\n style={{\n maxWidth: '100%',\n }}\n iconRight={ChevronDownIcon}\n text={ready ? buttonLabel : t('timeline.loading-history')}\n />\n </Flex>\n </Root>\n </PortalProvider>\n )\n}\n","import {motion} from 'framer-motion'\nimport {type ComponentProps} from 'react'\nimport {keyframes, styled} from 'styled-components'\n\nconst StyledMotionPath = styled(motion.path)`\n transform-origin: center;\n`\n\ntype MotionCircleProps = Omit<ComponentProps<typeof motion.circle>, 'd'>\ntype MotionPathProps = Omit<ComponentProps<typeof motion.path>, 'd' | 'ref'>\n\nconst Circle = (props: MotionCircleProps) => (\n <motion.circle fill=\"none\" r=\"8\" cx=\"12.5\" cy=\"12.5\" strokeWidth=\"1.2\" {...props} />\n)\nconst Arrows = (props: MotionPathProps) => (\n <StyledMotionPath\n fill=\"none\"\n d=\"M14 17.5619L11.5 20.5L14.5 23.0619M11 7.43811L13.5 4.50001L10.5 1.93811\"\n {...props}\n />\n)\nconst Checkmark = (props: MotionPathProps) => (\n <motion.path d=\"M9.5 12.1316L11.7414 14.5L16 10\" {...props} />\n)\n\nconst rotateAnimation = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\nconst RotateGroup = styled.g`\n transform-origin: center;\n\n &[data-rotate] {\n animation: ${rotateAnimation} 1s ease-in-out infinite;\n }\n`\n\nconst root = {\n syncing: {\n scale: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n scale: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1.05, 0.99, 1],\n transition: {\n duration: 0.5,\n delay: 0.2,\n },\n },\n changes: {transition: {duration: 0}},\n}\n\nconst circle = {\n syncing: {\n strokeDasharray: '0, 0, 23, 3, 23, 3',\n strokeDashoffset: 10,\n opacity: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n strokeDasharray: '0, 0, 23, 0, 23, 0',\n strokeDashoffset: 10,\n opacity: 1,\n transition: {\n duration: 0.2,\n },\n },\n changes: {\n strokeDasharray: '0, 60, 23, 0, 23, 0',\n strokeDashoffset: 0,\n opacity: 0,\n transition: {\n duration: 0.5,\n },\n },\n}\n\nconst arrows = {\n syncing: {\n opacity: 1,\n transition: {\n duration: 0,\n },\n },\n saved: {\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n changes: {\n opacity: 0,\n },\n}\n\nconst checkmark = {\n syncing: {\n pathLength: 0,\n transition: {duration: 0},\n },\n saved: {\n pathLength: 1,\n transition: {\n delay: 0.4,\n duration: 0.3,\n },\n },\n changes: {\n pathLength: 0,\n transition: {\n duration: 0.2,\n },\n },\n}\n\ninterface AnimatedStatusIconProps {\n status?: 'changes' | 'saved' | 'syncing'\n}\n\nexport function AnimatedStatusIcon(props: AnimatedStatusIconProps) {\n const {status} = props\n\n if (!status) {\n return null\n }\n\n return (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n data-sanity-icon=\"animated-status-icon\"\n >\n <motion.g variants={root} initial={status} animate={status}>\n <RotateGroup data-rotate={status === 'changes' ? undefined : ''}>\n <Arrows variants={arrows} initial={status} animate={status} />\n <Circle variants={circle} initial={status} animate={status} />\n </RotateGroup>\n <Checkmark variants={checkmark} initial={status} animate={status} />\n </motion.g>\n </svg>\n )\n}\n","import {type ButtonTone, Flex, Text} from '@sanity/ui'\nimport {TextWithTone, useTranslation} from 'sanity'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {AnimatedStatusIcon} from './AnimatedStatusIcon'\n\ntype StatusType = 'saved' | 'syncing'\ninterface ReviewChangesButtonProps {\n status?: StatusType\n}\n\nconst STATUS_DICTIONARY: Record<StatusType, {i18nKey: string; tone: ButtonTone}> = {\n saved: {\n i18nKey: 'status-bar.document-status-pulse.status.saved.text',\n tone: 'positive',\n },\n syncing: {\n i18nKey: 'status-bar.document-status-pulse.status.syncing.text',\n tone: 'default',\n },\n}\n\nexport const DocumentStatusPulse = (props: ReviewChangesButtonProps) => {\n const {status} = props\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (status !== 'saved' && status !== 'syncing') {\n return null\n }\n\n const currentStatus = STATUS_DICTIONARY[status]\n\n return (\n <Flex align=\"center\" gap={2} data-testid=\"pane-footer-document-status-pulse\">\n <TextWithTone size={1} tone={currentStatus.tone}>\n <AnimatedStatusIcon status={status} />\n </TextWithTone>\n\n <Text muted size={1}>\n {t(currentStatus.i18nKey)}\n </Text>\n </Flex>\n )\n}\n","import {\n Box,\n // eslint-disable-next-line no-restricted-imports\n Button,\n Flex,\n Skeleton,\n Text,\n} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'framer-motion'\nimport {useEffect, useLayoutEffect, useMemo, useState} from 'react'\nimport {\n AvatarSkeleton,\n isPublishedPerspective,\n TIMELINE_ITEM_I18N_KEY_MAPPING,\n useEvents,\n usePerspective,\n UserAvatar,\n useRelativeTime,\n useSource,\n useSyncState,\n useTimelineSelector,\n useTranslation,\n} from 'sanity'\n\nimport {HISTORY_INSPECTOR_NAME} from '../constants'\nimport {TIMELINE_ITEM_I18N_KEY_MAPPING as TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY} from '../timeline'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {DocumentStatusPulse} from './DocumentStatusPulse'\n\nconst RELATIVE_TIME_OPTIONS = {\n minimal: true,\n useTemporalPhrase: true,\n} as const\n\nconst MotionButton = motion.create(Button)\nconst MotionBox = motion.create(Box)\n\nconst ButtonSkeleton = () => {\n return (\n <Flex align=\"center\" gap={3} paddingLeft={1} paddingRight={2} paddingY={2}>\n <div style={{margin: -5}}>\n <AvatarSkeleton $size={0} animated />\n </div>\n <Skeleton animated style={{width: '80px', height: '15px'}} radius={2} />\n </Flex>\n )\n}\n\nconst DocumentStatusButton = ({\n author,\n translationKey,\n timestamp = '',\n}: {\n author: string\n translationKey: string\n timestamp?: string\n}) => {\n const {onHistoryOpen, inspector, onHistoryClose} = useDocumentPane()\n const {t} = useTranslation()\n const relativeTime = useRelativeTime(timestamp, RELATIVE_TIME_OPTIONS)\n\n return (\n <MotionButton\n data-testid=\"pane-footer-document-status\"\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n exit={{opacity: 0}}\n mode=\"bleed\"\n onClick={inspector?.name === HISTORY_INSPECTOR_NAME ? onHistoryClose : onHistoryOpen}\n padding={2}\n muted\n >\n <Flex align=\"center\" flex=\"none\" gap={3}>\n {author && (\n <div style={{margin: -5}}>\n <UserAvatar user={author} size={0} />\n </div>\n )}\n <Text muted size={1}>\n {t(translationKey)} {relativeTime}\n </Text>\n </Flex>\n </MotionButton>\n )\n}\n\nconst FallbackStatus = () => {\n const {editState} = useDocumentPane()\n const {selectedPerspective} = usePerspective()\n\n const status = useMemo(() => {\n if (isPublishedPerspective(selectedPerspective) && editState?.published?._updatedAt) {\n return {\n translationKey: TIMELINE_ITEM_I18N_KEY_MAPPING.published.createDocumentVersion,\n timestamp: editState.published._updatedAt,\n }\n }\n if (editState?.version?._updatedAt) {\n return {\n translationKey:\n editState?.version?._updatedAt === editState?.version?._createdAt\n ? TIMELINE_ITEM_I18N_KEY_MAPPING.version.createDocumentVersion\n : TIMELINE_ITEM_I18N_KEY_MAPPING.version.editDocumentVersion,\n timestamp: editState.version._updatedAt,\n }\n }\n if (editState?.draft?._updatedAt) {\n return {\n translationKey:\n editState?.draft?._updatedAt === editState?.draft?._createdAt\n ? TIMELINE_ITEM_I18N_KEY_MAPPING.draft.createDocumentVersion\n : TIMELINE_ITEM_I18N_KEY_MAPPING.draft.editDocumentVersion,\n timestamp: editState.draft._updatedAt,\n }\n }\n return null\n }, [\n selectedPerspective,\n editState?.published?._updatedAt,\n editState?.version?._updatedAt,\n editState?.version?._createdAt,\n editState?.draft?._updatedAt,\n editState?.draft?._createdAt,\n ])\n if (!status) {\n return null\n }\n return (\n <DocumentStatusButton\n author=\"\"\n translationKey={status.translationKey}\n timestamp={status.timestamp}\n />\n )\n}\n\nconst EventsStatus = () => {\n const {events, loading} = useEvents()\n const event = events?.[0]\n\n if (!event && loading) {\n return <ButtonSkeleton />\n }\n if (!event) {\n return <FallbackStatus />\n }\n\n return (\n <DocumentStatusButton\n author={event.author}\n translationKey={TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type]}\n timestamp={event.timestamp}\n />\n )\n}\n\nconst TimelineStatus = () => {\n const {timelineStore} = useDocumentPane()\n const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n const event = chunks?.[0]\n\n if (!event && loading) {\n return <ButtonSkeleton />\n }\n if (!event) {\n return <FallbackStatus />\n }\n\n const author = Array.from(event.authors)[0]\n return (\n <DocumentStatusButton\n author={author}\n translationKey={TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY[event.type]}\n timestamp={event.endTimestamp}\n />\n )\n}\n\nconst SYNCING_TIMEOUT = 1000\nconst SAVED_TIMEOUT = 3000\n\nexport function DocumentStatusLine() {\n const {documentId, documentType, editState, value} = useDocumentPane()\n const [status, setStatus] = useState<'saved' | 'syncing' | null>(null)\n const source = useSource()\n const eventsEnabled = source.beta?.eventsAPI?.documents\n\n const syncState = useSyncState(documentId, documentType, editState?.release)\n\n const lastUpdated = value?._updatedAt\n\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n // Schedule an update to set the status to 'saved' when status changed to 'syncing.\n // We use `syncState.isSyncing` here to avoid the status being set to 'saved' when the document is syncing.\n if (status === 'syncing' && !syncState.isSyncing) {\n const timerId = setTimeout(() => setStatus('saved'), SYNCING_TIMEOUT)\n return () => clearTimeout(timerId)\n }\n // Schedule an update to clear the status when status changed to 'saved'\n if (status === 'saved') {\n const timerId = setTimeout(() => setStatus(null), SAVED_TIMEOUT)\n return () => clearTimeout(timerId)\n }\n }, [status, lastUpdated, syncState.isSyncing])\n\n // Clear the status when documentId changes to make sure we don't show the wrong status when opening a new document\n useLayoutEffect(() => {\n setStatus(null)\n }, [documentId])\n\n // Set status to 'syncing' when lastUpdated changes and we go from not syncing to syncing\n useLayoutEffect(() => {\n if (syncState.isSyncing) {\n setStatus('syncing')\n }\n }, [syncState.isSyncing, lastUpdated])\n\n return (\n <AnimatePresence>\n {status ? (\n <MotionBox\n paddingLeft={2}\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n exit={{opacity: 0}}\n >\n <DocumentStatusPulse status={status || undefined} />\n </MotionBox>\n ) : (\n <>{eventsEnabled ? <EventsStatus /> : <TimelineStatus />}</>\n )}\n </AnimatePresence>\n )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {format} from 'date-fns'\nimport {Translate, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport const StatusText = styled(Text)`\n color: var(--card-muted-fg-color);\n\n em {\n color: var(--card-fg-color);\n font-weight: 500;\n font-style: normal;\n }\n`\n\nexport function RevisionStatusLine(): React.JSX.Element {\n const {displayed, revisionNotFound} = useDocumentPane()\n const {t} = useTranslation()\n const date = displayed?._updatedAt || displayed?._createdAt\n\n const message = {\n name: 'revision',\n text: date ? (\n <Translate\n t={t}\n i18nKey=\"document-status.revision-from\"\n values={{\n date: format(new Date(date), `MMM d, yyyy '@' pp`),\n }}\n />\n ) : null,\n tone: 'caution',\n }\n\n return (\n <>\n <Flex flex={1} gap={3} padding={2}>\n <Box flex=\"none\">\n <Text size={1}>\n <RestoreIcon />\n </Text>\n </Box>\n <Box flex={1}>\n <StatusText size={1} textOverflow=\"ellipsis\">\n {revisionNotFound ? (\n <Translate t={t} i18nKey=\"document-status.revision-not-found\" />\n ) : (\n message.text\n )}\n </StatusText>\n </Box>\n </Flex>\n </>\n )\n}\n","import {useLayoutEffect} from 'react'\nimport {resizeObserver} from 'sanity'\n\nexport function useResizeObserver({\n element,\n onResize,\n}: {\n element?: HTMLDivElement | null\n onResize: (event: ResizeObserverEntry) => void\n}): void {\n useLayoutEffect(() => {\n if (element) {\n resizeObserver.observe(element, onResize)\n }\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element)\n }\n }\n }, [element, onResize])\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type Ref, useCallback, useMemo, useState} from 'react'\nimport {\n type CreateLinkMetadata,\n isPublishedPerspective,\n isReleaseDocument,\n isSanityCreateLinked,\n usePerspective,\n useSanityCreateConfig,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../../components'\nimport {SpacerButton} from '../../../components/spacerButton'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {EMPTY_PARAMS} from '../constants'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {useDocumentTitle} from '../useDocumentTitle'\nimport {DocumentBadges} from './DocumentBadges'\nimport {DocumentStatusBarActions, HistoryStatusBarActions} from './DocumentStatusBarActions'\nimport {DocumentStatusLine} from './DocumentStatusLine'\nimport {RevisionStatusLine} from './RevisionStatusLine'\nimport {useResizeObserver} from './useResizeObserver'\n\nexport interface DocumentStatusBarProps {\n actionsBoxRef?: Ref<HTMLDivElement>\n createLinkMetadata?: CreateLinkMetadata\n}\n\nconst CONTAINER_BREAKPOINT = 480 // px\n\nconst AnimatedCard = motion.create(Card)\n\nexport function DocumentStatusBar(props: DocumentStatusBarProps) {\n const {actionsBoxRef, createLinkMetadata} = props\n const {editState, onChange: onDocumentChange, revisionNotFound} = useDocumentPane()\n const {params = EMPTY_PARAMS} = usePaneRouter()\n const {selectedPerspective} = usePerspective()\n const {title} = useDocumentTitle()\n\n const CreateLinkedActions = useSanityCreateConfig().components?.documentLinkedActions\n\n const showingRevision = Boolean(params.rev)\n const [collapsed, setCollapsed] = useState<boolean | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n const handleResize = useCallback((event: ResizeObserverEntry) => {\n setCollapsed(event.contentRect.width < CONTAINER_BREAKPOINT)\n }, [])\n\n useResizeObserver({element: rootElement, onResize: handleResize})\n\n const shouldRender = useMemo(() => {\n const isReady = Boolean(editState?.ready && typeof collapsed === 'boolean')\n if (selectedPerspective) {\n if (isPublishedPerspective(selectedPerspective)) {\n return isReady && Boolean(editState?.published)\n }\n if (isReleaseDocument(selectedPerspective)) {\n return isReady && Boolean(editState?.version)\n }\n }\n return isReady\n }, [collapsed, editState?.published, editState?.ready, editState?.version, selectedPerspective])\n\n let actions: React.JSX.Element | null = null\n if (createLinkMetadata && isSanityCreateLinked(createLinkMetadata) && CreateLinkedActions) {\n actions = (\n <CreateLinkedActions\n metadata={createLinkMetadata}\n panelPortalElementId={DOCUMENT_PANEL_PORTAL_ELEMENT}\n onDocumentChange={onDocumentChange}\n documentTitle={title}\n />\n )\n } else if (showingRevision) {\n actions = <HistoryStatusBarActions />\n } else {\n actions = <DocumentStatusBarActions />\n }\n\n if (showingRevision && revisionNotFound) {\n return null\n }\n\n return (\n <AnimatedCard\n key={showingRevision ? 'revision' : 'published'}\n initial={{opacity: 0.2}}\n animate={{opacity: 1, transition: {duration: 0.3}}}\n tone={showingRevision ? 'caution' : undefined}\n radius={3}\n ref={setRootElement}\n sizing=\"border\"\n padding={2}\n >\n {shouldRender && (\n <Flex\n align=\"stretch\"\n gap={1}\n justify=\"space-between\"\n paddingLeft={showingRevision ? 0 : 1}\n paddingRight={showingRevision ? 0 : 1}\n >\n <Flex align=\"center\" flex={1} gap={collapsed ? 2 : 3} wrap=\"wrap\" paddingRight={3}>\n <Flex align=\"center\">\n {showingRevision ? <RevisionStatusLine /> : <DocumentStatusLine />}\n <SpacerButton />\n </Flex>\n <DocumentBadges />\n </Flex>\n\n <Flex\n align=\"flex-start\"\n justify=\"flex-end\"\n ref={actionsBoxRef}\n style={{flexShrink: 0, marginLeft: 'auto'}}\n >\n <SpacerButton />\n {actions}\n </Flex>\n </Flex>\n )}\n </AnimatedCard>\n )\n}\n","import {isHotkey} from 'is-hotkey-esm'\nimport {\n type ElementType,\n type HTMLProps,\n memo,\n type Ref,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport {type DocumentActionDescription, type DocumentActionProps, LegacyLayerProvider} from 'sanity'\n\nimport {RenderActionCollectionState} from '../../../components'\nimport {ActionStateDialog} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nexport interface KeyboardShortcutResponderProps {\n actionsBoxElement: HTMLElement | null\n activeIndex: number\n as?: ElementType\n currentMinWidth?: number\n flex?: number\n id: string\n minWidth?: number\n onActionStart: (index: number) => void\n rootRef: Ref<HTMLDivElement>\n states: DocumentActionDescription[]\n}\n\nconst KeyboardShortcutResponder = memo(function KeyboardShortcutResponder(\n props: KeyboardShortcutResponderProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n) {\n const {\n actionsBoxElement,\n activeIndex,\n as: As = 'div',\n children,\n id,\n onActionStart,\n onKeyDown,\n rootRef,\n states,\n ...rest\n } = props\n\n const activeAction = states[activeIndex]\n\n const handleKeyDown = useCallback(\n (event: any) => {\n const matchingStates = states.filter(\n (state) => state.shortcut && isHotkey(state.shortcut, event),\n )\n\n const matchingState = matchingStates[0]\n\n if (matchingStates.length > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `Keyboard shortcut conflict: More than one document action matches the shortcut \"${matchingState.shortcut}\"`,\n )\n }\n\n if (matchingState && !matchingState.disabled && matchingState.onHandle) {\n event.preventDefault()\n matchingState.onHandle()\n onActionStart(states.indexOf(matchingState))\n return\n }\n\n if (onKeyDown) {\n onKeyDown(event)\n }\n },\n [onActionStart, onKeyDown, states],\n )\n\n return (\n <As id={id} onKeyDown={handleKeyDown} tabIndex={-1} {...rest} ref={rootRef}>\n {children}\n {activeAction && activeAction.dialog && (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <ActionStateDialog dialog={activeAction.dialog} referenceElement={actionsBoxElement} />\n </LegacyLayerProvider>\n )}\n </As>\n )\n})\n\nexport interface DocumentActionShortcutsProps {\n actionsBoxElement: HTMLElement | null\n as?: ElementType\n currentMinWidth?: number\n debug?: boolean\n flex: number\n id: string\n minWidth: number\n rootRef: Ref<HTMLDivElement>\n}\n\nexport const DocumentActionShortcuts = memo(\n (props: DocumentActionShortcutsProps & Omit<HTMLProps<HTMLDivElement>, 'as'>) => {\n const {actionsBoxElement, as = 'div', children, ...rest} = props\n const {actions, editState, isInitialValueLoading, revisionId} = useDocumentPane()\n const [activeIndex, setActiveIndex] = useState(-1)\n\n const onActionStart = useCallback((idx: number) => {\n setActiveIndex(idx)\n }, [])\n\n const actionProps: DocumentActionProps | null = useMemo(\n () =>\n editState && {\n ...editState,\n\n // @todo: what to call here?\n onComplete: () => undefined,\n\n revision: revisionId || undefined,\n initialValueResolved: !isInitialValueLoading,\n },\n [editState, isInitialValueLoading, revisionId],\n )\n\n const renderDocumentActionShortcuts = useCallback<\n (props: {states: DocumentActionDescription[]}) => React.ReactNode\n >(\n ({states}) => (\n <KeyboardShortcutResponder\n {...rest}\n activeIndex={activeIndex}\n actionsBoxElement={actionsBoxElement}\n as={as}\n onActionStart={onActionStart}\n states={states}\n >\n {children}\n </KeyboardShortcutResponder>\n ),\n [actionsBoxElement, activeIndex, as, children, onActionStart, rest],\n )\n\n if (!actionProps || !actions) return null\n\n return (\n <RenderActionCollectionState actionProps={actionProps} actions={actions}>\n {renderDocumentActionShortcuts}\n </RenderActionCollectionState>\n )\n },\n)\n\nDocumentActionShortcuts.displayName = 'Memo(DocumentActionShortcuts)'\n","import {EarthAmericasIcon, JsonIcon, LinkIcon, TransferIcon} from '@sanity/icons'\nimport {type DocumentInspector, type DocumentInspectorMenuItem, type TFunction} from 'sanity'\n\nimport {type DocumentIdStack} from '../../hooks/useDocumentIdStack'\nimport {type PaneMenuItem, type StructureToolFeatures} from '../../types'\nimport {INSPECT_ACTION_PREFIX} from './constants'\n\ninterface GetMenuItemsParams {\n currentInspector?: DocumentInspector\n features: StructureToolFeatures\n hasValue: boolean\n inspectors: DocumentInspector[]\n previewUrl?: string | null\n documentIdStack?: DocumentIdStack\n inspectorMenuItems: DocumentInspectorMenuItem[]\n t: TFunction\n}\n\nfunction getInspectorItems({\n currentInspector,\n hasValue,\n inspectors,\n inspectorMenuItems,\n}: GetMenuItemsParams): PaneMenuItem[] {\n return inspectors\n .map((inspector, index) => {\n const menuItem = inspectorMenuItems[index]\n\n if (!menuItem || menuItem.hidden) return null\n\n return {\n action: `${INSPECT_ACTION_PREFIX}${inspector.name}`,\n group: menuItem.showAsAction ? undefined : 'inspectors',\n icon: menuItem.icon,\n disabled: !hasValue,\n selected: currentInspector?.name === inspector.name,\n shortcut: menuItem.hotkeys?.join('+'),\n showAsAction: menuItem.showAsAction,\n title: menuItem.title,\n tone: menuItem.tone,\n }\n })\n .filter(Boolean) as PaneMenuItem[]\n}\n\nfunction getInspectItem({hasValue, t}: GetMenuItemsParams): PaneMenuItem {\n return {\n action: 'inspect',\n group: 'inspectors',\n title: t('document-inspector.menu-item.title'),\n icon: JsonIcon,\n disabled: !hasValue,\n shortcut: 'Ctrl+Alt+I',\n }\n}\n\nfunction getCompareVersionsItem({documentIdStack, t}: GetMenuItemsParams): PaneMenuItem | null {\n const disabled = typeof documentIdStack?.previousId === 'undefined' && {\n reason: t('compare-versions.menu-item.disabled-reason'),\n }\n\n return {\n action: 'compareVersions',\n group: 'inspectors',\n title: t('compare-versions.menu-item.title'),\n icon: TransferIcon,\n disabled,\n }\n}\n\nexport function getProductionPreviewItem({previewUrl, t}: GetMenuItemsParams): PaneMenuItem | null {\n if (!previewUrl) return null\n\n return {\n action: 'production-preview',\n group: 'links',\n title: t('production-preview.menu-item.title'),\n icon: EarthAmericasIcon,\n shortcut: 'Ctrl+Alt+O',\n }\n}\n\nexport function getMenuItems(params: GetMenuItemsParams): PaneMenuItem[] {\n const inspectorItems = getInspectorItems(params)\n const items = [\n // Get production preview item\n getProductionPreviewItem(params),\n getCompareVersionsItem(params),\n ].filter(Boolean) as PaneMenuItem[]\n\n return [\n // Always present document menu item to copy current url to clipboard\n {\n action: 'copy-document-url',\n showAsAction: true,\n title: params.t('action.copy-document-url.label'),\n icon: LinkIcon,\n },\n ...inspectorItems,\n\n // TODO: convert to inspector or document view?\n getInspectItem(params),\n\n ...items,\n ]\n}\n","import {Card, Code, Stack, Text} from '@sanity/ui'\nimport {isDev, Translate, useTranslation} from 'sanity'\n\nimport {ErrorPane} from '../../error'\n\ninterface DocumentLayoutErrorProps {\n currentMinWidth?: number\n documentType?: string\n minWidth?: number\n paneKey: string\n value?: Record<string, unknown>\n}\n\nexport function DocumentLayoutError(props: DocumentLayoutErrorProps) {\n const {documentType, value, currentMinWidth, paneKey, minWidth} = props\n const {t} = useTranslation()\n\n return (\n <ErrorPane\n currentMinWidth={currentMinWidth}\n flex={2.5}\n minWidth={minWidth}\n paneKey={paneKey}\n title={\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.title\"\n values={{documentType}}\n />\n }\n tone=\"caution\"\n >\n <Stack space={4}>\n {documentType && (\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-unknown-type.text\"\n values={{documentType}}\n />\n </Text>\n )}\n\n {!documentType && (\n <Text as=\"p\">{t('panes.document-pane.document-unknown-type.without-schema.text')}</Text>\n )}\n\n {isDev && value && (\n /* eslint-disable i18next/no-literal-string */\n <>\n <Text as=\"p\">Here is the JSON representation of the document:</Text>\n\n <Card padding={3} overflow=\"auto\" radius={2} shadow={1} tone=\"inherit\">\n <Code language=\"json\" size={[1, 1, 2]}>\n {JSON.stringify(value, null, 2)}\n </Code>\n </Card>\n </>\n /* eslint-enable i18next/no-literal-string */\n )}\n </Stack>\n </ErrorPane>\n )\n}\n","import {DialogProvider, type DialogProviderProps, PortalProvider} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useMemo} from 'react'\nimport {getSanityCreateLinkMetadata, useZIndex} from 'sanity'\n\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {PaneFooter} from '../../../components'\nimport {DOCUMENT_PANEL_PORTAL_ELEMENT} from '../../../constants'\nimport {DocumentStatusBar} from '../statusBar'\nimport {useDocumentPane} from '../useDocumentPane'\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n 'fixed',\n 'fixed',\n // And we use the `position: absolute` strategy (within panes) on wide screens.\n 'absolute',\n]\n\nexport function DocumentLayoutFooter({\n documentPanelPortalElement,\n setFooterElement,\n setActionsBoxElement,\n}: {\n documentPanelPortalElement: HTMLElement | null\n setFooterElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n setActionsBoxElement: Dispatch<SetStateAction<HTMLDivElement | null>>\n}) {\n const zOffsets = useZIndex()\n\n const {value} = useDocumentPane()\n const portalElements = useMemo(\n () => ({[DOCUMENT_PANEL_PORTAL_ELEMENT]: documentPanelPortalElement}),\n [documentPanelPortalElement],\n )\n\n const createLinkMetadata = getSanityCreateLinkMetadata(value)\n return (\n // These providers are added because we want the dialogs in `DocumentStatusBar` to be scoped to the document pane\n // The portal element comes from `DocumentPanel`.\n <PortalProvider __unstable_elements={portalElements}>\n <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.portal}>\n <PaneFooter ref={setFooterElement} padding={1}>\n <TooltipDelayGroupProvider>\n <DocumentStatusBar\n actionsBoxRef={setActionsBoxElement}\n createLinkMetadata={createLinkMetadata}\n />\n </TooltipDelayGroupProvider>\n </PaneFooter>\n </DialogProvider>\n </PortalProvider>\n )\n}\n","import {DialogProvider, type DialogProviderProps, Flex, useElementRect} from '@sanity/ui'\nimport {isHotkey} from 'is-hotkey-esm'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n ChangeConnectorRoot,\n type DocumentFieldActionNode,\n type DocumentInspectorMenuItem,\n FieldActionsProvider,\n FieldActionsResolver,\n GetFormValueProvider,\n type Path,\n useGlobalCopyPasteElementHandler,\n useTranslation,\n useZIndex,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Pane, usePaneLayout, usePaneRouter} from '../../../components'\nimport {useDocumentIdStack} from '../../../hooks/useDocumentIdStack'\nimport {structureLocaleNamespace} from '../../../i18n'\nimport {useStructureTool} from '../../../useStructureTool'\nimport {\n DOCUMENT_INSPECTOR_MIN_WIDTH,\n DOCUMENT_PANEL_INITIAL_MIN_WIDTH,\n DOCUMENT_PANEL_MIN_WIDTH,\n} from '../constants'\nimport {DocumentInspectorMenuItemsResolver} from '../DocumentInspectorMenuItemsResolver'\nimport {DocumentOperationResults} from '../DocumentOperationResults'\nimport {DocumentPanel} from '../documentPanel'\nimport {DocumentPanelHeader} from '../documentPanel/header'\nimport {DocumentActionShortcuts} from '../keyboardShortcuts'\nimport {getMenuItems} from '../menuItems'\nimport {useDocumentPane} from '../useDocumentPane'\nimport {DocumentLayoutError} from './DocumentLayoutError'\nimport {DocumentLayoutFooter} from './DocumentLayoutFooter'\n\nconst EMPTY_ARRAY: [] = []\n\nconst DIALOG_PROVIDER_POSITION: DialogProviderProps['position'] = [\n // We use the `position: fixed` for dialogs on narrower screens (first two media breakpoints).\n 'fixed',\n 'fixed',\n // And we use the `position: absolute` strategy (within panes) on wide screens.\n 'absolute',\n]\n\nconst StyledChangeConnectorRoot = styled(ChangeConnectorRoot)`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n`\n\nexport function DocumentLayout() {\n const {\n changesOpen,\n displayed,\n documentId,\n documentType,\n editState,\n fieldActions,\n focusPath,\n inspectOpen,\n inspector,\n inspectors,\n onFocus,\n onHistoryOpen,\n onMenuAction,\n onPathOpen,\n paneKey,\n schemaType,\n value,\n isInitialValueLoading,\n ready,\n previewUrl,\n } = useDocumentPane()\n const {params: paneParams} = usePaneRouter()\n const {features} = useStructureTool()\n const {t} = useTranslation(structureLocaleNamespace)\n const {collapsed: layoutCollapsed} = usePaneLayout()\n\n const zOffsets = useZIndex()\n\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [footerElement, setFooterElement] = useState<HTMLDivElement | null>(null)\n const [headerElement, setHeaderElement] = useState<HTMLDivElement | null>(null)\n\n const [actionsBoxElement, setActionsBoxElement] = useState<HTMLDivElement | null>(null)\n const [documentPanelPortalElement, setDocumentPanelPortalElement] = useState<HTMLElement | null>(\n null,\n )\n\n useGlobalCopyPasteElementHandler({\n element: rootElement,\n focusPath,\n value,\n })\n\n const [inspectorMenuItems, setInspectorMenuItems] = useState<DocumentInspectorMenuItem[]>([])\n const [rootFieldActionNodes, setRootFieldActionNodes] = useState<DocumentFieldActionNode[]>([])\n\n const footerRect = useElementRect(footerElement)\n const headerRect = useElementRect(headerElement)\n const footerHeight = footerRect?.height\n const headerHeight = headerRect?.height\n const currentMinWidth =\n DOCUMENT_PANEL_INITIAL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n const minWidth = DOCUMENT_PANEL_MIN_WIDTH + (inspector ? DOCUMENT_INSPECTOR_MIN_WIDTH : 0)\n\n const currentInspector = useMemo(\n () => inspectors?.find((i) => i.name === inspector?.name),\n [inspectors, inspector?.name],\n )\n\n const documentIdStack = useDocumentIdStack({displayed, documentId, editState})\n\n const hasValue = Boolean(value)\n\n const menuItems = useMemo(\n () =>\n getMenuItems({\n currentInspector,\n features,\n hasValue,\n inspectorMenuItems,\n inspectors,\n previewUrl,\n documentIdStack,\n t,\n }),\n [\n currentInspector,\n documentIdStack,\n features,\n hasValue,\n inspectorMenuItems,\n inspectors,\n previewUrl,\n t,\n ],\n )\n\n const handleKeyUp = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n for (const item of menuItems) {\n if (item.shortcut) {\n if (isHotkey(item.shortcut, event)) {\n event.preventDefault()\n event.stopPropagation()\n onMenuAction(item)\n return\n }\n }\n }\n },\n [onMenuAction, menuItems],\n )\n\n const onConnectorSetFocus = useCallback(\n (path: Path) => {\n onPathOpen(path)\n onFocus(path)\n },\n [onPathOpen, onFocus],\n )\n\n if (!schemaType) {\n return (\n <DocumentLayoutError\n currentMinWidth={currentMinWidth}\n documentType={documentType}\n minWidth={minWidth}\n paneKey={paneKey}\n value={value}\n />\n )\n }\n\n return (\n <GetFormValueProvider value={value}>\n {inspectors.length > 0 && (\n <DocumentInspectorMenuItemsResolver\n documentId={documentId}\n documentType={documentType}\n inspectors={inspectors}\n onMenuItems={setInspectorMenuItems}\n />\n )}\n\n {fieldActions.length > 0 && schemaType && (\n <FieldActionsResolver\n actions={fieldActions}\n documentId={documentId}\n documentType={documentType}\n onActions={setRootFieldActionNodes}\n path={EMPTY_ARRAY}\n schemaType={schemaType}\n />\n )}\n\n <FieldActionsProvider actions={rootFieldActionNodes} path={EMPTY_ARRAY}>\n <DocumentActionShortcuts\n actionsBoxElement={actionsBoxElement}\n as={Pane}\n currentMinWidth={currentMinWidth}\n data-testid=\"document-pane\"\n flex={2.5}\n id={paneKey}\n minWidth={minWidth}\n onKeyUp={handleKeyUp}\n rootRef={setRootElement}\n >\n <DocumentPanelHeader ref={setHeaderElement} menuItems={menuItems} />\n <DialogProvider position={DIALOG_PROVIDER_POSITION} zOffset={zOffsets.paneDialog}>\n <Flex direction=\"column\" flex={1} height={layoutCollapsed ? undefined : 'fill'}>\n <StyledChangeConnectorRoot\n data-testid=\"change-connector-root\"\n isReviewChangesOpen={changesOpen && paneParams?.changesInspectorTab === 'review'}\n onOpenReviewChanges={onHistoryOpen}\n onSetFocus={onConnectorSetFocus}\n >\n <DocumentPanel\n footerHeight={footerHeight || null}\n headerHeight={headerHeight || null}\n isInspectOpen={inspectOpen}\n rootElement={rootElement}\n setDocumentPanelPortalElement={setDocumentPanelPortalElement}\n footer={\n <DocumentLayoutFooter\n documentPanelPortalElement={documentPanelPortalElement}\n setFooterElement={setFooterElement}\n setActionsBoxElement={setActionsBoxElement}\n />\n }\n />\n </StyledChangeConnectorRoot>\n </Flex>\n </DialogProvider>\n <DocumentOperationResults />\n </DocumentActionShortcuts>\n </FieldActionsProvider>\n </GetFormValueProvider>\n )\n}\n","import {type ComponentType} from 'react'\nimport {type DocumentLayoutProps, useMiddlewareComponents} from 'sanity'\n\nimport {DocumentLayout} from './DocumentLayout'\nimport {pickDocumentLayoutComponent} from './pickDocumentLayoutComponent'\n\n/**\n * A hook that returns the document layout composed\n * by the Components API (`document.components.layout`).\n */\nexport function useDocumentLayoutComponent(): ComponentType<\n Omit<DocumentLayoutProps, 'renderDefault'>\n> {\n return useMiddlewareComponents({\n pick: pickDocumentLayoutComponent,\n defaultComponent: DocumentLayout,\n })\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n/**\n * @internal\n */\nexport const DocumentURLCopied = defineEvent({\n name: 'DocumentURLCopied',\n version: 1,\n description: 'User copied document URL to clipboard',\n})\n","import {type Template} from 'sanity'\n\ninterface InitialValueOptions {\n documentType: string\n panePayload?: unknown\n templateName?: string\n templateParams?: Record<string, unknown>\n urlTemplate?: string\n}\n\n/**\n * @internal\n */\nexport function getInitialValueTemplateOpts(\n templates: Template[],\n opts: InitialValueOptions,\n): {templateName: string; templateParams: Record<string, unknown>} {\n const payload = opts.panePayload || {}\n const structureNodeTemplate = opts.templateName\n\n if (opts.urlTemplate && structureNodeTemplate && structureNodeTemplate !== opts.urlTemplate) {\n // eslint-disable-next-line no-console\n console.warn(\n `Conflicting templates: URL says \"${opts.urlTemplate}\", structure node says \"${structureNodeTemplate}\". Using \"${structureNodeTemplate}\".`,\n )\n }\n\n const template = structureNodeTemplate || opts.urlTemplate\n const typeTemplates = templates.filter((t) => t.schemaType === opts.documentType)\n\n const templateParams = {\n ...opts.templateParams,\n ...(typeof payload === 'object' ? payload || {} : {}),\n }\n\n let templateName = template\n\n // If we have not specified a specific template, and we only have a single\n // template available for a schema type, use it\n if (!template && typeTemplates.length === 1) {\n templateName = typeTemplates[0].id\n }\n\n return {templateName: templateName!, templateParams}\n}\n","import {useMemo} from 'react'\nimport {useInitialValue, useTemplates, useUnique} from 'sanity'\n\nimport {type PaneRouterContextValue, usePaneRouter} from '../../components'\nimport {type DocumentPaneNode} from '../../types'\nimport {getInitialValueTemplateOpts} from './getInitialValueTemplateOpts'\n\nexport const useDocumentPaneInitialValue = ({\n paneOptions,\n documentType,\n documentId,\n params,\n}: {\n paneOptions: DocumentPaneNode['options']\n documentType: string\n documentId: string\n params: NonNullable<PaneRouterContextValue['params']>\n}) => {\n const templates = useTemplates()\n const paneRouter = usePaneRouter()\n const panePayload = useUnique(paneRouter.payload)\n\n const {templateName, templateParams} = useMemo(\n () =>\n getInitialValueTemplateOpts(templates, {\n documentType,\n templateName: paneOptions.template,\n templateParams: paneOptions.templateParameters,\n panePayload,\n urlTemplate: params.template,\n }),\n [documentType, paneOptions, params.template, panePayload, templates],\n )\n\n const initialValueRaw = useInitialValue({\n documentId,\n documentType,\n templateName,\n templateParams,\n version: params.version,\n })\n\n const initialValue = useUnique(initialValueRaw)\n return initialValue\n}\n","import {omit} from 'lodash'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type DocumentInspector, useSource} from 'sanity'\n\nimport {type PaneRouterContextValue} from '../../components'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {HISTORY_INSPECTOR_NAME, INSPECT_ACTION_PREFIX} from './constants'\n\nexport function useDocumentPaneInspector({\n documentId,\n documentType,\n params,\n setParams,\n}: {\n params: NonNullable<PaneRouterContextValue['params']>\n documentId: string\n documentType: string\n setParams: (params: Record<string, string | undefined>) => void\n}) {\n const {features} = useStructureTool()\n const source = useSource()\n const inspectorsResolver = source.document.inspectors\n\n const inspectors: DocumentInspector[] = useMemo(\n () => inspectorsResolver({documentId, documentType}),\n [documentId, documentType, inspectorsResolver],\n )\n\n const [inspectorName, setInspectorName] = useState<string | null>(() => params.inspect || null)\n\n // Handle inspector name changes from URL\n const inspectParamRef = useRef<string | undefined>(params.inspect)\n useEffect(() => {\n if (inspectParamRef.current !== params.inspect) {\n inspectParamRef.current = params.inspect\n setInspectorName(params.inspect || null)\n }\n }, [params.inspect])\n\n const currentInspector = useMemo(\n () => inspectors?.find((i) => i.name === inspectorName),\n [inspectors, inspectorName],\n )\n const historyInspector = useMemo(\n () => inspectors.find((i) => i.name === HISTORY_INSPECTOR_NAME),\n [inspectors],\n )\n\n const changesOpen = currentInspector?.name === HISTORY_INSPECTOR_NAME\n\n const closeInspector = useCallback(\n (closeInspectorName?: string) => {\n const inspector = closeInspectorName && inspectors.find((i) => i.name === closeInspectorName)\n\n if (closeInspectorName && !inspector) {\n console.warn(`No inspector named \"${closeInspectorName}\"`)\n return\n }\n\n if (!currentInspector) {\n return\n }\n\n if (inspector) {\n const result = inspector.onClose?.({params}) ?? {params}\n\n setInspectorName(null)\n inspectParamRef.current = undefined\n\n setParams({...result.params, inspect: undefined})\n\n return\n }\n\n if (currentInspector) {\n const result = currentInspector.onClose?.({params}) ?? {params}\n\n setInspectorName(null)\n inspectParamRef.current = undefined\n\n setParams({...result.params, inspect: undefined})\n }\n },\n [currentInspector, inspectors, params, setParams],\n )\n\n const openInspector = useCallback(\n (nextInspectorName: string, paneParams?: Record<string, string>) => {\n const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n if (!nextInspector) {\n console.warn(`No inspector named \"${nextInspectorName}\"`)\n return\n }\n\n // if the inspector is already open, only update params\n if (currentInspector?.name === nextInspector.name) {\n setParams({...params, ...paneParams, inspect: nextInspector.name})\n return\n }\n\n let currentParams = params\n\n if (currentInspector) {\n const closeResult = nextInspector.onClose?.({params: currentParams}) ?? {\n params: currentParams,\n }\n\n currentParams = closeResult.params\n }\n\n const result = nextInspector.onOpen?.({params: currentParams}) ?? {params: currentParams}\n\n setInspectorName(nextInspector.name)\n inspectParamRef.current = nextInspector.name\n\n setParams({...result.params, ...paneParams, inspect: nextInspector.name})\n },\n [currentInspector, inspectors, params, setParams],\n )\n const handleHistoryClose = useCallback(() => {\n if (historyInspector) {\n closeInspector(historyInspector.name)\n }\n }, [closeInspector, historyInspector])\n\n const handleHistoryOpen = useCallback(() => {\n if (!features.reviewChanges) {\n return\n }\n\n if (historyInspector) {\n openInspector(historyInspector.name, {changesInspectorTab: 'review'})\n }\n }, [features.reviewChanges, openInspector, historyInspector])\n\n const inspectOpen = params.inspect === 'on'\n\n const toggleLegacyInspect = useCallback(\n (toggle = !inspectOpen) => {\n if (toggle) {\n setParams({...params, inspect: 'on'})\n } else {\n setParams(omit(params, 'inspect'))\n }\n },\n [inspectOpen, params, setParams],\n )\n\n const handleLegacyInspectClose = useCallback(\n () => toggleLegacyInspect(false),\n [toggleLegacyInspect],\n )\n\n const handleInspectorAction = useCallback(\n (item: PaneMenuItem) => {\n if (item.action === 'inspect') {\n toggleLegacyInspect(true)\n return true\n }\n\n if (typeof item.action !== 'string') return false\n const nextInspectorName = item.action.slice(INSPECT_ACTION_PREFIX.length)\n const nextInspector = inspectors.find((i) => i.name === nextInspectorName)\n\n if (nextInspector) {\n if (nextInspector.name === inspectorName) {\n closeInspector(nextInspector.name)\n } else {\n openInspector(nextInspector.name)\n }\n return true\n }\n return false\n },\n [closeInspector, inspectorName, inspectors, openInspector, toggleLegacyInspect],\n )\n\n return {\n changesOpen,\n currentInspector,\n inspectors,\n closeInspector,\n openInspector,\n handleHistoryClose,\n handleHistoryOpen,\n handleInspectorAction,\n // TODO: Deprecate this legacy inspect toggle it's used to render the <InspectDialog /> component\n handleLegacyInspectClose,\n inspectOpen,\n }\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useEffect, useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {BehaviorSubject, from, of} from 'rxjs'\nimport {catchError, debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators'\nimport {isRecord, useSource} from 'sanity'\n\nconst isSanityDocument = (value: unknown): value is SanityDocument =>\n isRecord(value) && typeof value._id === 'string' && typeof value._type === 'string'\n\nexport function usePreviewUrl(value: Partial<SanityDocument> | undefined): string | undefined {\n const {resolveProductionUrl} = useSource().document\n const subject = useMemo(\n () => new BehaviorSubject<Partial<SanityDocument> | undefined>(undefined),\n [],\n )\n\n useEffect(() => {\n subject.next(value)\n }, [subject, value])\n\n const resolvedUrlObservable = useMemo(() => {\n return subject.asObservable().pipe(\n // this so that the preview URL isn't fetched on every keystroke\n distinctUntilChanged(),\n debounceTime(500),\n switchMap((document) =>\n isSanityDocument(document) ? from(resolveProductionUrl({document})) : of(undefined),\n ),\n distinctUntilChanged(),\n catchError((err) => {\n const message =\n isRecord(err) && typeof err.message === 'string' ? err.message : 'Unknown error'\n throw new Error(`An error was thrown while trying to get your preview url: ${message}`)\n }),\n )\n }, [resolveProductionUrl, subject])\n\n return useObservable(resolvedUrlObservable)\n}\n","/* eslint-disable camelcase */\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {type ObjectSchemaType, type SanityDocument, type SanityDocumentLike} from '@sanity/types'\nimport {useToast} from '@sanity/ui'\nimport {fromString as pathFromString, resolveKeyedPath} from '@sanity/util/paths'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n type DocumentActionsContext,\n type DocumentActionsVersionType,\n type DocumentFieldAction,\n type EditStateFor,\n EMPTY_ARRAY,\n getPublishedId,\n isPerspectiveWriteable,\n isVersionId,\n type PartialContext,\n useCopyPaste,\n useDocumentForm,\n usePerspective,\n useSchema,\n useSource,\n useStudioUrl,\n useTranslation,\n useUnique,\n} from 'sanity'\nimport {DocumentPaneContext} from 'sanity/_singletons'\n\nimport {usePaneRouter} from '../../components'\nimport {useDiffViewRouter} from '../../diffView/hooks/useDiffViewRouter'\nimport {useDocumentIdStack} from '../../hooks/useDocumentIdStack'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type PaneMenuItem} from '../../types'\nimport {DocumentURLCopied} from './__telemetry__'\nimport {DEFAULT_MENU_ITEM_GROUPS, EMPTY_PARAMS, INSPECT_ACTION_PREFIX} from './constants'\nimport {type DocumentPaneContextValue} from './DocumentPaneContext'\nimport {\n type DocumentPaneProviderProps as DocumentPaneProviderWrapperProps,\n type HistoryStoreProps,\n} from './types'\nimport {useDocumentPaneInitialValue} from './useDocumentPaneInitialValue'\nimport {useDocumentPaneInspector} from './useDocumentPaneInspector'\nimport {usePreviewUrl} from './usePreviewUrl'\n\ninterface DocumentPaneProviderProps extends DocumentPaneProviderWrapperProps {\n historyStore: HistoryStoreProps\n}\n\n/**\n * @internal\n */\n// eslint-disable-next-line complexity, max-statements\nexport const DocumentPaneProvider = memo((props: DocumentPaneProviderProps) => {\n const {children, index, pane, paneKey, onFocusPath, forcedVersion, historyStore} = props\n const {\n store: timelineStore,\n error: timelineError,\n ready: timelineReady,\n revisionDocument,\n onOlderRevision,\n sinceDocument,\n isPristine,\n revisionId,\n lastNonDeletedRevId,\n } = historyStore\n\n const schema = useSchema()\n const {setDocumentMeta} = useCopyPaste()\n const {\n document: {\n actions: documentActions,\n badges: documentBadges,\n unstable_fieldActions: fieldActionsResolver,\n unstable_languageFilter: languageFilterResolver,\n },\n } = useSource()\n const telemetry = useTelemetry()\n const paneRouter = usePaneRouter()\n const setPaneParams = paneRouter.setParams\n const {push: pushToast} = useToast()\n const {\n options,\n menuItemGroups = DEFAULT_MENU_ITEM_GROUPS,\n title = null,\n views: viewsProp = [],\n } = pane\n const paneOptions = useUnique(options)\n const documentIdRaw = paneOptions.id\n const documentId = getPublishedId(documentIdRaw)\n const documentType = options.type\n const params = useUnique(paneRouter.params) || EMPTY_PARAMS\n const {buildStudioUrl} = useStudioUrl()\n\n const perspective = usePerspective()\n\n const {selectedReleaseId, selectedPerspectiveName} = useMemo(() => {\n // TODO: COREL - Remove this after updating sanity-assist to use <PerspectiveProvider>\n if (forcedVersion) {\n return forcedVersion\n }\n return {\n selectedPerspectiveName: perspective.selectedPerspectiveName,\n selectedReleaseId: perspective.selectedReleaseId,\n }\n }, [forcedVersion, perspective.selectedPerspectiveName, perspective.selectedReleaseId])\n\n const diffViewRouter = useDiffViewRouter()\n\n const initialValue = useDocumentPaneInitialValue({\n paneOptions,\n documentId,\n documentType,\n params,\n })\n\n const isInitialValueLoading = initialValue.loading\n const {\n changesOpen,\n currentInspector,\n inspectors,\n closeInspector,\n openInspector,\n handleHistoryClose,\n handleHistoryOpen,\n handleInspectorAction,\n inspectOpen,\n handleLegacyInspectClose,\n } = useDocumentPaneInspector({documentId, documentType, params, setParams: setPaneParams})\n\n const [isDeleting, setIsDeleting] = useState(false)\n\n /**\n * Determine if the current document is deleted.\n *\n * When the timeline is available – we check for the absence of an editable document pair\n * (both draft + published versions) as well as a non 'pristine' timeline (i.e. a timeline that consists\n * of at least one chunk).\n *\n * In the _very rare_ case where the timeline cannot be loaded – we skip this check and always assume\n * the document is NOT deleted. Since we can't accurately determine document deleted status without history,\n * skipping this check means that in these cases, users will at least be able to create new documents\n * without them being incorrectly marked as deleted.\n */\n const getIsDeleted = useCallback(\n (editState: EditStateFor) => {\n if (!timelineReady) return false\n return (\n Boolean(!editState?.draft && !editState?.published && !editState?.version) && !isPristine\n )\n },\n [timelineReady, isPristine],\n )\n\n const getComparisonValue = useCallback(\n (editState: EditStateFor) => {\n return changesOpen ? sinceDocument || editState?.published : editState?.published || null\n },\n [changesOpen, sinceDocument],\n )\n\n const schemaType = schema.get(documentType) as ObjectSchemaType | undefined\n\n const getIsReadOnly = useCallback(\n (editState: EditStateFor): boolean => {\n const isDeleted = getIsDeleted(editState)\n const seeingHistoryDocument = Boolean(params.rev)\n return (\n seeingHistoryDocument ||\n isDeleting ||\n isDeleted ||\n !isPerspectiveWriteable({\n selectedPerspective: perspective.selectedPerspective,\n schemaType,\n }).result\n )\n },\n [getIsDeleted, isDeleting, params.rev, perspective.selectedPerspective, schemaType],\n )\n\n const getDisplayed = useCallback(\n (value: SanityDocumentLike) => {\n if (onOlderRevision) {\n return revisionDocument || {_id: value._id, _type: value._type}\n }\n return value\n },\n [onOlderRevision, revisionDocument],\n )\n\n const {\n editState,\n connectionState,\n focusPath,\n onChange,\n validation,\n ready: formReady,\n value,\n formState,\n permissions,\n onPathOpen,\n isPermissionsLoading,\n formStateRef,\n onProgrammaticFocus,\n\n collapsedFieldSets,\n collapsedPaths,\n onBlur,\n onFocus,\n onSetActiveFieldGroup,\n onSetCollapsedPath,\n onSetCollapsedFieldSet,\n openPath,\n } = useDocumentForm({\n documentType,\n documentId,\n initialValue: initialValue,\n comparisonValue: getComparisonValue,\n releaseId: selectedReleaseId,\n selectedPerspectiveName,\n initialFocusPath: params.path ? pathFromString(params.path) : EMPTY_ARRAY,\n readOnly: getIsReadOnly,\n onFocusPath,\n getFormDocumentValue: getDisplayed,\n })\n\n const getDocumentVersionType = useCallback(() => {\n let version: DocumentActionsVersionType\n switch (true) {\n case Boolean(params.rev):\n version = 'revision'\n break\n case selectedReleaseId && isVersionId(value._id):\n version = 'version'\n break\n case selectedPerspectiveName === 'published':\n version = 'published'\n break\n default:\n version = 'draft'\n }\n\n return version\n }, [selectedPerspectiveName, selectedReleaseId, params, value._id])\n\n const actionsPerspective = useMemo(() => getDocumentVersionType(), [getDocumentVersionType])\n\n const documentActionsProps: PartialContext<DocumentActionsContext> = useMemo(\n () => ({\n schemaType: documentType,\n documentId,\n versionType: actionsPerspective,\n releaseId: selectedReleaseId,\n }),\n [documentType, documentId, actionsPerspective, selectedReleaseId],\n )\n\n // Resolve document actions\n const actions = useMemo(\n () => documentActions(documentActionsProps),\n [documentActions, documentActionsProps],\n )\n\n // Resolve document badges\n const badges = useMemo(\n () => documentBadges({schemaType: documentType, documentId}),\n [documentBadges, documentId, documentType],\n )\n\n // Resolve document language filter\n const languageFilter = useMemo(\n () => languageFilterResolver({schemaType: documentType, documentId}),\n [documentId, documentType, languageFilterResolver],\n )\n\n const views = useUnique(viewsProp)\n\n const activeViewId = params.view || (views[0] && views[0].id) || null\n\n // TODO: this may cause a lot of churn. May be a good idea to prevent these\n // requests unless the menu is open somehow\n const previewUrl = usePreviewUrl(value)\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n const fieldActions: DocumentFieldAction[] = useMemo(\n () => (schemaType ? fieldActionsResolver({documentId, documentType, schemaType}) : []),\n [documentId, documentType, fieldActionsResolver, schemaType],\n )\n\n /**\n * Note that in addition to connection and edit state, we also wait for a valid document timeline\n * range to be loaded. This means if we're loading an older revision, the full transaction range must\n * be loaded in full prior to the document being displayed.\n *\n * Previously, visiting studio URLs with timeline params would display the 'current' document and then\n * 'snap' in the older revision, which was disorienting and could happen mid-edit.\n *\n * In the event that the timeline cannot be loaded due to TimelineController errors or blocked requests,\n * we skip this readiness check to ensure that users aren't locked out of editing. Trying to select\n * a timeline revision in this instance will display an error localized to the popover itself.\n */\n const ready = formReady && (!params.rev || timelineReady || !!timelineError)\n\n const displayed: Partial<SanityDocument> | undefined = useMemo(\n () => getDisplayed(value),\n [getDisplayed, value],\n )\n\n const {previousId} = useDocumentIdStack({displayed, documentId, editState})\n\n const setTimelineRange = useCallback(\n (newSince: string, newRev: string | null) => {\n setPaneParams({\n ...params,\n since: newSince,\n rev: newRev || undefined,\n })\n },\n [params, setPaneParams],\n )\n\n const handlePaneClose = useCallback(() => paneRouter.closeCurrent(), [paneRouter])\n\n const handlePaneSplit = useCallback(() => paneRouter.duplicateCurrent(), [paneRouter])\n\n const handleMenuAction = useCallback(\n async (item: PaneMenuItem) => {\n if (item.action === 'production-preview' && previewUrl) {\n window.open(previewUrl)\n return true\n }\n\n if (item.action === 'copy-document-url' && navigator) {\n telemetry.log(DocumentURLCopied)\n // Chose to copy the user's current URL instead of\n // the document's edit intent link because\n // of bugs when resolving a document that has\n // multiple access paths within Structure\n const copyUrl = buildStudioUrl({\n coreUi: (url) => `${url}/intent/edit/id=${documentId};type=${documentType}`,\n })\n await navigator.clipboard.writeText(copyUrl)\n pushToast({\n id: 'copy-document-url',\n status: 'info',\n title: t('panes.document-operation-results.operation-success_copy-url'),\n })\n return true\n }\n\n if (item.action === 'reviewChanges') {\n handleHistoryOpen()\n return true\n }\n\n if (\n item.action === 'inspect' ||\n (typeof item.action === 'string' && item.action.startsWith(INSPECT_ACTION_PREFIX))\n ) {\n handleInspectorAction(item)\n }\n\n if (item.action === 'compareVersions' && typeof previousId !== 'undefined') {\n diffViewRouter.navigateDiffView({\n mode: 'version',\n previousDocument: {\n type: documentType,\n id: previousId,\n },\n nextDocument: {\n type: documentType,\n id: value._id,\n },\n })\n return true\n }\n\n return false\n },\n [\n previewUrl,\n previousId,\n telemetry,\n buildStudioUrl,\n pushToast,\n t,\n documentId,\n documentType,\n handleHistoryOpen,\n handleInspectorAction,\n diffViewRouter,\n value._id,\n ],\n )\n\n useEffect(() => {\n setDocumentMeta({\n documentId,\n documentType,\n schemaType: schemaType!,\n onChange,\n })\n }, [documentId, documentType, schemaType, onChange, setDocumentMeta])\n\n const compareValue = useMemo(() => getComparisonValue(editState), [editState, getComparisonValue])\n const isDeleted = useMemo(() => getIsDeleted(editState), [editState, getIsDeleted])\n const revisionNotFound = onOlderRevision && !revisionDocument\n\n const documentPane: DocumentPaneContextValue = useMemo(\n () =>\n ({\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n displayed,\n documentId,\n documentIdRaw,\n documentType,\n editState,\n fieldActions,\n focusPath,\n inspector: currentInspector || null,\n inspectors,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onHistoryClose: handleHistoryClose,\n onHistoryOpen: handleHistoryOpen,\n onInspectClose: handleLegacyInspectClose,\n onMenuAction: handleMenuAction,\n onPaneClose: handlePaneClose,\n onPaneSplit: handlePaneSplit,\n onSetActiveFieldGroup,\n onSetCollapsedPath,\n onSetCollapsedFieldSet,\n openInspector,\n openPath,\n index,\n inspectOpen,\n validation,\n menuItemGroups: menuItemGroups || [],\n paneKey,\n previewUrl,\n ready,\n schemaType: schemaType!,\n isPermissionsLoading,\n isInitialValueLoading,\n permissions,\n setTimelineRange,\n setIsDeleting,\n isDeleting,\n isDeleted,\n timelineError,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n unstable_languageFilter: languageFilter,\n revisionId,\n revisionNotFound,\n lastNonDeletedRevId,\n }) satisfies DocumentPaneContextValue,\n [\n actions,\n activeViewId,\n badges,\n changesOpen,\n closeInspector,\n collapsedFieldSets,\n collapsedPaths,\n compareValue,\n connectionState,\n displayed,\n documentId,\n documentIdRaw,\n documentType,\n editState,\n fieldActions,\n focusPath,\n currentInspector,\n inspectors,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n handleHistoryClose,\n handleHistoryOpen,\n handleLegacyInspectClose,\n handleMenuAction,\n handlePaneClose,\n handlePaneSplit,\n onSetActiveFieldGroup,\n onSetCollapsedPath,\n onSetCollapsedFieldSet,\n openInspector,\n openPath,\n index,\n inspectOpen,\n validation,\n menuItemGroups,\n paneKey,\n previewUrl,\n ready,\n schemaType,\n isPermissionsLoading,\n isInitialValueLoading,\n permissions,\n setTimelineRange,\n isDeleting,\n isDeleted,\n timelineError,\n timelineStore,\n title,\n value,\n selectedReleaseId,\n views,\n formState,\n languageFilter,\n revisionId,\n revisionNotFound,\n lastNonDeletedRevId,\n ],\n )\n\n // Reset `focusPath` when `documentId` or `params.path` changes\n useEffect(() => {\n if (ready && params.path) {\n const {path, ...restParams} = params\n const pathFromUrl = resolveKeyedPath(formStateRef.current?.value, pathFromString(path))\n onProgrammaticFocus(pathFromUrl)\n\n // remove the `path`-param from url after we have consumed it as the initial focus path\n paneRouter.setParams(restParams)\n }\n\n return undefined\n }, [formStateRef, onProgrammaticFocus, paneRouter, params, ready])\n\n return (\n <DocumentPaneContext.Provider value={documentPane}>{children}</DocumentPaneContext.Provider>\n )\n})\n\nDocumentPaneProvider.displayName = 'Memo(DocumentPaneProvider)'\n","import {type ObjectSchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\nimport {\n EMPTY_ARRAY,\n EventsProvider,\n getDraftId,\n getPublishedId,\n getReleaseIdFromReleaseDocumentId,\n getVersionId,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n PerspectiveProvider,\n useArchivedReleases,\n useEditState,\n useEventsStore,\n usePerspective,\n useSchema,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentEventsPane = (props: DocumentPaneProviderProps) => {\n const {params = EMPTY_PARAMS} = usePaneRouter()\n const options = usePaneOptions(props.pane.options, params)\n const schema = useSchema()\n const documentType = options.type\n const schemaType = schema.get(options.type) as ObjectSchemaType | undefined\n const liveEdit = Boolean(schemaType?.liveEdit)\n\n const {selectedPerspectiveName, selectedReleaseId, selectedPerspective} = usePerspective()\n const {data: archivedReleases} = useArchivedReleases()\n const editState = useEditState(\n getPublishedId(options.id),\n documentType,\n 'default',\n selectedReleaseId,\n )\n\n const showingPublishedOnDraft = liveEdit && selectedPerspective === 'drafts' && !editState?.draft\n const {rev, since} = params\n const historyVersion = params.historyVersion\n\n const documentId = useMemo(() => {\n if (showingPublishedOnDraft) {\n return getPublishedId(options.id)\n }\n if (\n historyVersion &&\n archivedReleases.some(\n (release) => getReleaseIdFromReleaseDocumentId(release._id) === historyVersion,\n )\n ) {\n // Check if we have a release that matches with this historyVersion\n return getVersionId(options.id, historyVersion)\n }\n if (typeof selectedPerspectiveName === 'undefined') {\n return getDraftId(options.id)\n }\n if (selectedPerspectiveName === 'published') {\n return getPublishedId(options.id)\n }\n if (selectedReleaseId) {\n return getVersionId(options.id, selectedPerspectiveName)\n }\n return options.id\n }, [\n archivedReleases,\n historyVersion,\n selectedPerspectiveName,\n options.id,\n showingPublishedOnDraft,\n selectedReleaseId,\n ])\n\n const eventsStore = useEventsStore({documentId, documentType: options.type, rev, since})\n\n const historyStoreProps = useMemo(\n () => ({\n error: eventsStore.error,\n revisionId: eventsStore.revision?.revisionId || null,\n onOlderRevision: Boolean(rev && !eventsStore.revision?.loading),\n revisionDocument: eventsStore.revision?.document || null,\n sinceDocument: eventsStore.sinceRevision?.document || null,\n ready: !eventsStore.loading,\n isPristine: Boolean(eventsStore.events.length === 0),\n lastNonDeletedRevId:\n eventsStore.events.find(\n (e) => !isDeleteDocumentGroupEvent(e) && !isDeleteDocumentVersionEvent(e),\n )?.id || null,\n }),\n [eventsStore, rev],\n )\n\n const value = useMemo(() => eventsStore, [eventsStore])\n\n return (\n <EventsProvider value={value}>\n {historyVersion ? (\n <PerspectiveProvider\n selectedPerspectiveName={historyVersion}\n excludedPerspectives={EMPTY_ARRAY}\n >\n <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n </PerspectiveProvider>\n ) : (\n <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n )}\n </EventsProvider>\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useMemo, useState} from 'react'\nimport {getPublishedId, useTimelineSelector, useTimelineStore} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\nimport {usePaneOptions} from './DocumentPane'\nimport {DocumentPaneProvider} from './DocumentPaneProvider'\nimport {type DocumentPaneProviderProps} from './types'\n\nexport const DocumentPaneWithLegacyTimelineStore = (props: DocumentPaneProviderProps) => {\n const {pane} = props\n const paneRouter = usePaneRouter()\n const options = usePaneOptions(pane.options, paneRouter.params)\n\n const params = paneRouter.params || EMPTY_PARAMS\n\n const [timelineError, setTimelineError] = useState<Error | null>(null)\n\n const store = useTimelineStore({\n documentId: getPublishedId(options.id),\n documentType: options.type,\n onError: setTimelineError,\n rev: params.rev,\n since: params.since,\n })\n\n const onOlderRevision = useTimelineSelector(store, (state) => state.onOlderRevision)\n const revTime = useTimelineSelector(store, (state) => state.revTime)\n const sinceAttributes = useTimelineSelector(store, (state) => state.sinceAttributes)\n const timelineDisplayed = useTimelineSelector(store, (state) => state.timelineDisplayed)\n const timelineReady = useTimelineSelector(store, (state) => state.timelineReady)\n const isPristine = useTimelineSelector(store, (state) => state.isPristine)\n const lastNonDeletedRevId = useTimelineSelector(store, (state) => state.lastNonDeletedRevId)\n\n const historyStoreProps = useMemo(\n () => ({\n store,\n error: timelineError,\n revisionId: revTime?.id || null,\n onOlderRevision: onOlderRevision,\n revisionDocument: timelineDisplayed as SanityDocument | null,\n sinceDocument: sinceAttributes as SanityDocument | null,\n ready: timelineReady,\n isPristine: Boolean(isPristine),\n lastNonDeletedRevId,\n }),\n [\n store,\n timelineError,\n revTime?.id,\n onOlderRevision,\n timelineDisplayed,\n sinceAttributes,\n timelineReady,\n isPristine,\n lastNonDeletedRevId,\n ],\n )\n return <DocumentPaneProvider {...props} historyStore={historyStoreProps} />\n}\n","import {memo} from 'react'\nimport {useSource} from 'sanity'\n\nimport {DocumentEventsPane} from './DocumentEventsPane'\nimport {DocumentPaneWithLegacyTimelineStore} from './DocumentPaneLegacyTimeline'\nimport {type DocumentPaneProviderProps} from './types'\n\n/**\n * @internal\n */\nexport const DocumentPaneProviderWrapper = memo((props: DocumentPaneProviderProps) => {\n const source = useSource()\n if (source.beta?.eventsAPI?.documents) {\n return <DocumentEventsPane {...props} />\n }\n return <DocumentPaneWithLegacyTimelineStore {...props} />\n})\nDocumentPaneProviderWrapper.displayName = 'Memo(DocumentPaneProviderWrapper)'\n","import {useEffect, useRef} from 'react'\nimport {usePerspective} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {usePaneRouter} from '../../components'\nimport {EMPTY_PARAMS} from './constants'\n\n/**\n * This hooks takes care of resetting the history related params when the perspective changes.\n * It needs to be placed in a stable component, like the `DocumentPane`, which won't be unmounted when the perspective changes.\n */\nexport function useResetHistoryParams() {\n const {params = EMPTY_PARAMS, setParams} = usePaneRouter()\n\n const {selectedPerspectiveName} = usePerspective()\n const isMounted = useRef(false)\n\n const updateHistoryParams = useEffectEvent((_perspective?: string) => {\n // Check if any of the history related params are set, and reset them, don't unnecessarily update the params\n const PARAMS_TO_UPDATE = ['since', 'historyVersion', 'rev', 'preserveRev']\n const shouldUpdateParams = PARAMS_TO_UPDATE.some((param) => params[param])\n if (!shouldUpdateParams) return\n\n setParams({\n ...params,\n // Reset the history related params when the perspective changes, as they don't make sense\n // in the context of the new perspective - preserveRev is used when setting draft revision.\n rev: params.preserveRev === 'true' ? params.rev : undefined,\n preserveRev: undefined,\n since: undefined,\n historyVersion: undefined,\n })\n })\n useEffect(() => {\n // Skip the first run to avoid resetting the params on initial load\n if (isMounted.current) {\n updateHistoryParams(selectedPerspectiveName)\n }\n }, [selectedPerspectiveName])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n}\n","import {type Path} from '@sanity/types'\nimport {Stack, Text} from '@sanity/ui'\nimport {fromString as pathFromString} from '@sanity/util/paths'\nimport {memo, useMemo} from 'react'\nimport {\n CopyPasteProvider,\n ReferenceInputOptionsProvider,\n SourceProvider,\n Translate,\n useDocumentType,\n usePerspective,\n useSource,\n useTemplatePermissions,\n useTemplates,\n useTranslation,\n} from 'sanity'\n\nimport {usePaneRouter} from '../../components'\nimport {DiffViewDocumentLayout} from '../../diffView/plugin/DiffViewDocumentLayout'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type DocumentPaneNode} from '../../types'\nimport {ErrorPane} from '../error'\nimport {LoadingPane} from '../loading'\nimport {CommentsWrapper} from './comments'\nimport {useDocumentLayoutComponent} from './document-layout'\nimport {DocumentPaneProviderWrapper} from './DocumentPaneProviderWrapper'\nimport {type DocumentPaneProviderProps} from './types'\nimport {useResetHistoryParams} from './useResetHistoryParams'\n\ntype DocumentPaneOptions = DocumentPaneNode['options']\n\n/**\n * @internal\n */\nexport const DocumentPane = memo(function DocumentPane(props: DocumentPaneProviderProps) {\n const {name: parentSourceName} = useSource()\n\n return (\n <SourceProvider name={props.pane.source || parentSourceName}>\n <CopyPasteProvider>\n <DocumentPaneInner {...props} />\n </CopyPasteProvider>\n </SourceProvider>\n )\n})\n\nfunction DocumentPaneInner(props: DocumentPaneProviderProps) {\n const {pane, paneKey} = props\n const {resolveNewDocumentOptions} = useSource().document\n const {selectedPerspectiveName} = usePerspective()\n const paneRouter = usePaneRouter()\n const options = usePaneOptions(pane.options, paneRouter.params)\n const {documentType, isLoaded: isDocumentLoaded} = useDocumentType(options.id, options.type)\n useResetHistoryParams()\n const DocumentLayout = useDocumentLayoutComponent()\n\n // The templates that should be creatable from inside this document pane.\n // For example, from the \"Create new\" menu in reference inputs.\n const templateItems = useMemo(() => {\n return resolveNewDocumentOptions({\n type: 'document',\n documentId: options.id,\n schemaType: options.type,\n })\n }, [options.id, options.type, resolveNewDocumentOptions])\n\n const [templatePermissions, isTemplatePermissionsLoading] = useTemplatePermissions({\n templateItems,\n })\n const isLoaded = isDocumentLoaded && !isTemplatePermissionsLoading\n\n const providerProps = useMemo(() => {\n return isLoaded && documentType && options.type !== documentType\n ? mergeDocumentType(props, options, documentType)\n : props\n }, [props, documentType, isLoaded, options])\n\n const {ReferenceChildLink, handleEditReference, groupIndex, routerPanesState} = paneRouter\n const childParams = routerPanesState[groupIndex + 1]?.[0].params || {}\n const routerPanesStateLength = routerPanesState.length\n const {parentRefPath} = childParams\n\n const activePath: {path: Path; state: 'selected' | 'pressed' | 'none'} = useMemo(() => {\n return parentRefPath\n ? {\n path: pathFromString(parentRefPath),\n state:\n // eslint-disable-next-line no-nested-ternary\n groupIndex >= routerPanesStateLength - 1\n ? 'none'\n : groupIndex >= routerPanesStateLength - 2\n ? 'selected'\n : 'pressed',\n }\n : {path: [], state: 'none'}\n }, [parentRefPath, groupIndex, routerPanesStateLength])\n\n const {t} = useTranslation(structureLocaleNamespace)\n\n if (options.type === '*' && !isLoaded) {\n return (\n <LoadingPane\n flex={2.5}\n minWidth={320}\n paneKey={paneKey}\n title={t('panes.document-pane.document-not-found.loading')}\n />\n )\n }\n\n if (!documentType) {\n return (\n <ErrorPane\n flex={2.5}\n minWidth={320}\n paneKey={paneKey}\n title={t('panes.document-pane.document-not-found.title')}\n >\n <Stack space={4}>\n <Text as=\"p\">\n <Translate\n t={t}\n i18nKey=\"panes.document-pane.document-not-found.text\"\n values={{id: options.id}}\n components={{Code: ({children}) => <code>{children}</code>}}\n />\n </Text>\n </Stack>\n </ErrorPane>\n )\n }\n\n return (\n <DocumentPaneProviderWrapper\n // this needs to be here to avoid formState from being re-used across (incompatible) document types\n // see https://github.com/sanity-io/sanity/discussions/3794 for a description of the problem\n key={`${documentType}-${options.id}-${selectedPerspectiveName || ''}`}\n {...providerProps}\n >\n {/* NOTE: this is a temporary location for this provider until we */}\n {/* stabilize the reference input options formally in the form builder */}\n {/* eslint-disable-next-line react/jsx-pascal-case */}\n <ReferenceInputOptionsProvider\n EditReferenceLinkComponent={ReferenceChildLink}\n onEditReference={handleEditReference}\n initialValueTemplateItems={templatePermissions}\n activePath={activePath}\n >\n <DiffViewDocumentLayout documentId={options.id} documentType={options.type}>\n <CommentsWrapper documentId={options.id} documentType={options.type}>\n <DocumentLayout documentId={options.id} documentType={options.type} />\n </CommentsWrapper>\n </DiffViewDocumentLayout>\n </ReferenceInputOptionsProvider>\n </DocumentPaneProviderWrapper>\n )\n}\n\n/**\n * @internal\n */\nexport function usePaneOptions(\n options: DocumentPaneOptions,\n params: Record<string, string | undefined> = {},\n): DocumentPaneOptions {\n const templates = useTemplates()\n\n return useMemo(() => {\n // The document type is provided, so return\n if (options.type && options.type !== '*') {\n return options\n }\n\n // Attempt to derive document type from the template configuration\n const templateName = options.template || params.template\n const template = templateName ? templates.find((t) => t.id === templateName) : undefined\n const documentType = template?.schemaType\n\n // No document type was found in a template\n if (!documentType) {\n return options\n }\n\n // The template provided the document type, so modify the pane’s `options` property\n return {...options, type: documentType}\n }, [options, params.template, templates])\n}\n\nfunction mergeDocumentType(\n props: DocumentPaneProviderProps,\n options: DocumentPaneOptions,\n documentType: string,\n): DocumentPaneProviderProps {\n return {\n ...props,\n pane: {\n ...props.pane,\n options: {...options, type: documentType},\n },\n }\n}\n","import {type SortOrder} from './types'\n\nexport const PARTIAL_PAGE_LIMIT = 100\nexport const FULL_LIST_LIMIT = 2000\nexport const DEFAULT_ORDERING: SortOrder = {by: [{field: '_updatedAt', direction: 'desc'}]}\nexport const EMPTY_RECORD: Record<string, unknown> = {}\n\nexport const ENABLE_LRU_MEMO = true\n","import {type SanityDocument} from '@sanity/types'\nimport {Box, Container, Flex, Heading, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n ErrorActions,\n type GeneralPreviewLayoutKey,\n getPublishedId,\n isDev,\n LoadingBlock,\n SanityDefaultPreview,\n Translate,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Delay, PaneContent, PaneItem, usePane, usePaneLayout} from '../../components'\nimport {structureLocaleNamespace} from '../../i18n'\nimport {FULL_LIST_LIMIT} from './constants'\nimport {type DocumentListPaneItem, type LoadingVariant} from './types'\n\nconst RootBox = styled(Box)<{$opacity?: number}>`\n position: relative;\n opacity: ${(props) => props.$opacity || 1};\n transition: opacity 0.4s;\n`\n\nconst CommandListBox = styled(Box)`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n`\n\ninterface DocumentListPaneContentProps {\n childItemId?: string\n error: {message: string} | null\n filterIsSimpleTypeConstraint: boolean\n hasMaxItems?: boolean\n muted?: boolean\n hasSearchQuery: boolean\n isActive?: boolean\n isLazyLoading: boolean\n isLoading: boolean\n isConnected?: boolean\n autoRetry?: boolean\n canRetry: boolean\n retryCount?: number\n isRetrying?: boolean\n items: DocumentListPaneItem[]\n layout?: GeneralPreviewLayoutKey\n loadingVariant?: LoadingVariant\n onEndReached: () => void\n onRetry?: () => void\n paneTitle: string\n searchInputElement: HTMLInputElement | null\n showIcons: boolean\n}\n\nconst SKELETON_ITEMS = [...Array(30).keys()]\n\nfunction LoadingView(props: {layout?: GeneralPreviewLayoutKey}) {\n const {layout} = props\n\n return (\n <Stack paddingX={3} paddingY={2} paddingTop={0} space={1}>\n {SKELETON_ITEMS.map((num) => (\n <SanityDefaultPreview isPlaceholder layout={layout} key={num} />\n ))}\n </Stack>\n )\n}\n\nexport function DocumentListPaneContent(props: DocumentListPaneContentProps) {\n const {\n childItemId,\n error,\n isRetrying,\n autoRetry,\n filterIsSimpleTypeConstraint,\n hasMaxItems,\n hasSearchQuery,\n isActive,\n isLazyLoading,\n muted,\n isLoading,\n isConnected,\n retryCount,\n canRetry,\n items,\n layout,\n loadingVariant,\n onEndReached,\n onRetry,\n paneTitle,\n searchInputElement,\n showIcons,\n } = props\n\n const schema = useSchema()\n\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const {collapsed, index} = usePane()\n const [shouldRender, setShouldRender] = useState(!collapsed)\n const {t} = useTranslation(structureLocaleNamespace)\n\n const handleEndReached = useCallback(() => {\n if (shouldRender) {\n onEndReached()\n }\n }, [onEndReached, shouldRender])\n\n useEffect(() => {\n if (collapsed) return undefined\n\n const timer = setTimeout(() => {\n setShouldRender(true)\n }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [collapsed, items])\n\n const renderItem = useCallback<CommandListRenderItemCallback<SanityDocument>>(\n (item, {activeIndex}) => {\n const publishedId = getPublishedId(item._id)\n const isSelected = childItemId === publishedId\n const pressed = !isActive && isSelected\n const selected = isActive && isSelected\n const isLastItem = activeIndex === items.length - 1\n const showSpinner = isLastItem && isLazyLoading\n const showMaxItemsMessage = isLastItem && hasMaxItems\n\n return (\n <>\n <PaneItem\n icon={showIcons === false ? false : undefined}\n id={publishedId}\n layout={layout}\n marginBottom={1}\n pressed={pressed}\n schemaType={schema.get(item._type)}\n selected={selected}\n value={item}\n />\n\n {showSpinner && <LoadingBlock />}\n\n {showMaxItemsMessage && (\n <Box marginY={1} paddingX={3} paddingY={4}>\n <Text align=\"center\" muted size={1}>\n {t('panes.document-list-pane.max-items.text', {limit: FULL_LIST_LIMIT})}\n </Text>\n </Box>\n )}\n </>\n )\n },\n [childItemId, isActive, items.length, layout, schema, showIcons, hasMaxItems, isLazyLoading, t],\n )\n\n const noDocumentsContent = useMemo(() => {\n if (hasSearchQuery) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {t('panes.document-list-pane.no-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }\n\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Box paddingX={4} paddingY={5}>\n <Text align=\"center\" muted>\n {filterIsSimpleTypeConstraint\n ? t('panes.document-list-pane.no-documents-of-type.text')\n : t('panes.document-list-pane.no-matching-documents.text')}\n </Text>\n </Box>\n </Container>\n </Flex>\n )\n }, [filterIsSimpleTypeConstraint, hasSearchQuery, t])\n\n const mainContent = useMemo(() => {\n if (!shouldRender) {\n return null\n }\n\n const isOnline = window.navigator.onLine\n if (error) {\n return (\n <Flex align=\"center\" direction=\"column\" height=\"fill\" justify=\"center\">\n <Container width={1}>\n <Stack paddingX={4} paddingY={5} space={4}>\n <Heading as=\"h3\">{t('panes.document-list-pane.error.title')}</Heading>\n <Text as=\"p\">\n {isDev ? (\n <Translate\n t={t}\n i18nKey=\"panes.document-list-pane.error.text.dev\"\n values={{error: error.message}}\n components={{Code: ({children}) => <code>{children}</code>}}\n />\n ) : isOnline ? (\n t('panes.document-list-pane.error.text')\n ) : (\n t('panes.document-list-pane.error.text.offline')\n )}\n </Text>\n <ErrorActions\n error={error}\n eventId={null}\n onRetry={isOnline && canRetry ? onRetry : undefined}\n isRetrying={isRetrying}\n />\n {canRetry ? (\n <Text as=\"p\" muted size={1}>\n {isRetrying\n ? t('panes.document-list-pane.error.retrying', {count: retryCount})\n : autoRetry\n ? t('panes.document-list-pane.error.will-retry-automatically', {\n count: retryCount,\n })\n : t('panes.document-list-pane.error.max-retries-attempted', {\n count: retryCount,\n })}\n </Text>\n ) : null}\n </Stack>\n </Container>\n </Flex>\n )\n }\n\n if (isConnected && !isLoading && items.length === 0) {\n return noDocumentsContent\n }\n\n if (loadingVariant === 'initial' && isLoading) {\n return (\n <Delay ms={300}>\n <LoadingView layout={layout} />\n </Delay>\n )\n }\n\n if (loadingVariant === 'spinner' && isLoading) {\n return null\n }\n\n // prevents bug when panes won't render if first rendered while collapsed\n const key = `${index}-${collapsed}`\n\n return (\n <RootBox overflow=\"hidden\" height=\"fill\" $opacity={muted ? 0.8 : 1}>\n <CommandListBox>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={paneTitle}\n canReceiveFocus\n inputElement={searchInputElement}\n itemHeight={51}\n items={items}\n key={key}\n onEndReached={handleEndReached}\n onlyShowSelectionWhenActive\n overscan={10}\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n </CommandListBox>\n </RootBox>\n )\n }, [\n autoRetry,\n canRetry,\n collapsed,\n error,\n handleEndReached,\n index,\n isConnected,\n isLoading,\n isRetrying,\n items,\n layout,\n loadingVariant,\n muted,\n noDocumentsContent,\n onRetry,\n paneTitle,\n renderItem,\n retryCount,\n searchInputElement,\n shouldRender,\n t,\n ])\n\n return (\n <PaneContent\n data-testid=\"document-list-pane\"\n overflow={layoutCollapsed || loadingVariant === 'initial' ? 'hidden' : 'auto'}\n >\n {mainContent}\n </PaneContent>\n )\n}\n","import {\n isIndexSegment,\n isKeySegment,\n isReferenceSchemaType,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type SanityDocumentLike,\n type SchemaType,\n} from '@sanity/types'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ExprNode, parse} from 'groq-js'\nimport {collate, getPublishedId} from 'sanity'\n\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\nexport function getDocumentKey(value: DocumentListPaneItem, index: number): string {\n return value._id ? getPublishedId(value._id) : `item-${index}`\n}\n\nexport function removePublishedWithDrafts(documents: SanityDocumentLike[]): DocumentListPaneItem[] {\n return collate(documents).map((entry) => {\n const doc = entry.draft || entry.published || entry.versions[0]\n const hasDraft = Boolean(entry.draft)\n\n return {\n ...doc,\n hasPublished: !!entry.published,\n hasDraft,\n }\n }) as any\n}\n\nexport function applyOrderingFunctions(order: SortOrder, schemaType: ObjectSchemaType): SortOrder {\n const orderBy = order.by.map((by) => {\n // Skip those that already have a mapper\n if (by.mapWith) {\n return by\n }\n\n const fieldType = tryResolveSchemaTypeForPath(schemaType, by.field)\n if (!fieldType) {\n return by\n }\n\n // Note: order matters here, since the jsonType of a date field is `string`,\n // but we want to apply `datetime()`, not `lower()`\n if (fieldExtendsType(fieldType, 'datetime')) {\n return {...by, mapWith: 'dateTime'}\n }\n\n if (fieldType.jsonType === 'string') {\n return {...by, mapWith: 'lower'}\n }\n\n return by\n })\n\n return orderBy.every((item, index) => item === order.by[index]) ? order : {...order, by: orderBy}\n}\n\nfunction tryResolveSchemaTypeForPath(baseType: SchemaType, path: string): SchemaType | undefined {\n const pathSegments = PathUtils.fromString(path)\n\n let current: SchemaType | undefined = baseType\n for (const segment of pathSegments) {\n if (!current) {\n return undefined\n }\n\n if (typeof segment === 'string') {\n current = getFieldTypeByName(current, segment)\n continue\n }\n\n const isArrayAccessor = isKeySegment(segment) || isIndexSegment(segment)\n if (!isArrayAccessor || current.jsonType !== 'array') {\n return undefined\n }\n\n const [memberType, otherType] = current.of || []\n if (otherType || !memberType) {\n // Can't figure out the type without knowing the value\n return undefined\n }\n\n if (!isReferenceSchemaType(memberType)) {\n current = memberType\n continue\n }\n\n const [refType, otherRefType] = memberType.to || []\n if (otherRefType || !refType) {\n // Can't figure out the type without knowing the value\n return undefined\n }\n\n current = refType\n }\n\n return current\n}\n\nfunction getFieldTypeByName(type: SchemaType, fieldName: string): SchemaType | undefined {\n if (!('fields' in type)) {\n return undefined\n }\n\n const fieldType = type.fields.find((field) => field.name === fieldName)\n return fieldType ? fieldType.type : undefined\n}\n\nexport function fieldExtendsType(field: ObjectField | ObjectFieldType, ofType: string): boolean {\n let current: SchemaType | undefined = field.type\n while (current) {\n if (current.name === ofType) {\n return true\n }\n\n if (!current.type && current.jsonType === ofType) {\n return true\n }\n\n current = current.type\n }\n\n return false\n}\n\n/**\n * Recursively extract static `_type`s from GROQ filter expressions. If the\n * types can't be statically determined then it will return `null`.\n */\n// eslint-disable-next-line complexity\nfunction findTypes(node: ExprNode): Set<string> | null {\n switch (node.type) {\n case 'OpCall': {\n const {left, right} = node\n\n switch (node.op) {\n // e.g. `a == b`\n case '==': {\n // e.g. `_type == 'value'`\n if (left.type === 'AccessAttribute' && left.name === '_type' && !left.base) {\n if (right.type !== 'Value' || typeof right.value !== 'string') return null\n return new Set([right.value])\n }\n\n // e.g. `'value' == _type`\n if (right.type === 'AccessAttribute' && right.name === '_type' && !right.base) {\n if (left.type !== 'Value' || typeof left.value !== 'string') return null\n return new Set([left.value])\n }\n\n // otherwise, we can't determine the types statically\n return null\n }\n\n // e.g. `a in b`\n case 'in': {\n // if `_type` is not on the left hand side of `in` then it can't be determined\n if (left.type !== 'AccessAttribute' || left.name !== '_type' || left.base) return null\n // if the right hand side is not an array then the types can't be determined\n if (right.type !== 'Array') return null\n\n const types = new Set<string>()\n // iterate through all the types\n for (const element of right.elements) {\n // if we find a splat, then early return, we can't determine the types\n if (element.isSplat) return null\n // if the array element is not just a simple value, then early return\n if (element.value.type !== 'Value') return null\n // if the array element value is not a string, then early return\n if (typeof element.value.value !== 'string') return null\n // otherwise add the element value to the set of types\n types.add(element.value.value)\n }\n\n // if there were any elements in the types set, return it\n if (types.size) return types\n // otherwise, the set of types cannot be determined\n return null\n }\n\n default: {\n return null\n }\n }\n }\n\n // groups can just be unwrapped, the AST preserves the order\n case 'Group': {\n return findTypes(node.base)\n }\n\n // e.g. `_type == 'a' || _type == 'b'`\n // with Or nodes, if we can't determine the types for either the left or\n // right hand side then we can't determine the types for any\n // e.g. `_type == 'a' || isActive`\n // — can't determine types because `isActive` could be true on another types\n case 'Or': {\n const left = findTypes(node.left)\n if (!left) return null\n\n const right = findTypes(node.right)\n if (!right) return null\n\n return new Set([...left, ...right])\n }\n\n // e.g. `_type == 'a' && isActive`\n // with And nodes, we can determine the types as long as we can determine\n // the types for one side. We can't determine the types if both are `null`.\n case 'And': {\n const left = findTypes(node.left)\n const right = findTypes(node.right)\n\n if (!left && !right) return null\n return new Set([...(left || []), ...(right || [])])\n }\n\n default: {\n return null\n }\n }\n}\n\nexport function findStaticTypesInFilter(\n filter: string,\n params: Record<string, unknown> = {},\n): string[] | null {\n try {\n const types = findTypes(parse(filter, {params}))\n if (!types) return null\n\n return Array.from(types).sort()\n } catch {\n // if we couldn't parse the filter, just return `null`\n return null\n }\n}\n","import {type ClientPerspective, type SanityClient} from '@sanity/client'\nimport {\n asyncScheduler,\n defer,\n filter,\n map,\n merge,\n mergeMap,\n type Observable,\n of,\n partition,\n share,\n throttleTime,\n throwError,\n timer,\n} from 'rxjs'\nimport {scan} from 'rxjs/operators'\nimport {exhaustMapWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {\n createSearch,\n createSWR,\n getSearchableTypes,\n type SanityDocumentLike,\n type Schema,\n type SearchOptions,\n type SearchStrategy,\n} from 'sanity'\n\nimport {getExtendedProjection} from '../../structureBuilder/util/getExtendedProjection'\nimport {type SortOrder} from './types'\n\ninterface ListenQueryOptions {\n client: SanityClient\n filter: string\n limit: number\n params: Record<string, unknown>\n schema: Schema\n searchQuery: string\n sort: SortOrder\n perspective?: ClientPerspective\n staticTypeNames?: string[] | null\n maxFieldDepth?: number\n searchStrategy?: SearchStrategy\n}\n\nexport type SearchQueryEvent =\n | {\n type: 'reconnect'\n }\n | {type: 'result'; documents: SanityDocumentLike[]}\n\nexport interface SearchQueryState {\n connected: boolean\n fromCache: boolean\n documents: SanityDocumentLike[]\n}\n\nconst swr = createSWR<{connected: boolean; documents: SanityDocumentLike[]}>({maxSize: 100})\n\nexport function listenSearchQuery(options: ListenQueryOptions): Observable<SearchQueryState> {\n const {\n client,\n schema,\n sort,\n perspective,\n limit,\n params,\n filter: groqFilter,\n searchQuery,\n staticTypeNames,\n maxFieldDepth,\n searchStrategy,\n } = options\n const sortBy = sort.by\n const extendedProjection = sort?.extendedProjection\n\n // Listen for changes with the given filter and params, and whenever a change occurs, we want to\n // re-fetch the documents that match the search query (see below).\n // We use a separate listener since the search query is too large to use in a listen query.\n const events$ = defer(() => {\n return client.listen(`*[${groqFilter}]`, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeAllVersions: true,\n includeResult: false,\n visibility: 'query',\n tag: 'listen-search-query',\n })\n }).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n // If we can't establish a connection to the /listen endpoint, the first event we receive will be 'reconnect'\n // So if we get \"reconnect\" as the first event actually means \"Connection can't be established\"\n if (isFirst && ev.type === 'reconnect') {\n // if it's neither welcome nor reconnect, something unexpected has happened.\n return throwError(() => new Error(`Failed to establish EventSource connection`))\n }\n // When a connection is successfully established, the first event will be 'welcome'\n if (isFirst && ev.type !== 'welcome') {\n // if it's neither welcome nor reconnect, something unexpected has happened.\n return throwError(() => new Error(`Received unexpected type of first event \"${ev.type}\"`))\n }\n return of(ev)\n }),\n share(),\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, (ev) => ev.type === 'welcome')\n\n const swrKey = JSON.stringify({\n fiilter: groqFilter,\n limit,\n params,\n searchQuery,\n perspective,\n sort,\n staticTypeNames,\n })\n\n return merge(\n welcome$,\n mutationAndReconnect$.pipe(throttleTime(1000, asyncScheduler, {leading: true, trailing: true})),\n ).pipe(\n exhaustMapWithTrailing((event): Observable<SearchQueryEvent> => {\n // Get the types names to use for searching.\n // If we have a static list of types, we can skip fetching the types and use the static list.\n const typeNames$ = staticTypeNames\n ? of(staticTypeNames)\n : client.observable.fetch(`array::unique(*[${groqFilter}][]._type)`, params)\n\n // Use the type names to create a search query and fetch the documents that match the query.\n return typeNames$.pipe(\n mergeMap((typeNames: string[]) => {\n const types = getSearchableTypes(schema, staticTypeNames || []).filter((type) => {\n if (typeNames.includes(type.name)) {\n // make a call to getExtendedProjection in strict mode to verify that all fields are\n // known. This method will throw an exception if there are any unknown fields specified\n // in the sort by list\n getExtendedProjection(type, sort.by, true)\n return true\n }\n return false\n })\n\n const search = createSearch(types, client, {\n filter: groqFilter,\n params,\n strategy: searchStrategy,\n maxDepth: maxFieldDepth,\n })\n\n const doFetch = () => {\n const searchTerms = {\n query: searchQuery || '',\n types,\n }\n\n const searchOptions: SearchOptions = {\n __unstable_extendedProjection: extendedProjection,\n comments: [`findability-source: ${searchQuery ? 'list-query' : 'list'}`],\n limit,\n skipSortByScore: true,\n sort: sortBy,\n perspective,\n }\n\n return search(searchTerms, searchOptions).pipe(\n map((result) =>\n // eslint-disable-next-line max-nested-callbacks\n result.hits.map(({hit}) => hit),\n ),\n map((hits) => ({type: 'result' as const, documents: hits})),\n )\n }\n\n if (event.type === 'mutation' && event.visibility !== 'query') {\n // Even though the listener request specifies visibility=query, the events are not guaranteed to be delivered with visibility=query\n // If the event we are responding to arrives with visibility != query, we add a little delay to allow for the updated document to be available for queries\n // See https://www.sanity.io/docs/listening#visibility-c4786e55c3ff\n return timer(1200).pipe(mergeMap(doFetch))\n }\n if (event.type === 'reconnect') {\n return of(event)\n }\n return doFetch()\n }),\n )\n }),\n scan(\n (\n acc: null | {connected: boolean; documents: SanityDocumentLike[]},\n event: SearchQueryEvent,\n ) => ({\n connected: event.type !== 'reconnect',\n documents: event.type === 'result' ? event.documents : acc?.documents || [],\n }),\n null as null | {connected: boolean; documents: SanityDocumentLike[]},\n ),\n filter((v) => v !== null),\n swr(swrKey),\n map(({fromCache, value}): SearchQueryState => ({fromCache, ...value})),\n )\n}\n","import {ChannelError, ClientError, type ClientPerspective, ServerError} from '@sanity/client'\nimport {observableCallback} from 'observable-callback'\nimport {useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {concat, fromEvent, merge, NEVER, of, timer} from 'rxjs'\nimport {\n filter,\n map,\n mergeMap,\n scan,\n share,\n shareReplay,\n switchMap,\n take,\n takeUntil,\n withLatestFrom,\n} from 'rxjs/operators'\nimport {\n catchWithCount,\n DEFAULT_STUDIO_CLIENT_OPTIONS,\n useClient,\n useSchema,\n useSearchMaxFieldDepth,\n useWorkspace,\n} from 'sanity'\n\nimport {DEFAULT_ORDERING, FULL_LIST_LIMIT, PARTIAL_PAGE_LIMIT} from './constants'\nimport {findStaticTypesInFilter, removePublishedWithDrafts} from './helpers'\nimport {listenSearchQuery} from './listenSearchQuery'\nimport {type DocumentListPaneItem, type SortOrder} from './types'\n\ninterface UseDocumentListOpts {\n apiVersion?: string\n filter: string\n perspective?: ClientPerspective\n params: Record<string, unknown>\n searchQuery: string | null\n sortOrder?: SortOrder\n}\n\ninterface DocumentListState {\n error: {message: string} | null\n isLoadingFullList: boolean\n isLoading: boolean\n connected?: boolean\n isRetrying: boolean\n autoRetry: boolean\n canRetry: boolean\n retryCount: number\n fromCache?: boolean\n items: DocumentListPaneItem[]\n}\n\nconst INITIAL_QUERY_STATE: DocumentListState = {\n error: null,\n isRetrying: false,\n retryCount: 0,\n autoRetry: false,\n canRetry: false,\n isLoading: true,\n isLoadingFullList: false,\n fromCache: false,\n items: [],\n}\n\ninterface UseDocumentListHookValue extends DocumentListState {\n onRetry: () => void\n onLoadFullList: () => void\n}\n\n/**\n * Determine whether an error should be possible to retry\n * @param error - Any caught error\n */\nfunction isRetriableError(error: unknown) {\n if (error instanceof ChannelError) {\n // Usually indicative of a bad or malformed request\n return false\n }\n if (error instanceof ServerError) {\n // >= 500\n return true\n }\n if (error instanceof ClientError) {\n // >= 400\n // note: 403 Forbidden makes sense to retry, because it's a potentially passing condition\n return error.statusCode === 403\n }\n return true\n}\n\n/**\n * @internal\n */\nexport function useDocumentList(opts: UseDocumentListOpts): UseDocumentListHookValue {\n const {\n filter: searchFilter,\n params: paramsProp,\n sortOrder,\n searchQuery,\n perspective,\n apiVersion,\n } = opts\n const client = useClient({\n ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n })\n const {strategy: searchStrategy} = useWorkspace().search\n const schema = useSchema()\n const maxFieldDepth = useSearchMaxFieldDepth()\n\n // Get the type name from the filter, if it is a simple type filter.\n const typeNameFromFilter = useMemo(\n () => findStaticTypesInFilter(searchFilter, paramsProp),\n [searchFilter, paramsProp],\n )\n\n const [[onRetry$, onRetry]] = useState(() => observableCallback())\n const [[onFetchFullList$, onLoadFullList]] = useState(() => observableCallback())\n\n const queryResults$ = useMemo(() => {\n const listenSearchQueryArgs = {\n client,\n filter: searchFilter,\n limit: PARTIAL_PAGE_LIMIT,\n params: paramsProp,\n schema,\n perspective,\n searchQuery: searchQuery || '',\n sort: sortOrder || DEFAULT_ORDERING,\n staticTypeNames: typeNameFromFilter,\n maxFieldDepth,\n searchStrategy,\n }\n\n const partialList$ = listenSearchQuery(listenSearchQueryArgs).pipe(\n shareReplay({refCount: true, bufferSize: 1}),\n )\n\n // we want to fetch the full list if the last result of the partial list is at the limit\n const fullList$ = onFetchFullList$.pipe(\n withLatestFrom(partialList$),\n filter(([, result]) => result?.documents.length === PARTIAL_PAGE_LIMIT),\n // we want to set up the full list listener only once\n take(1),\n mergeMap(() =>\n concat(\n of({type: 'loadFullList' as const}),\n listenSearchQuery({...listenSearchQueryArgs, limit: FULL_LIST_LIMIT}).pipe(\n map((result) => ({type: 'result' as const, result})),\n ),\n ),\n ),\n share(),\n )\n\n // The combined search results from both partial page and full list\n return merge(\n partialList$.pipe(\n map((result) => ({\n type: 'result' as const,\n result,\n })),\n // when the full list listener kicks off, we want to stop the partial list listener\n takeUntil(fullList$),\n ),\n fullList$,\n ).pipe(\n catchWithCount((lastError, retryCount, caught$) => {\n const error = safeError(lastError)\n const isOnline = window.navigator.onLine\n const canRetry = isOnline && isRetriableError(lastError)\n const autoRetry = retryCount < 10\n const retries = merge(\n isOnline ? onRetry$ : fromEvent(window, 'online'),\n isOnline && autoRetry ? timer(retryCount * 1_000) : NEVER,\n ).pipe(\n take(1),\n switchMap(() =>\n merge(\n of({\n type: 'error' as const,\n error,\n retrying: true,\n autoRetry,\n canRetry,\n retryCount,\n }),\n caught$,\n ),\n ),\n )\n return concat(\n of({\n type: 'error' as const,\n error,\n retrying: false,\n autoRetry,\n canRetry,\n retryCount,\n }),\n retries,\n )\n }),\n scan((prev, event) => {\n if (event.type === 'error') {\n return {\n ...prev,\n error: event.error,\n retryCount: event.retryCount,\n isRetrying: event.retrying,\n autoRetry: event.autoRetry,\n canRetry: event.canRetry,\n }\n }\n if (event.type === 'result') {\n return {\n ...prev,\n error: null,\n isRetrying: false,\n fromCache: event.result.fromCache,\n connected: event.result.connected,\n isLoading: false,\n items: removePublishedWithDrafts(event.result.documents),\n isLoadingFullList: false,\n }\n }\n if (event.type === 'loadFullList') {\n return {\n ...prev,\n error: null,\n isLoadingFullList: true,\n }\n }\n // @ts-expect-error - all cases should be covered\n throw new Error(`Unexpected event type: ${event.type}`)\n }, INITIAL_QUERY_STATE),\n )\n }, [\n client,\n searchFilter,\n paramsProp,\n schema,\n perspective,\n searchQuery,\n sortOrder,\n typeNameFromFilter,\n maxFieldDepth,\n searchStrategy,\n onFetchFullList$,\n onRetry$,\n ])\n\n const {\n error,\n items,\n isLoading,\n fromCache,\n connected,\n canRetry,\n isLoadingFullList,\n isRetrying,\n autoRetry,\n retryCount,\n } = useObservable(queryResults$, INITIAL_QUERY_STATE)\n\n return {\n error,\n onRetry,\n isLoading,\n items,\n isRetrying,\n canRetry,\n retryCount,\n autoRetry,\n connected,\n fromCache,\n onLoadFullList,\n isLoadingFullList,\n }\n}\n\n// todo: candidate for re-use\nconst nonErrorThrownWarning = `[WARNING: This was thrown as a non-error. Only Error instances should be thrown]`\nfunction safeError(thrown: unknown): Error {\n if (thrown instanceof Error) {\n return thrown\n }\n if (typeof thrown === 'object' && thrown !== null) {\n if ('message' in thrown && typeof thrown.message === 'string') {\n return new Error(`${thrown.message} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n }\n return new Error(`${String(thrown)} ${nonErrorThrownWarning}`)\n}\n","import {SearchIcon, SpinnerIcon} from '@sanity/icons'\nimport {Box, TextInput} from '@sanity/ui'\nimport {memo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservableEvent} from 'react-rx'\nimport {debounce, map, type Observable, of, tap, timer} from 'rxjs'\nimport {\n type GeneralPreviewLayoutKey,\n useActiveReleases,\n useI18nText,\n usePerspective,\n useReconnectingToast,\n useSchema,\n useTranslation,\n useUnique,\n} from 'sanity'\nimport {keyframes, styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../i18n'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {EMPTY_RECORD, FULL_LIST_LIMIT} from './constants'\nimport {DocumentListPaneContent} from './DocumentListPaneContent'\nimport {applyOrderingFunctions, findStaticTypesInFilter} from './helpers'\nimport {useShallowUnique} from './PaneContainer'\nimport {type LoadingVariant, type SortOrder} from './types'\nimport {useDocumentList} from './useDocumentList'\n\n/**\n * @internal\n */\nexport type DocumentListPaneProps = BaseStructureToolPaneProps<'documentList'> & {\n sortOrder?: SortOrder\n layout?: Exclude<GeneralPreviewLayoutKey, 'sheetList'>\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 0.1;\n }\n 100% {\n opacity: 0.4;\n }\n`\n\nconst AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n\nconst SubtleSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 1500ms linear infinite;\n opacity: 0.4;\n`\n\nconst DelayedSubtleSpinnerIcon = styled(SpinnerIcon)`\n animation:\n ${rotate} 1500ms linear infinite,\n ${fadeIn} 1000ms linear;\n opacity: 0.4;\n`\n\n/**\n * @internal\n */\n\nexport const DocumentListPane = memo(function DocumentListPane(props: DocumentListPaneProps) {\n const {childItemId, isActive, pane, paneKey, sortOrder: sortOrderRaw, layout} = props\n const schema = useSchema()\n const releases = useActiveReleases()\n const {perspectiveStack} = usePerspective()\n const {displayOptions, options} = pane\n const {apiVersion, filter} = options\n const params = useShallowUnique(options.params || EMPTY_RECORD)\n const typeName = useMemo(() => {\n const staticTypes = findStaticTypesInFilter(filter, params)\n if (staticTypes?.length === 1) return staticTypes[0]\n return null\n }, [filter, params])\n\n const showIcons = displayOptions?.showIcons !== false\n\n const {t} = useTranslation(structureLocaleNamespace)\n const {title} = useI18nText(pane)\n\n const [searchQuery, setSearchQuery] = useState<string>('')\n const [searchInputValue, setSearchInputValue] = useState<string>('')\n const [searchInputElement, setSearchInputElement] = useState<HTMLInputElement | null>(null)\n\n const sortWithOrderingFn =\n typeName && sortOrderRaw\n ? applyOrderingFunctions(sortOrderRaw, schema.get(typeName) as any)\n : sortOrderRaw\n\n const sortOrder = useUnique(sortWithOrderingFn)\n\n const {\n error,\n isLoadingFullList,\n isLoading: documentListIsLoading,\n items,\n fromCache,\n isRetrying,\n autoRetry,\n canRetry,\n retryCount,\n connected,\n onLoadFullList,\n onRetry,\n } = useDocumentList({\n apiVersion,\n filter,\n perspective: perspectiveStack,\n params,\n searchQuery: searchQuery?.trim(),\n sortOrder,\n })\n\n const isLoading = documentListIsLoading || releases.loading\n\n const handleQueryChange = useObservableEvent(\n (event$: Observable<React.ChangeEvent<HTMLInputElement>>) => {\n return event$.pipe(\n map((event) => event.target.value),\n tap(setSearchInputValue),\n debounce((value) => (value === '' ? of('') : timer(300))),\n tap(setSearchQuery),\n )\n },\n )\n\n const handleClearSearch = useCallback(() => {\n setSearchQuery('')\n setSearchInputValue('')\n }, [])\n\n const handleSearchKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n handleClearSearch()\n }\n },\n [handleClearSearch],\n )\n\n const [enableSearchSpinner, setEnableSearchSpinner] = useState<string | void>()\n\n useEffect(() => {\n if (!enableSearchSpinner && !isLoading) {\n setEnableSearchSpinner(paneKey)\n }\n }, [enableSearchSpinner, isLoading, paneKey])\n\n useEffect(() => {\n // Clear search field and disable search spinner\n // when switching between panes (i.e. when paneKey changes).\n handleClearSearch()\n setEnableSearchSpinner()\n }, [paneKey, handleClearSearch])\n\n const loadingVariant: LoadingVariant = useMemo(() => {\n if (connected && isLoading && enableSearchSpinner === paneKey) {\n return 'spinner'\n }\n if (connected && fromCache) {\n return 'subtle'\n }\n\n return 'initial'\n }, [connected, enableSearchSpinner, fromCache, isLoading, paneKey])\n\n const textInputIcon = useMemo(() => {\n if (loadingVariant === 'spinner') {\n return AnimatedSpinnerIcon\n }\n if (searchInputValue && loadingVariant === 'subtle') {\n return SubtleSpinnerIcon\n }\n return SearchIcon\n }, [loadingVariant, searchInputValue])\n\n useReconnectingToast(!connected)\n\n return (\n <>\n <Box paddingX={3} paddingBottom={3}>\n <TextInput\n aria-label={t('panes.document-list-pane.search-input.aria-label')}\n autoComplete=\"off\"\n border={false}\n clearButton={Boolean(searchQuery)}\n fontSize={[2, 2, 1]}\n icon={textInputIcon}\n iconRight={\n !connected || (loadingVariant === 'subtle' && !searchInputValue)\n ? DelayedSubtleSpinnerIcon\n : null\n }\n onChange={handleQueryChange}\n onClear={handleClearSearch}\n onKeyDown={handleSearchKeyDown}\n padding={2}\n placeholder={t('panes.document-list-pane.search-input.placeholder')}\n radius={2}\n ref={setSearchInputElement}\n spellCheck={false}\n value={searchInputValue}\n />\n </Box>\n <DocumentListPaneContent\n childItemId={childItemId}\n error={error}\n filterIsSimpleTypeConstraint={!!typeName}\n hasMaxItems={items.length === FULL_LIST_LIMIT}\n hasSearchQuery={Boolean(searchQuery)}\n isActive={isActive}\n isLazyLoading={isLoadingFullList}\n isLoading={isLoading}\n autoRetry={autoRetry}\n canRetry={canRetry}\n retryCount={retryCount}\n isRetrying={isRetrying}\n isConnected={connected}\n items={items}\n key={paneKey}\n layout={layout}\n muted={loadingVariant === 'subtle'}\n loadingVariant={loadingVariant}\n onEndReached={onLoadFullList}\n onRetry={onRetry}\n paneTitle={title}\n searchInputElement={searchInputElement}\n showIcons={showIcons}\n />\n </>\n )\n})\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {memo, type ReactNode, useMemo} from 'react'\nimport {type GeneralPreviewLayoutKey, type InitialValueTemplateItem} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../ui-components'\nimport {\n BackLink,\n PaneHeader as StructurePaneHeader,\n PaneHeaderActions,\n usePane,\n} from '../../components'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\nimport {type SortOrder} from './types'\n\ninterface PaneHeaderProps {\n contentAfter?: ReactNode\n index: number\n initialValueTemplates?: InitialValueTemplateItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n menuItems?: PaneMenuItem[]\n setLayout: (layout: GeneralPreviewLayoutKey) => void\n setSortOrder: (sortOrder: SortOrder) => void\n title: string\n}\n\nexport const PaneHeader = memo(\n ({\n contentAfter,\n index,\n initialValueTemplates = [],\n menuItemGroups = [],\n menuItems = [],\n setLayout,\n setSortOrder,\n title,\n }: PaneHeaderProps) => {\n const {features} = useStructureTool()\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n const actionHandlers = useMemo((): Record<string, StructureToolPaneActionHandler> => {\n return {\n setLayout: ({layout: value}: {layout: GeneralPreviewLayoutKey}) => {\n setLayout(value)\n },\n setSortOrder: (sort: SortOrder) => {\n setSortOrder(sort)\n },\n }\n }, [setLayout, setSortOrder])\n\n return (\n <TooltipDelayGroupProvider>\n <StructurePaneHeader\n actions={\n <PaneHeaderActions\n initialValueTemplateItems={initialValueTemplates}\n actionHandlers={actionHandlers}\n menuItemGroups={menuItemGroups}\n menuItems={menuItems}\n />\n }\n backButton={\n features.backButton &&\n index > 0 && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: 'Back'}}\n />\n )\n }\n contentAfter={contentAfter}\n tabIndex={tabIndex}\n title={title}\n />\n </TooltipDelayGroupProvider>\n )\n },\n)\n\nPaneHeader.displayName = 'Memo(PaneHeader)'\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {type SanityDocument} from '@sanity/client'\nimport {Checkbox} from '@sanity/ui'\nimport {type CellContext} from '@tanstack/react-table'\nimport {type MouseEvent, useCallback} from 'react'\n\nexport function DocumentSheetListSelect(props: CellContext<SanityDocument, unknown>) {\n const {row, table} = props\n\n const {selectedAnchor, setSelectedAnchor} = table.options.meta || {}\n\n const handleOnClick = useCallback(\n (e: MouseEvent<HTMLInputElement>) => {\n if (e.shiftKey && selectedAnchor !== null && selectedAnchor !== undefined) {\n const shiftClickIndex = row.index\n const lowerIndex = shiftClickIndex < selectedAnchor ? shiftClickIndex : selectedAnchor\n const upperIndex = shiftClickIndex < selectedAnchor ? selectedAnchor : shiftClickIndex\n\n const additionalSelectedRows = table\n .getRowModel()\n .flatRows.slice(lowerIndex, upperIndex + 1)\n .map(({id}) => id)\n\n const currentSelectedRows = table.getSelectedRowModel().rows.map(({id}) => id)\n table.setRowSelection(() =>\n [...additionalSelectedRows, ...currentSelectedRows].reduce(\n (nextSelectedRows, rowId) => ({...nextSelectedRows, [rowId]: true}),\n {},\n ),\n )\n } else if (setSelectedAnchor) {\n const isRowCurrentlySelected = row.getIsSelected()\n if (isRowCurrentlySelected) {\n // about to unselect so invalidate current anchor\n setSelectedAnchor(null)\n } else {\n // override anchor with new selection index\n setSelectedAnchor(row.index)\n }\n\n row.toggleSelected()\n }\n },\n [selectedAnchor, row, setSelectedAnchor, table],\n )\n\n return (\n <Checkbox\n style={{paddingLeft: 4}}\n checked={props.row.getIsSelected()}\n disabled={!props.row.getCanSelect()}\n // onChange doesn't have shiftKey in event, but want to control this checkbox\n // need to define noop onChange to suppress the warning\n // eslint-disable-next-line react/jsx-no-bind\n onChange={() => null}\n onClick={handleOnClick}\n />\n )\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {type Table} from '@tanstack/react-table'\nimport {type ReactNode, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {DocumentSheetListContext} from 'sanity/_singletons'\n\ninterface DocumentSheetListProviderProps {\n children?: ReactNode\n table: Table<SanityDocument>\n}\n\ntype SelectedCellDetails = {\n colId: string\n rowIndex: number\n state: 'focused' | 'selected'\n} | null\n\n/** @internal */\nexport interface DocumentSheetListContextValue {\n focusAnchorCell: () => void\n resetFocusSelection: () => void\n setSelectedAnchorCell: (colId: string, rowIndex: number) => void\n getStateByCellId: (\n colId: string,\n rowIndex: number,\n ) => 'focused' | 'selectedAnchor' | 'selectedRange' | null\n submitFocusedCell: () => void\n}\n\n/** @internal */\nexport const useDocumentSheetListContext = (): DocumentSheetListContextValue => {\n const context = useContext(DocumentSheetListContext)\n\n if (context === undefined) {\n throw new Error('useDocumentSheetListContext must be used within an DocumentSheetListProvider')\n }\n return context\n}\n\n/** @internal */\nexport function DocumentSheetListProvider({\n children,\n table,\n}: DocumentSheetListProviderProps): ReactNode {\n const [selectedAnchorCellDetails, setSelectedAnchorCellDetails] =\n useState<SelectedCellDetails>(null)\n const [selectedRangeCellIndexes, setSelectedRangeCellIndexes] = useState<number[]>([])\n\n const clearAndSetFocusSelection = useCallback(\n (nextAnchorDetails: SelectedCellDetails = null) => {\n if (\n selectedAnchorCellDetails?.state === 'focused' &&\n document.activeElement instanceof HTMLElement\n ) {\n document.activeElement.blur()\n }\n\n setSelectedAnchorCellDetails(nextAnchorDetails)\n setSelectedRangeCellIndexes([])\n },\n [selectedAnchorCellDetails],\n )\n\n const resetFocusSelection = useCallback(\n () => clearAndSetFocusSelection(),\n [clearAndSetFocusSelection],\n )\n\n const changeSelectionColumn = useCallback(\n (direction: 'left' | 'right') => {\n if (!selectedAnchorCellDetails) return\n\n const visibleColumns = table.getVisibleLeafColumns()\n const columnIndexAfterMove =\n visibleColumns.findIndex((col) => col.id === selectedAnchorCellDetails.colId) +\n (direction === 'left' ? -1 : 1)\n\n if (columnIndexAfterMove < 0 || columnIndexAfterMove >= visibleColumns.length) return\n\n clearAndSetFocusSelection({\n colId: visibleColumns[columnIndexAfterMove].id,\n rowIndex: selectedAnchorCellDetails.rowIndex,\n state: 'selected',\n })\n },\n [clearAndSetFocusSelection, selectedAnchorCellDetails, table],\n )\n\n const changeSelectionRange = useCallback(\n (direction: 'up' | 'down') => {\n if (!selectedAnchorCellDetails) return\n\n setSelectedRangeCellIndexes((previousSelection) => {\n const {rowIndex: anchorIndex} = selectedAnchorCellDetails\n const getNextIndex = (startingIndex: number) =>\n startingIndex + (direction === 'down' ? 1 : -1)\n // if no cells are selected, select the cell in the direction\n if (!previousSelection.length) {\n const firstSelectedIndex = getNextIndex(anchorIndex)\n if (firstSelectedIndex < 0) return []\n return [firstSelectedIndex]\n }\n const lastIndexSelected = previousSelection[previousSelection.length - 1]\n const nextIndex = getNextIndex(lastIndexSelected)\n\n // if the cell in the direction is out of bounds, return the previous selection\n if (nextIndex < 0) return previousSelection\n\n // if the cell in the direction is the same as the focused cell, deselect all cells\n if (nextIndex === anchorIndex) return []\n\n // if the cell in the direction is already selected, deselect the last selected cell\n if (previousSelection.includes(nextIndex)) {\n return previousSelection.slice(0, -1)\n }\n\n return [...previousSelection, nextIndex]\n })\n },\n [selectedAnchorCellDetails],\n )\n\n const setSelectedAnchorCell = useCallback(\n (colId: string, rowIndex: number) => {\n clearAndSetFocusSelection({colId, rowIndex, state: 'selected'})\n },\n [clearAndSetFocusSelection],\n )\n\n const handleEscapePress = useCallback(() => {\n if (!selectedAnchorCellDetails) return\n if (selectedRangeCellIndexes.length) {\n // only clear selected range if it exists\n setSelectedRangeCellIndexes([])\n } else {\n const nextAnchorCellDetails: SelectedCellDetails =\n selectedAnchorCellDetails.state === 'selected'\n ? null\n : {\n ...selectedAnchorCellDetails,\n state: 'selected',\n }\n clearAndSetFocusSelection(nextAnchorCellDetails)\n }\n }, [clearAndSetFocusSelection, selectedAnchorCellDetails, selectedRangeCellIndexes.length])\n\n const handleUpDownKey = useCallback(\n (isShiftKey: boolean, key: string) => {\n if (!selectedAnchorCellDetails) return\n\n const direction = key === 'ArrowDown' ? 'down' : 'up'\n const offset = direction === 'down' ? 1 : -1\n\n if (isShiftKey) {\n changeSelectionRange(direction)\n } else {\n const newSelectedCellRowIndex = selectedAnchorCellDetails.rowIndex + offset\n if (newSelectedCellRowIndex < 0) return\n\n setSelectedAnchorCell(selectedAnchorCellDetails.colId, newSelectedCellRowIndex)\n }\n },\n [changeSelectionRange, selectedAnchorCellDetails, setSelectedAnchorCell],\n )\n\n const handleAnchorKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (!selectedAnchorCellDetails) return\n\n const {key, shiftKey} = event\n\n switch (key) {\n case 'Shift':\n break // shift allow should do nothing\n\n case 'Escape':\n handleEscapePress()\n break\n\n case 'ArrowDown':\n case 'ArrowUp':\n event.preventDefault()\n handleUpDownKey(shiftKey, key)\n break\n\n case 'ArrowLeft':\n case 'ArrowRight':\n // when cell is focused, arrows should have default behavior\n // only prevent default when cell is selected\n if (selectedAnchorCellDetails.state === 'selected') {\n event.preventDefault()\n changeSelectionColumn(key === 'ArrowLeft' ? 'left' : 'right')\n }\n break\n\n default:\n break\n }\n },\n [selectedAnchorCellDetails, handleEscapePress, handleUpDownKey, changeSelectionColumn],\n )\n\n const handleAnchorClick = useCallback(\n (event: MouseEvent) => {\n if (!selectedAnchorCellDetails) return\n const isClickInAnchorCell = document\n .getElementById(\n `cell-${selectedAnchorCellDetails.colId}-${selectedAnchorCellDetails.rowIndex}`,\n )\n ?.contains(event.target as Node)\n\n if (!isClickInAnchorCell) resetFocusSelection()\n },\n [resetFocusSelection, selectedAnchorCellDetails],\n )\n\n useEffect(() => {\n if (selectedAnchorCellDetails) {\n document.addEventListener('keydown', handleAnchorKeydown)\n document.addEventListener('click', handleAnchorClick)\n }\n\n return () => {\n if (selectedAnchorCellDetails) {\n document.removeEventListener('keydown', handleAnchorKeydown)\n document.removeEventListener('click', handleAnchorClick)\n }\n }\n }, [handleAnchorClick, handleAnchorKeydown, selectedAnchorCellDetails])\n\n const focusAnchorCell = useCallback(\n () =>\n setSelectedAnchorCellDetails((anchorCellDetails) => {\n if (!anchorCellDetails) return null\n\n return {...anchorCellDetails, state: 'focused'}\n }),\n [],\n )\n\n const getStateByCellId = useCallback(\n (colId: string, rowIndex: number) => {\n if (selectedAnchorCellDetails?.colId !== colId) return null\n\n if (selectedAnchorCellDetails.rowIndex === rowIndex)\n return selectedAnchorCellDetails.state === 'focused' ? 'focused' : 'selectedAnchor'\n\n if (selectedRangeCellIndexes.includes(rowIndex)) return 'selectedRange'\n\n return null\n },\n [selectedAnchorCellDetails, selectedRangeCellIndexes],\n )\n\n const submitFocusedCell = useCallback(() => {\n if (!selectedAnchorCellDetails) return\n\n clearAndSetFocusSelection({\n colId: selectedAnchorCellDetails.colId,\n rowIndex: selectedAnchorCellDetails.rowIndex + 1,\n state: 'selected',\n })\n }, [clearAndSetFocusSelection, selectedAnchorCellDetails])\n\n const value = useMemo<DocumentSheetListContextValue>(\n () => ({\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n }),\n [\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n ],\n )\n\n return (\n <DocumentSheetListContext.Provider value={value}>{children}</DocumentSheetListContext.Provider>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\nimport {type ObjectFieldType} from '@sanity/types'\nimport {Select, TextInput} from '@sanity/ui'\nimport {type Cell, type CellContext, flexRender} from '@tanstack/react-table'\nimport {type MouseEventHandler, useCallback, useEffect, useRef, useState} from 'react'\nimport {type SanityDocument} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {useDocumentSheetListContext} from './DocumentSheetListProvider'\n\nconst DataCell = styled.td<{width: number}>`\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n width: ${({width}) => width}px;\n border-top: 1px solid var(--card-border-color);\n background-color: var(--card-bg-color);\n`\n\nconst PinnedDataCell = styled(DataCell)`\n position: sticky;\n z-index: 2;\n`\n\ninterface SheetListCellInnerProps extends CellContext<SanityDocument, unknown> {\n fieldType: ObjectFieldType\n}\n\ntype CellInputElement = HTMLInputElement | HTMLSelectElement\ntype InputRef = CellInputElement | null\n\n/** @internal */\nexport function SheetListCellInner(props: SheetListCellInnerProps) {\n const {getValue, column, row, fieldType} = props\n const cellId = `cell-${column.id}-${row.index}`\n const [renderValue, setRenderValue] = useState<string>(getValue() as string)\n const [isDirty, setIsDirty] = useState(false)\n const inputRef = useRef<InputRef>(null)\n const {\n focusAnchorCell,\n resetFocusSelection,\n setSelectedAnchorCell,\n getStateByCellId,\n submitFocusedCell,\n } = useDocumentSheetListContext()\n const cellState = getStateByCellId(column.id, row.index)\n\n const handleOnFocus = useCallback(() => {\n // reselect in cases where focus achieved without initial mousedown\n setSelectedAnchorCell(column.id, row.index)\n focusAnchorCell()\n }, [column.id, focusAnchorCell, row.index, setSelectedAnchorCell])\n const {patchDocument} = props.table.options.meta || {}\n\n const handleProgrammaticFocus = () => {\n inputRef.current?.focus()\n if (inputRef.current instanceof HTMLInputElement) {\n inputRef.current.select()\n }\n }\n\n const handleOnMouseDown: MouseEventHandler<CellInputElement> = (event) => {\n if (event.detail === 2) {\n handleProgrammaticFocus()\n } else {\n event.preventDefault()\n setSelectedAnchorCell(column.id, row.index)\n }\n }\n\n const handleOnEnterDown = useCallback(\n (event: KeyboardEvent) => {\n const {key} = event\n if (key === 'Enter') {\n if (cellState === 'selectedAnchor') handleProgrammaticFocus()\n if (cellState === 'focused') submitFocusedCell()\n }\n },\n [cellState, submitFocusedCell],\n )\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setIsDirty(true)\n setRenderValue(event.target.value)\n }\n\n const handleOnBlur = () => {\n if (isDirty) {\n patchDocument?.(row.id, column.id, renderValue)\n setIsDirty(false)\n }\n resetFocusSelection()\n }\n\n const handlePaste = useCallback(\n (event: ClipboardEvent) => {\n const clipboardData = event.clipboardData?.getData('Text')\n\n if (typeof clipboardData === 'string' || typeof clipboardData === 'number') {\n setRenderValue(clipboardData)\n // patch immediately when pasting\n patchDocument?.(row.id, column.id, clipboardData)\n }\n },\n [column.id, patchDocument, row.id],\n )\n\n const handleCopy = useCallback(() => {\n navigator.clipboard.writeText(renderValue.toString())\n }, [renderValue])\n\n useEffect(() => {\n if (cellState === 'selectedAnchor' || cellState === 'focused')\n // only listen for enter key when cell is focused or anchor\n document.addEventListener('keydown', handleOnEnterDown)\n if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n // if cell is selected, paste events should be handled\n document.addEventListener('paste', handlePaste)\n\n if (cellState === 'selectedAnchor')\n // only allow copying when cell is selected anchor\n document.addEventListener('copy', handleCopy)\n\n return () => {\n if (cellState === 'selectedAnchor' || cellState === 'focused')\n document.removeEventListener('keydown', handleOnEnterDown)\n if (cellState === 'selectedAnchor' || cellState === 'selectedRange')\n document.removeEventListener('paste', handlePaste)\n if (cellState === 'selectedAnchor') document.removeEventListener('copy', handleCopy)\n }\n }, [\n cellId,\n cellState,\n column.id,\n getStateByCellId,\n handleCopy,\n handleOnEnterDown,\n handlePaste,\n row.index,\n ])\n\n const getBorderStyle = () => {\n if (cellState === 'focused') return '2px solid blue'\n if (cellState === 'selectedRange') return '1px solid green'\n if (cellState === 'selectedAnchor') return '1px solid blue'\n\n return '1px solid transparent'\n }\n\n const inputProps = {\n 'onFocus': handleOnFocus,\n 'onBlur': handleOnBlur,\n 'onMouseDown': handleOnMouseDown,\n 'aria-selected': !!cellState,\n 'data-testid': cellId,\n 'id': cellId,\n 'ref': (ref: InputRef) => {\n inputRef.current = ref\n },\n }\n\n if (fieldType.name === 'boolean') {\n return (\n <Select\n {...inputProps}\n onChange={() => null}\n radius={0}\n style={{\n boxShadow: 'none',\n border: getBorderStyle(),\n padding: 0,\n }}\n value={JSON.stringify(renderValue)}\n >\n <option value=\"True\">True</option>\n <option value=\"False\">False</option>\n </Select>\n )\n }\n\n return (\n <TextInput\n {...inputProps}\n size={0}\n radius={0}\n border={false}\n style={{\n border: getBorderStyle(),\n padding: '22px 16px',\n }}\n value={\n typeof renderValue === 'string' || typeof renderValue === 'number'\n ? renderValue\n : JSON.stringify(renderValue)\n }\n onChange={handleOnChange}\n />\n )\n}\n\n/** @internal */\nexport function SheetListCell(cell: Cell<SanityDocument, unknown>) {\n const isPinned = cell.column.getIsPinned()\n const Cell = isPinned ? PinnedDataCell : DataCell\n const borderWidth = isPinned && cell.column.getIsLastColumn('left') ? 2 : 1\n\n return (\n <Cell\n key={cell.row.original._id + cell.id}\n style={{\n left: cell.column.getStart('left') ?? undefined,\n borderRight: `${borderWidth}px solid var(--card-border-color)`,\n }}\n width={cell.column.getSize()}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext?.())}\n </Cell>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isObjectSchemaType, type ObjectSchemaType} from '@sanity/types'\nimport {Box, Checkbox, Flex, Text} from '@sanity/ui'\nimport {\n type AccessorKeyColumnDef,\n createColumnHelper,\n type GroupColumnDef,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n type DocumentPreviewStore,\n DocumentStatusIndicator,\n getPreviewStateObservable,\n type SanityDocument,\n type SchemaType,\n useDocumentPreviewStore,\n useDocumentVersionInfo,\n} from 'sanity'\n\nimport {DocumentSheetListSelect} from './DocumentSheetListSelect'\nimport {SheetListCellInner} from './SheetListCell'\n\nexport const VISIBLE_COLUMN_LIMIT = 5\n\nconst PreviewCell = (props: {\n documentPreviewStore: DocumentPreviewStore\n schemaType: SchemaType\n row: {\n original: SanityDocument\n }\n}) => {\n const {documentPreviewStore, row, schemaType} = props\n const previewStateObservable = useMemo(\n () => getPreviewStateObservable(documentPreviewStore, schemaType, row.original._id),\n [documentPreviewStore, row.original._id, schemaType],\n )\n\n const versionsInfo = useDocumentVersionInfo(row.original._id)\n\n const {snapshot, isLoading} = useObservable(previewStateObservable, {\n snapshot: null,\n isLoading: true,\n })\n if (isLoading) {\n return (\n <Text size={1} muted>\n Loading...\n </Text>\n )\n }\n const displayValue = (snapshot?.title ?? 'Untitled') as string\n\n return (\n <Flex align=\"center\" gap={3}>\n <DocumentStatusIndicator\n draft={versionsInfo.draft}\n published={versionsInfo.published}\n versions={undefined}\n />\n <Text size={1}>{displayValue}</Text>\n </Flex>\n )\n}\n\nconst columnHelper = createColumnHelper<SanityDocument>()\nconst SUPPORTED_FIELDS = ['string', 'number', 'boolean']\n\ntype Columns = (\n | AccessorKeyColumnDef<SanityDocument, unknown>\n | GroupColumnDef<SanityDocument, unknown>\n)[]\n\nconst getColsFromSchemaType = (schemaType: ObjectSchemaType, parentalField?: string): Columns => {\n return schemaType.fields.reduce<Columns>((tableColumns: Columns, field) => {\n const {type, name} = field\n if (SUPPORTED_FIELDS.includes(type.name)) {\n const nextCol = columnHelper.accessor(\n // accessor must use dot notation for internal tanstack method of reading cell data\n parentalField ? `${parentalField}.${field.name}` : field.name,\n {\n id: parentalField ? `${parentalField}_${field.name}` : field.name,\n header: field.type.title,\n enableHiding: true,\n cell: (info) => <SheetListCellInner {...info} fieldType={type} />,\n },\n )\n\n return [...tableColumns, nextCol]\n }\n\n // if first layer nested object\n if (type.name === 'object' && isObjectSchemaType(type) && !parentalField) {\n return [\n ...tableColumns,\n columnHelper.group({header: name, columns: getColsFromSchemaType(type, field.name)}),\n ]\n }\n\n return tableColumns\n }, [])\n}\n\n// Type guard function to check if a column is of type GroupColumnDef\nfunction isAccessorKeyColumnDef(\n column: Columns[number],\n): column is AccessorKeyColumnDef<SanityDocument, unknown> {\n return 'accessorKey' in column\n}\nfunction isGroupColumnDef(\n column: AccessorKeyColumnDef<SanityDocument, unknown> | GroupColumnDef<SanityDocument, unknown>,\n): column is GroupColumnDef<SanityDocument, unknown> {\n return 'columns' in column\n}\n\nconst flatColumns = (cols: Columns): AccessorKeyColumnDef<SanityDocument, unknown>[] => {\n return cols.flatMap((col) => {\n if (isAccessorKeyColumnDef(col)) {\n return col\n }\n if (isGroupColumnDef(col)) {\n return col.columns ? flatColumns(col.columns) : []\n }\n return []\n })\n}\n\nexport function useDocumentSheetColumns(documentSchemaType?: ObjectSchemaType) {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const columns: Columns = useMemo(() => {\n if (!documentSchemaType) {\n return []\n }\n return [\n columnHelper.display({\n id: 'selected',\n enableHiding: false,\n header: (info) => (\n <Box>\n <Checkbox\n style={{paddingLeft: 4}}\n indeterminate={info.table.getIsSomeRowsSelected()}\n onChange={info.table.getToggleAllPageRowsSelectedHandler()}\n />\n {/* eslint-disable-next-line i18next/no-literal-string */}\n {info.table.getSelectedRowModel().rows.length} selected\n </Box>\n ),\n cell: DocumentSheetListSelect,\n }),\n columnHelper.accessor('Preview', {\n enableHiding: false,\n id: 'Preview',\n cell: (info) => {\n return (\n <PreviewCell\n {...info}\n documentPreviewStore={documentPreviewStore}\n schemaType={documentSchemaType}\n />\n )\n },\n }),\n ...getColsFromSchemaType(documentSchemaType),\n ]\n }, [documentPreviewStore, documentSchemaType])\n\n const [initialColumnsVisibility]: [VisibilityState, number] = useMemo(\n () =>\n flatColumns(columns).reduce<[VisibilityState, number]>(\n ([accCols, countAllowedVisible], column) => {\n if (!column.id) throw new Error('Column must have an id')\n const visibilityKey = column.id\n\n // this column is always visible\n if (!column.enableHiding) {\n return [{...accCols, [visibilityKey]: true}, countAllowedVisible]\n }\n\n // have already reached column visibility limit, hide column by default\n if (countAllowedVisible === VISIBLE_COLUMN_LIMIT) {\n return [{...accCols, [visibilityKey]: false}, countAllowedVisible]\n }\n\n return [{...accCols, [visibilityKey]: true}, countAllowedVisible + 1]\n },\n [{}, 0],\n ),\n [columns],\n )\n\n return {columns, initialColumnsVisibility}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {Box, Checkbox, Flex, Menu, Stack, Text} from '@sanity/ui'\nimport {type Column, type Table} from '@tanstack/react-table'\nimport {useCallback} from 'react'\nimport {type SanityDocument, useTranslation} from 'sanity'\n\nimport {Button, MenuButton} from '../../../../ui-components'\nimport {VISIBLE_COLUMN_LIMIT} from './useDocumentSheetColumns'\n\ntype ColumnsControlProps = {\n table: Table<SanityDocument>\n}\n\nexport function ColumnsControl({table}: ColumnsControlProps) {\n const {t} = useTranslation()\n const isVisibleLimitReached =\n table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length >= VISIBLE_COLUMN_LIMIT\n\n const setInitialColumns = useCallback(() => {\n table.resetColumnVisibility()\n }, [table])\n\n const handleColumnOnChange = (column: Column<SanityDocument, unknown>) => () => {\n column.toggleVisibility()\n }\n\n const getColumnVisibilityDisabled = (column: Column<SanityDocument, unknown>) => {\n const isColumnVisible = column.getIsVisible()\n const isSingleColumnVisible =\n table.getVisibleLeafColumns().filter((col) => col.getCanHide()).length === 1\n\n return (isVisibleLimitReached && !isColumnVisible) || (isSingleColumnVisible && isColumnVisible)\n }\n\n return (\n <MenuButton\n button={<Button mode=\"bleed\" text={t('sheet-list.edit-columns')} />}\n id=\"columns-control\"\n menu={\n <Menu padding={3} paddingTop={4} style={{width: 240}}>\n <Flex direction=\"column\" height=\"fill\" gap={3}>\n <Text weight=\"semibold\" size={1}>\n {t('sheet-list.select-fields')}\n </Text>\n <Flex style={{flex: '1 1 auto', maxHeight: 320, overflowY: 'scroll'}}>\n <Stack>\n {table\n .getAllLeafColumns()\n .filter((column) => column.getCanHide())\n .map((column) => (\n <Flex key={column.id} marginY={2} align=\"center\">\n <Checkbox\n readOnly={getColumnVisibilityDisabled(column)}\n checked={column.getIsVisible()}\n onChange={handleColumnOnChange(column)}\n id={`col-visibility-${column.id}`}\n style={{display: 'block'}}\n />\n <Box flex={1} paddingLeft={3}>\n <Text size={1}>\n <label htmlFor={`col-visibility-${column.id}`}>\n {column.columnDef.header?.toString()}\n </label>\n </Text>\n </Box>\n </Flex>\n ))}\n </Stack>\n </Flex>\n <Button\n width=\"fill\"\n mode=\"ghost\"\n text={t('sheet-list.reset-columns')}\n onClick={setInitialColumns}\n />\n </Flex>\n </Menu>\n }\n placement=\"bottom\"\n popover={{portal: true}}\n />\n )\n}\n","import {Flex} from '@sanity/ui'\nimport {Filters, SearchHeader, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst SearchContainer = styled(Flex)`\n flex-shrink: 0;\n`\n\nexport function DocumentSheetListFilter() {\n const {\n state: {filtersVisible},\n } = useSearchState()\n\n return (\n <SearchContainer>\n <SearchHeader />\n {filtersVisible && <Filters showTypeFilter={false} />}\n </SearchContainer>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {CloseIcon, EllipsisHorizontalIcon} from '@sanity/icons'\nimport {type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Menu, Text} from '@sanity/ui'\nimport {flexRender, type Header as HeaderType, type HeaderGroup} from '@tanstack/react-table'\nimport {useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem, Tooltip} from '../../../../ui-components'\n\nconst Header = styled.th<{width: number}>`\n margin: 16px;\n z-index: 1;\n padding: 22px 0px;\n border-top: 1px solid var(--card-border-color);\n background-color: var(--card-badge-default-bg-color);\n box-sizing: border-box;\n text-align: left;\n width: ${({width}) => width}px;\n max-width: ${({width}) => width}px;\n`\n\nconst PinnedHeader = styled(Header)`\n position: sticky;\n z-index: 2;\n`\n\nconst HoverMenu = styled.div`\n visibility: hidden;\n\n ${Header}:hover & {\n visibility: visible;\n }\n`\n\ntype DocumentSheetListHeaderProps = {\n header: HeaderType<SanityDocument, unknown>\n headerGroup: HeaderGroup<SanityDocument>\n}\n\nexport function DocumentSheetListHeader(props: DocumentSheetListHeaderProps) {\n const {header, headerGroup} = props\n const {t} = useTranslation()\n\n const isPinned = header.column.getIsPinned()\n\n const headerTitle =\n headerGroup.depth > 0 && !header.column.parent ? null : (\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Text>\n )\n\n const HeaderTag = isPinned ? PinnedHeader : Header\n\n const canShowHeaderMenu =\n header.column.getCanHide() &&\n (headerGroup.depth === 0 ? !header.column.columns.length : header.column.parent)\n\n const borderWidth = isPinned && header.column.getIsLastColumn('left') ? 2 : 1\n\n return (\n <HeaderTag\n style={{\n left: header.column.getStart('left') ?? undefined,\n borderRight: `${borderWidth}px solid var(--card-border-color)`,\n }}\n key={header.id}\n data-testid={`header-${header.id}`}\n width={header.getSize()}\n >\n <Flex justify=\"space-between\" marginX={2} align=\"baseline\">\n <Tooltip delay={500} content={headerTitle}>\n <Box style={{boxSizing: 'border-box'}} marginLeft={3} marginRight={3}>\n {headerTitle}\n </Box>\n </Tooltip>\n {canShowHeaderMenu && (\n <HoverMenu>\n <MenuButton\n button={\n <Button\n tooltipProps={{content: 'Open field menu'}}\n mode=\"bleed\"\n icon={EllipsisHorizontalIcon}\n data-testid=\"field-menu-button\"\n />\n }\n id=\"field menu\"\n popover={{placement: 'bottom-end'}}\n menu={\n <Menu>\n <MenuItem\n text={t('sheet-list.hide-field')}\n icon={CloseIcon}\n onClick={() => header.column.toggleVisibility()}\n />\n </Menu>\n }\n />\n </HoverMenu>\n )}\n </Flex>\n </HeaderTag>\n )\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\n/* eslint-disable i18next/no-literal-string */\n/* eslint-disable @sanity/i18n/no-attribute-string-literals */\n/* eslint-disable react/jsx-no-bind */\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleChevronLeftIcon,\n DoubleChevronRightIcon,\n} from '@sanity/icons'\nimport {Flex, Text} from '@sanity/ui'\nimport {type Table} from '@tanstack/react-table'\nimport {type SanityDocument} from 'sanity'\n\nimport {Button, TooltipDelayGroupProvider} from '../../../../ui-components'\n\nexport function DocumentSheetListPaginator({table}: {table: Table<SanityDocument>}) {\n return (\n <TooltipDelayGroupProvider>\n <Flex gap={3} align={'center'}>\n <Button\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n icon={DoubleChevronLeftIcon}\n tooltipProps={{\n content: 'Go to first page',\n }}\n />\n <Button\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n icon={ChevronLeftIcon}\n tooltipProps={{\n content: 'Go to previous page',\n }}\n />\n <Text style={{whiteSpace: 'nowrap'}}>\n {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </Text>\n\n <Button\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n icon={ChevronRightIcon}\n tooltipProps={{\n content: 'Go to next page',\n }}\n />\n <Button\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n icon={DoubleChevronRightIcon}\n tooltipProps={{\n content: 'Go to last page',\n }}\n />\n <select\n value={table.getState().pagination.pageSize}\n onChange={(e) => {\n table.setPageSize(Number(e.target.value))\n }}\n >\n {[25, 50, 100].map((pageSize) => (\n <option key={pageSize} value={pageSize}>\n {pageSize}\n </option>\n ))}\n </select>\n </Flex>\n </TooltipDelayGroupProvider>\n )\n}\n","import {type ListenEvent, type ListenOptions} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useReducer, useState} from 'react'\nimport {catchError, of} from 'rxjs'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS, getDraftId, type SanityDocument, useClient} from 'sanity'\n\ninterface DocumentDeletedAction {\n id: string\n type: 'DOCUMENT_DELETED'\n}\n\ninterface DocumentUpdatedAction {\n payload: SanityDocument\n type: 'DOCUMENT_UPDATED'\n}\n\ninterface DocumentsSetAction {\n documents: SanityDocument[]\n type: 'DOCUMENTS_SET'\n}\n\ninterface DocumentReceivedAction {\n payload: SanityDocument\n type: 'DOCUMENT_RECEIVED'\n}\n\nexport type DocumentsReducerAction =\n | DocumentDeletedAction\n | DocumentUpdatedAction\n | DocumentsSetAction\n | DocumentReceivedAction\n\nexport interface DocumentsReducerState {\n documents: Record<string, SanityDocument>\n}\n\nfunction createDocumentsSet(documents: SanityDocument[]) {\n const documentsById = documents.reduce((acc, doc) => ({...acc, [doc._id]: doc}), {})\n return documentsById\n}\n\nfunction documentsReducer(\n state: DocumentsReducerState,\n action: DocumentsReducerAction,\n): DocumentsReducerState {\n switch (action.type) {\n case 'DOCUMENTS_SET': {\n // Create an object with the documents id as key\n const documents = createDocumentsSet(action.documents)\n\n return {\n ...state,\n documents: documents,\n }\n }\n\n case 'DOCUMENT_RECEIVED': {\n const nextDocumentResult = action.payload as SanityDocument\n\n return {\n ...state,\n documents: {\n ...state.documents,\n [nextDocumentResult._id]: nextDocumentResult,\n },\n }\n }\n\n case 'DOCUMENT_DELETED': {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {[action.id]: _, ...restDocuments} = state.documents\n\n return {\n ...state,\n documents: restDocuments,\n }\n }\n\n case 'DOCUMENT_UPDATED': {\n const updatedDocument = action.payload\n const id = updatedDocument._id as string\n const document = state.documents[id]\n\n const nextDocument = {\n // Add existing document data\n ...document,\n // Add incoming document data\n ...updatedDocument,\n } satisfies SanityDocument\n\n return {\n ...state,\n documents: {\n ...state.documents,\n [id]: nextDocument,\n },\n }\n }\n\n default:\n return state\n }\n}\n\nconst LISTEN_OPTIONS: ListenOptions = {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: true,\n visibility: 'query',\n includeAllVersions: true,\n tag: 'document-sheet-list-store',\n}\n\n/**\n * TODO:\n * [] Lazy load more documents, reduce initial fetch.\n * [] Add support for sorting and filtering.\n * [] Make a projection of the query according to the schema. e.g. get only the primitive fields and the _id to reduce the data payload.\n */\nexport function useDocumentSheetListStore({\n filter,\n params,\n apiVersion,\n}: {\n filter: string\n params?: Record<string, unknown>\n apiVersion?: string\n}) {\n const QUERY = `*[${filter}][0...2000]`\n const client = useClient({\n ...DEFAULT_STUDIO_CLIENT_OPTIONS,\n apiVersion: apiVersion || DEFAULT_STUDIO_CLIENT_OPTIONS.apiVersion,\n })\n const [state, dispatch] = useReducer(documentsReducer, {\n documents: {},\n })\n const [isLoading, setIsLoading] = useState<boolean>(client !== null)\n const [error, setError] = useState<Error | null>(null)\n\n const initialFetch = useCallback(async () => {\n if (!client) {\n setIsLoading(false)\n return\n }\n try {\n const res = await client.fetch(QUERY, params)\n dispatch({type: 'DOCUMENTS_SET', documents: res})\n setIsLoading(false)\n } catch (err) {\n setError(err)\n }\n }, [client, params, QUERY])\n\n const handleListenerEvent = useCallback(\n async (event: ListenEvent<Record<string, SanityDocument>>) => {\n // Fetch all documents on initial connection\n if (event.type === 'welcome') {\n setIsLoading(true)\n await initialFetch()\n setIsLoading(false)\n }\n\n // The reconnect event means that we are trying to reconnect to the realtime listener.\n // In this case we set loading to true to indicate that we're trying to\n // reconnect. Once a connection has been established, the welcome event\n // will be received and we'll fetch all documents again (above).\n if (event.type === 'reconnect') {\n setIsLoading(true)\n }\n\n // Handle mutations (create, update, delete) from the realtime listener\n // and update the documents store accordingly\n if (event.type === 'mutation') {\n if (event.transition === 'appear') {\n const nextDocument = event.result as SanityDocument | undefined\n\n if (nextDocument) {\n dispatch({\n type: 'DOCUMENT_RECEIVED',\n payload: nextDocument,\n })\n }\n }\n\n if (event.transition === 'disappear') {\n dispatch({type: 'DOCUMENT_DELETED', id: event.documentId})\n }\n\n if (event.transition === 'update') {\n const updatedDocument = event.result as SanityDocument | undefined\n\n if (updatedDocument) {\n dispatch({\n type: 'DOCUMENT_UPDATED',\n payload: updatedDocument,\n })\n }\n }\n }\n },\n [initialFetch],\n )\n\n const listener$ = useMemo(() => {\n if (!client) return of()\n\n const events$ = client.observable.listen(QUERY, params, LISTEN_OPTIONS).pipe(\n catchError((err) => {\n setError(err)\n return of(err)\n }),\n )\n\n return events$\n }, [client, params, QUERY])\n\n useEffect(() => {\n const sub = listener$.subscribe(handleListenerEvent)\n\n return () => {\n sub?.unsubscribe()\n }\n }, [handleListenerEvent, listener$])\n\n // Contemplate that we could have drafts and live documents here, merge them.\n const dataAsArray = useMemo(() => {\n // Joins the drafts and the live documents\n const uniques = Object.keys(state.documents).reduce(\n (acc: {[key: string]: SanityDocument}, key) => {\n const document = state.documents[key]\n const isDraft = document._id === getDraftId(document._id)\n const id = isDraft ? document._id : getDraftId(document._id)\n // If we already have the document, and this document is not the draft one, it means\n // the draft hast already been added to the list, so we skip it.\n if (acc[id] && !isDraft) {\n return acc\n }\n acc[id] = document\n return acc\n },\n {},\n )\n return Object.values(uniques)\n }, [state.documents])\n\n return {\n data: dataAsArray,\n isLoading,\n error,\n }\n}\n","import {useMemo} from 'react'\nimport {getPublishedId, useSearchState} from 'sanity'\n\nimport {useDocumentSheetListStore} from './useDocumentSheetListStore'\n\ninterface DocumentSheetListOptions {\n /** The schemaType.name */\n typeName: string\n}\n\nexport function useDocumentSheetList({typeName}: DocumentSheetListOptions) {\n const {state} = useSearchState()\n\n const items = useMemo(() => {\n const map = new Map()\n state.result.hits.forEach((h) => map.set(getPublishedId(h.hit._id), h.hit))\n return map\n }, [state.result.hits])\n\n // The store is listening to all the documents that match with the _type filter.\n const {data, isLoading} = useDocumentSheetListStore({\n filter: `_type == \"${typeName}\"`,\n })\n\n // Only return the documents that match with the serverSide filter items.\n const documents = useMemo(() => {\n return data.filter((doc) => items.has(getPublishedId(doc._id)))\n }, [data, items])\n\n return {data: documents, isLoading}\n}\n","'use no memo'\n// The `use no memo` directive is due to a known issue with react-table and react compiler: https://github.com/TanStack/table/issues/5567\n\nimport {isDocumentSchemaType, type ObjectSchemaType, type SanityDocument} from '@sanity/types'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type Row,\n useReactTable,\n} from '@tanstack/react-table'\nimport {useCallback, useEffect, useState} from 'react'\nimport {SearchProvider, useSchema, useSearchState} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {type BaseStructureToolPaneProps} from '../../types'\nimport {ColumnsControl} from './ColumnsControl'\nimport {DocumentSheetListFilter} from './DocumentSheetListFilter'\nimport {DocumentSheetListHeader} from './DocumentSheetListHeader'\nimport {DocumentSheetListPaginator} from './DocumentSheetListPaginator'\nimport {DocumentSheetListProvider} from './DocumentSheetListProvider'\nimport {SheetListCell} from './SheetListCell'\nimport {useDocumentSheetColumns} from './useDocumentSheetColumns'\nimport {useDocumentSheetList} from './useDocumentSheetList'\n\ntype DocumentSheetListPaneProps = BaseStructureToolPaneProps<'documentList'>\n\nconst PaneContainer = styled(Flex)`\n height: 100%;\n`\nconst TableContainer = styled.div`\n overflow: auto; //our scrollable table container\n position: relative; //needed for sticky header\n`\nconst Table = styled.table`\n border-collapse: separate;\n border-spacing: 0;\n font-family: arial, sans-serif;\n white-space: nowrap;\n width: 100%;\n border: 1px solid lightgray;\n\n thead {\n display: grid;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n tr {\n padding: 0;\n }\n tr:last-child {\n border-bottom: none;\n }\n`\n\nfunction DocumentSheetListPaneInner({\n documentSchemaType,\n}: DocumentSheetListPaneProps & {documentSchemaType: ObjectSchemaType}) {\n const {dispatch, state} = useSearchState()\n const {columns, initialColumnsVisibility} = useDocumentSheetColumns(documentSchemaType)\n const {data} = useDocumentSheetList({\n typeName: documentSchemaType.name,\n })\n const [selectedAnchor, setSelectedAnchor] = useState<number | null>(null)\n\n const totalRows = state.result.hits.length\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n // Avoids resetting the page index when the data changes, e.g. a mutation is received\n autoResetPageIndex: false,\n initialState: {\n columnPinning: {left: ['selected', 'Preview']},\n pagination: {pageSize: 25},\n columnVisibility: initialColumnsVisibility,\n },\n getRowId: (row) => row._id,\n meta: {\n selectedAnchor,\n setSelectedAnchor,\n patchDocument: (documentId, fieldId, value) => null,\n },\n })\n\n const {rows} = table.getRowModel()\n\n useEffect(() => {\n dispatch({type: 'TERMS_TYPE_ADD', schemaType: documentSchemaType})\n return () => {\n dispatch({type: 'TERMS_TYPE_REMOVE', schemaType: documentSchemaType})\n }\n }, [documentSchemaType, dispatch])\n\n const renderRow = useCallback((row: Row<SanityDocument>) => {\n return (\n <Box\n as=\"tr\"\n key={row.original._id + row.id}\n paddingY={2}\n style={{display: 'flex', width: '100%'}}\n >\n {row.getVisibleCells().map((cell) => (\n <SheetListCell {...cell} key={row.original._id + cell.id} />\n ))}\n </Box>\n )\n }, [])\n\n const rowsCount = `Total: ${totalRows} rows, showing ${rows.length} rows`\n return (\n <PaneContainer direction=\"column\" paddingX={3} data-testid=\"document-sheet-list-pane\">\n <Flex direction=\"row\" align=\"center\" paddingY={3} paddingX={1} justify=\"space-between\">\n <Flex direction=\"row\" align=\"center\">\n <DocumentSheetListFilter />\n <Text size={0} muted>\n {rowsCount}\n </Text>\n </Flex>\n <ColumnsControl table={table} />\n </Flex>\n <TableContainer>\n <DocumentSheetListProvider table={table}>\n <Table>\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <Box as=\"tr\" key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <DocumentSheetListHeader\n key={header.id}\n header={header}\n headerGroup={headerGroup}\n />\n ))}\n </Box>\n ))}\n </thead>\n <tbody>{table.getRowModel().rows.map(renderRow)}</tbody>\n </Table>\n </DocumentSheetListProvider>\n </TableContainer>\n <Flex justify={'flex-end'} padding={3} gap={4} paddingY={5}>\n <DocumentSheetListPaginator table={table} />\n </Flex>\n </PaneContainer>\n )\n}\n\nexport function DocumentSheetListPane(props: DocumentSheetListPaneProps) {\n const schema = useSchema()\n const typeName = props.pane.schemaTypeName\n\n const schemaType = schema.get(typeName)\n if (!schemaType || !isDocumentSchemaType(schemaType)) {\n throw new Error(`Schema type \"${typeName}\" not found or not a document schema`)\n }\n return (\n <SearchProvider>\n <DocumentSheetListPaneInner {...props} documentSchemaType={schemaType} />\n </SearchProvider>\n )\n}\n","import {Card, Code} from '@sanity/ui'\nimport {isEqual} from 'lodash'\nimport {memo, useMemo, useState} from 'react'\nimport {\n EMPTY_ARRAY,\n type GeneralDocumentListLayoutKey,\n SourceProvider,\n useI18nText,\n useSource,\n} from 'sanity'\nimport shallowEquals from 'shallow-equals'\n\nimport {Pane} from '../../components/pane'\nimport {_DEBUG} from '../../constants'\nimport {type PaneMenuItem} from '../../types'\nimport {useStructureToolSetting} from '../../useStructureToolSetting'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {DEFAULT_ORDERING, EMPTY_RECORD} from './constants'\nimport {DocumentListPane} from './DocumentListPane'\nimport {findStaticTypesInFilter} from './helpers'\nimport {PaneHeader} from './PaneHeader'\nimport {DocumentSheetListPane} from './sheetList/DocumentSheetListPane'\nimport {type SortOrder} from './types'\n\nconst addSelectedStateToMenuItems = (options: {\n menuItems?: PaneMenuItem[]\n sortOrderRaw?: SortOrder\n layout?: GeneralDocumentListLayoutKey\n}) => {\n const {menuItems, sortOrderRaw, layout} = options\n\n return menuItems?.map((item) => {\n if (item.params?.layout) {\n return {\n ...item,\n selected: layout === item.params?.layout,\n }\n }\n\n if (item?.params?.by) {\n return {\n ...item,\n selected: isEqual(sortOrderRaw?.by, item?.params?.by || EMPTY_ARRAY),\n }\n }\n\n return {...item, selected: false}\n })\n}\n\nexport function useShallowUnique<ValueType>(value: ValueType): ValueType {\n const [previous, setPrevious] = useState<ValueType>(value)\n if (!shallowEquals(previous, value)) {\n setPrevious(value)\n return value\n }\n return previous\n}\n\n/**\n * @internal\n */\nexport const PaneContainer = memo(function PaneContainer(\n props: BaseStructureToolPaneProps<'documentList'>,\n) {\n const {index, isSelected, pane, paneKey} = props\n const {name: parentSourceName} = useSource()\n\n const {\n defaultLayout = 'default',\n initialValueTemplates = EMPTY_ARRAY,\n menuItemGroups,\n menuItems,\n options,\n } = pane\n const {defaultOrdering = EMPTY_ARRAY, filter} = options\n const params = useShallowUnique(options.params || EMPTY_RECORD)\n const sourceName = pane.source\n const typeName = useMemo(() => {\n const staticTypes = findStaticTypesInFilter(filter, params)\n if (staticTypes?.length === 1) return staticTypes[0]\n return null\n }, [filter, params])\n\n const [layout, setLayout] = useStructureToolSetting<GeneralDocumentListLayoutKey>(\n 'layout',\n typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n defaultLayout,\n )\n\n const {title} = useI18nText(pane)\n\n // Ensure that we use the defaultOrdering value from structure builder if any as the default\n const defaultSortOrder = useMemo(() => {\n return defaultOrdering?.length > 0 ? {by: defaultOrdering} : DEFAULT_ORDERING\n }, [defaultOrdering])\n\n const [sortOrderRaw, setSortOrder] = useStructureToolSetting<SortOrder>(\n 'sort-order',\n typeName ?? pane.id, //pane.id for anything that is not documentTypeList\n defaultSortOrder,\n )\n\n const menuItemsWithSelectedState = useMemo(\n () =>\n addSelectedStateToMenuItems({\n menuItems,\n sortOrderRaw,\n layout,\n }),\n [layout, menuItems, sortOrderRaw],\n )\n\n const isSheetListLayout = layout === 'sheetList'\n const paneLayout = isSheetListLayout ? (\n <DocumentSheetListPane {...props} key={props.pane.id} />\n ) : (\n <DocumentListPane {...props} sortOrder={sortOrderRaw} layout={layout} />\n )\n\n return (\n <SourceProvider name={sourceName || parentSourceName}>\n <Pane\n data-ui=\"DocumentListPane\"\n id={paneKey}\n minWidth={320}\n {...(isSheetListLayout ? {} : {currentMaxWidth: 350, maxWidth: 640})}\n selected={isSelected}\n >\n {_DEBUG && (\n <Card padding={4} tone=\"transparent\">\n <Code>{pane.source || '(none)'}</Code>\n </Card>\n )}\n\n <PaneHeader\n index={index}\n initialValueTemplates={initialValueTemplates}\n menuItemGroups={menuItemGroups}\n menuItems={menuItemsWithSelectedState}\n setLayout={setLayout}\n setSortOrder={setSortOrder}\n title={title}\n />\n {paneLayout}\n </Pane>\n </SourceProvider>\n )\n})\nPaneContainer.displayName = 'Memo(PaneContainer)'\n","import {type DocumentBadgeComponent} from 'sanity'\n\n/** @internal */\nexport const LiveEditBadge: DocumentBadgeComponent = (props) => {\n const {liveEditSchemaType, version} = props\n\n if (liveEditSchemaType && !version) {\n return {\n label: 'Live',\n color: 'danger',\n }\n }\n\n return null\n}\nLiveEditBadge.displayName = 'LiveEditBadge'\n","import {uuid} from '@sanity/uuid'\n\nimport {EMPTY_PARAMS, type LOADING_PANE} from './constants'\nimport {type PaneNode, type RouterPanes} from './types'\n\nconst state: {\n activePanes: Array<PaneNode | typeof LOADING_PANE>\n} = {activePanes: []}\n\nexport function setActivePanes(panes: Array<PaneNode | typeof LOADING_PANE>): void {\n state.activePanes = panes\n}\n\n/**\n * This function looks at the _active panes_ to resolve an intent. this type of\n * intent resolution is faster and does not cause the panes to reset\n *\n * @internal\n */\nexport function getIntentState(\n intent: string,\n params: Record<string, string>,\n routerState: {panes?: RouterPanes} | undefined,\n payload: unknown,\n): {panes: RouterPanes} | {intent: string; params: Record<string, string>; payload: unknown} {\n const panes = routerState?.panes || []\n const activePanes = state.activePanes || []\n const editDocumentId = params.id || uuid()\n\n // Loop through open panes and see if any of them can handle the intent\n for (let i = activePanes.length - 1; i >= 0; i--) {\n const pane = activePanes[i]\n\n if (typeof pane !== 'object') continue\n\n // NOTE: if you update this logic, please also update the similar handler in\n // `resolveIntent.ts`\n if (\n pane.canHandleIntent?.(intent, params, {\n pane,\n index: i,\n }) ||\n // see `resolveIntent.ts` for more info\n (pane.type === 'documentList' &&\n pane.schemaTypeName === params.type &&\n pane.options.filter === '_type == $type')\n ) {\n const paneParams = getPaneParams(intent, params)\n\n return {\n panes: panes\n .slice(0, i)\n .concat([[{id: editDocumentId, params: paneParams, payload}]]) as RouterPanes,\n }\n }\n }\n\n return {intent: intent, params, payload}\n}\n\nfunction getPaneParams(\n intent: string,\n {template, version}: Record<string, string>,\n): {template?: string; version?: string} {\n if (intent !== 'create') return EMPTY_PARAMS\n if (template && version) return {template, version}\n if (template) return {template}\n if (version) return {version}\n return EMPTY_PARAMS\n}\n","import {type ObjectDiff} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo, useState} from 'react'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n type DocumentChangeContextInstance,\n LoadingBlock,\n NoChanges,\n type ObjectSchemaType,\n ScrollContainer,\n usePerspective,\n useTimelineSelector,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TimelineMenu} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nexport function ChangesInspector({showChanges}: {showChanges: boolean}): React.JSX.Element {\n const {documentId, schemaType, timelineError, timelineStore, value} = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const rev = useTimelineSelector(timelineStore, (state) => state.revTime)\n const diff = useTimelineSelector(timelineStore, (state) => state.diff)\n const onOlderRevision = useTimelineSelector(timelineStore, (state) => state.onOlderRevision)\n const selectionState = useTimelineSelector(timelineStore, (state) => state.selectionState)\n const sinceTime = useTimelineSelector(timelineStore, (state) => state.sinceTime)\n const loading = selectionState === 'loading'\n const isComparingCurrent = !onOlderRevision\n\n // Note that we are using the studio core namespace here, as changes theoretically should\n // be part of Sanity core (needs to be moved from structure at some point)\n const {t: structureT} = useTranslation(structureLocaleNamespace)\n\n const documentContext: DocumentChangeContextInstance = useMemo(\n () => ({\n documentId,\n schemaType,\n FieldWrapper: (props) => <ChangeFieldWrapper {...props} hasRevertHover={false} />,\n rootDiff: diff,\n isComparingCurrent,\n value,\n showFromValue: true,\n }),\n [documentId, diff, isComparingCurrent, schemaType, value],\n )\n\n if (selectedReleaseId) {\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n <TimelineError versionError />\n </Card>\n </Flex>\n )\n }\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {structureT('changes.from.label')}\n </Text>\n\n <TimelineMenu mode=\"since\" chunk={sinceTime} placement=\"bottom-start\" />\n <Text size={1} muted>\n {structureT('changes.to.label')}\n </Text>\n <TimelineMenu chunk={rev} mode=\"rev\" placement=\"bottom-end\" />\n </Grid>\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n diff={diff}\n documentContext={documentContext}\n error={timelineError}\n loading={loading}\n schemaType={schemaType}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n diff,\n documentContext,\n loading,\n schemaType,\n}: {\n error?: Error | null\n diff: ObjectDiff<any> | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n}) {\n if (error) {\n return <NoChanges />\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n\n if (!diff) {\n return <NoChanges />\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <ChangeList diff={diff} schemaType={schemaType} />\n </DocumentChangeContext.Provider>\n )\n}\n","import {Card, Flex} from '@sanity/ui'\nimport {type MouseEvent, useCallback} from 'react'\nimport {\n type DocumentGroupEvent,\n Event,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n useTranslation,\n} from 'sanity'\n\nimport {Tooltip} from '../../../../../ui-components'\n\nexport interface TimelineItemProps {\n event: DocumentGroupEvent\n isSelected: boolean\n onSelect: (chunk: DocumentGroupEvent) => void\n optionsMenu?: React.ReactNode\n}\n\nconst getIsSelectable = (event: DocumentGroupEvent) => {\n return (\n !isDeleteDocumentVersionEvent(event) &&\n !isDeleteDocumentGroupEvent(event) &&\n !isUnpublishDocumentEvent(event) &&\n !isScheduleDocumentVersionEvent(event) &&\n !isUnscheduleDocumentVersionEvent(event)\n )\n}\n\nexport function EventTimelineItem({event, isSelected, onSelect, optionsMenu}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const isSelectable = getIsSelectable(event)\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLDivElement>) => {\n evt.preventDefault()\n evt.stopPropagation()\n\n if (isSelectable) {\n onSelect(event)\n }\n },\n [onSelect, event, isSelectable],\n )\n return (\n <Flex gap={1}>\n <Tooltip content={isSelectable ? '' : t('changes.not-selectable')} disabled={isSelectable}>\n <Card\n as={isSelectable ? 'button' : 'div'}\n onClick={handleClick}\n padding={2}\n pressed={isSelected}\n radius={2}\n data-ui=\"timelineItem\"\n data-testid=\"timeline-item-button\"\n data-chunk-timestamp={event.timestamp}\n style={{\n cursor: isSelectable ? 'pointer' : 'default',\n width: '100%',\n }}\n >\n <Event event={event} showChangesBy=\"tooltip\" />\n </Card>\n </Tooltip>\n {optionsMenu}\n </Flex>\n )\n}\n","import {\n Flex,\n Menu,\n // eslint-disable-next-line no-restricted-imports\n MenuItem,\n Text,\n usePortal,\n} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n ContextMenuButton,\n getReleaseIdFromReleaseDocumentId,\n getReleaseTone,\n getVersionFromId,\n isReleaseDocument,\n type PublishDocumentVersionEvent,\n RELEASES_INTENT,\n Translate,\n useSetPerspective,\n useTranslation,\n VersionInlineBadge,\n} from 'sanity'\nimport {IntentLink} from 'sanity/router'\n\nimport {MenuButton} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {TIMELINE_MENU_PORTAL} from '../timelineMenu'\n\nexport function PublishedEventMenu({event}: {event: PublishDocumentVersionEvent}) {\n const {t} = useTranslation(structureLocaleNamespace)\n const {t: tCore} = useTranslation()\n const portalContext = usePortal()\n const {params, setParams} = usePaneRouter()\n const setPerspective = useSetPerspective()\n\n const handleOpenReleaseDocument = useCallback(() => {\n setParams({\n ...params,\n rev: event.versionRevisionId || '@lastPublished',\n since: undefined,\n historyEvent: event.id,\n historyVersion: getVersionFromId(event.versionId),\n })\n }, [setParams, params, event])\n\n const handleOpenDraftDocument = useCallback(() => {\n setParams({\n ...params,\n rev: event.versionRevisionId,\n preserveRev: 'true',\n since: undefined,\n })\n setTimeout(() => {\n // A bug is generated when we change the perspective and the params at the same time\n // Resetting the params to the value it had before, because the paneRouter uses the previous value\n setPerspective('drafts')\n }, 100)\n }, [setParams, params, event.versionRevisionId, setPerspective])\n\n const VersionBadge = ({children}: {children: React.ReactNode}) => {\n return (\n <VersionInlineBadge\n $tone={\n event.release\n ? isReleaseDocument(event.release)\n ? getReleaseTone(event.release)\n : 'default'\n : undefined\n }\n >\n {children}\n </VersionInlineBadge>\n )\n }\n const isMenuDisabled = event.release && !isReleaseDocument(event.release)\n return (\n <MenuButton\n id={`timeline-item-menu-button-${event.versionId}`}\n button={\n <ContextMenuButton\n aria-label={t('timeline-item.menu-button.aria-label')}\n tooltipProps={{\n content: isMenuDisabled\n ? t('timeline-item.not-found-release.tooltip', {\n releaseId: event.release?._id\n ? getReleaseIdFromReleaseDocumentId(event.release._id)\n : undefined,\n })\n : t('timeline-item.menu-button.tooltip'),\n }}\n disabled={isMenuDisabled}\n />\n }\n menu={\n <Menu padding={1}>\n {event.release ? (\n <>\n <IntentLink\n intent={RELEASES_INTENT}\n params={{id: getReleaseIdFromReleaseDocumentId(event.release._id)}}\n style={{textDecoration: 'none'}}\n >\n <MenuItem padding={3}>\n <Flex align={'center'} justify=\"flex-start\">\n <Text size={1} style={{textDecoration: 'none'}}>\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n }}\n i18nKey=\"events.open.release\"\n values={{\n releaseTitle:\n event.release.metadata?.title ||\n tCore('release.placeholder-untitled-release'),\n }}\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n </IntentLink>\n <MenuItem onClick={handleOpenReleaseDocument}>\n <Flex align={'center'} justify=\"flex-start\">\n <Text size={1}>\n <Translate\n components={{\n VersionBadge: ({children}) => <VersionBadge>{children}</VersionBadge>,\n }}\n i18nKey=\"events.inspect.release\"\n values={{\n releaseTitle:\n event.release.metadata?.title ||\n tCore('release.placeholder-untitled-release'),\n }}\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n </>\n ) : (\n <MenuItem onClick={handleOpenDraftDocument} disabled={!event.versionRevisionId}>\n <Flex align={'center'}>\n <Text size={1}>\n <Translate\n components={{\n VersionBadge: ({children}) => (\n <VersionInlineBadge $tone=\"caution\">{children}</VersionInlineBadge>\n ),\n }}\n i18nKey=\"events.open.draft\"\n t={t}\n />\n </Text>\n </Flex>\n </MenuItem>\n )}\n </Menu>\n }\n popover={{\n // when used inside the timeline menu we want to keep the element inside the popover, to avoid closing the popover when clicking expand.\n portal: portalContext.elements?.[TIMELINE_MENU_PORTAL] ? TIMELINE_MENU_PORTAL : true,\n placement: 'bottom',\n fallbackPlacements: ['bottom-end', 'bottom-start'],\n }}\n />\n )\n}\n","import {Box, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion, type Variants} from 'framer-motion'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {\n CommandList,\n type CommandListRenderItemCallback,\n type DocumentGroupEvent,\n getDocumentVariantType,\n isCreateDocumentVersionEvent,\n isDeleteDocumentVersionEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n LoadingBlock,\n useTranslation,\n} from 'sanity'\n\nimport {ExpandableTimelineItemButton} from '../expandableTimelineItemButton'\nimport {ListWrapper, Root} from '../timeline.styled'\nimport {EventTimelineItem} from './EventTimelineItem'\nimport {PublishedEventMenu} from './PublishedEventMenu'\n\ninterface TimelineProps {\n events: DocumentGroupEvent[]\n hasMoreEvents: boolean | null\n selectedEventId?: string\n onLoadMore: () => void\n onSelect: (event: DocumentGroupEvent) => void\n fetchEventChildren: (event: DocumentGroupEvent) => Promise<void>\n /**\n * The list needs a predefined max height for the scroller to work.\n */\n listMaxHeight?: string\n}\n\nconst TimelineItemWrapper = motion.create(Box)\nconst CHILDREN_ITEMS_VARIANTS: Variants = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n}\n\nconst ITEM_HEIGHT = 57\n\nexport const TIMELINE_LIST_WRAPPER_ID = 'timeline-list-wrapper'\n\nexport const EventsTimeline = ({\n events: allEvents,\n hasMoreEvents,\n selectedEventId,\n onLoadMore,\n onSelect,\n listMaxHeight = 'calc(100vh - 280px)',\n fetchEventChildren,\n}: TimelineProps) => {\n const [mounted, setMounted] = useState(false)\n const {t} = useTranslation('studio')\n const [expandedParents, setExpandedParents] = useState<Set<string>>(() => {\n if (selectedEventId) {\n // Find that event and if it has a parent, expand the parent.\n const selectedEvent = allEvents.find((event) => event.id === selectedEventId)\n if (selectedEvent && 'parentId' in selectedEvent && selectedEvent.parentId) {\n return new Set([selectedEvent.parentId])\n }\n }\n return new Set()\n })\n const [expandingParents, setExpandingParents] = useState<Set<string>>(new Set())\n\n const events = useMemo(() => {\n return allEvents.filter((event) => {\n if (isCreateDocumentVersionEvent(event) && event.parentId) {\n // Check if it's the last event in the list, in that case, we want to show it\n const isLastEvent = allEvents[allEvents.length - 1].id === event.id\n if (isLastEvent) return true\n return expandedParents.has(event.parentId)\n }\n if (isEditDocumentVersionEvent(event) && event.parentId) {\n return expandedParents.has(event.parentId)\n }\n return true\n })\n }, [expandedParents, allEvents])\n\n const handleExpandParent = useCallback(\n (event: DocumentGroupEvent) => async () => {\n const parentId = event.id\n\n let isExpanding = false\n setExpandedParents((prev) => {\n const next = new Set(prev)\n\n if (prev.has(parentId)) next.delete(parentId)\n else {\n isExpanding = true\n next.add(parentId)\n }\n\n return next\n })\n if (isExpanding) {\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.add(parentId)\n return next\n })\n await fetchEventChildren(event)\n setExpandingParents((prev) => {\n const next = new Set(prev)\n next.delete(parentId)\n return next\n })\n }\n },\n [fetchEventChildren, setExpandingParents],\n )\n\n const handleSelectChunk = useCallback(\n (event: DocumentGroupEvent) => {\n onSelect(event)\n },\n [onSelect],\n )\n\n const renderOptionsMenu = useCallback(\n (event: DocumentGroupEvent) => {\n const documentVariantType = getDocumentVariantType(event.documentId)\n if (isPublishDocumentVersionEvent(event) && documentVariantType === 'published') {\n return <PublishedEventMenu event={event} />\n }\n if (\n (isPublishDocumentVersionEvent(event) &&\n documentVariantType === 'draft' &&\n event.creationEvent) ||\n (isDeleteDocumentVersionEvent(event) && event.creationEvent)\n ) {\n return (\n <ExpandableTimelineItemButton\n isExpanded={expandedParents.has(event.id)}\n onExpand={handleExpandParent(event)}\n />\n )\n }\n return null\n },\n [expandedParents, handleExpandParent],\n )\n\n const renderItem = useCallback<CommandListRenderItemCallback<DocumentGroupEvent[][number]>>(\n (event, {activeIndex}) => {\n /**\n * The create version event will be present while expanding (loading the edits), so we are attaching to it the loading block at the top.\n * - publishEvent (expanding?)\n * --- loadingBlock ~createEvent~\n * */\n const showExpandingLoader =\n isCreateDocumentVersionEvent(event) &&\n event.parentId &&\n expandingParents.has(event.parentId)\n\n const isLastEvent = activeIndex === events.length - 1\n if (showExpandingLoader) {\n return (\n <TimelineItemWrapper\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{duration: 0.2, delay: 0.2}}\n >\n {/* We need this item to match the same height as the rest of the list items, which is 57px */}\n <Flex align=\"center\" justify=\"center\" style={{height: ITEM_HEIGHT}}>\n <Spinner />\n </Flex>\n </TimelineItemWrapper>\n )\n }\n return (\n <TimelineItemWrapper\n paddingBottom={1}\n paddingRight={1}\n key={event.timestamp}\n animate=\"animate\"\n exit=\"exit\"\n initial=\"initial\"\n variants={'parentId' in event ? CHILDREN_ITEMS_VARIANTS : undefined}\n paddingLeft={\n (isEditDocumentVersionEvent(event) || isCreateDocumentVersionEvent(event)) &&\n event.parentId &&\n !isLastEvent\n ? 4\n : 1\n }\n >\n <EventTimelineItem\n event={event}\n isSelected={event.id === selectedEventId}\n onSelect={handleSelectChunk}\n optionsMenu={renderOptionsMenu(event)}\n />\n\n {isLastEvent && hasMoreEvents && <LoadingBlock />}\n </TimelineItemWrapper>\n )\n },\n [\n expandingParents,\n selectedEventId,\n handleSelectChunk,\n renderOptionsMenu,\n events.length,\n hasMoreEvents,\n ],\n )\n\n useEffect(() => setMounted(true), [])\n const selectedIndex = events.findIndex((event) => event.id === selectedEventId)\n\n return (\n <Root\n /**\n * We delay initial rendering if `selectedIndex` is present.\n * This is a _temporary_ workaround to allow the virtual <CommandList>\n * to scroll to a specific index prior to being displayed.\n *\n * Without this, there'll be a noticeable 'flash' where the virtual list\n * will render with its child items at the top and then scroll into position.\n */\n $visible={!selectedIndex || mounted}\n data-ui=\"timeline\"\n >\n {events.length > 0 ? (\n <ListWrapper direction=\"column\" $maxHeight={listMaxHeight} id={TIMELINE_LIST_WRAPPER_ID}>\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={t('timeline.list.aria-label')}\n autoFocus=\"list\"\n initialIndex={selectedIndex}\n initialScrollAlign=\"center\"\n itemHeight={ITEM_HEIGHT}\n items={events}\n onEndReached={onLoadMore}\n onEndReachedIndexOffset={20}\n overscan={5}\n renderItem={renderItem}\n wrapAround={false}\n />\n </ListWrapper>\n ) : (\n <Stack padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </Stack>\n )}\n </Root>\n )\n}\n\nEventsTimeline.displayName = 'EventsTimeline'\n","import {ChevronDownIcon} from '@sanity/icons'\nimport {\n Flex,\n type Placement,\n PortalProvider,\n useClickOutsideEvent,\n useGlobalKeyDown,\n useToast,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n type DocumentGroupEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n TIMELINE_ITEM_I18N_KEY_MAPPING,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Popover} from '../../../../../ui-components'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {TimelineError} from '../TimelineError'\nimport {EventsTimeline} from './EventsTimeline'\n\ninterface TimelineMenuProps {\n event: DocumentGroupEvent | null\n events: DocumentGroupEvent[]\n mode: 'rev' | 'since'\n placement?: Placement\n}\n\nconst Root = styled(Popover)`\n overflow: hidden;\n overflow: clip;\n`\n\nexport const TIMELINE_MENU_PORTAL = 'timeline-menu'\n\nconst formatParams = {\n timestamp: {dateStyle: 'medium', timeStyle: 'short'},\n}\n\nexport function EventsTimelineMenu({event, events, mode, placement}: TimelineMenuProps) {\n const {setTimelineRange} = useDocumentPane()\n const [open, setOpen] = useState(false)\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popoverRef, setPopoverRef] = useState<HTMLElement | null>(null)\n const toast = useToast()\n const {\n nextCursor,\n loading,\n error: eventsError,\n findRangeForRevision,\n findRangeForSince,\n loadMoreEvents,\n expandEvent,\n } = useEvents()\n\n const {t} = useTranslation('studio')\n\n const handleOpen = useCallback(() => {\n setOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setOpen(false)\n }, [])\n\n const handleGlobalKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (open && (e.key === 'Escape' || e.key === 'Tab')) {\n handleClose()\n button?.focus()\n }\n },\n [button, handleClose, open],\n )\n\n useGlobalKeyDown(handleGlobalKeyDown)\n useClickOutsideEvent(open && handleClose, () => [button, popoverRef])\n\n const selectRev = useCallback(\n (revEvent: DocumentGroupEvent) => {\n try {\n if (\n isDeleteDocumentVersionEvent(revEvent) ||\n isDeleteDocumentGroupEvent(revEvent) ||\n isUnpublishDocumentEvent(revEvent) ||\n isScheduleDocumentVersionEvent(revEvent) ||\n isUnscheduleDocumentVersionEvent(revEvent)\n ) {\n console.error('Event is not selectable')\n return\n }\n const [since, rev] = findRangeForRevision(revEvent?.id)\n setTimelineRange(since, rev)\n handleClose()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [t, toast, setTimelineRange, findRangeForRevision, handleClose],\n )\n\n const selectSince = useCallback(\n (sinceEvent: DocumentGroupEvent) => {\n try {\n const [since, rev] = findRangeForSince(sinceEvent.id)\n setTimelineRange(since, rev)\n handleClose()\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [findRangeForSince, setTimelineRange, toast, t, handleClose],\n )\n\n const handleLoadMore = useCallback(() => {\n if (!loading && nextCursor) {\n loadMoreEvents()\n }\n }, [loading, loadMoreEvents, nextCursor])\n\n const content = useMemo(() => {\n if (eventsError) return <TimelineError />\n\n return (\n <EventsTimeline\n events={events}\n fetchEventChildren={expandEvent}\n hasMoreEvents={Boolean(nextCursor)}\n selectedEventId={event?.id}\n onLoadMore={handleLoadMore}\n onSelect={mode === 'rev' ? selectRev : selectSince}\n />\n )\n }, [\n eventsError,\n mode,\n expandEvent,\n events,\n nextCursor,\n event?.id,\n handleLoadMore,\n selectSince,\n selectRev,\n ])\n\n const revLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : t('timeline.latest-revision')\n\n // eslint-disable-next-line no-nested-ternary\n const sinceLabel = event\n ? t(TIMELINE_ITEM_I18N_KEY_MAPPING[event.documentVariantType][event.type], {\n context: 'timestamp',\n timestamp: new Date(event.timestamp),\n formatParams,\n })\n : events.length > 0\n ? t('timeline.since-version-missing')\n : t('timeline.no-previous-events')\n\n const buttonLabel = mode === 'rev' ? revLabel : sinceLabel\n\n return (\n <PortalProvider __unstable_elements={{[TIMELINE_MENU_PORTAL]: popoverRef}}>\n <Root\n data-testid=\"timeline-menu\"\n constrainSize\n content={open && content}\n data-ui=\"versionMenu\"\n open={open}\n placement={placement}\n matchReferenceWidth\n portal\n ref={setPopoverRef}\n >\n <Flex width={'fill'}>\n <Button\n data-testid={open ? 'timeline-menu-close-button' : 'timeline-menu-open-button'}\n disabled={loading || !events.length}\n mode=\"ghost\"\n onClick={open ? handleClose : handleOpen}\n ref={setButton}\n selected={open}\n width=\"fill\"\n tooltipProps={null}\n justify={'space-between'}\n style={{\n maxWidth: '100%',\n }}\n iconRight={ChevronDownIcon}\n text={loading ? t('timeline.loading-history') : buttonLabel}\n />\n </Flex>\n </Root>\n </PortalProvider>\n )\n}\n","import {diffInput, wrap} from '@sanity/diff'\nimport {BoundaryElementProvider, Box, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {motion} from 'framer-motion'\nimport {type ReactElement, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {\n ChangeFieldWrapper,\n ChangeList,\n ChangesError,\n type DocumentChangeContextInstance,\n type DocumentGroupEvent,\n isReleaseDocument,\n LoadingBlock,\n NoChanges,\n type ObjectDiff,\n type ObjectSchemaType,\n ScrollContainer,\n Translate,\n useEvents,\n usePerspective,\n useTranslation,\n} from 'sanity'\nimport {DocumentChangeContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {EventsTimelineMenu} from '../../timeline/events/EventsTimelineMenu'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nconst Grid = styled(Box)`\n &:not([hidden]) {\n display: grid;\n }\n grid-template-columns: 48px 1fr;\n align-items: center;\n gap: 0.25em;\n`\n\nconst SpinnerContainer = styled(Flex)`\n width: 100%;\n position: absolute;\n bottom: -4px;\n`\n\nconst DIFF_INITIAL_VALUE = {\n diff: null,\n loading: true,\n error: null,\n}\n\nconst CompareWithPublishedView = () => {\n const {documentId, schemaType, editState, displayed} = useDocumentPane()\n const {selectedPerspective, selectedPerspectiveName, selectedReleaseId} = usePerspective()\n const {t} = useTranslation(structureLocaleNamespace)\n const rootDiff = useMemo(() => {\n const diff = diffInput(\n wrap(editState?.published ?? {}, {author: ''}),\n wrap(displayed ?? {}, {author: ''}),\n ) as ObjectDiff\n\n return diff\n }, [editState?.published, displayed])\n\n if (selectedReleaseId && !editState?.version) {\n return null\n }\n if (selectedPerspective === 'drafts' && !editState?.draft) {\n return null\n }\n if (selectedPerspectiveName === 'published' || !displayed?._rev) {\n return null\n }\n return (\n <Stack space={2} marginBottom={3}>\n <Card borderBottom paddingBottom={3}>\n <Stack space={3} paddingTop={1}>\n <Text size={1} weight=\"medium\">\n {t('events.compare-with-published.title')}\n </Text>\n <Text size={1} muted>\n <Translate\n i18nKey=\"events.compare-with-published.description\"\n t={t}\n values={{\n version: isReleaseDocument(selectedPerspective)\n ? selectedPerspective.metadata?.title\n : 'draft',\n }}\n />\n </Text>\n </Stack>\n </Card>\n <DocumentChangeContext.Provider\n value={{\n documentId,\n schemaType,\n rootDiff,\n isComparingCurrent: true,\n FieldWrapper: (props) => props.children,\n value: displayed,\n showFromValue: true,\n }}\n >\n <Box paddingY={1}>\n <ChangeList diff={rootDiff} schemaType={schemaType} />\n </Box>\n </DocumentChangeContext.Provider>\n </Stack>\n )\n}\nexport function EventsInspector({showChanges}: {showChanges: boolean}): ReactElement {\n const {documentId, schemaType, timelineError, value, formState} = useDocumentPane()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n\n const {events, revision, sinceRevision, getChangesList} = useEvents()\n\n const isComparingCurrent = !revision?.revisionId\n const changesList$ = useMemo(() => getChangesList(), [getChangesList])\n const {\n diff,\n loading: diffLoading,\n error: diffError,\n } = useObservable(changesList$, DIFF_INITIAL_VALUE)\n\n const {t} = useTranslation('studio')\n\n const documentContext: DocumentChangeContextInstance = useMemo(() => {\n return {\n documentId,\n schemaType,\n FieldWrapper: (props) =>\n props.path.length > 0 ? <ChangeFieldWrapper {...props} /> : props.children,\n rootDiff: diff,\n isComparingCurrent: isComparingCurrent && !formState?.readOnly,\n value,\n showFromValue: true,\n }\n }, [diff, documentId, isComparingCurrent, formState?.readOnly, schemaType, value])\n\n const [sinceEvent, toEvent] = useMemo(() => {\n if (!events) return [null, null]\n return [\n events.find((e) => e.id === sinceRevision?.revisionId) || null,\n events.find((e) => e.id === revision?.revisionId) || events[0],\n ]\n }, [events, revision?.revisionId, sinceRevision?.revisionId])\n\n const sinceEvents = useMemo(() => {\n // The sinceEvents need to account the toEvent showing only events that are older than the toEvent\n if (!toEvent) return events.slice(1)\n return events.slice(events.indexOf(toEvent) + 1).map((event) => {\n // If the to event has a parent id, we need to remove the parent id from the since events or they won't be rendered, as they have no parent to expand.\n if (\n ('parentId' in toEvent && 'parentId' in event && event.parentId === toEvent.parentId) ||\n ('parentId' in event && toEvent.id === event.parentId)\n ) {\n return {...event, parentId: undefined}\n }\n return event\n })\n }, [events, toEvent])\n if (!events.length) {\n return (\n <Box paddingX={2}>\n <Stack padding={3} space={3}>\n <Text size={1} weight=\"medium\">\n {t('timeline.error.no-document-history-title')}\n </Text>\n <Text muted size={1}>\n {t('timeline.error.no-document-history-description')}\n </Text>\n </Stack>\n </Box>\n )\n }\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <Box padding={3} style={{position: 'relative'}}>\n <Grid paddingX={2} paddingBottom={2}>\n <Text size={1} muted>\n {t('changes.inspector.from-label')}\n </Text>\n <EventsTimelineMenu\n event={sinceEvent || null}\n events={sinceEvents}\n mode=\"since\"\n placement=\"bottom-start\"\n />\n <Text size={1} muted>\n {t('changes.inspector.to-label')}\n </Text>\n <EventsTimelineMenu\n event={toEvent || null}\n events={events}\n mode=\"rev\"\n placement=\"bottom-end\"\n />\n </Grid>\n {diffLoading && (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <SpinnerContainer justify=\"center\" align=\"center\" gap={2}>\n <Text muted size={0}>\n {t('changes.loading-changes')}\n </Text>\n <Spinner size={0} />\n </SpinnerContainer>\n </motion.div>\n )}\n </Box>\n\n <Card flex={1} paddingX={2} paddingY={2}>\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={setScrollRef}>\n <Box flex={1} paddingX={3} height=\"fill\">\n {showChanges && (\n <Content\n documentContext={documentContext}\n error={timelineError || diffError}\n loading={revision?.loading || sinceRevision?.loading || false}\n schemaType={schemaType}\n sameRevisionSelected={sinceEvent?.id === toEvent?.id}\n sinceEvent={sinceEvent}\n />\n )}\n </Box>\n </Scroller>\n </BoundaryElementProvider>\n </Card>\n </Flex>\n )\n}\n\nfunction Content({\n error,\n documentContext,\n loading,\n schemaType,\n sameRevisionSelected,\n sinceEvent,\n}: {\n error?: Error | null\n documentContext: DocumentChangeContextInstance\n loading: boolean\n schemaType: ObjectSchemaType\n sameRevisionSelected: boolean\n sinceEvent: DocumentGroupEvent | null\n}) {\n if (error) {\n return (\n <>\n <CompareWithPublishedView />\n {sinceEvent?.type !== 'historyCleared' && <ChangesError error={error} />}\n </>\n )\n }\n\n if (loading) {\n return <LoadingBlock showText />\n }\n if (sameRevisionSelected) {\n return <SameRevisionSelected />\n }\n\n if (!documentContext.rootDiff) {\n return (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <NoChanges />\n </motion.div>\n )\n }\n\n return (\n <DocumentChangeContext.Provider value={documentContext}>\n <Box paddingY={1}>\n <ChangeList diff={documentContext.rootDiff} schemaType={schemaType} />\n </Box>\n </DocumentChangeContext.Provider>\n )\n}\n\nfunction SameRevisionSelected() {\n const {t} = useTranslation('')\n return (\n <motion.div\n animate={{opacity: 1}}\n initial={{opacity: 0}}\n transition={{delay: 0.2, duration: 0.2}}\n >\n <Stack space={3} paddingTop={2}>\n <Text size={1} weight=\"medium\" as=\"h3\">\n {t('changes.same-revision-selected-title')}\n </Text>\n <Text as=\"p\" size={1} muted>\n <Translate i18nKey=\"changes.same-revision-selected-description\" t={t} />\n </Text>\n </Stack>\n </motion.div>\n )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type DocumentGroupEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n LoadingBlock,\n ScrollContainer,\n useEvents,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {EventsTimeline} from '../../timeline/events/EventsTimeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nexport function EventsSelector({showList}: {showList: boolean}) {\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n const [listHeight, setListHeight] = useState(0)\n const {setTimelineRange} = useDocumentPane()\n const getScrollerRef = useCallback(\n (el: HTMLDivElement | null) => {\n if (!listHeight && el) {\n /**\n * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n */\n setListHeight(el.clientHeight ? el.clientHeight - 1 : 0)\n setScrollRef(el)\n }\n },\n [listHeight],\n )\n const {\n events,\n nextCursor,\n loading,\n error,\n revision,\n loadMoreEvents,\n findRangeForRevision,\n expandEvent,\n } = useEvents()\n\n const {t} = useTranslation('studio')\n const toast = useToast()\n\n const selectRev = useCallback(\n (event: DocumentGroupEvent) => {\n try {\n if (\n isDeleteDocumentVersionEvent(event) ||\n isDeleteDocumentGroupEvent(event) ||\n isUnpublishDocumentEvent(event) ||\n isScheduleDocumentVersionEvent(event) ||\n isUnscheduleDocumentVersionEvent(event)\n ) {\n console.error('Event is not selectable')\n return\n }\n const [since, rev] = findRangeForRevision(event.id)\n setTimelineRange(since, rev)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [t, toast, setTimelineRange, findRangeForRevision],\n )\n\n const initialLoad = loading && !events.length\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n {error ? (\n <TimelineError />\n ) : (\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n {listHeight &&\n // This forces the list to unmount and remount, which is needed to reset the scroll position\n showList &&\n !initialLoad ? (\n <EventsTimeline\n events={events}\n fetchEventChildren={expandEvent}\n hasMoreEvents={Boolean(nextCursor)}\n // If we have a revision, we select it, otherwise we select the first event\n selectedEventId={revision?.revisionId || events[0]?.id}\n onLoadMore={loadMoreEvents}\n onSelect={selectRev}\n listMaxHeight={`${listHeight}px`}\n />\n ) : null}\n {loading && <LoadingBlock />}\n </Scroller>\n </BoundaryElementProvider>\n )}\n </Card>\n </Flex>\n )\n}\n","import {BoundaryElementProvider, Card, Flex, useToast} from '@sanity/ui'\nimport {useCallback, useState} from 'react'\nimport {\n type Chunk,\n ScrollContainer,\n usePerspective,\n useTimelineSelector,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Timeline} from '../../timeline'\nimport {TimelineError} from '../../timeline/TimelineError'\nimport {useDocumentPane} from '../../useDocumentPane'\n\nconst Scroller = styled(ScrollContainer)`\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n`\n\nexport function HistorySelector({showList}: {showList: boolean}) {\n const {timelineError, setTimelineRange, timelineStore} = useDocumentPane()\n const {selectedReleaseId} = usePerspective()\n const [scrollRef, setScrollRef] = useState<HTMLDivElement | null>(null)\n const [listHeight, setListHeight] = useState(0)\n\n const getScrollerRef = useCallback((el: HTMLDivElement | null) => {\n if (!el?.clientHeight) return\n /**\n * Hacky solution, the list height needs to be defined, it cannot be obtained from the parent using a `max-height: 100%`\n * Because the scroller won't work properly and it won't scroll to the selected element on mount.\n * To fix this, this component will set the list height to the height of the parent element - 1px, to avoid a double scroll line.\n */\n setListHeight(el.clientHeight - 1)\n setScrollRef(el)\n }, [])\n\n const chunks = useTimelineSelector(timelineStore, (state) => state.chunks)\n const realRevChunk = useTimelineSelector(timelineStore, (state) => state.realRevChunk)\n const hasMoreChunks = useTimelineSelector(timelineStore, (state) => state.hasMoreChunks)\n const loading = useTimelineSelector(timelineStore, (state) => state.isLoading)\n\n const {t} = useTranslation('studio')\n const toast = useToast()\n const selectRev = useCallback(\n (revChunk: Chunk) => {\n try {\n const [sinceId, revId] = timelineStore?.findRangeForRev(revChunk) || [null, null]\n setTimelineRange(sinceId, revId)\n } catch (err) {\n toast.push({\n closable: true,\n description: err.message,\n status: 'error',\n title: t('timeline.error.unable-to-load-revision'),\n })\n }\n },\n [setTimelineRange, t, timelineStore, toast],\n )\n\n const handleLoadMore = useCallback(() => {\n // If updated, be sure to update the TimeLineMenu component as well\n if (!loading) {\n timelineStore?.loadMore()\n }\n }, [loading, timelineStore])\n\n return (\n <Flex data-testid=\"review-changes-pane\" direction=\"column\" height=\"fill\">\n <Card flex={1} padding={2} paddingTop={0}>\n {timelineError || selectedReleaseId ? (\n <TimelineError versionError={Boolean(selectedReleaseId)} />\n ) : (\n <BoundaryElementProvider element={scrollRef}>\n <Scroller data-ui=\"Scroller\" ref={getScrollerRef}>\n {listHeight &&\n // This forces the list to unmount and remount, which is needed to reset the scroll position\n showList ? (\n <Timeline\n chunks={chunks}\n hasMoreChunks={hasMoreChunks}\n lastChunk={realRevChunk}\n onLoadMore={handleLoadMore}\n onSelect={selectRev}\n listMaxHeight={`${listHeight}px`}\n />\n ) : null}\n </Scroller>\n </BoundaryElementProvider>\n )}\n </Card>\n </Flex>\n )\n}\n","import {CloseIcon, InfoOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Flex, TabList, TabPanel, Text} from '@sanity/ui'\nimport {useState} from 'react'\nimport {\n type DocumentInspectorProps,\n isReleaseDocument,\n Translate,\n usePerspective,\n useSource,\n useTranslation,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, Tab, Tooltip} from '../../../../../ui-components'\nimport {usePaneRouter} from '../../../../components/paneRouter/usePaneRouter'\nimport {structureLocaleNamespace} from '../../../../i18n'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesInspector} from './ChangesInspector'\nimport {EventsInspector} from './EventsInspector'\nimport {EventsSelector} from './EventsSelector'\nimport {HistorySelector} from './HistorySelector'\n\nconst FadeInFlex = styled(Flex)`\n opacity: 0;\n transition: opacity 200ms;\n &[data-ready] {\n opacity: 1;\n }\n`\nconst TABS = ['history', 'review'] as const\nconst isValidTab = (tab: string | undefined): tab is (typeof TABS)[number] =>\n // @ts-expect-error TS doesn't understand the type guard\n tab && TABS.includes(tab)\n\nexport function ChangesTabs(props: DocumentInspectorProps) {\n const {params, setParams} = usePaneRouter()\n const source = useSource()\n const [parentRef, setParentRef] = useState<HTMLDivElement | null>(null)\n const {t} = useTranslation(structureLocaleNamespace)\n const isReady = params?.inspect === HISTORY_INSPECTOR_NAME\n const {selectedPerspective} = usePerspective()\n\n const paneRouterTab = isValidTab(params?.changesInspectorTab)\n ? params.changesInspectorTab\n : TABS[0]\n\n const setPaneRouterTab = (tab: (typeof TABS)[number]) =>\n setParams({\n ...params,\n changesInspectorTab: tab,\n // Reset the since when changing the tab, as it's not relevant for the history tab\n since: tab === 'history' ? undefined : params?.since,\n })\n\n // eslint-disable-next-line no-nested-ternary\n const perspectiveName = isReleaseDocument(selectedPerspective)\n ? selectedPerspective.metadata.title\n : selectedPerspective === 'drafts'\n ? t('compare-versions.status.draft')\n : t('compare-versions.status.published')\n\n return (\n <FadeInFlex\n direction=\"column\"\n padding={0}\n height=\"fill\"\n data-ready={isReady ? '' : undefined}\n ref={setParentRef}\n >\n <Card paddingBottom={1}>\n <Flex align=\"center\" padding={3} gap={2}>\n <TabList space={1} flex={1}>\n <Tab\n aria-controls=\"history-panel\"\n id=\"history-tab\"\n label={t('changes.tab.history')}\n onClick={() => setPaneRouterTab('history')}\n selected={paneRouterTab === 'history'}\n />\n <Tab\n aria-controls=\"review-changes-panel\"\n id=\"changes-tab\"\n label={t('changes.tab.review-changes')}\n onClick={() => setPaneRouterTab('review')}\n selected={paneRouterTab === 'review'}\n />\n </TabList>\n <Button\n aria-label={t('changes.action.close-label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={props.onClose}\n tooltipProps={{content: t('document-inspector.close-button.tooltip')}}\n />\n </Flex>\n </Card>\n <Card padding={2} marginBottom={3} marginX={3} tone=\"neutral\" border radius={3}>\n <Flex gap={2} align=\"flex-start\">\n <Tooltip\n portal\n placement=\"bottom-end\"\n boundaryElement={parentRef}\n content={\n <Box flex={1} padding={1}>\n <Text size={1}>\n <Translate t={t} i18nKey=\"changes.banner.tooltip\" />\n </Text>\n </Box>\n }\n >\n <Text size={0} muted>\n <InfoOutlineIcon fontSize={1} />\n </Text>\n </Tooltip>\n <Text size={0} muted>\n <Translate\n t={t}\n values={{\n perspective: perspectiveName,\n }}\n i18nKey=\"changes.banner.description\"\n />\n </Text>\n </Flex>\n </Card>\n\n <TabPanel\n aria-labelledby=\"history-tab\"\n height=\"fill\"\n hidden={paneRouterTab !== 'history'}\n id=\"history-panel\"\n >\n {source.beta?.eventsAPI?.documents ? (\n <EventsSelector showList={paneRouterTab === 'history'} />\n ) : (\n <HistorySelector showList={paneRouterTab === 'history'} />\n )}\n </TabPanel>\n\n <TabPanel\n aria-labelledby=\"review-tab\"\n hidden={paneRouterTab !== 'review'}\n id=\"review-panel\"\n height=\"fill\"\n >\n {source.beta?.eventsAPI?.documents ? (\n <>\n {paneRouterTab === 'review' ? (\n <EventsInspector showChanges={paneRouterTab === 'review'} />\n ) : null}\n </>\n ) : (\n <ChangesInspector showChanges={paneRouterTab === 'review'} />\n )}\n </TabPanel>\n </FadeInFlex>\n )\n}\n","import {RestoreIcon} from '@sanity/icons'\nimport {type DocumentInspector, useTranslation} from 'sanity'\n\nimport {useStructureTool} from '../../../../useStructureTool'\nimport {HISTORY_INSPECTOR_NAME} from '../../constants'\nimport {ChangesTabs} from './ChangesTabs'\n\nexport const changesInspector: DocumentInspector = {\n name: HISTORY_INSPECTOR_NAME,\n useMenuItem: () => {\n const {features} = useStructureTool()\n const {t} = useTranslation()\n\n return {\n hidden: !features.reviewChanges,\n icon: RestoreIcon,\n title: t('changes.title'),\n }\n },\n component: ChangesTabs,\n onClose: ({params}) => ({\n params: {\n ...params,\n since: undefined,\n rev: undefined,\n changesInspectorTab: undefined,\n historyVersion: undefined,\n },\n }),\n onOpen: ({params}) => ({params: {...params, since: '@lastPublished'}}),\n}\n","/* eslint-disable no-loop-func */\n\nimport {type Path, type SanityDocument, type SchemaType} from '@sanity/types'\nimport {isArray, isRecord} from 'sanity'\n\nexport function getPathTitles(options: {\n path: Path\n schemaType: SchemaType\n value: Partial<SanityDocument> | null\n}): Array<{name: string; title?: string}> {\n const {path, schemaType, value} = options\n const result: Array<{name: string; title?: string}> = []\n\n let s = schemaType\n let v: unknown = value\n\n for (const segment of path) {\n // field name\n if (typeof segment === 'string') {\n if (!isRecord(v) && v !== undefined) {\n throw new Error(`Parent value is not an object, cannot get path segment: .${segment}`)\n }\n\n if (s.jsonType !== 'object') {\n throw new Error(\n `Parent type is not an object schema type, cannot get path segment: .${segment}`,\n )\n }\n\n v = v?.[segment]\n\n const field = s.fields.find((f) => f.name === segment)\n\n if (!field) {\n result.push({name: segment})\n return result\n }\n\n s = field.type\n\n result.push(s)\n\n continue\n }\n\n // array item index\n if (typeof segment === 'number') {\n if (!isArray(v) && v !== undefined) {\n throw new Error(`Parent value is not an array, cannot get path segment: [${segment}]`)\n }\n\n if (s.jsonType !== 'array') {\n throw new Error(\n `Parent type is not an array schema type, cannot get path segment: [${segment}]`,\n )\n }\n\n v = v?.[segment]\n\n const itemType = s.of.find((ofType) => {\n if (typeof v === 'string') {\n return ofType.jsonType === 'string'\n }\n\n if (typeof v === 'number') {\n return ofType.jsonType === 'number'\n }\n\n if (typeof v === 'boolean') {\n return ofType.jsonType === 'boolean'\n }\n\n if (isRecord(v)) {\n return ofType.name === v?._type\n }\n\n return false\n })\n\n if (!itemType) {\n throw new Error(`Item type not found: [${segment}]`)\n }\n\n s = itemType\n\n result.push(s)\n\n continue\n }\n\n // array item key\n if (isRecord(segment) && segment._key) {\n if (!isArray(v)) {\n throw new Error(\n `Parent value is not an array, cannot get path segment: [_key == ${segment}]`,\n )\n }\n\n if (s.jsonType !== 'array') {\n throw new Error(\n `Parent type is not an array schema type, cannot get path segment: .${segment}`,\n )\n }\n\n const values = v ?? []\n\n v = values.find((i) => isRecord(i) && i._key === segment._key)\n\n if (!isRecord(v)) {\n throw new Error(`Array item not found: [_key == ${segment._key}]`)\n }\n\n const ofType = s.of.find((i) => isRecord(v) && i.name === v?._type)\n\n if (!ofType) {\n throw new Error(`Array item type not found: .${v?._type}`)\n }\n\n s = ofType\n\n result.push(s)\n\n continue\n }\n\n throw new Error(`Invalid path segment: ${JSON.stringify(segment)}`)\n }\n\n return result\n}\n","import {\n ErrorOutlineIcon,\n type IconComponent,\n InfoOutlineIcon,\n WarningOutlineIcon,\n} from '@sanity/icons'\nimport {\n type ObjectSchemaType,\n type Path,\n type SanityDocument,\n type SchemaType,\n type ValidationMarker,\n} from '@sanity/types'\nimport {Box, Card, type CardTone, Flex, Stack, Text} from '@sanity/ui'\nimport {type ErrorInfo, Fragment, useCallback, useMemo, useState} from 'react'\nimport {type DocumentInspectorProps, useTranslation} from 'sanity'\n\nimport {ErrorBoundary} from '../../../../../ui-components'\nimport {DocumentInspectorHeader} from '../../documentInspector'\nimport {useDocumentPane} from '../../useDocumentPane'\nimport {getPathTitles} from './getPathTitles'\n\nconst MARKER_ICON: Record<'error' | 'warning' | 'info', IconComponent> = {\n error: ErrorOutlineIcon,\n warning: WarningOutlineIcon,\n info: InfoOutlineIcon,\n}\n\nconst MARKER_TONE: Record<'error' | 'warning' | 'info', CardTone> = {\n error: 'critical',\n warning: 'caution',\n info: 'primary',\n}\n\nexport function ValidationInspector(props: DocumentInspectorProps) {\n const {onClose} = props\n const {onFocus, onPathOpen, schemaType, validation, value} = useDocumentPane()\n const {t} = useTranslation('validation')\n\n const handleOpen = useCallback(\n (path: Path) => {\n onPathOpen(path)\n onFocus(path)\n },\n [onFocus, onPathOpen],\n )\n\n return (\n <Flex direction=\"column\" height=\"fill\" overflow=\"hidden\">\n <DocumentInspectorHeader\n as=\"header\"\n closeButtonLabel={t('panel.close-button-aria-label')}\n flex=\"none\"\n onClose={onClose}\n title={t('panel.title')}\n />\n\n <Card flex={1} overflow=\"auto\" padding={3}>\n {validation.length === 0 && (\n <Box padding={2}>\n <Text muted size={1}>\n {t('panel.no-errors-message')}\n </Text>\n </Box>\n )}\n\n {validation.length > 0 && (\n <Stack space={2}>\n {validation.map((marker, i) => (\n <ValidationCard\n // eslint-disable-next-line react/no-array-index-key\n key={i}\n marker={marker}\n onOpen={handleOpen}\n schemaType={schemaType}\n value={value}\n />\n ))}\n </Stack>\n )}\n </Card>\n </Flex>\n )\n}\n\nfunction ValidationCard(props: {\n marker: ValidationMarker\n onOpen: (path: Path) => void\n schemaType: ObjectSchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {marker, onOpen, schemaType, value} = props\n const handleOpen = useCallback(() => onOpen(marker.path), [marker, onOpen])\n const [errorInfo, setErrorInfo] = useState<{error: Error; info: ErrorInfo} | null>(null)\n const Icon = MARKER_ICON[marker.level]\n\n return (\n <ErrorBoundary onCatch={setErrorInfo}>\n {errorInfo && (\n <Card padding={3} radius={2} tone=\"critical\">\n <Text size={1}>{errorInfo.error.message}</Text>\n </Card>\n )}\n\n {!errorInfo && (\n <Card\n __unstable_focusRing\n as=\"button\"\n onClick={handleOpen}\n padding={3}\n radius={2}\n tone={MARKER_TONE[marker.level]}\n >\n <Flex align=\"flex-start\" gap={3}>\n <Box flex=\"none\">\n <Text size={1}>\n <Icon />\n </Text>\n </Box>\n\n <Stack flex={1} space={2}>\n <DocumentNodePathBreadcrumbs\n path={marker.path}\n schemaType={schemaType}\n value={value}\n />\n\n <Text muted size={1}>\n {marker.message}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n </ErrorBoundary>\n )\n}\n\nfunction DocumentNodePathBreadcrumbs(props: {\n path: Path\n schemaType: SchemaType\n value: Partial<SanityDocument> | null\n}) {\n const {path, schemaType, value} = props\n\n const pathTitles = useMemo(() => {\n try {\n return getPathTitles({path, schemaType, value})\n } catch (e) {\n console.error(e)\n }\n return null\n }, [path, schemaType, value])\n\n if (!pathTitles?.length) return null\n\n return (\n <Text size={1}>\n {pathTitles.map((t, i) => (\n <Fragment key={i}>\n {i > 0 && <span style={{color: 'var(--card-muted-fg-color)', opacity: 0.5}}> / </span>}\n <span style={{fontWeight: 500}}>{t.title || t.name}</span>\n </Fragment>\n ))}\n </Text>\n )\n}\n","import {CheckmarkCircleIcon, ErrorOutlineIcon, WarningOutlineIcon} from '@sanity/icons'\nimport {useMemo} from 'react'\nimport {\n type DocumentInspector,\n type DocumentInspectorMenuItem,\n type DocumentInspectorUseMenuItemProps,\n type FormNodeValidation,\n isValidationError,\n isValidationWarning,\n usePerspective,\n useTranslation,\n useValidationStatus,\n} from 'sanity'\n\nimport {VALIDATION_INSPECTOR_NAME} from '../../constants'\nimport {ValidationInspector} from './ValidationInspector'\n\nfunction useMenuItem(props: DocumentInspectorUseMenuItemProps): DocumentInspectorMenuItem {\n const {documentId, documentType} = props\n const {t} = useTranslation('validation')\n const {selectedReleaseId} = usePerspective()\n const {validation: validationMarkers} = useValidationStatus(\n documentId,\n documentType,\n selectedReleaseId,\n )\n\n const validation: FormNodeValidation[] = useMemo(\n () =>\n validationMarkers.map((item) => ({\n level: item.level,\n message: item.message,\n path: item.path,\n })),\n [validationMarkers],\n )\n\n const hasErrors = validation.some(isValidationError)\n const hasWarnings = validation.some(isValidationWarning)\n\n const icon = useMemo(() => {\n if (hasErrors) return ErrorOutlineIcon\n if (hasWarnings) return WarningOutlineIcon\n return CheckmarkCircleIcon\n }, [hasErrors, hasWarnings])\n\n const tone = useMemo(() => {\n if (hasErrors) return 'critical'\n if (hasWarnings) return 'caution'\n return 'positive'\n }, [hasErrors, hasWarnings])\n\n return {\n hidden: validation.length === 0,\n icon,\n title: t('panel.title'),\n tone,\n showAsAction: true,\n }\n}\n\nexport const validationInspector: DocumentInspector = {\n name: VALIDATION_INSPECTOR_NAME,\n component: ValidationInspector,\n useMenuItem,\n}\n","import {omit} from 'lodash'\nimport {decodeJsonParams, encodeJsonParams, route} from 'sanity/router'\n\nimport {type RouterPaneGroup, type RouterPanes, type RouterPaneSibling} from './types'\n\nconst EMPTY_PARAMS = {}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToState(params: string): Record<string, unknown> {\n try {\n return JSON.parse(decodeURIComponent(params))\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Failed to parse JSON parameters')\n return {}\n }\n}\n\nexport function encodePanesSegment(panes: RouterPanes): string {\n return (panes || [])\n .map((group) => group.map(encodeChunks).join('|'))\n .map(encodeURIComponent)\n .join(';')\n}\n\n/**\n * @internal\n */\nexport function legacyEditParamsToPath(params: Record<string, unknown>): string {\n return JSON.stringify(params)\n}\n\n// http://localhost:3333/intent/create/template=book-by-author;type=book/eyJhdXRob3JJZCI6Imdycm0ifQ==\n\n/**\n * @internal\n */\nexport function toState(pathSegment: string): RouterPaneGroup[] {\n return parsePanesSegment(decodeURIComponent(pathSegment))\n}\n\n/**\n * @internal\n */\nexport function toPath(panes: RouterPaneGroup[]): string {\n return encodePanesSegment(panes)\n}\n\nexport const router = route.create('/', [\n // \"Asynchronous intent resolving\" route\n route.intents('/intent'),\n\n // Legacy fallback route, will be redirected to new format\n route.create('/edit/:type/:editDocumentId', [\n route.create({\n path: '/:params',\n transform: {params: {toState: legacyEditParamsToState, toPath: legacyEditParamsToPath}},\n }),\n ]),\n\n // The regular path - when the intent can be resolved to a specific pane\n route.create({\n path: '/:panes',\n // Legacy URLs, used to handle redirects\n children: [route.create('/:action', route.create('/:legacyEditDocumentId'))],\n transform: {\n panes: {toState, toPath},\n },\n }),\n])\n\n// old: authors;knut,{\"template\":\"diaryEntry\"}\n// new: authors;knut,view=diff,eyJyZXYxIjoiYWJjMTIzIiwicmV2MiI6ImRlZjQ1NiJ9|latest-posts\n\nconst panePattern = /^([.a-z0-9_-]+),?({.*?})?(?:(;|$))/i\nconst isParam = (str: string) => /^[a-z0-9]+=[^=]+/i.test(str)\nconst isPayloadLike = (str: string) => /^[A-Za-z0-9\\-_]+(?:={0,2})$/.test(str)\nconst exclusiveParams = ['view', 'since', 'rev', 'inspect', 'comment']\n\ntype Truthy<T> = T extends false\n ? never\n : T extends ''\n ? never\n : T extends 0\n ? never\n : T extends 0n\n ? never\n : T extends null | undefined\n ? NonNullable<T>\n : T\nconst isTruthy = Boolean as (t: unknown) => boolean as <T>(t: T) => t is Truthy<T>\n\nfunction parseChunks(chunks: string[], initial: RouterPaneSibling): RouterPaneSibling {\n const sibling: RouterPaneSibling = {...initial, params: EMPTY_PARAMS, payload: undefined}\n return chunks.reduce((pane, chunk) => {\n if (isParam(chunk)) {\n const key = chunk.slice(0, chunk.indexOf('='))\n const value = chunk.slice(key.length + 1)\n pane.params = {...pane.params, [decodeURIComponent(key)]: decodeURIComponent(value)}\n } else if (isPayloadLike(chunk)) {\n pane.payload = tryParseBase64Payload(chunk)\n } else {\n // eslint-disable-next-line no-console\n console.warn('Unknown pane segment: %s - skipping', chunk)\n }\n\n return pane\n }, sibling)\n}\n\nfunction encodeChunks(pane: RouterPaneSibling, index: number, group: RouterPaneGroup): string {\n const {payload, params = {}, id} = pane\n const [firstSibling] = group\n const paneIsFirstSibling = pane === firstSibling\n const sameAsFirst = index !== 0 && id === firstSibling.id\n const encodedPayload =\n typeof payload === 'undefined' ? undefined : encodeJsonParams(payload as any)\n\n const encodedParams = Object.entries(params)\n .filter((entry): entry is [string, string] => {\n const [key, value] = entry\n if (!value) return false\n if (paneIsFirstSibling) return true\n\n // omit the value if it's the same as the value from the first sibling\n const valueFromFirstSibling = firstSibling.params?.[key]\n if (value === valueFromFirstSibling && !exclusiveParams.includes(key)) return false\n return true\n })\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\n\n return (\n [sameAsFirst ? '' : id]\n .concat([encodedParams.length > 0 && encodedParams, encodedPayload].filter(isTruthy).flat())\n .join(',') || ','\n )\n}\n\nexport function parsePanesSegment(str: string): RouterPanes {\n if (str.indexOf(',{') !== -1) {\n return parseOldPanesSegment(str)\n }\n\n return str\n .split(';')\n .map((group) => {\n const [firstSibling, ...restOfSiblings] = group.split('|').map((segment) => {\n const [id, ...chunks] = segment.split(',')\n return parseChunks(chunks, {id})\n })\n\n return [\n firstSibling,\n ...restOfSiblings.map((sibling) => ({\n ...firstSibling,\n ...sibling,\n id: sibling.id || firstSibling.id,\n params: {...omit(firstSibling.params, exclusiveParams), ...sibling.params},\n payload: sibling.payload || firstSibling.payload,\n })),\n ]\n })\n .filter((group) => group.length > 0)\n}\n\nfunction parseOldPanesSegment(str: string): RouterPanes {\n const chunks: RouterPaneGroup = []\n\n let buffer = str\n while (buffer.length) {\n const [match, id, payloadChunk] = buffer.match(panePattern) || []\n if (!match) {\n buffer = buffer.slice(1)\n continue\n }\n\n const payload = payloadChunk && tryParsePayload(payloadChunk)\n chunks.push({id, payload})\n\n buffer = buffer.slice(match.length)\n }\n\n return [chunks]\n}\n\nfunction tryParsePayload(json: string) {\n try {\n return JSON.parse(json)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(`Failed to parse parameters: ${err.message}`)\n return undefined\n }\n}\n\nfunction tryParseBase64Payload(data: string): unknown {\n try {\n return data ? decodeJsonParams(data) : undefined\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(`Failed to parse parameters: ${err.message}`)\n return undefined\n }\n}\n","import {MasterDetailIcon} from '@sanity/icons'\nimport {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nimport {\n DeleteAction,\n DiscardChangesAction,\n DuplicateAction,\n HistoryRestoreAction,\n PublishAction,\n UnpublishAction,\n} from './documentActions'\nimport {LiveEditBadge} from './documentBadges'\nimport {getIntentState} from './getIntentState'\nimport {structureUsEnglishLocaleBundle} from './i18n'\nimport {changesInspector} from './panes/document/inspectors/changes'\nimport {validationInspector} from './panes/document/inspectors/validation'\nimport {router} from './router'\nimport {type StructureToolOptions} from './types'\n\nconst documentActions = [\n PublishAction,\n UnpublishAction,\n DiscardChangesAction,\n DuplicateAction,\n DeleteAction,\n HistoryRestoreAction,\n]\n\nconst documentBadges = [LiveEditBadge]\n\nconst inspectors = [validationInspector, changesInspector]\n\n/**\n * The structureTool is a studio plugin which adds the “structure tool” – a tool within\n * Sanity Studio in which content editors can drill down to specific documents to edit them.\n * You can configure your Studio's structure tool(s).\n *\n * @public\n * @param options - Options for the structure tool. See {@link StructureToolOptions}\n * @example Minimal example\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n *\n * export default defineConfig((\n * // ...\n * plugins: [\n * structureTool() // use defaults\n * ]\n * })\n * ```\n *\n * @example To customise your structure tool\n * ```ts\n * // sanity.config.ts\n * import { defineConfig } from 'sanity'\n * import { structureTool } from 'sanity/structure'\n * import { FaCar } from 'react-icons'\n\n * export default defineConfig((\n *\t // ...\n * plugins: [\n * structureTool({\n * name: 'cars',\n * title: 'Cars',\n * icon: FaCar,\n * structure: (S) => S.documentTypeList('car'),\n * defaultDocumentNode: (S) =>\n * S.document().views([\n * S.view.form(),\n * S.view.component(Preview).title('Preview')\n * ])\n * })\n * ]\n * })\n * ```\n * */\nexport const structureTool = definePlugin<StructureToolOptions | void>((options) => {\n const icon = options?.icon || MasterDetailIcon\n\n return {\n name: 'sanity/structure',\n document: {\n actions: (prevActions) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the document actions already exist in the Studio config\n return Array.from(new Set([...prevActions, ...documentActions]))\n },\n badges: (prevBadges) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the document badges already exist in the Studio config\n return Array.from(new Set([...prevBadges, ...documentBadges]))\n },\n inspectors: (prevInspectors) => {\n // NOTE: since it's possible to have several structure tools in one Studio,\n // we need to check whether the inspectors already exist in the Studio config\n return Array.from(new Set([...prevInspectors, ...inspectors]))\n },\n },\n\n tools: [\n {\n name: options?.name || 'structure',\n title: options?.title || 'Structure',\n icon,\n component: lazy(() => import('./components/structureTool')),\n canHandleIntent: (intent, params) => {\n if (intent === 'create') return canHandleCreateIntent(params)\n if (intent === 'edit') return canHandleEditIntent(params)\n return false\n },\n getIntentState,\n // Controlled by sanity/src/structure/components/structureTool/StructureTitle.tsx\n controlsDocumentTitle: true,\n options,\n router,\n __internalApplicationType: 'sanity/structure',\n },\n ],\n\n i18n: {\n bundles: [structureUsEnglishLocaleBundle],\n },\n }\n})\n\nfunction canHandleCreateIntent(params: Record<string, unknown>) {\n // We can't handle create intents without a `type` parameter\n if (!('type' in params)) {\n return false\n }\n\n // We can handle any create intent as long as it has a `type` parameter,\n // but we also know how to deal with templates, where other tools might not\n return 'template' in params ? {template: true} : true\n}\n\nfunction canHandleEditIntent(params: Record<string, unknown>) {\n // We can't handle edit intents without an `id` parameter\n if (!('id' in params)) {\n return false\n }\n\n // We can handle any edit intent with a document ID, but we're best at `structure` mode\n // This ensures that other tools that can handle modes such as `presentation` or `batch`\n // can take precedence over the structure tool\n return 'mode' in params ? {mode: params.mode === 'structure'} : true\n}\n"],"names":["DocTitle","props","$","_c","document","documentValue","schema","useSchema","t0","_type","get","schemaType","t","useTranslation","structureLocaleNamespace","t1","value","error","useValuePreview","t2","t3","message","errorMessage","title","jsx","color","ChevronWrapper","styled","Box","CrossDatasetReferencesDetails","details","CrossDatasetReferencesSummary","summary","Table","table","theme","rem","sanity","space","DocumentIdFlex","Flex","OtherReferenceCount","difference","totalCount","references","length","count","Text","Symbol","for","InfoOutlineIcon","t4","Tooltip","t5","jsxs","Inline","PaneItemPreview","icon","layout","presence","versionsInfo","useDocumentVersionInfo","_id","perspectiveStack","usePerspective","documentPreviewStore","getPreviewStateObservable","previewStateObservable","snapshot","isLoading","original","previewIsLoading","useObservable","draft","published","versions","TooltipDelayGroupProvider","DocumentPreviewPresence","DocumentStatusIndicator","status","DocumentStatus","tooltip","getPreviewValueWithFallback","fallback","t6","SanityDefaultPreview","BackLink","forwardRef","ref","routerPanesState","groupIndex","useContext","PaneRouterContext","slice","panes","state","StateLink","usePaneLayout","pane","PaneLayoutContext","Error","usePaneRouter","EMPTY_ARRAY","ReferencePreviewLink","onClick","type","getPublishedId","documentPresence","useDocumentPresence","useDocumentPreviewStore","ReferenceChildLink","name","linkProps","t7","PreviewCard","ConfirmDeleteDialogBody","crossDatasetReferences","internalReferences","documentTitle","action","datasetNames","hasUnknownDatasetNames","onReferenceLinkClick","toast","useToast","item","UnknownIcon","documentId","renderPreviewItem","DocumentTitle","Translate","T0","T1","T2","t10","t11","t12","t8","t9","normalizedDatasetNames","datasetSubtitle","datasets","join","context","t13","WarningOutlineIcon","t14","t15","Card","t16","Stack","map","item_0","borderTop","undefined","DocumentsIcon","documentCount","ChevronDownIcon","minWidth","filter","_temp","t17","index","projectId","datasetName","Button","CopyIcon","content","navigator","clipboard","writeText","catch","push","reference","isClientError","e","POLL_INTERVAL","visiblePoll$","getVisiblePoll$","fromEvent","pipe","startWith","visibilityState","distinctUntilChanged","switchMap","visible","timer","EMPTY","shareReplay","refCount","bufferSize","getDocumentExistence","versionedClient","draftId","getDraftId","publishedId","requestOptions","uri","getDataUrl","json","query","excludeContent","tag","observable","request","omitted","nonExistant","doc","reason","some","id","fetchCrossDatasetReferences","checkDocumentId","of","currentDataset","config","dataset","url","catchError","statusCode","useInternalReferences","createHookFromObservableFactory","documentStore","listenQuery","fetch","listen","transitions","throttleTime","useCrossDatasetReferences","useReferringDocuments","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useDocumentStore","isInternalReferencesLoading","isCrossDatasetReferencesLoading","Array","from","Set","Boolean","sort","projectIds","_temp2","_temp3","_temp4","crossDatasetReference_1","crossDatasetReference","crossDatasetReference_0","DialogBody","LoadingContainer","attrs","align","direction","justify","ConfirmDeleteDialog","onCancel","onConfirm","dialogId","useId","showConfirmButton","text","cancelButton","confirmButton","LoadingBlock","Dialog","ConfirmDeleteDialogContainer","setError","useState","handleRetry","tone","ErrorBoundary","Delay","children","ms","ready","setReady","timeoutId","setTimeout","clearTimeout","useEffect","Fragment","PANE_DEBUG","PANE_COLLAPSED_WIDTH","PANE_DEFAULT_MIN_WIDTH","Root","Layer","PaneDivider","disabled","element","resize","dragging","setDragging","event","preventDefault","startX","pageX","handleMouseMove","deltaX","handleMouseUp","e_0","removeEventListener","addEventListener","handleMouseDown","Pane","forwardedRef","currentMaxWidthProp","currentMinWidthProp","maxWidthProp","minWidthProp","restProps","currentMinWidth","currentMaxWidth","flex","maxWidth","selected","flexProp","rootElement","setRootElement","collapse","collapsed","layoutCollapsed","expand","expandedElement","mount","p","find","indexOf","paneIndex","nextPane","isLast","expanded","nextCollapsed","useRef","current","useImperativeHandle","refValue","setRef","useLayoutEffect","handleCollapse","handleExpand","contextValue","bb0","bb1","hidden","LegacyLayerProvider","divider","Infinity","t18","style","t19","t20","t21","t22","t23","t24","BoundaryElementProvider","t25","t26","IsLastPaneProvider","t27","t28","displayName","usePane","PaneContext","PaneContent","as","overflow","padding","toLowerCaseNoSpaces","str","toLocaleLowerCase","replaceAll","MENU_GROUP_POPOVER_PROPS","constrainSize","placement","portal","PaneMenuButtonItem","isAfterGroup","node","getI18nText","useGetI18nText","MenuDivider","child","childIndex","key","child_0","childIndex_0","MenuGroup","PaneContextMenuItemResolver","intent","PaneContextIntentMenuItem","PaneContextMenuItem","tooltipContent","useI18nText","hotkey","split","iconRight","CheckmarkIcon","onAction","MenuItem","TooltipOfDisabled","params","intentLink","useIntentLink","handleClick","href","CONTEXT_MENU_POPOVER_PROPS","nodesHasTone","nodes","PaneContextMenuButton","actionsNodes","hasCritical","hasCaution","ContextMenuButton","nodeIndex","Menu","MenuButton","RootCard","PaneFooter","$border","css","Layout","TitleCard","fg","bg","card","enabled","TitleTextSkeleton","TextSkeleton","TitleText","PaneHeader","actions","backButton","border","contentAfter","loading","subActions","tabs","tabIndex","appendTitle","paneElement","paneRect","useElementRect","height","window","innerHeight","width","layoutStyle","handleTitleClick","handleLayoutClick","showTabsOrSubActions","LayerProvider","getDisabledReason","disabledReason","ariaLabel","isDisabled","PaneHeaderActionButton","PaneHeaderMenuItemActionButton","PaneHeaderMenuGroupActionButton","warn","PaneHeaderActionIntentButton","hotkeys","StatusButton","idx","_calcPaneResize","cache","left","right","sum","leftMinWidth","rightMinWidth","leftMaxWidth","Math","min","rightMaxWidth","minDeltaX","rightMinDeltaX","maxDeltaX","leftMaxDeltaX","_deltaX","max","leftW","rightW","leftFlex","rightFlex","_getDOMPath","el","path","parentElement","childNodes","unshift","EMPTY_PATH","_sortElements","elements","WeakMap","set","_sortByElementPath","a","b","_a","_b","len","i","aIndex","bIndex","createPaneLayoutController","observers","optionsMap","userCollapsedElementSet","rootWidth","resizeDataMap","Map","resizing","add","_notifyObservers","delete","options","splice","leftElement","leftIndex","leftOptions","rightElement","rightOptions","offsetWidth","leftResizeData","rightResizeData","nextRootElement","setRootWidth","nextRootWidth","subscribe","observer","_elements","dataMap","lastElement","collapsedWidth","remaingWidth","userCollapsed","has","sizeCollapsed","resizeData","data","PaneLayout","onCollapse","onExpand","controller","rootRect","setState","paneLayout","isMenuNodeButton","renderAsButton","isNotMenuNodeButton","negate","resolveMenuNodes","fieldActions","menuItems","menuItemGroups","keyOffset","mapFieldActionToPaneMenuNode","groups","itemGroup","g","i18n","ungroupedItems","group","shortcut","actionHandler","showAsAction","childIdx","IntentButton","linkRef","IntentLink","searchParams","Link","InsufficientPermissionsMessageTooltip","reveal","currentUser","useCurrentUser","InsufficientPermissionsMessage","POPOVER_PROPS","getIntent","templates","version","typeName","templateId","baseParams","template","initialDocumentId","parameters","PaneHeaderCreateButton","templateItems","useTemplates","selectedReleaseId","selectedPerspective","isReleaseActive","useIsReleaseActive","tCore","templatePermissions","isTemplatePermissionsLoading","useTemplatePermissions","every","nothingGranted","reduce","permissionsById","AddIcon","isPublishedPerspective","disabledByPerspectiveTooltipProps","firstItem","permissions","granted","itemIndex","permissions_0","disabled_0","intent_0","acc","permission_0","permission","isNonNullable","hashObject","sortObject","v","isArray","Object","entries","keyA","keyB","localeCompare","JSON","stringify","normalize","parse","PaneHeaderActions","memo","initialValueTemplateItems","initialValueTemplateItemsFromStructure","actionHandlers","EMPTY_OBJECT","handleAction","useCallback","handler","menuNodes","useMemo","actionNodes","contextMenuNodes","initialValueTemplateItemFromMenuItems","menuItemIndex","intentParams","templateParams","description","combinedInitialValueTemplates","uniqBy","MissingSchemaType","Code","documentType","getIconWithFallback","defaultIcon","PaneItem","pressed","margin","marginBottom","marginTop","ChildLink","hasSchemaType","clicked","setClicked","isSanityDocument","DocumentIcon","opacity","ChevronRightIcon","FolderIcon","preview","metaKey","preloading","setPreload","timeoutRef","startTransition","handleMouseEnter","handleMouseLeave","PreloadDocumentPane","useEditState","RenderActionCollectionState","actionProps","onActionComplete","liveEditSchemaType","states","ActionsGuardWrapper","GetHookCollectionState","SUPPORTED_LINKED_TO_CANVAS_ACTIONS","isLinked","useCanvasCompanionDoc","s","includes","result","RenderBadgeCollectionState","badges","badgeProps","useCreatePathSyncChannel","Subject","DIFF_VIEW_SEARCH_PARAMETER","DIFF_VIEW_PREVIOUS_DOCUMENT_SEARCH_PARAMETER","DIFF_VIEW_NEXT_DOCUMENT_SEARCH_PARAMETER","DIFF_SEARCH_PARAM_DELIMITER","useDiffViewRouter","navigate","routerState","useRouter","mode","previousDocument","nextDocument","next","fromPairs","_searchParams","toPairs","navigateDiffView","exitDiffView","diffViewModes","isDiffViewMode","maybeDiffViewMode","useDiffViewState","onParamsError","URLSearchParams","anyParamSet","param","parseParams","errors","isActive","previousDocumentType","previousDocumentId","nextDocumentType","nextDocumentId","documents","previous","o","r","n","l","c","useScrollMirror","existentElements","scrollMirror","ScrollMirror","destroy","VersionModeHeaderLayout","header","VersionModeHeaderLayoutSection","div","VersionModeHeader","documentVersions","useDocumentVersions","activeReleases","useActiveReleases","releasesIds","flatMap","getVersionFromId","releases","release","releaseId","getReleaseIdFromReleaseDocumentId","onSelectPreviousRelease","selectedDocumentId","onSelectNextRelease","VersionMenu","TransferIcon","justifySelf","CloseIcon","onSelectRelease","role","findRelease","tStructure","getMenuButtonProps","VersionMenuItem","onSelect","isSelected","getVersionId","ReleaseAvatar","getReleaseTone","metadata","releaseType","formatRelativeLocalePublishDate","isReleaseScheduledOrScheduling","LockIcon","isReleaseDocument","isPublishedId","isDraftId","DialogLayout","pickDocumentLayoutComponent","plugin","components","unstable_layout","usePathSyncChannel","syncChannel","source","state_0","deepEquals","Scroller","DiffViewPaneLayout","Container","UiContainer","DiffViewPane","scrollElement","compareDocument","containerElement","portalElement","setPortalElement","boundaryElement","setBoundaryElement","DiffViewDocument","pick","defaultComponent","DocumentLayout","useMiddlewareComponents","isInteractive","onOpenReviewChanges","noop","onSetFocus","isReviewChangesOpen","DialogProvider","PortalProvider","ReviewChangesContext","ChangeIndicatorsTracker","VirtualizerScrollInstanceProvider","compareValue","useCompareValue","patchChannel","perspectiveName","selectedPerspectiveName","comparisonValue","useDocumentForm","collapsedFieldSets","collapsedPaths","documentForm","formState","onBlur","onChange","onFocus","onProgrammaticFocus","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","pathSyncChannel","onPathOpen","subscription","unsubscribe","CommentsEnabledContext","FormBuilder","focusPath","changed","focused","validation","members","isVersionId","compareDocumentEditState","createPatchChannel","EditReferenceLinkComponent","_documentId","DiffView","previousPaneElement","setPreviousPaneElement","nextPaneElement","setNextPaneElement","referenceInputOptionsContext","ReferenceInputOptionsContext","disableNew","diffViewReferenceInputOptionsContext","DiffViewDocumentLayout","input","ErrorPane","paneKey","getWaitMessages","thresholds","messageKey","isDev","src","merge","threshold","mapTo","delay","DEFAULT_MESSAGE_KEY","Content","LoadingPane","messageProp","resolvedMessage","currentMessage","setCurrentMessage","sub","contentElement","setContentElement","mounted","setMounted","_raf2","DELAY","useDocumentPane","documentPane","DocumentPaneContext","CommentsWrapper","CommentsProviderWrapper","CommentsEnabledProvider","useCommentsEnabled","connectionState","inspector","openInspector","setParams","createPathWithParams","studioUrl","useStudioUrl","location","origin","selectedCommentId","comment","paramsRef","commentId","inspect","COMMENTS_INSPECTOR_NAME","getCommentLink","handleClearSelectedComment","handleOpenCommentsInspector","CommentsProvider","useFilteredReleases","displayed","archivedReleases","useArchivedReleases","isCreatingDocument","_createdAt","notCurrentReleases","currentReleases","inCreation","versionDocExists","historyVersion","archivedRelease","useDocumentIdStack","editState","filteredReleases","systemStack","releaseStack","concat","stack","findIndex","id_0","position","previousId","nextId","useStructureTool","structureTool","StructureToolContext","DOCUMENT_PANEL_MIN_WIDTH","DOCUMENT_PANEL_INITIAL_MIN_WIDTH","DOCUMENT_INSPECTOR_MIN_WIDTH","DOCUMENT_INSPECTOR_MAX_WIDTH","EMPTY_PARAMS","INSPECT_ACTION_PREFIX","DEFAULT_MENU_ITEM_GROUPS","HISTORY_INSPECTOR_NAME","VALIDATION_INSPECTOR_NAME","DocumentInspectorMenuItemsResolver","inspectors","onMenuItems","setMenuItems","newFieldActions","setMenuItem","prev","InspectorMenuItems","useMenuItem","defineInspectorMenuItemComponent","InspectorMenuItem","menuItem","useUnique","useDocumentTitle","subscribed","IGNORE_OPS","DocumentOperationResults","pushToast","documentPaneValue","documentTitleInfo","titleError","useDocumentOperationEvent","prevEvent","paneRouter","op","documentTitleBase","cleanupId","closable","duration","Strong","closeCurrentAndAfter","isLiveEditEnabled","liveEdit","zIndex","lineHeight","DocumentInspectorHeader","closeButtonLabel","forwardedAs","onClose","DocumentInspectorPanel","closeInspector","features","handleClose","Component","component","resizablePanes","Resizable","debounce","func","wait","immediate","timeout","args","timestamp","later","last","debounced","callNow","debounce_1","md5omatic_1","md5omatic","x","str2blks_MD5","d","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","hex_chr","bitOR","lsb","msb31","bitXOR","bitAND","y","lsw","msw","num","j","nblk","blks","rol","cnt","cmn","q","uid","isPrimitive","Highlighter","highlight","highlightStart","highlightLength","highlightString","part","isObject","PATH_PREFIX","Leaf","__publicField","label","root","inputId","id2","onLabelClick","items","keys","properties","verboseShowOriginal","isExpanded","interactiveLabel","getOriginal","childPrefix","shouldGetOriginal","getLeafKey","originalValue","isKey","InteractiveLabel","prevProps","cn","keypath","hash","md5OMatic","SearchBar","onSearchChange","evt","isEmpty","object","getFilterer","memoize","opts","subquery","matches","contains","pair","haystack","needle","fn","lastData","lastOptions","lastResult","PATH_DELIMITER","integer","lens","segment","defaultValidateQuery","defaultFilterOptions","JsonInspector","rawData","className","filterOptions","validateQuery","isQueryValid","isNotFound","Search","nextProps","prevState","filterer","STRUCTURE_TOOL_NAMESPACE","useStructureToolSetting","namespace","defaultValue","keyValueStore","useKeyValueStore","keyValueStoreKey","getKey","value_0","newValue","setKey","VIEW_MODE_PARSED","VIEW_MODE_RAW","VIEW_MODES","lru","LRU","maxSize","keyPath","cached","isRecord","toggleExpanded","selectElement","sel","getSelection","range","createRange","removeAllRanges","selectNodeContents","addRange","select","currentTarget","maybeSelectAll","keyCode","ctrlKey","isDocumentLike","isString","JSONInspectorWrapper","fonts","code","family","sizes","fontSize","syntax","property","constant","string","boolean","number","target","handleChange","TextInput","SearchIcon","InspectDialog","onInspectClose","dialogIdPrefix","viewModeId","onViewModeChange","viewMode","setParsedViewMode","setRawViewMode","bottom","Tab","TabList","outline","ignoreCase","TabPanel","Banner","Icon","rest","paddingY","DeletedDocumentBanners","isDeleted","isDeleting","isDraftPerspective","ArchivedReleaseBanner","DeletedDocumentBanner","restore","useDocumentOperation","navigateIntent","execute","handleRestore","ReadOnlyIcon","DocumentRemoveIcon","DeprecatedDocumentTypeBanner","isDeprecatedSchemaType","deprecated","ErrorOutlineIcon","AskToEditDialogOpened","defineEvent","AskToEditRequestSent","MAX_NOTE_LENGTH","RequestPermissionDialog","onRequestSubmitted","telemtry","useTelemetry","useProjectId","apiVersion","client","zOffset","useZIndex","isSubmitting","setIsSubmitting","note","setNote","msgError","setMsgError","hasTooManyRequests","setHasTooManyRequests","hasBeenDenied","setHasBeenDenied","adminRole","roles","requestedRole","method","body","requestUrl","then","log","err","response","errMessage","finally","onSubmit","fullscreen","role_0","appliesToUsers","LOADING_STATE","EMPTY_STATE","DECLINED_STATE","PENDING_STATE","EXPIRED_STATE","useRoleRequestsStatus","checkRoleRequests","checkRoleRequests$","requests","projectRequests","resourceId","declinedRequest","isAfter","addWeeks","Date","createdAt","isBefore","InsufficientPermissionBanner","requiredPermission","roleRequestStatus","requestStatusLoading","requestStatusError","requestSent","setRequestSent","requestPending","currentUserRoles","isOnlyViewer","showRequestPermissionDialog","setShowRequestPermissionDialog","listFormat","useListFormat","telemetry","roleTitles","formatToParts","Roles","ReferenceChangedBanner","replaceCurrent","routerReferenceId","parentGroup","parentSibling","parentId","hasHistoryOpen","rev","parentRefPath","pathFromString","referenceInfoObservable","parentRefPathSegment","keyedSegmentIndex","unstable_observePathsDocumentPair","debounceTime","availability","pathGet","_ref","referenceInfo","handleReloadReference","available","SyncIcon","ArchivedReleaseDocumentBanner","handleGoBack","historyEvent","since","VersionBadge","getVersionInlineBadge","Image","img","CANVAS_IMAGE_URL","CANVAS_APP_NAME","CanvasPopoverContent","useClickOutsideEvent","ComposeSparklesIcon","Heading","LaunchIcon","CanvasLinkedBannerContent","open","setOpen","documentVariantType","getDocumentVariantType","variantText","togglePopover","Popover","CanvasLinkedBanner","companionDoc","navigateToCanvas","useNavigateToCanvasDoc","canvasDocumentId","CreateLinkedBanner","documentLinkedBannerContent","CreateLinkedBannerContent","useSanityCreateConfig","getSanityCreateLinkMetadata","createLinkMetadata","TOAST_DELAY","DocumentNotInReleaseBanner","currentRelease","isScheduledRelease","LATEST","createVersion","useVersionOperations","versionCreateState","setVersionCreateState","handleAddToRelease","lastUpdate","now","useCurrentTime","useConditionalToast","getTime","updateIntervalMs","currentTime","setCurrentTime","intervalId","setInterval","clearInterval","ResolvedLiveEdit","DraftLiveEditBanner","isPublishing","setPublishing","isDiscarding","setDiscarding","publish","discardChanges","liveEditResolveType","handlePublish","handleDiscard","OpenReleaseToEditBanner","isPinnedDraftOrPublished","onlyHasVersions","useOnlyHasVersions","OpenReleaseToEditBannerInner","setPerspective","useSetPerspective","currentVersion","documentVersionsTitleList","version_0","handleGoToEdit","VersionInlineBadge","RevisionNotFoundBanner","revisionNotFound","ScheduledReleaseBanner","date","UnpublishedDocumentBanner","willBeUnpublished","isGoingToUnpublish","UnpublishIcon","TitleContainer","heading","FormHeader","isSingleton","__experimental_formPreviewTitle","ev","FormView","margins","openPath","isLocked","transactionSyncLock","documentEvents","tap","prepareMutationEvent","prepareRebaseEvent","hasRev","_rev","patches","handleInitialValue","useEffectEvent","formRef","setFormRef","focusedFirstDescendant","setFocusedFirstDescendant","focusFirstDescendant","isReadOnly","readOnly","Spinner","PresenceOverlay","mutations","mut","patch","fromMutationPatches","remotePatches","remoteMutations","localPatches","localMutations","DocumentHeaderTabs","activeViewId","views","tabPanelId","view","DocumentHeaderTab","viewId","setView","DocumentHeaderTitle","FavoriteToggle","documentExists","isFavorited","isReady","favorite","unfavorite","useManageFavorite","StarFilledIcon","StarIcon","DocumentPanelSubHeader","activeWorkspace","useActiveWorkspace","publishedDocId","showTabs","showBackButton","ArrowLeftIcon","CapabilityGate","favoriteToggle","DocumentBox","ScrollContainer","$disabled","DocumentPanel","footerHeight","headerHeight","isInspectOpen","setDocumentPanelPortalElement","footer","isPermissionsLoading","isSanityCreateLinked","showCreateBanner","parentPortal","usePortal","_portalElement","documentScrollElement","setDocumentScrollElement","formContainerElement","activeView","splitPanes","formViewHidden","ActiveViewComponent","historical","activeViewNode","isLiveEdit","scrollTo","inspectDialog","showInspector","isSystemBundle","isPinnedDraftOrPublish","isNewDocument","banners","showFormView","_DEBUG","freeze","LOADING_PANE","DOCUMENT_PANEL_PORTAL_ELEMENT","POPOVER_FALLBACK_PLACEMENTS","DIALOG_WIDTH_TO_UI_WIDTH","small","medium","large","full","ConfirmDialog","dialog","referenceElement","ConfirmDialogContent","cancelButtonIcon","cancelButtonText","confirmButtonIcon","confirmButtonText","isTopLayer","useLayer","useGlobalKeyDown","Grid","ModalDialog","showCloseButton","PopoverDialog","PopoverDialogContent","DocumentActionPortalProvider","ActionStateDialog","modalId","unknownModal","console","ActionDialogWrapper","actionStates","actionIndex","setActionIndex","currentAction","ActionMenuButton","idPrefix","setReferenceElement","preventOverflow","popoverProps","actionState","ActionMenuListItem","renderActionDialog","onHandle","String","replace","tooltipProps","toUpperCase","DISABLED_REASON_TITLE_KEY","NOTHING_TO_DELETE","NOT_READY","DeleteAction","onComplete","setIsDeleting","paneSetIsDeleting","deleteOp","isConfirmDialogOpen","setConfirmDialogOpen","handleCancel","handleConfirm","handle","useDocumentPairPermissions","TrashIcon","DISABLED_REASON_KEY","NO_CHANGES","NOT_PUBLISHED","DiscardChangesAction","isPublished","ResetIcon","NOTHING_TO_DUPLICATE","DuplicateAction","mapDocument","duplicate","isDuplicating","setDuplicating","dupeId","uuid","duplicateSuccess","firstValueFrom","operationEvents","HistoryRestoreAction","revision","isRevisionInitial","isRevisionLatest","RevertIcon","DocumentPublished","LIVE_EDIT_ENABLED","ALREADY_PUBLISHED","publishedAt","AlreadyPublished","useTemporalPhrase","timeSincePublished","useRelativeTime","PublishAction","publishState","setPublishState","validationStatus","useValidationStatus","syncState","useSyncState","changesOpen","isValidationErrorMarker","hasValidationErrors","publishScheduled","setPublishScheduled","isSyncing","isValidating","_updatedAt","hasDraft","doPublish","validationComplete","didPublish","nextState","publishedImmediately","previouslyPublished","PublishIcon","UnpublishAction","unpublish","isDraft","DocumentStatusBarActionsInner","showMenu","__internal_tasks","useSource","firstActionState","menuActionStates","buttonElement","setButtonElement","Hotkeys","showFirstActionButton","isSanityDefinedAction","sideMenuItems","footerAction","DocumentStatusBarActions","allActions","isInitialValueLoading","initialValueResolved","renderDocumentStatusBarActions","HistoryStatusBarActions","revisionId","isRestoreAction","historyActions","toLowerCase","useChipScrollPosition","containerRef","showGradient","setShowGradient","checkOverflow","container","scrollWidth","clientWidth","scrollLeft","isAtEnd","setupObservers","container_0","IntersectionObserver","entry","isIntersecting","lastChip","observe","observer_0","disconnect","TooltipContent","intendedPublishAt","DATE_TIME_FORMAT","dateStyle","timeStyle","DocumentPerspectiveList","dateTimeFormat","useDateTimeFormat","handlePerspectiveChange","perspective","isPublishedChipDisabled","getReleaseChipState","isReleaseHistoryMatch","isPublishSelected","isDraftSelected","displayedId","isDraftDisabled","VersionChip","format","menuReleaseId","releasesLoading","fromRelease","isVersion","releaseState","HorizontalScroller","getTheme_v2","$showGradient","rgba","DocumentPanelHeader","_props","onMenuAction","onPaneClose","onPaneSplit","unstable_languageFilter","hasGroupSiblings","useFieldActions","scrollContainerRef","menuButtonNodes","showSplitPaneButton","splitViews","showSplitPaneCloseButton","showPaneGroupCloseButton","renderPaneActions","DocumentPanelHeaderActionDialogDeferred","renderedActions","LanguageFilterComponent","SplitVerticalIcon","useDeferredValue","DocumentPanelHeaderActionDialog","SpacerButton","size","pointerEvents","visibility","BADGE_TONES","primary","success","warning","danger","DocumentBadgesInner","DocumentBadgesDeferred","DocumentBadges","renderDocumentBadges","badge","Badge","whiteSpace","TIMELINE_ICON_COMPONENTS","create","discardDraft","initial","editDraft","EditIcon","editLive","getTimelineEventIconComponent","hideScrollbarOnExpand","listWrapper","getElementById","TIMELINE_LIST_WRAPPER_ID","firstChildren","scrollHeight","clientHeight","currentStyle","getComputedStyle","overflowY","FlipIcon","ChevronLeftIcon","ExpandableTimelineItemButton","stopPropagation","handleExpandClick","StackWrapper","ListWrapper","$maxHeight","$visible","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStack","maxLength","userIds","withTooltip","userId","UserAvatar","AvatarStack","IconBox","$color","avatar","TIMELINE_ITEM_EVENT_TONE","withinSelection","RELATIVE_TIME_OPTIONS","minimal","NameSkeleton","Skeleton","font","UserLine","user","useUser","AvatarSkeleton","collaborators","TimelineItem","chunk","optionsMenu","endTimestamp","IconComponent","authors","authorUserIds","collaboratorsUsersIds","isSelectable","dateFormat","updatedTimeAgo","parsedDate","formattedDate","formattedTimestamp","isNonPublishChunk","isPublishChunk","getPreviousPublishAction","chunks","previousPublish","addChunksMetadata","forEach","Timeline","hasMoreChunks","lastChunk","selectedChunk","onLoadMore","listMaxHeight","selectedChunkId","chunksWithMetadata","expandedParents","setExpandedParents","filteredChunks","chunk_1","handleExpandParent","prev_0","selectedIndex","handleSelectChunk","timelineChunk","renderItem","activeIndex","CommandList","TimelineError","versionError","TextWithTone","TIMELINE_MENU_PORTAL","TimelineMenu","setTimelineRange","timelineError","timelineStore","button","setButton","popoverRef","setPopoverRef","useTimelineSelector","realRevChunk","sinceTime","handleOpen","handleGlobalKeyDown","focus","selectRev","revChunk","sinceId","revId","findRangeForRev","selectSince","sinceChunk","findRangeForSince","handleLoadMore","loadMore","formatParams","revLabel","sinceLabel","buttonLabel","StyledMotionPath","motion","Circle","Arrows","Checkmark","rotateAnimation","keyframes","RotateGroup","syncing","scale","transition","saved","changes","circle","strokeDasharray","strokeDashoffset","arrows","checkmark","pathLength","AnimatedStatusIcon","STATUS_DICTIONARY","i18nKey","DocumentStatusPulse","currentStatus","MotionButton","MotionBox","ButtonSkeleton","DocumentStatusButton","author","translationKey","onHistoryOpen","onHistoryClose","relativeTime","FallbackStatus","createDocumentVersion","editDocumentVersion","EventsStatus","events","useEvents","TimelineStatus","TIMELINE_ITEM_I18N_KEY_MAPPING_LEGACY","SYNCING_TIMEOUT","SAVED_TIMEOUT","DocumentStatusLine","setStatus","eventsEnabled","beta","eventsAPI","lastUpdated","timerId","timerId_0","AnimatePresence","StatusText","RevisionStatusLine","RestoreIcon","useResizeObserver","onResize","resizeObserver","unobserve","CONTAINER_BREAKPOINT","AnimatedCard","DocumentStatusBar","actionsBoxRef","onDocumentChange","CreateLinkedActions","documentLinkedActions","showingRevision","setCollapsed","contentRect","handleResize","shouldRender","flexShrink","marginLeft","KeyboardShortcutResponder","actionsBoxElement","onActionStart","onKeyDown","rootRef","As","activeAction","matchingStates","isHotkey","matchingState","handleKeyDown","DocumentActionShortcuts","setActiveIndex","renderDocumentActionShortcuts","getInspectorItems","currentInspector","hasValue","inspectorMenuItems","getInspectItem","JsonIcon","getCompareVersionsItem","documentIdStack","getProductionPreviewItem","previewUrl","EarthAmericasIcon","getMenuItems","inspectorItems","LinkIcon","DocumentLayoutError","DIALOG_PROVIDER_POSITION","DocumentLayoutFooter","documentPanelPortalElement","setFooterElement","setActionsBoxElement","zOffsets","portalElements","StyledChangeConnectorRoot","ChangeConnectorRoot","inspectOpen","paneParams","footerElement","headerElement","setHeaderElement","useGlobalCopyPasteElementHandler","setInspectorMenuItems","rootFieldActionNodes","setRootFieldActionNodes","footerRect","headerRect","handleKeyUp","onConnectorSetFocus","GetFormValueProvider","FieldActionsResolver","FieldActionsProvider","paneDialog","changesInspectorTab","useDocumentLayoutComponent","DocumentURLCopied","getInitialValueTemplateOpts","payload","panePayload","structureNodeTemplate","templateName","urlTemplate","typeTemplates","useDocumentPaneInitialValue","paneOptions","templateParameters","initialValueRaw","useInitialValue","initialValue","useDocumentPaneInspector","inspectorsResolver","inspectorName","setInspectorName","inspectParamRef","historyInspector","closeInspectorName","nextInspectorName","nextInspector","currentParams","onOpen","handleHistoryClose","handleHistoryOpen","reviewChanges","toggleLegacyInspect","toggle","omit","handleLegacyInspectClose","handleInspectorAction","usePreviewUrl","resolveProductionUrl","BehaviorSubject","subject","asObservable","DocumentPaneProvider","onFocusPath","forcedVersion","historyStore","store","timelineReady","revisionDocument","onOlderRevision","sinceDocument","isPristine","lastNonDeletedRevId","setDocumentMeta","useCopyPaste","documentActions","documentBadges","unstable_fieldActions","fieldActionsResolver","languageFilterResolver","setPaneParams","viewsProp","documentIdRaw","buildStudioUrl","diffViewRouter","getIsDeleted","getComparisonValue","getIsReadOnly","isPerspectiveWriteable","getDisplayed","formReady","formStateRef","initialFocusPath","getFormDocumentValue","getDocumentVersionType","actionsPerspective","documentActionsProps","versionType","languageFilter","newSince","newRev","handlePaneClose","closeCurrent","handlePaneSplit","duplicateCurrent","handleMenuAction","copyUrl","coreUi","startsWith","restParams","pathFromUrl","resolveKeyedPath","DocumentEventsPane","usePaneOptions","showingPublishedOnDraft","eventsStore","useEventsStore","sinceRevision","historyStoreProps","PerspectiveProvider","EventsProvider","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","DocumentPaneWithLegacyTimelineStore","setTimelineError","onError","useTimelineStore","revTime","sinceAttributes","timelineDisplayed","_temp5","_temp6","_temp7","state_1","state_2","state_3","state_4","state_5","DocumentPaneProviderWrapper","useResetHistoryParams","isMounted","_perspective","preserveRev","updateHistoryParams","DocumentPane","parentSourceName","CopyPasteProvider","DocumentPaneInner","SourceProvider","resolveNewDocumentOptions","isLoaded","isDocumentLoaded","useDocumentType","mergeDocumentType","providerProps","handleEditReference","childParams","routerPanesStateLength","activePath","ReferenceInputOptionsProvider","PARTIAL_PAGE_LIMIT","FULL_LIST_LIMIT","DEFAULT_ORDERING","by","field","EMPTY_RECORD","RootBox","$opacity","CommandListBox","SKELETON_ITEMS","LoadingView","DocumentListPaneContent","childItemId","isRetrying","autoRetry","filterIsSimpleTypeConstraint","hasMaxItems","hasSearchQuery","isLazyLoading","muted","isConnected","retryCount","canRetry","loadingVariant","onEndReached","onRetry","paneTitle","searchInputElement","showIcons","setShouldRender","handleEndReached","isLastItem","showSpinner","showMaxItemsMessage","limit","noDocumentsContent","isOnline","onLine","ErrorActions","mainContent","removePublishedWithDrafts","collate","hasPublished","applyOrderingFunctions","order","orderBy","mapWith","fieldType","tryResolveSchemaTypeForPath","fieldExtendsType","jsonType","baseType","pathSegments","PathUtils","getFieldTypeByName","isKeySegment","isIndexSegment","memberType","otherType","isReferenceSchemaType","refType","otherRefType","to","fieldName","fields","ofType","findTypes","base","types","isSplat","findStaticTypesInFilter","swr","createSWR","listenSearchQuery","groqFilter","searchQuery","staticTypeNames","maxFieldDepth","searchStrategy","sortBy","extendedProjection","events$","defer","includeAllVersions","includeResult","mergeMap","isFirst","throwError","share","welcome$","mutationAndReconnect$","partition","swrKey","fiilter","asyncScheduler","leading","trailing","exhaustMapWithTrailing","typeNames","getSearchableTypes","search","createSearch","strategy","maxDepth","doFetch","__unstable_extendedProjection","comments","skipSortByScore","hits","hit","scan","connected","fromCache","INITIAL_QUERY_STATE","isLoadingFullList","isRetriableError","ChannelError","ServerError","ClientError","useDocumentList","searchFilter","paramsProp","sortOrder","useWorkspace","useSearchMaxFieldDepth","typeNameFromFilter","onRetry$","observableCallback","onFetchFullList$","onLoadFullList","queryResults$","listenSearchQueryArgs","partialList$","fullList$","withLatestFrom","take","result_0","result_1","takeUntil","catchWithCount","lastError","caught$","safeError","retries","NEVER","retrying","nonErrorThrownWarning","thrown","rotate","fadeIn","AnimatedSpinnerIcon","SpinnerIcon","SubtleSpinnerIcon","DelayedSubtleSpinnerIcon","DocumentListPane","sortOrderRaw","displayOptions","useShallowUnique","staticTypes","setSearchQuery","searchInputValue","setSearchInputValue","setSearchInputElement","sortWithOrderingFn","documentListIsLoading","trim","handleQueryChange","useObservableEvent","event$","handleClearSearch","handleSearchKeyDown","enableSearchSpinner","setEnableSearchSpinner","textInputIcon","useReconnectingToast","initialValueTemplates","setLayout","setSortOrder","StructurePaneHeader","createColumnHelper","accessor","column","functionalUpdate","updater","makeStateUpdater","instance","old","isFunction","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","getDeps","deps","depArgs","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","createCell","row","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","_options$id","leafHeaders","recurseHeader","h","Headers","allColumns","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","rowIndex","subRows","_row$getValue","parentRows","currentRow","parentRow","allCells","ColumnFaceting","includesString","filterValue","_filterValue$toString","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","defaultState","_table$initialState$c","_table$initialState","_leafRows","childRows","nextValue","extent","mean","leafRows","median","values","mid","nums","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","ColumnOrdering","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","ColumnVisibility","childColumns","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFilteredRowModel","columnFilters","globalFilter","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","filterableIds","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","filterRowsImpl","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","flexRender","Comp","isReactComponent","React","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","DocumentSheetListSelect","selectedAnchor","setSelectedAnchor","meta","handleOnClick","shiftKey","shiftClickIndex","lowerIndex","upperIndex","additionalSelectedRows","getRowModel","currentSelectedRows","getSelectedRowModel","setRowSelection","nextSelectedRows","isRowCurrentlySelected","getIsSelected","toggleSelected","Checkbox","paddingLeft","getCanSelect","useDocumentSheetListContext","DocumentSheetListContext","DocumentSheetListProvider","selectedAnchorCellDetails","setSelectedAnchorCellDetails","selectedRangeCellIndexes","setSelectedRangeCellIndexes","clearAndSetFocusSelection","nextAnchorDetails","activeElement","HTMLElement","blur","resetFocusSelection","changeSelectionColumn","visibleColumns","getVisibleLeafColumns","columnIndexAfterMove","colId","changeSelectionRange","previousSelection","anchorIndex","getNextIndex","startingIndex","firstSelectedIndex","lastIndexSelected","nextIndex","setSelectedAnchorCell","handleEscapePress","nextAnchorCellDetails","handleUpDownKey","isShiftKey","offset","newSelectedCellRowIndex","handleAnchorKeydown","handleAnchorClick","focusAnchorCell","anchorCellDetails","getStateByCellId","submitFocusedCell","DataCell","td","PinnedDataCell","SheetListCellInner","getValue","cellId","renderValue","setRenderValue","isDirty","setIsDirty","inputRef","cellState","handleOnFocus","patchDocument","handleProgrammaticFocus","HTMLInputElement","handleOnMouseDown","detail","handleOnEnterDown","handleOnChange","handleOnBlur","handlePaste","clipboardData","getData","handleCopy","getBorderStyle","inputProps","Select","boxShadow","SheetListCell","isPinned","getIsPinned","Cell","borderWidth","getIsLastColumn","getStart","borderRight","getSize","getContext","VISIBLE_COLUMN_LIMIT","PreviewCell","displayValue","columnHelper","SUPPORTED_FIELDS","getColsFromSchemaType","parentalField","tableColumns","nextCol","enableHiding","info","isObjectSchemaType","isAccessorKeyColumnDef","isGroupColumnDef","cols","useDocumentSheetColumns","documentSchemaType","display","getIsSomeRowsSelected","getToggleAllPageRowsSelectedHandler","info_0","initialColumnsVisibility","accCols","countAllowedVisible","visibilityKey","ColumnsControl","isVisibleLimitReached","getCanHide","setInitialColumns","resetColumnVisibility","handleColumnOnChange","toggleVisibility","getColumnVisibilityDisabled","isColumnVisible","getIsVisible","isSingleColumnVisible","maxHeight","getAllLeafColumns","column_2","SearchContainer","DocumentSheetListFilter","useSearchState","filtersVisible","SearchHeader","Filters","Header","th","PinnedHeader","HoverMenu","DocumentSheetListHeader","headerTitle","HeaderTag","canShowHeaderMenu","boxSizing","EllipsisHorizontalIcon","DocumentSheetListPaginator","setPageIndex","getCanPreviousPage","DoubleChevronLeftIcon","previousPage","getState","getPageCount","nextPage","getCanNextPage","DoubleChevronRightIcon","setPageSize","Number","createDocumentsSet","documentsById","documentsReducer","nextDocumentResult","restDocuments","updatedDocument","LISTEN_OPTIONS","useDocumentSheetListStore","QUERY","dispatch","useReducer","setIsLoading","res","initialFetch","handleListenerEvent","err_0","listener$","uniques","dataAsArray","useDocumentSheetList","PaneContainer","TableContainer","DocumentSheetListPaneInner","totalRows","autoResetPageIndex","columnPinning","columnVisibility","getRowId","fieldId","renderRow","getVisibleCells","createElement","rowsCount","getHeaderGroups","DocumentSheetListPane","schemaTypeName","isDocumentSchemaType","SearchProvider","addSelectedStateToMenuItems","isEqual","setPrevious","shallowEquals","defaultLayout","defaultOrdering","sourceName","defaultSortOrder","menuItemsWithSelectedState","isSheetListLayout","LiveEditBadge","activePanes","setActivePanes","getIntentState","editDocumentId","canHandleIntent","getPaneParams","ChangesInspector","showChanges","scrollRef","setScrollRef","diff","selectionState","isComparingCurrent","structureT","FieldWrapper","rootDiff","showFromValue","documentContext","ChangeFieldWrapper","NoChanges","ChangeList","DocumentChangeContext","getIsSelectable","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","EventTimelineItem","cursor","Event","PublishedEventMenu","portalContext","versionId","versionRevisionId","handleOpenReleaseDocument","handleOpenDraftDocument","isMenuDisabled","RELEASES_INTENT","textDecoration","children_0","releaseTitle","children_1","fallbackPlacements","children_2","TimelineItemWrapper","CHILDREN_ITEMS_VARIANTS","animate","exit","ITEM_HEIGHT","EventsTimeline","allEvents","hasMoreEvents","selectedEventId","fetchEventChildren","selectedEvent","expandingParents","setExpandingParents","event_0","isCreateDocumentVersionEvent","isEditDocumentVersionEvent","isExpanding","prev_1","renderOptionsMenu","isPublishDocumentVersionEvent","creationEvent","showExpandingLoader","isLastEvent","EventsTimelineMenu","nextCursor","eventsError","findRangeForRevision","loadMoreEvents","expandEvent","revEvent","sinceEvent","SpinnerContainer","DIFF_INITIAL_VALUE","CompareWithPublishedView","diffInput","wrap","EventsInspector","getChangesList","changesList$","diffLoading","diffError","toEvent","sinceEvents","sameRevisionSelected","ChangesError","SameRevisionSelected","EventsSelector","showList","listHeight","setListHeight","getScrollerRef","initialLoad","HistorySelector","FadeInFlex","TABS","isValidTab","tab","ChangesTabs","parentRef","setParentRef","paneRouterTab","setPaneRouterTab","t29","t30","t31","changesInspector","getPathTitles","f","itemType","_key","MARKER_ICON","MARKER_TONE","ValidationInspector","marker","ValidationCard","errorInfo","setErrorInfo","level","DocumentNodePathBreadcrumbs","pathTitles","fontWeight","validationMarkers","hasErrors","isValidationError","hasWarnings","isValidationWarning","CheckmarkCircleIcon","validationInspector","legacyEditParamsToState","decodeURIComponent","encodePanesSegment","encodeChunks","encodeURIComponent","legacyEditParamsToPath","toState","pathSegment","parsePanesSegment","toPath","router","route","intents","transform","panePattern","isParam","test","isPayloadLike","exclusiveParams","isTruthy","parseChunks","sibling","tryParseBase64Payload","firstSibling","paneIsFirstSibling","sameAsFirst","encodedPayload","encodeJsonParams","encodedParams","valueFromFirstSibling","parseOldPanesSegment","restOfSiblings","buffer","match","payloadChunk","tryParsePayload","decodeJsonParams","definePlugin","MasterDetailIcon","prevActions","prevBadges","prevInspectors","tools","lazy","canHandleCreateIntent","canHandleEditIntent","controlsDocumentTitle","__internalApplicationType","bundles","structureUsEnglishLocaleBundle"],"mappings":"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","x_google_ignoreList":[46,72,73,74,167,168]}
|