sanity 3.93.1-next.23.7cabaeaf78 → 3.93.1-next.27.be182aaafa
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 +10 -10
- package/dist/1-yrhfgGSy.mjs +0 -5
- package/dist/1-yrhfgGSy.mjs.map +0 -1
- package/dist/BackLink-BjbAxrJO.mjs +0 -2
- package/dist/BackLink-BjbAxrJO.mjs.map +0 -1
- package/dist/BehaviorSubject-lT90ntN-.mjs +0 -2
- package/dist/BehaviorSubject-lT90ntN-.mjs.map +0 -1
- package/dist/BroadcastDisplayedDocument-NLP-sZ3E.mjs +0 -2
- package/dist/BroadcastDisplayedDocument-NLP-sZ3E.mjs.map +0 -1
- package/dist/Delay-BF0O9UCI.mjs +0 -2
- package/dist/Delay-BF0O9UCI.mjs.map +0 -1
- package/dist/DisplayedDocumentBroadcaster-bVq7qjFz.mjs +0 -2
- package/dist/DisplayedDocumentBroadcaster-bVq7qjFz.mjs.map +0 -1
- package/dist/DocumentPane-B9qqshkT.mjs +0 -263
- package/dist/DocumentPane-B9qqshkT.mjs.map +0 -1
- package/dist/EmptyError-BLRYgvfy.mjs +0 -2
- package/dist/EmptyError-BLRYgvfy.mjs.map +0 -1
- package/dist/LiveQueries-D9bwoNKb.mjs +0 -2
- package/dist/LiveQueries-D9bwoNKb.mjs.map +0 -1
- package/dist/LoadingPane-fVJxEQpb.mjs +0 -10
- package/dist/LoadingPane-fVJxEQpb.mjs.map +0 -1
- package/dist/MenuGroup-DZWX1dWR.mjs +0 -2
- package/dist/MenuGroup-DZWX1dWR.mjs.map +0 -1
- package/dist/MenuItem-nwzB8TNk.mjs +0 -8
- package/dist/MenuItem-nwzB8TNk.mjs.map +0 -1
- package/dist/Observable-B8U6mp9h.mjs +0 -4
- package/dist/Observable-B8U6mp9h.mjs.map +0 -1
- package/dist/PaneContainer-BqULSwD0.mjs +0 -109
- package/dist/PaneContainer-BqULSwD0.mjs.map +0 -1
- package/dist/PaneHeaderActions-BwRjxrbU.mjs +0 -2
- package/dist/PaneHeaderActions-BwRjxrbU.mjs.map +0 -1
- package/dist/PaneItem-CXeBMzOt.mjs +0 -2
- package/dist/PaneItem-CXeBMzOt.mjs.map +0 -1
- package/dist/PostMessageDocuments-BV62lQ7C.mjs +0 -2
- package/dist/PostMessageDocuments-BV62lQ7C.mjs.map +0 -1
- package/dist/PostMessagePerspective-CFiQ6IFc.mjs +0 -2
- package/dist/PostMessagePerspective-CFiQ6IFc.mjs.map +0 -1
- package/dist/PostMessagePreviewSnapshots-5oC2mIn1.mjs +0 -2
- package/dist/PostMessagePreviewSnapshots-5oC2mIn1.mjs.map +0 -1
- package/dist/PostMessageRefreshMutations-DdxC6YP_.mjs +0 -2
- package/dist/PostMessageRefreshMutations-DdxC6YP_.mjs.map +0 -1
- package/dist/PostMessageSchema-Bcs4xG5C.mjs +0 -2
- package/dist/PostMessageSchema-Bcs4xG5C.mjs.map +0 -1
- package/dist/PostMessageTelemetry-LUBYudOJ.mjs +0 -2
- package/dist/PostMessageTelemetry-LUBYudOJ.mjs.map +0 -1
- package/dist/PresentationToolGrantsCheck-CgJU8JlK.mjs +0 -100
- package/dist/PresentationToolGrantsCheck-CgJU8JlK.mjs.map +0 -1
- package/dist/QRCodeSVG-CxOJrjO_.mjs +0 -2
- package/dist/QRCodeSVG-CxOJrjO_.mjs.map +0 -1
- package/dist/Refractor-UCi38mb-.mjs +0 -5
- package/dist/Refractor-UCi38mb-.mjs.map +0 -1
- package/dist/ReplaySubject-CHMGH8uo.mjs +0 -2
- package/dist/ReplaySubject-CHMGH8uo.mjs.map +0 -1
- package/dist/SourceContext-D53WuQKs.mjs +0 -2
- package/dist/SourceContext-D53WuQKs.mjs.map +0 -1
- package/dist/StructureToolProvider-C8VLdhP8.mjs +0 -2
- package/dist/StructureToolProvider-C8VLdhP8.mjs.map +0 -1
- package/dist/Subject-BUseddH4.mjs +0 -2
- package/dist/Subject-BUseddH4.mjs.map +0 -1
- package/dist/Tooltip-JnkpPrKf.mjs +0 -4
- package/dist/Tooltip-JnkpPrKf.mjs.map +0 -1
- package/dist/TooltipDelayGroupProvider-DFmNEvMS.mjs +0 -2
- package/dist/TooltipDelayGroupProvider-DFmNEvMS.mjs.map +0 -1
- package/dist/ViteDevServerStopped-XKSHzTxM.mjs +0 -2
- package/dist/ViteDevServerStopped-XKSHzTxM.mjs.map +0 -1
- package/dist/_createContext.mjs +0 -2
- package/dist/_createContext.mjs.map +0 -1
- package/dist/_singletons.mjs +0 -2
- package/dist/_singletons.mjs.map +0 -1
- package/dist/asserters-C8hxedkt.mjs +0 -2
- package/dist/asserters-C8hxedkt.mjs.map +0 -1
- package/dist/async-HS7jgwe2.mjs +0 -2
- package/dist/async-HS7jgwe2.mjs.map +0 -1
- package/dist/browser-Ca2COO1i.mjs +0 -14
- package/dist/browser-Ca2COO1i.mjs.map +0 -1
- package/dist/browser-oKMlC993.mjs +0 -2
- package/dist/browser-oKMlC993.mjs.map +0 -1
- package/dist/chunk-DSR6Ryem.mjs +0 -1
- package/dist/combineLatest-CFPJgUfN.mjs +0 -2
- package/dist/combineLatest-CFPJgUfN.mjs.map +0 -1
- package/dist/concat-BWArfBxD.mjs +0 -2
- package/dist/concat-BWArfBxD.mjs.map +0 -1
- package/dist/concatMap-DZrL7ZKn.mjs +0 -2
- package/dist/concatMap-DZrL7ZKn.mjs.map +0 -1
- package/dist/constants-ChSQUPYh.mjs +0 -5
- package/dist/constants-ChSQUPYh.mjs.map +0 -1
- package/dist/constants-ClLucOHG.mjs +0 -10
- package/dist/constants-ClLucOHG.mjs.map +0 -1
- package/dist/csm-BGmdCiS5.mjs +0 -3
- package/dist/csm-BGmdCiS5.mjs.map +0 -1
- package/dist/dateTimestampProvider-Bu3RH21w.mjs +0 -2
- package/dist/dateTimestampProvider-Bu3RH21w.mjs.map +0 -1
- package/dist/debounceTime-ZjGvEiAc.mjs +0 -2
- package/dist/debounceTime-ZjGvEiAc.mjs.map +0 -1
- package/dist/desk.mjs +0 -2
- package/dist/desk.mjs.map +0 -1
- package/dist/dist-B6kS-Ue1.mjs +0 -2
- package/dist/dist-B6kS-Ue1.mjs.map +0 -1
- package/dist/dist-BBJTJw5c.mjs +0 -2
- package/dist/dist-BBJTJw5c.mjs.map +0 -1
- package/dist/dist-ByxNQHyT.mjs +0 -2
- package/dist/dist-ByxNQHyT.mjs.map +0 -1
- package/dist/dist-CbgPQx6C.mjs +0 -8
- package/dist/dist-CbgPQx6C.mjs.map +0 -1
- package/dist/dist-ClpwwQr8.mjs +0 -15
- package/dist/dist-ClpwwQr8.mjs.map +0 -1
- package/dist/dist-DPyoedQR.mjs +0 -2
- package/dist/dist-DPyoedQR.mjs.map +0 -1
- package/dist/dist-DTr4N9sP.mjs +0 -2
- package/dist/dist-DTr4N9sP.mjs.map +0 -1
- package/dist/dist-DhOlFDfY.mjs +0 -2
- package/dist/dist-DhOlFDfY.mjs.map +0 -1
- package/dist/dist-Du4lGEpF.mjs +0 -2
- package/dist/dist-Du4lGEpF.mjs.map +0 -1
- package/dist/dist-gdCAZyAZ.mjs +0 -1213
- package/dist/dist-gdCAZyAZ.mjs.map +0 -1
- package/dist/dist-p4qSKgLr.mjs +0 -2
- package/dist/dist-p4qSKgLr.mjs.map +0 -1
- package/dist/fast-deep-equal-D2buQJMm.mjs +0 -2
- package/dist/fast-deep-equal-D2buQJMm.mjs.map +0 -1
- package/dist/filter-Dzj28Ftl.mjs +0 -2
- package/dist/filter-Dzj28Ftl.mjs.map +0 -1
- package/dist/first-rmXQWXXU.mjs +0 -2
- package/dist/first-rmXQWXXU.mjs.map +0 -1
- package/dist/from-1e-Bj2Xm.mjs +0 -2
- package/dist/from-1e-Bj2Xm.mjs.map +0 -1
- package/dist/getExtendedProjection-ocJy6w-1.mjs +0 -2
- package/dist/getExtendedProjection-ocJy6w-1.mjs.map +0 -1
- package/dist/getIntentState-BzHK-R2v.mjs +0 -25
- package/dist/getIntentState-BzHK-R2v.mjs.map +0 -1
- package/dist/helpers-DmN6xVrH.mjs +0 -2
- package/dist/helpers-DmN6xVrH.mjs.map +0 -1
- package/dist/i18n-DSW5BxWp.mjs +0 -2
- package/dist/i18n-DSW5BxWp.mjs.map +0 -1
- package/dist/index.browser-CKm2u9SF.mjs +0 -14
- package/dist/index.browser-CKm2u9SF.mjs.map +0 -1
- package/dist/index.browser-m6o-65PH.mjs +0 -2
- package/dist/index.browser-m6o-65PH.mjs.map +0 -1
- package/dist/index.mjs +0 -4364
- package/dist/index.mjs.map +0 -1
- package/dist/inputWrappers-B2JwUo5Q.mjs +0 -6
- package/dist/inputWrappers-B2JwUo5Q.mjs.map +0 -1
- package/dist/isObservable-D3WTlre7.mjs +0 -2
- package/dist/isObservable-D3WTlre7.mjs.map +0 -1
- package/dist/lastValueFrom-DNJfBsuL.mjs +0 -2
- package/dist/lastValueFrom-DNJfBsuL.mjs.map +0 -1
- package/dist/list-CRYGwmUP.mjs +0 -17
- package/dist/list-CRYGwmUP.mjs.map +0 -1
- package/dist/lodash-Bv9uePfP.mjs +0 -21
- package/dist/lodash-Bv9uePfP.mjs.map +0 -1
- package/dist/map-DkDssZnl.mjs +0 -2
- package/dist/map-DkDssZnl.mjs.map +0 -1
- package/dist/mapOneOrManyArgs-nKglr-Z6.mjs +0 -2
- package/dist/mapOneOrManyArgs-nKglr-Z6.mjs.map +0 -1
- package/dist/menuNodes-DfRBkUna.mjs +0 -2
- package/dist/menuNodes-DfRBkUna.mjs.map +0 -1
- package/dist/merge-DLqD1gqk.mjs +0 -2
- package/dist/merge-DLqD1gqk.mjs.map +0 -1
- package/dist/mergeMap-BhPr1e5f.mjs +0 -2
- package/dist/mergeMap-BhPr1e5f.mjs.map +0 -1
- package/dist/never-DgTZVAtg.mjs +0 -2
- package/dist/never-DgTZVAtg.mjs.map +0 -1
- package/dist/of-DHUS5V5R.mjs +0 -2
- package/dist/of-DHUS5V5R.mjs.map +0 -1
- package/dist/pane-BMyHaSp6.mjs +0 -1
- package/dist/pane-CAXJwiOS.mjs +0 -1
- package/dist/paths-Uiaz64OV.mjs +0 -2
- package/dist/paths-Uiaz64OV.mjs.map +0 -1
- package/dist/presentation.mjs +0 -12
- package/dist/presentation.mjs.map +0 -1
- package/dist/proxy-Dqw503dV.mjs +0 -2
- package/dist/proxy-Dqw503dV.mjs.map +0 -1
- package/dist/publishReplay-w0VqSlUG.mjs +0 -2
- package/dist/publishReplay-w0VqSlUG.mjs.map +0 -1
- package/dist/react-CcFWW54u.mjs +0 -2
- package/dist/react-CcFWW54u.mjs.map +0 -1
- package/dist/refractor-BE6oAO2f.mjs +0 -2
- package/dist/refractor-BE6oAO2f.mjs.map +0 -1
- package/dist/resources-B-P7yY4i.mjs +0 -2
- package/dist/resources-B-P7yY4i.mjs.map +0 -1
- package/dist/resources-BMgz3UTF.mjs +0 -2
- package/dist/resources-BMgz3UTF.mjs.map +0 -1
- package/dist/resources-C10e-Tmd.mjs +0 -2
- package/dist/resources-C10e-Tmd.mjs.map +0 -1
- package/dist/resources-C63HMln_.mjs +0 -3
- package/dist/resources-C63HMln_.mjs.map +0 -1
- package/dist/resources-QIglKpCh.mjs +0 -2
- package/dist/resources-QIglKpCh.mjs.map +0 -1
- package/dist/resources-a_EhxFoi.mjs +0 -2
- package/dist/resources-a_EhxFoi.mjs.map +0 -1
- package/dist/resources-wUgycRup.mjs +0 -2
- package/dist/resources-wUgycRup.mjs.map +0 -1
- package/dist/router.mjs +0 -2
- package/dist/router.mjs.map +0 -1
- package/dist/scan-zuMwSL6_.mjs +0 -2
- package/dist/scan-zuMwSL6_.mjs.map +0 -1
- package/dist/share-DudygGnN.mjs +0 -2
- package/dist/share-DudygGnN.mjs.map +0 -1
- package/dist/shareReplay-DNp-xAdu.mjs +0 -2
- package/dist/shareReplay-DNp-xAdu.mjs.map +0 -1
- package/dist/speakingurl-D9zTR1xM.mjs +0 -2
- package/dist/speakingurl-D9zTR1xM.mjs.map +0 -1
- package/dist/stegaClean-CF_wp2AP.mjs +0 -2
- package/dist/stegaClean-CF_wp2AP.mjs.map +0 -1
- package/dist/stegaEncodeSourceMap-sinaqym6.mjs +0 -3
- package/dist/stegaEncodeSourceMap-sinaqym6.mjs.map +0 -1
- package/dist/structure-DeitBGwm.mjs +0 -122
- package/dist/structure-DeitBGwm.mjs.map +0 -1
- package/dist/structure.mjs +0 -1
- package/dist/structureTool-C7WqcvTM.mjs +0 -11
- package/dist/structureTool-C7WqcvTM.mjs.map +0 -1
- package/dist/switchMap-Dkb8wgZy.mjs +0 -2
- package/dist/switchMap-Dkb8wgZy.mjs.map +0 -1
- package/dist/take-CsBFzexj.mjs +0 -2
- package/dist/take-CsBFzexj.mjs.map +0 -1
- package/dist/takeUntil-CFb43n44.mjs +0 -2
- package/dist/takeUntil-CFb43n44.mjs.map +0 -1
- package/dist/throttle-84hk9ct5.mjs +0 -2
- package/dist/throttle-84hk9ct5.mjs.map +0 -1
- package/dist/timer-CudmXrHS.mjs +0 -2
- package/dist/timer-CudmXrHS.mjs.map +0 -1
- package/dist/urlpattern-polyfill-CTSIY__t.mjs +0 -2
- package/dist/urlpattern-polyfill-CTSIY__t.mjs.map +0 -1
- package/dist/usePaneRouter-BnyByWgR.mjs +0 -2
- package/dist/usePaneRouter-BnyByWgR.mjs.map +0 -1
- package/dist/usePresentationNavigate-CIMnjQ3N.mjs +0 -2
- package/dist/usePresentationNavigate-CIMnjQ3N.mjs.map +0 -1
- package/dist/usePresentationParams-CK4TAdiB.mjs +0 -2
- package/dist/usePresentationParams-CK4TAdiB.mjs.map +0 -1
- package/dist/useStructureTool-DJWYs4dK.mjs +0 -86
- package/dist/useStructureTool-DJWYs4dK.mjs.map +0 -1
- package/dist/useStructureToolSetting-BmMWFoFU.mjs +0 -2
- package/dist/useStructureToolSetting-BmMWFoFU.mjs.map +0 -1
- package/dist/userComponent-C7AeZ7LF.mjs +0 -4
- package/dist/userComponent-C7AeZ7LF.mjs.map +0 -1
- package/dist/v4-jDHpYEaJ.mjs +0 -2
- package/dist/v4-jDHpYEaJ.mjs.map +0 -1
- package/dist/version-BzHQOibY.mjs +0 -2
- package/dist/version-BzHQOibY.mjs.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"structure-DeitBGwm.mjs","names":["InfoOutlineIcon","Box","Flex","Inline","rem","Text","useTranslation","styled","Tooltip","structureLocaleNamespace","ChevronWrapper","CrossDatasetReferencesDetails","details","CrossDatasetReferencesSummary","summary","Table","table","theme","sanity","space","DocumentIdFlex","OtherReferenceCount","props","$","_c","t","difference","totalCount","references","length","t0","count","t1","t2","t3","Symbol","for","t4","t5","SanityDocument","SchemaType","ReactNode","useCallback","FIXME","getPublishedId","PreviewCard","useDocumentPresence","useDocumentPreviewStore","PaneItemPreview","usePaneRouter","EMPTY_ARRAY","ReferencePreviewLinkProps","onClick","type","icon","value","ReferencePreviewLink","props","$","_c","t0","_id","t1","publishedId","documentPresence","documentPreviewStore","ReferenceChildLink","t2","name","LinkComponent","linkProps","Link","t3","t4","t5","length","t6","t7","ChevronDownIcon","CopyIcon","DocumentsIcon","UnknownIcon","WarningOutlineIcon","Box","Card","Flex","Stack","Text","useToast","useCallback","SanityDefaultPreview","Translate","useSchema","useTranslation","Button","structureLocaleNamespace","ChevronWrapper","CrossDatasetReferencesDetails","CrossDatasetReferencesSummary","DocumentIdFlex","OtherReferenceCount","Table","ReferencePreviewLink","ReferringDocuments","DeletionConfirmationDialogBodyProps","Required","documentTitle","React","ReactNode","action","onReferenceLinkClick","ConfirmDeleteDialogBody","t0","$","_c","crossDatasetReferences","internalReferences","totalCount","datasetNames","hasUnknownDatasetNames","schema","toast","t","t1","item","type","get","_type","documentId","_id","renderPreviewItem","t2","DocumentTitle","t3","T0","T1","T2","t10","t11","t12","t4","t5","t6","t7","t8","t9","normalizedDatasetNames","datasetSubtitle","count","length","datasets","join","context","t13","Symbol","for","t14","t15","t16","references","map","item_0","borderTop","undefined","documentCount","minWidth","filter","_temp","t17","index","projectId","datasetName","content","navigator","clipboard","writeText","catch","push","status","title","reference","ClientError","SanityClient","useMemo","EMPTY","fromEvent","Observable","of","timer","catchError","distinctUntilChanged","map","shareReplay","startWith","switchMap","AvailabilityResponse","createHookFromObservableFactory","DEFAULT_STUDIO_CLIENT_OPTIONS","DocumentStore","getDraftId","getPublishedId","useClient","useDocumentStore","isClientError","e","POLL_INTERVAL","visiblePoll$","getVisiblePoll$","document","pipe","visibilityState","visible","refCount","bufferSize","ReferringDocuments","isLoading","totalCount","projectIds","datasetNames","hasUnknownDatasetNames","internalReferences","references","Array","_id","_type","crossDatasetReferences","projectId","documentId","datasetName","getDocumentExistence","versionedClient","draftId","publishedId","requestOptions","uri","getDataUrl","json","query","excludeContent","tag","observable","request","omitted","nonExistant","filter","doc","reason","length","undefined","some","id","fetchCrossDatasetReferences","context","checkDocumentId","currentDataset","config","dataset","url","statusCode","useInternalReferences","documentStore","referencesClause","totalClause","fetchQuery","listenQuery","fetch","listen","transitions","throttleTime","useCrossDatasetReferences","useReferringDocuments","$","_c","t0","t1","t2","isInternalReferencesLoading","t3","t4","isCrossDatasetReferencesLoading","t5","from","Set","_temp","Boolean","sort","t6","t7","t8","_temp2","_temp3","t9","_temp4","t10","t11","t12","crossDatasetReference_1","crossDatasetReference","crossDatasetReference_0","Box","Flex","useId","useMemo","LoadingBlock","useTranslation","styled","Dialog","structureLocaleNamespace","DocTitle","ConfirmDeleteDialogBody","useReferringDocuments","DialogBody","LoadingContainer","attrs","align","direction","justify","ConfirmDeleteDialogProps","id","type","action","onCancel","onConfirm","ConfirmDeleteDialog","t0","$","_c","t1","undefined","t","dialogId","internalReferences","crossDatasetReferences","isLoading","totalCount","projectIds","datasetNames","hasUnknownDatasetNames","t2","t3","_id","_type","t4","documentTitle","showConfirmButton","t5","context","t6","t7","onClick","text","t8","t9","cancelButton","confirmButton","t10","t11","Box","Text","ComponentProps","useCallback","useId","useState","useTranslation","Dialog","ErrorBoundary","structureLocaleNamespace","ConfirmDeleteDialog","ConfirmDeleteDialogProps","ArgType","T","arg","U","ErrorInfo","ConfirmDeleteDialogContainer","props","$","_c","t","id","error","setError","t0","Symbol","for","handleRetry","t1","confirmButton","text","onClick","tone","onCancel","CloseIcon","Box","Card","CardProps","Flex","Text","HTMLProps","ReactNode","useTranslation","styled","Button","structureLocaleNamespace","DocumentInspectorHeaderProps","as","closeButtonLabel","flex","onClose","title","Root","position","zIndex","lineHeight","DocumentInspectorHeader","props","$","_c","children","forwardedAs","restProps","t","t0","t1","t2","content","t3","t4","t5","TrashIcon","useCallback","useMemo","useState","DocumentActionComponent","InsufficientPermissionsMessage","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useTranslation","ConfirmDeleteDialog","structureLocaleNamespace","useDocumentPane","DISABLED_REASON_TITLE_KEY","NOTHING_TO_DELETE","NOT_READY","DeleteAction","t0","$","_c","id","type","draft","onComplete","release","setIsDeleting","paneSetIsDeleting","delete","deleteOp","isDeleting","isConfirmDialogOpen","setConfirmDialogOpen","t","t1","handleCancel","t2","execute","handleConfirm","t3","Symbol","for","handle","t4","version","permission","permissions","isPermissionsLoading","currentUser","_id","granted","t5","bb0","t6","t7","t8","tone","icon","disabled","label","title","Boolean","t9","component","t10","shortcut","onHandle","dialog","action","displayName","ResetIcon","useCallback","useMemo","useState","DocumentActionComponent","DocumentActionDialogProps","InsufficientPermissionsMessage","isPublishedId","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useTranslation","structureLocaleNamespace","useDocumentPane","DISABLED_REASON_KEY","NO_CHANGES","NOT_PUBLISHED","NOT_READY","const","DiscardChangesAction","id","type","published","liveEdit","onComplete","release","discardChanges","isConfirmDialogOpen","setConfirmDialogOpen","permissions","isPermissionsLoading","version","permission","currentUser","displayed","t","isPublished","_id","handleConfirm","execute","handle","dialog","tone","onCancel","onConfirm","message","granted","icon","disabled","label","title","Boolean","onHandle","action","displayName","CopyIcon","uuid","useCallback","useMemo","useState","filter","firstValueFrom","DuplicateDocumentActionComponent","InsufficientPermissionsMessage","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useDocumentStore","useTranslation","useRouter","structureLocaleNamespace","DISABLED_REASON_KEY","NOTHING_TO_DUPLICATE","NOT_READY","DuplicateAction","id","type","onComplete","release","mapDocument","documentStore","duplicate","navigateIntent","isDuplicating","setDuplicating","permissions","isPermissionsLoading","version","permission","t","currentUser","handle","dupeId","duplicateSuccess","pair","operationEvents","pipe","e","op","execute","granted","icon","disabled","label","title","Boolean","onHandle","action","displayName","defineEvent","DocumentPublishedInfo","publishedImmediately","previouslyPublished","DocumentPublished","name","version","description","PublishIcon","useTelemetry","isValidationErrorMarker","useCallback","useEffect","useMemo","useState","DocumentActionComponent","InsufficientPermissionsMessage","isPublishedId","TFunction","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useEditState","useRelativeTime","useSyncState","useTranslation","useValidationStatus","structureLocaleNamespace","StructureLocaleResourceKeys","useDocumentPane","DocumentPublished","DISABLED_REASON_TITLE_KEY","Record","LIVE_EDIT_ENABLED","ALREADY_PUBLISHED","NO_CHANGES","NOT_READY","const","getDisabledReason","reason","publishedAt","t","AlreadyPublished","t0","$","_c","t1","Symbol","for","useTemporalPhrase","timeSincePublished","t2","t3","PublishAction","props","id","type","liveEdit","draft","published","release","publishState","setPublishState","publish","validationStatus","syncState","changesOpen","documentId","documentType","value","editState","revision","_rev","validation","some","hasValidationErrors","publishScheduled","setPublishScheduled","isSyncing","isValidating","permission","permissions","isPermissionsLoading","currentUser","disabled","_updatedAt","title","hasDraft","Boolean","t4","execute","doPublish","t5","validationComplete","t6","t7","didPublish","nextState","delay","timer","setTimeout","clearTimeout","t8","telemetry","t9","_createdAt","log","publishedImmediately","previouslyPublished","handle","granted","transactionSyncLock","enabled","t10","bb0","_id","t11","t12","t13","t14","tone","icon","label","t15","shortcut","onHandle","action","displayName","UnpublishIcon","useCallback","useMemo","useState","DocumentActionComponent","DocumentActionModalDialogProps","InsufficientPermissionsMessage","isDraftId","useCurrentUser","useDocumentOperation","useDocumentPairPermissions","useTranslation","ConfirmDeleteDialog","structureLocaleNamespace","useDocumentPane","DISABLED_REASON_KEY","NOT_PUBLISHED","NOT_READY","LIVE_EDIT_ENABLED","UnpublishAction","id","type","draft","onComplete","liveEdit","release","unpublish","isConfirmDialogOpen","setConfirmDialogOpen","permissions","isPermissionsLoading","permission","currentUser","displayed","t","isDraft","_id","handleCancel","handleConfirm","execute","dialog","onClose","content","granted","tone","icon","label","title","disabled","Boolean","onHandle","action","displayName","AddIcon","CloseIcon","EditIcon","IconComponent","PublishIcon","TrashIcon","UnpublishIcon","TIMELINE_ICON_COMPONENTS","key","create","delete","discardDraft","initial","editDraft","editLive","publish","unpublish","IconComponent","ChunkType","TIMELINE_ICON_COMPONENTS","getTimelineEventIconComponent","type","ChevronLeftIcon","MouseEvent","useCallback","useTranslation","styled","Button","structureLocaleNamespace","TIMELINE_LIST_WRAPPER_ID","hideScrollbarOnExpand","isExpanded","listWrapper","document","getElementById","firstChildren","children","HTMLElement","hasScrollbar","scrollHeight","clientHeight","currentStyle","getComputedStyle","overflowY","style","setTimeout","FlipIcon","ExpandableTimelineItemButton","t0","$","_c","onExpand","t","t1","e","stopPropagation","handleExpandClick","t2","t3","t4","content","t5","Box","Flex","Stack","css","styled","StackWrapper","ListWrapper","$maxHeight","props","Root","$visible","AvatarSize","AvatarStack","UserAvatar","UserAvatarStackProps","maxLength","userIds","size","withTooltip","UserAvatarStack","t0","$","_c","t1","undefined","t2","t3","userId","map","Box","Card","Flex","Skeleton","Stack","Text","getTheme_v2","ThemeColorAvatarColorKey","MouseEvent","useCallback","useMemo","AvatarSkeleton","ChunkType","RelativeTimeOptions","useDateTimeFormat","UserAvatar","useRelativeTime","useTranslation","useUser","css","styled","Tooltip","getTimelineEventIconComponent","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStack","ChunksWithCollapsedDrafts","IconBox","$color","props","theme","color","avatar","fg","bg","sizes","size","TIMELINE_ITEM_EVENT_TONE","Record","initial","create","publish","editLive","editDraft","unpublish","discardDraft","delete","withinSelection","TimelineItemProps","chunk","isSelected","onSelect","collaborators","Set","optionsMenu","React","ReactNode","RELATIVE_TIME_OPTIONS","minimal","useTemporalPhrase","NameSkeleton","font","text","lineHeight","UserLine","t0","$","_c","userId","user","loading","t1","t2","displayName","t3","TooltipContent","t","map","_temp","t4","TimelineItem","type","endTimestamp","timestamp","IconComponent","authors","Array","from","authorUserIds","collaboratorsUsersIds","isSelectable","Symbol","for","dateStyle","timeStyle","dateFormat","t5","Date","date","updatedTimeAgo","t6","t7","parsedDate","format","formattedDate","formattedTimestamp","t8","evt","preventDefault","stopPropagation","handleClick","t9","position","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","length","t21","t22","id","t23","Chunk","ChunkType","NonPublishChunk","Omit","type","Exclude","parentId","PublishChunk","children","collaborators","Set","isNonPublishChunk","chunk","isPublishChunk","getPreviousPublishAction","chunks","previousPublish","index","length","ChunksWithCollapsedDrafts","addChunksMetadata","result","push","Array","from","authors","forEach","id","add","Box","Text","useCallback","useEffect","useMemo","useState","Chunk","CommandList","CommandListRenderItemCallback","LoadingBlock","useTranslation","ExpandableTimelineItemButton","ListWrapper","Root","StackWrapper","TimelineItem","addChunksMetadata","ChunksWithCollapsedDrafts","isNonPublishChunk","isPublishChunk","TimelineProps","chunks","hasMoreChunks","lastChunk","onLoadMore","onSelect","chunk","listMaxHeight","TIMELINE_LIST_WRAPPER_ID","Timeline","selectedChunk","mounted","setMounted","t","selectedChunkId","id","chunksWithMetadata","expandedParents","setExpandedParents","Set","selected","find","parentId","prev","has","next","add","filteredChunks","filter","length","handleExpandParent","delete","selectedIndex","findIndex","handleSelectChunk","timelineChunk","c","console","error","renderItem","activeIndex","isFirst","collaborators","undefined","children","displayName","ErrorOutlineIcon","Flex","Stack","TextWithTone","useTranslation","TimelineError","t0","$","_c","versionError","t","t1","Symbol","for","t2","t3","t4","t5","t6","ChevronDownIcon","Flex","Placement","PortalProvider","useClickOutsideEvent","useGlobalKeyDown","useToast","useCallback","useMemo","useState","Chunk","useTimelineSelector","useTranslation","styled","Button","Popover","useDocumentPane","Timeline","TimelineError","TIMELINE_ITEM_I18N_KEY_MAPPING","TimelineMenuProps","chunk","mode","placement","Root","TIMELINE_MENU_PORTAL","TimelineMenu","setTimelineRange","timelineError","ready","timelineStore","open","setOpen","button","setButton","HTMLButtonElement","popoverRef","setPopoverRef","HTMLElement","toast","chunks","state","loading","isLoading","hasMoreChunks","realRevChunk","sinceTime","t","handleOpen","handleClose","handleGlobalKeyDown","event","KeyboardEvent","key","focus","selectRev","revChunk","sinceId","revId","findRangeForRev","err","push","closable","description","message","status","title","selectSince","sinceChunk","findRangeForSince","handleLoadMore","loadMore","content","filteredChunks","filter","c","index","formatParams","timestamp","dateStyle","timeStyle","revLabel","type","context","Date","endTimestamp","sinceLabel","buttonLabel","maxWidth","DocumentBadgeComponent","LiveEditBadge","props","liveEditSchemaType","version","label","color","displayName","ObjectDiff","BoundaryElementProvider","Box","Card","Flex","Text","useMemo","useState","ChangeFieldWrapper","ChangeList","DocumentChangeContextInstance","LoadingBlock","NoChanges","ObjectSchemaType","ScrollContainer","usePerspective","useTimelineSelector","useTranslation","DocumentChangeContext","styled","structureLocaleNamespace","TimelineMenu","TimelineError","useDocumentPane","Scroller","Grid","ChangesInspector","t0","$","_c","showChanges","documentId","schemaType","timelineError","timelineStore","value","selectedReleaseId","scrollRef","setScrollRef","rev","_temp","diff","_temp2","onOlderRevision","_temp3","selectionState","_temp4","sinceTime","_temp5","loading","isComparingCurrent","t","structureT","t1","t2","FieldWrapper","_temp6","rootDiff","showFromValue","documentContext","t3","Symbol","for","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","props","state_3","state","state_2","state_1","state_0","revTime","Content","error","Card","Flex","MouseEvent","useCallback","DocumentGroupEvent","Event","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","isScheduleDocumentVersionEvent","isUnpublishDocumentEvent","isUnscheduleDocumentVersionEvent","useTranslation","Tooltip","TimelineItemProps","event","isSelected","onSelect","chunk","optionsMenu","React","ReactNode","getIsSelectable","EventTimelineItem","t0","$","_c","t","t1","isSelectable","t2","evt","preventDefault","stopPropagation","handleClick","t3","t4","t5","t6","cursor","width","t7","t8","timestamp","t9","t10","Flex","Menu","MenuItem","Text","usePortal","useCallback","ContextMenuButton","getReleaseIdFromReleaseDocumentId","getReleaseTone","getVersionFromId","isReleaseDocument","PublishDocumentVersionEvent","RELEASES_INTENT","Translate","useSetPerspective","useTranslation","VersionInlineBadge","IntentLink","MenuButton","usePaneRouter","structureLocaleNamespace","TIMELINE_MENU_PORTAL","PublishedEventMenu","t0","$","_c","event","t","tCore","portalContext","params","setParams","setPerspective","t1","id","versionId","versionRevisionId","rev","since","undefined","historyEvent","historyVersion","handleOpenReleaseDocument","t2","preserveRev","setTimeout","handleOpenDraftDocument","t3","release","t4","children","VersionBadge","isMenuDisabled","t5","t6","releaseId","_id","t7","content","t8","t9","textDecoration","t10","children_0","releaseTitle","metadata","title","t11","children_1","_temp","elements","Symbol","for","t12","portal","placement","fallbackPlacements","t13","children_2","Box","Flex","Spinner","Stack","Text","motion","Variants","useCallback","useEffect","useMemo","useState","CommandList","CommandListRenderItemCallback","DocumentGroupEvent","getDocumentVariantType","isCreateDocumentVersionEvent","isDeleteDocumentVersionEvent","isEditDocumentVersionEvent","isPublishDocumentVersionEvent","LoadingBlock","useTranslation","ExpandableTimelineItemButton","ListWrapper","Root","EventTimelineItem","PublishedEventMenu","TimelineProps","events","hasMoreEvents","selectedEventId","onLoadMore","onSelect","event","fetchEventChildren","Promise","listMaxHeight","TimelineItemWrapper","create","CHILDREN_ITEMS_VARIANTS","initial","opacity","animate","exit","ITEM_HEIGHT","TIMELINE_LIST_WRAPPER_ID","EventsTimeline","allEvents","mounted","setMounted","t","expandedParents","setExpandedParents","Set","selectedEvent","find","id","parentId","expandingParents","setExpandingParents","filter","isLastEvent","length","has","handleExpandParent","isExpanding","prev","next","delete","add","handleSelectChunk","renderOptionsMenu","documentVariantType","documentId","creationEvent","renderItem","activeIndex","showExpandingLoader","duration","delay","height","timestamp","undefined","selectedIndex","findIndex","displayName","ChevronDownIcon","Flex","Placement","PortalProvider","useClickOutsideEvent","useGlobalKeyDown","useToast","useCallback","useMemo","useState","DocumentGroupEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","isScheduleDocumentVersionEvent","isUnpublishDocumentEvent","isUnscheduleDocumentVersionEvent","TIMELINE_ITEM_I18N_KEY_MAPPING","useEvents","useTranslation","styled","Button","Popover","useDocumentPane","TimelineError","EventsTimeline","TimelineMenuProps","event","events","mode","placement","Root","TIMELINE_MENU_PORTAL","formatParams","timestamp","dateStyle","timeStyle","EventsTimelineMenu","setTimelineRange","open","setOpen","button","setButton","HTMLButtonElement","popoverRef","setPopoverRef","HTMLElement","toast","nextCursor","loading","error","eventsError","findRangeForRevision","findRangeForSince","loadMoreEvents","expandEvent","t","handleOpen","handleClose","handleGlobalKeyDown","e","KeyboardEvent","key","focus","selectRev","revEvent","console","since","rev","id","err","push","closable","description","message","status","title","selectSince","sinceEvent","handleLoadMore","content","Boolean","revLabel","documentVariantType","type","context","Date","sinceLabel","length","buttonLabel","maxWidth","diffInput","wrap","BoundaryElementProvider","Box","Card","Flex","Spinner","Stack","Text","motion","ReactElement","useMemo","useState","useObservable","ChangeFieldWrapper","ChangeList","ChangesError","DocumentChangeContextInstance","DocumentGroupEvent","isReleaseDocument","LoadingBlock","NoChanges","ObjectDiff","ObjectSchemaType","ScrollContainer","Translate","useEvents","usePerspective","useTranslation","DocumentChangeContext","styled","structureLocaleNamespace","EventsTimelineMenu","useDocumentPane","Scroller","Grid","SpinnerContainer","DIFF_INITIAL_VALUE","diff","loading","error","CompareWithPublishedView","$","_c","documentId","schemaType","editState","displayed","selectedPerspective","selectedPerspectiveName","selectedReleaseId","t","published","t0","t1","t2","t3","author","rootDiff","version","draft","_rev","t4","t5","metadata","title","t6","t7","t8","t9","isComparingCurrent","FieldWrapper","_temp","value","showFromValue","t10","t11","t12","EventsInspector","showChanges","timelineError","formState","scrollRef","setScrollRef","HTMLDivElement","events","revision","sinceRevision","getChangesList","revisionId","changesList$","diffLoading","diffError","documentContext","props","path","length","children","readOnly","sinceEvent","toEvent","find","e","id","sinceEvents","slice","indexOf","map","event","parentId","undefined","position","opacity","delay","duration","Content","sameRevisionSelected","Symbol","for","type","SameRevisionSelected","BoundaryElementProvider","Card","Flex","useToast","useCallback","useState","DocumentGroupEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","isScheduleDocumentVersionEvent","isUnpublishDocumentEvent","isUnscheduleDocumentVersionEvent","LoadingBlock","ScrollContainer","useEvents","useTranslation","styled","EventsTimeline","TimelineError","useDocumentPane","Scroller","EventsSelector","showList","scrollRef","setScrollRef","HTMLDivElement","listHeight","setListHeight","setTimelineRange","getScrollerRef","el","clientHeight","events","nextCursor","loading","error","revision","loadMoreEvents","findRangeForRevision","expandEvent","t","toast","selectRev","event","console","since","rev","id","err","push","closable","description","message","status","title","initialLoad","length","Boolean","revisionId","BoundaryElementProvider","Card","Flex","useToast","useCallback","useState","Chunk","ScrollContainer","usePerspective","useTimelineSelector","useTranslation","styled","Timeline","TimelineError","useDocumentPane","Scroller","HistorySelector","showList","timelineError","setTimelineRange","timelineStore","selectedReleaseId","scrollRef","setScrollRef","HTMLDivElement","listHeight","setListHeight","getScrollerRef","el","clientHeight","chunks","state","realRevChunk","hasMoreChunks","loading","isLoading","t","toast","selectRev","revChunk","sinceId","revId","findRangeForRev","err","push","closable","description","message","status","title","handleLoadMore","loadMore","Boolean","CloseIcon","InfoOutlineIcon","Box","Card","Flex","TabList","TabPanel","Text","useState","DocumentInspectorProps","isReleaseDocument","Translate","usePerspective","useSource","useTranslation","styled","Button","Tab","Tooltip","usePaneRouter","structureLocaleNamespace","HISTORY_INSPECTOR_NAME","ChangesInspector","EventsInspector","EventsSelector","HistorySelector","FadeInFlex","TABS","const","isValidTab","tab","includes","ChangesTabs","props","$","_c","params","setParams","source","parentRef","setParentRef","t","isReady","inspect","selectedPerspective","t0","changesInspectorTab","paneRouterTab","t1","since","undefined","setPaneRouterTab","t2","metadata","title","perspectiveName","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","onClose","t15","t16","content","t17","t18","t19","t20","Symbol","for","t21","t22","perspective","t23","t24","t25","t26","beta","eventsAPI","documents","t27","t28","t29","t30","t31","RestoreIcon","DocumentInspector","useTranslation","useStructureTool","HISTORY_INSPECTOR_NAME","ChangesTabs","changesInspector","name","useMenuItem","features","t","hidden","reviewChanges","icon","title","component","onClose","params","since","undefined","rev","changesInspectorTab","historyVersion","onOpen","Path","SanityDocument","SchemaType","isArray","isRecord","getPathTitles","options","path","schemaType","value","Partial","Array","name","title","result","s","v","segment","undefined","Error","jsonType","field","fields","find","f","push","type","itemType","of","ofType","_type","_key","values","i","JSON","stringify","ErrorOutlineIcon","IconComponent","InfoOutlineIcon","WarningOutlineIcon","ObjectSchemaType","Path","SanityDocument","SchemaType","ValidationMarker","Box","Card","CardTone","Flex","Stack","Text","ErrorInfo","Fragment","useCallback","useMemo","useState","DocumentInspectorProps","useTranslation","ErrorBoundary","DocumentInspectorHeader","useDocumentPane","getPathTitles","MARKER_ICON","Record","error","warning","info","MARKER_TONE","ValidationInspector","props","$","_c","onClose","onFocus","onPathOpen","schemaType","validation","value","t","t0","path","handleOpen","t1","t2","t3","t4","length","t5","map","marker","i","t6","t7","ValidationCard","onOpen","errorInfo","setErrorInfo","Icon","level","message","DocumentNodePathBreadcrumbs","Partial","pathTitles","e","console","color","opacity","fontWeight","title","name","CheckmarkCircleIcon","ErrorOutlineIcon","WarningOutlineIcon","useMemo","DocumentInspector","DocumentInspectorMenuItem","DocumentInspectorUseMenuItemProps","FormNodeValidation","isValidationError","isValidationWarning","usePerspective","useTranslation","useValidationStatus","VALIDATION_INSPECTOR_NAME","ValidationInspector","useMenuItem","props","documentId","documentType","t","selectedReleaseId","validation","validationMarkers","map","item","level","message","path","hasErrors","some","hasWarnings","icon","tone","hidden","length","title","showAsAction","validationInspector","name","component","omit","decodeJsonParams","encodeJsonParams","route","RouterPaneGroup","RouterPanes","RouterPaneSibling","EMPTY_PARAMS","legacyEditParamsToState","params","Record","JSON","parse","decodeURIComponent","err","console","warn","encodePanesSegment","panes","map","group","encodeChunks","join","encodeURIComponent","legacyEditParamsToPath","stringify","toState","pathSegment","parsePanesSegment","toPath","router","create","intents","path","transform","children","panePattern","isParam","str","test","isPayloadLike","exclusiveParams","Truthy","T","NonNullable","isTruthy","Boolean","t","parseChunks","chunks","initial","sibling","payload","undefined","reduce","pane","chunk","key","slice","indexOf","value","length","tryParseBase64Payload","index","id","firstSibling","paneIsFirstSibling","sameAsFirst","encodedPayload","encodedParams","Object","entries","filter","entry","valueFromFirstSibling","includes","concat","flat","parseOldPanesSegment","split","restOfSiblings","segment","buffer","match","payloadChunk","tryParsePayload","push","json","message","data","MasterDetailIcon","lazy","definePlugin","DeleteAction","DiscardChangesAction","DuplicateAction","HistoryRestoreAction","PublishAction","UnpublishAction","LiveEditBadge","getIntentState","structureUsEnglishLocaleBundle","changesInspector","validationInspector","router","StructureToolOptions","documentActions","documentBadges","inspectors","structureTool","options","icon","name","document","actions","prevActions","Array","from","Set","badges","prevBadges","prevInspectors","tools","title","component","canHandleIntent","intent","params","canHandleCreateIntent","canHandleEditIntent","controlsDocumentTitle","__internalApplicationType","i18n","bundles","Record","template","mode"],"sources":["https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.styles.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/ReferencePreviewLink.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/ConfirmDeleteDialogBody.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/useReferringDocuments.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/ConfirmDeleteDialog.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/components/confirmDeleteDialog/index.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/documentInspector/DocumentInspectorHeader.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/DeleteAction.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/DiscardChangesAction.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/DuplicateAction.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/__telemetry__/documentActions.telemetry.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/PublishAction.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentActions/UnpublishAction.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/constants.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/helpers.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/expandableTimelineItemButton.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/timeline.styled.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/userAvatarStack.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/timelineItem.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/utils.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/timeline.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/TimelineError.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/timelineMenu.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/documentBadges/LiveEditBadge.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/ChangesInspector.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/events/EventTimelineItem.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/events/PublishedEventMenu.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/events/EventsTimeline.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/timeline/events/EventsTimelineMenu.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/EventsInspector.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/EventsSelector.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/HistorySelector.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/ChangesTabs.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/changes/index.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/validation/getPathTitles.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/validation/ValidationInspector.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/panes/document/inspectors/validation/index.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/router.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/structure/structureTool.ts"],"sourcesContent":["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 {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 {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","/* 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 {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","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 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 {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 {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"],"mappings":"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"}
|