sanity 6.9.2 → 6.9.3-next.2

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.
Files changed (121) hide show
  1. package/lib/{AddonDatasetProvider-CIq0vehp.js → AddonDatasetProvider-DDQrh5ob.js} +2 -2
  2. package/lib/{AddonDatasetProvider-CIq0vehp.js.map → AddonDatasetProvider-DDQrh5ob.js.map} +1 -1
  3. package/lib/{CalendarFilter-DRKSPTWd.js → CalendarFilter-DYbHmp_x.js} +3 -3
  4. package/lib/{CalendarFilter-DRKSPTWd.js.map → CalendarFilter-DYbHmp_x.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-NGghzPWZ.js → CommentsDocumentLayout-qdF_HKSC.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-NGghzPWZ.js.map → CommentsDocumentLayout-qdF_HKSC.js.map} +1 -1
  7. package/lib/{CommentsField-_QkW9aLe.js → CommentsField-i8xs45PB.js} +3 -3
  8. package/lib/{CommentsField-_QkW9aLe.js.map → CommentsField-i8xs45PB.js.map} +1 -1
  9. package/lib/{CommentsInput-DdtI0Naj.js → CommentsInput-B9iSSi8A.js} +6 -6
  10. package/lib/{CommentsInput-DdtI0Naj.js.map → CommentsInput-B9iSSi8A.js.map} +1 -1
  11. package/lib/{CommentsInspector-BQtqxGsK.js → CommentsInspector-rGGP9buL.js} +5 -5
  12. package/lib/{CommentsInspector-BQtqxGsK.js.map → CommentsInspector-rGGP9buL.js.map} +1 -1
  13. package/lib/{CommentsListItem-B0yR0R5a.js → CommentsListItem-DKS6V_TV.js} +3 -3
  14. package/lib/{CommentsListItem-B0yR0R5a.js.map → CommentsListItem-DKS6V_TV.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js → CommentsSelectedPathProvider-BnZ6GdNc.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js.map → CommentsSelectedPathProvider-BnZ6GdNc.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-DK4W-hTe.js → CommentsStudioLayout-YlpSH_2Y.js} +4 -4
  18. package/lib/{CommentsStudioLayout-DK4W-hTe.js.map → CommentsStudioLayout-YlpSH_2Y.js.map} +1 -1
  19. package/lib/{DateInputs-enUB1fG8.js → DateInputs-DioSKqY0.js} +7 -7
  20. package/lib/{DateInputs-enUB1fG8.js.map → DateInputs-DioSKqY0.js.map} +1 -1
  21. package/lib/{DocumentStatusIndicator-BP3N2GwG.js → DocumentStatusIndicator-BPBTH84U.js} +5 -5
  22. package/lib/{DocumentStatusIndicator-BP3N2GwG.js.map → DocumentStatusIndicator-BPBTH84U.js.map} +1 -1
  23. package/lib/{FormValue-4tVuOoGw.js → FormValue-CJg43LyM.js} +2 -2
  24. package/lib/{FormValue-4tVuOoGw.js.map → FormValue-CJg43LyM.js.map} +1 -1
  25. package/lib/{LoadingBlock-Cy2Pckab.js → LoadingBlock-DPTVJ58M.js} +3 -3
  26. package/lib/{LoadingBlock-Cy2Pckab.js.map → LoadingBlock-DPTVJ58M.js.map} +1 -1
  27. package/lib/{ReleaseTitle-CkEMIfmx.js → ReleaseTitle-ln13W3P1.js} +4 -4
  28. package/lib/{ReleaseTitle-CkEMIfmx.js.map → ReleaseTitle-ln13W3P1.js.map} +1 -1
  29. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js → ReleasesMetadataProvider-DbxROVyw.js} +2 -2
  30. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js.map → ReleasesMetadataProvider-DbxROVyw.js.map} +1 -1
  31. package/lib/{ReleasesNav-DozstCwb.js → ReleasesNav-DNwncim0.js} +15 -15
  32. package/lib/{ReleasesNav-DozstCwb.js.map → ReleasesNav-DNwncim0.js.map} +1 -1
  33. package/lib/{ReleasesStudioLayout-CXoRbIpf.js → ReleasesStudioLayout-gzl7rMMp.js} +8 -8
  34. package/lib/{ReleasesStudioLayout-CXoRbIpf.js.map → ReleasesStudioLayout-gzl7rMMp.js.map} +1 -1
  35. package/lib/{ReleasesTool-Bxru9khS.js → ReleasesTool-CsHniZCP.js} +20 -20
  36. package/lib/{ReleasesTool-Bxru9khS.js.map → ReleasesTool-CsHniZCP.js.map} +1 -1
  37. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js → SchedulePublishingStudioLayout-BzSSDp9x.js} +3 -3
  38. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js.map → SchedulePublishingStudioLayout-BzSSDp9x.js.map} +1 -1
  39. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js → SchedulePublishingUpsellProvider-DQqIZsCc.js} +2 -2
  40. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js.map → SchedulePublishingUpsellProvider-DQqIZsCc.js.map} +1 -1
  41. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js → ScheduledPublishingEnabledProvider-BcWaBJw5.js} +3 -3
  42. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js.map → ScheduledPublishingEnabledProvider-BcWaBJw5.js.map} +1 -1
  43. package/lib/{SearchProvider-DSLbCdgY.js → SearchProvider-D3w4Bvul.js} +10 -10
  44. package/lib/{SearchProvider-DSLbCdgY.js.map → SearchProvider-D3w4Bvul.js.map} +1 -1
  45. package/lib/{SingleDocReleaseLayout-DQicfsKs.js → SingleDocReleaseLayout-CQCkL8-0.js} +2 -2
  46. package/lib/{SingleDocReleaseLayout-DQicfsKs.js.map → SingleDocReleaseLayout-CQCkL8-0.js.map} +1 -1
  47. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js → SingleDocReleaseUpsellProvider-YDBCGrHT.js} +4 -4
  48. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js.map → SingleDocReleaseUpsellProvider-YDBCGrHT.js.map} +1 -1
  49. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js → TasksStudioActiveToolLayout-DAmh3t6t.js} +16 -16
  50. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js.map → TasksStudioActiveToolLayout-DAmh3t6t.js.map} +1 -1
  51. package/lib/{TasksStudioLayout-CnsvBNfw.js → TasksStudioLayout-6qNY69FD.js} +5 -5
  52. package/lib/{TasksStudioLayout-CnsvBNfw.js.map → TasksStudioLayout-6qNY69FD.js.map} +1 -1
  53. package/lib/{TimeZoneButton-DMd-M_ri.js → TimeZoneButton-TmrFye13.js} +4 -4
  54. package/lib/{TimeZoneButton-DMd-M_ri.js.map → TimeZoneButton-TmrFye13.js.map} +1 -1
  55. package/lib/{Tool-VgnYCwyZ.js → Tool-tpq9K4o7.js} +14 -14
  56. package/lib/{Tool-VgnYCwyZ.js.map → Tool-tpq9K4o7.js.map} +1 -1
  57. package/lib/{UnpublishVersionDialog-Fow5nBrc.js → UnpublishVersionDialog-6zyP9rCr.js} +5 -5
  58. package/lib/{UnpublishVersionDialog-Fow5nBrc.js.map → UnpublishVersionDialog-6zyP9rCr.js.map} +1 -1
  59. package/lib/{UpsellDialog-BqP2wmnt.js → UpsellDialog-CM238V3B.js} +3 -3
  60. package/lib/{UpsellDialog-BqP2wmnt.js.map → UpsellDialog-CM238V3B.js.map} +1 -1
  61. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js → VariantsStudioNavbar-lFO2yrMq.js} +7 -7
  62. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js.map → VariantsStudioNavbar-lFO2yrMq.js.map} +1 -1
  63. package/lib/{VariantsTool-CmQqDiwU.js → VariantsTool-B0OS4fku.js} +9 -9
  64. package/lib/{VariantsTool-CmQqDiwU.js.map → VariantsTool-B0OS4fku.js.map} +1 -1
  65. package/lib/{WorkspaceLoader-Ailj0PR9.js → WorkspaceLoader-CiJ6lGBu.js} +32 -32
  66. package/lib/{WorkspaceLoader-Ailj0PR9.js.map → WorkspaceLoader-CiJ6lGBu.js.map} +1 -1
  67. package/lib/_createContext.js +1 -1
  68. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js → buildTextSelectionFromFragment-CFZdgjpp.js} +3 -3
  69. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js.map → buildTextSelectionFromFragment-CFZdgjpp.js.map} +1 -1
  70. package/lib/{datastores-D4iZNSXV.js → datastores-wbjstxMt.js} +2 -2
  71. package/lib/{datastores-D4iZNSXV.js.map → datastores-wbjstxMt.js.map} +1 -1
  72. package/lib/{getTransactionsLogs-C-_o7nGx.js → getTransactionsLogs-Di50JBPB.js} +2 -2
  73. package/lib/{getTransactionsLogs-C-_o7nGx.js.map → getTransactionsLogs-Di50JBPB.js.map} +1 -1
  74. package/lib/index.js +35 -35
  75. package/lib/{inputResolver-Dpo4FxTy.js → inputResolver-DuUEGuH5.js} +4 -4
  76. package/lib/{inputResolver-Dpo4FxTy.js.map → inputResolver-DuUEGuH5.js.map} +1 -1
  77. package/lib/{navigation.telemetry-syjEPEw-.js → navigation.telemetry-EsdzXa34.js} +9 -9
  78. package/lib/{navigation.telemetry-syjEPEw-.js.map → navigation.telemetry-EsdzXa34.js.map} +1 -1
  79. package/lib/{plugin-B8Op6DFi.js → plugin-C_6lw0l3.js} +3 -3
  80. package/lib/{plugin-B8Op6DFi.js.map → plugin-C_6lw0l3.js.map} +1 -1
  81. package/lib/{plugin-CmF53OT5.js → plugin-ClT8-pVM.js} +4 -4
  82. package/lib/{plugin-CmF53OT5.js.map → plugin-ClT8-pVM.js.map} +1 -1
  83. package/lib/{plugin-Bk41RRuC.js → plugin-DRuKGgrO.js} +6 -6
  84. package/lib/{plugin-Bk41RRuC.js.map → plugin-DRuKGgrO.js.map} +1 -1
  85. package/lib/{plugin-BhEK2rZ8.js → plugin-wJP1ECFq.js} +6 -6
  86. package/lib/{plugin-BhEK2rZ8.js.map → plugin-wJP1ECFq.js.map} +1 -1
  87. package/lib/{scheduleItem-sJhB8YzX.js → scheduleItem-9PFIH7_h.js} +15 -15
  88. package/lib/{scheduleItem-sJhB8YzX.js.map → scheduleItem-9PFIH7_h.js.map} +1 -1
  89. package/lib/{schedules-CLC2KygL.js → schedules-DniNrpFJ.js} +3 -3
  90. package/lib/{schedules-CLC2KygL.js.map → schedules-DniNrpFJ.js.map} +1 -1
  91. package/lib/{searchDocumentRelease-CtPYZAZk.js → searchDocumentRelease-TrunKdQg.js} +5 -5
  92. package/lib/{searchDocumentRelease-CtPYZAZk.js.map → searchDocumentRelease-TrunKdQg.js.map} +1 -1
  93. package/lib/{studioClient-WYiCwgfZ.js → studioClient-BpYJ_yYC.js} +2 -2
  94. package/lib/{studioClient-WYiCwgfZ.js.map → studioClient-BpYJ_yYC.js.map} +1 -1
  95. package/lib/{useBundleDocuments-CiRQnzQh.js → useBundleDocuments-C58ExRpX.js} +5 -5
  96. package/lib/{useBundleDocuments-CiRQnzQh.js.map → useBundleDocuments-C58ExRpX.js.map} +1 -1
  97. package/lib/{useComments-CxUK5MNb.js → useComments-BcMCyjIE.js} +2 -2
  98. package/lib/{useComments-CxUK5MNb.js.map → useComments-BcMCyjIE.js.map} +1 -1
  99. package/lib/{useCommentsTelemetry-BWqcsQ1u.js → useCommentsTelemetry-CL97yuwT.js} +4 -4
  100. package/lib/{useCommentsTelemetry-BWqcsQ1u.js.map → useCommentsTelemetry-CL97yuwT.js.map} +1 -1
  101. package/lib/{useDocumentPreviewValues-B4jUnACZ.js → useDocumentPreviewValues-Cy9aUMu2.js} +5 -5
  102. package/lib/{useDocumentPreviewValues-B4jUnACZ.js.map → useDocumentPreviewValues-Cy9aUMu2.js.map} +1 -1
  103. package/lib/{useFeatureEnabled-sRpDeLLJ.js → useFeatureEnabled-C5qTffLc.js} +2 -2
  104. package/lib/{useFeatureEnabled-sRpDeLLJ.js.map → useFeatureEnabled-C5qTffLc.js.map} +1 -1
  105. package/lib/{useFieldActions-CrPgIiyl.js → useFieldActions-MFJIkobn.js} +2 -2
  106. package/lib/{useFieldActions-CrPgIiyl.js.map → useFieldActions-MFJIkobn.js.map} +1 -1
  107. package/lib/{useProjectId-bGwoCAuz.js → useProjectId-BRSQ8kIo.js} +2 -2
  108. package/lib/{useProjectId-bGwoCAuz.js.map → useProjectId-BRSQ8kIo.js.map} +1 -1
  109. package/lib/{useReleasesToolAvailable-BevhFmt9.js → useReleasesToolAvailable-BOlw1HWL.js} +3 -3
  110. package/lib/{useReleasesToolAvailable-BevhFmt9.js.map → useReleasesToolAvailable-BOlw1HWL.js.map} +1 -1
  111. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js → useScheduledDraftMenuActions-DIQYFw0x.js} +6 -6
  112. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js.map → useScheduledDraftMenuActions-DIQYFw0x.js.map} +1 -1
  113. package/lib/{useStudioUrl-DbfIwS1P.js → useStudioUrl-Dc5LnOvR.js} +5 -5
  114. package/lib/{useStudioUrl-DbfIwS1P.js.map → useStudioUrl-Dc5LnOvR.js.map} +1 -1
  115. package/lib/{useTimeZone-DnxQlCGS.js → useTimeZone-Da8WK1q-.js} +2 -2
  116. package/lib/{useTimeZone-DnxQlCGS.js.map → useTimeZone-Da8WK1q-.js.map} +1 -1
  117. package/lib/{validationUtils-Bcu-PkHm.js → validationUtils-B9CLn9F7.js} +4 -4
  118. package/lib/{validationUtils-Bcu-PkHm.js.map → validationUtils-B9CLn9F7.js.map} +1 -1
  119. package/lib/{version-DTqx_kFw.js → version-D7qSwBVE.js} +2 -2
  120. package/lib/{version-DTqx_kFw.js.map → version-D7qSwBVE.js.map} +1 -1
  121. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"scheduleItem-sJhB8YzX.js","names":["useContext","ZIndexContext","ZIndexContextValue","useZIndex","LayerProvider","ReactNode","ZIndexContextValue","useZIndex","ZIndexContextValueKey","LegacyLayerProvider","t0","$","_c","children","zOffset","zOffsetKey","zIndex","t1","UnitFormatter","getSizeDiff","prev","next","increase","pct","Math","round","getHumanFriendlyBytes","bytes","format","useCurrentLocale","intlCache","UseUnitFormatterOptions","Pick","Intl","NumberFormatOptions","FormattableMeasurementUnit","UnitFormatter","value","unit","useUnitFormatter","t0","$","_c","t1","undefined","options","currentLocale","id","t2","unitDisplay","style","defaultOptions","t3","format","formatter","numberFormat","getPrintableType","value","nativeType","Array","isArray","Object","constructor","name","isEqual","useState","useUnique","value","previous","setPrevious","Path","toString","pathToAnchorIdent","type","path","replaceAll","toLocaleLowerCase","join","EditIcon","Path","motion","ComponentType","styled","Button","pathToAnchorIdent","useTranslation","TargetPerspective","DivergenceNavigator","ReachableDivergence","DivergenceIndicatorProps","divergence","divergenceNavigator","path","upstreamBundle","DivergenceIndicator","t0","$","_c","t","t1","t2","t3","Symbol","for","opacity","t4","metadata","title","t5","count","versionName","t6","state","focusedDivergence","blurFocusedDivergence","focusDivergence","t7","t8","t9","t10","content","placement","t11","t12","t13","Container","div","$path","undefined","DiffComponentResolver","diffResolvers","isIndexSegment","isIndexTuple","isKeySegment","KeyedSegment","Path","UserColor","UserColorManager","pathToString","stringToPath","Annotation","ArrayDiff","Diff","ItemDiff","ObjectDiff","StringDiff","StringDiffSegment","getAnnotationColor","colorManager","annotation","get","author","getAnnotationAtPath","diff","diffPath","path","Array","isArray","getAnnotationAt","getDiffAtPath","getDiffAt","diffAt","undefined","action","parentPath","length","segment","tail","slice","Error","location","_key","type","warn","itemDiff","items","find","item","toIndex","itemMatchesKey","concat","fieldDiff","fields","_msg","key","toValue","DiffVisitor","visitDiff","visitor","visitArrayDiff","visitObjectDiff","visitStringDiff","forEach","getItemDiffIndex","Object","keys","fieldName","segments","fromIndex","Path","useMemo","useUserColorManager","UserColor","Annotation","Diff","getAnnotationAtPath","getAnnotationColor","useAnnotationColor","annotation","$","_c","userColorManager","t0","useDiffAnnotationColor","diff","t1","undefined","path","t2","t3","BadgeTone","FC","PropsWithChildren","css","styled","TargetPerspective","LATEST","getReleaseTone","StyledVersionInlineBadge","span","$tone","props","VersionInlineBadge","t0","$","_c","children","t1","getVersionInlineBadge","release","tone","ReturnComponent","ReleaseDocument","SanityDocument","Observable","ObjectDiff","DocumentVariantType","DocumentGroupEvent","CreateDocumentVersionEvent","DeleteDocumentVersionEvent","PublishDocumentVersionEvent","UnpublishDocumentEvent","ScheduleDocumentVersionEvent","UnscheduleDocumentVersionEvent","DeleteDocumentGroupEvent","CreateLiveDocumentEvent","UpdateLiveDocumentEvent","EditDocumentVersionEvent","HistoryClearedEvent","isCreateDocumentVersionEvent","event","Partial","type","isDeleteDocumentVersionEvent","isPublishDocumentVersionEvent","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","isDeleteDocumentGroupEvent","isCreateLiveDocumentEvent","isUpdateLiveDocumentEvent","isEditDocumentVersionEvent","BaseEvent","id","timestamp","author","documentVariantType","documentId","releaseId","versionId","versionRevisionId","revisionId","parentId","creationEvent","publishCause","contributors","release","_id","metadata","state","publishAt","transactions","EventsStoreRevision","loading","document","EventsStore","events","nextCursor","error","Error","revision","sinceRevision","findRangeForRevision","nextRev","findRangeForSince","nextSince","loadMoreEvents","getChangesList","diff","expandEvent","Promise","lastNonDeletedRevId","getDocumentAtRevision","DocumentVersionEventType","IconComponent","AddCircleIcon","CalendarIcon","CircleIcon","CloseIcon","EditIcon","PublishIcon","TimelineIcon","TrashIcon","UnpublishIcon","ThemeColorAvatarColorKey","StudioLocaleResourceKeys","DocumentVersionEventType","DocumentVariantType","TIMELINE_ICON_COMPONENTS","Record","historyCleared","createDocumentVersion","createLiveDocument","deleteDocumentGroup","deleteDocumentVersion","editDocumentVersion","updateLiveDocument","publishDocumentVersion","unpublishDocument","scheduleDocumentVersion","unscheduleDocumentVersion","TIMELINE_ITEM_EVENT_TONE","TIMELINE_ITEM_I18N_KEY_MAPPING","published","draft","version","AvatarSize","AvatarStack","Box","Flex","Skeleton","Stack","Text","getTheme_v2","ThemeColorAvatarColorKey","useMemo","css","styled","Tooltip","UserAvatar","useDateTimeFormat","RelativeTimeOptions","useRelativeTime","useTranslation","ReleaseTitle","VersionInlineBadge","isReleaseDocument","getReleaseTone","DocumentGroupEvent","isEditDocumentVersionEvent","isPublishDocumentVersionEvent","useUser","TIMELINE_ICON_COMPONENTS","TIMELINE_ITEM_EVENT_TONE","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStackProps","maxLength","userIds","size","withTooltip","UserAvatarStack","t0","$","_c","t1","undefined","t2","t3","userId","map","IconBox","$color","props","theme","color","avatar","fg","bg","sizes","RELATIVE_TIME_OPTIONS","minimal","useTemporalPhrase","AvatarSkeleton","NameSkeleton","font","text","lineHeight","UserLine","user","loading","displayName","ChangesBy","collaborators","t","_temp","t4","TimelineItemProps","event","showChangesBy","Event","type","timestamp","documentVariantType","IconComponent","contributors","Symbol","for","dateStyle","timeStyle","dateFormat","Date","date","updatedTimeAgo","t5","parsedDate","format","formattedDate","formattedTimestamp","t6","author","t7","position","t8","filter","Boolean","t9","t10","t11","t12","t13","t14","t15","t16","t17","release","metadata","title","t18","displayTitle","t19","t20","t21","length","t22","t23","t24","Path","Card","Flex","Inline","Stack","Text","ReactNode","Tooltip","TooltipProps","LegacyLayerProvider","UserAvatar","useRelativeTime","useTranslation","useUser","AnnotationDetails","Diff","getAnnotationAtPath","useAnnotationColor","Event","DiffTooltipProps","children","React","JSX","Element","description","diff","path","DiffTooltipWithAnnotationsProps","annotations","DiffTooltip","props","$","_c","t0","restProps","t1","undefined","t2","annotation","t3","t4","DiffTooltipWithAnnotation","t","Symbol","for","minWidth","map","_temp","t5","content","t6","idx","AnnotationItem","author","timestamp","user","color","minimal","timeAgo","event","backgroundColor","background","text","borderRadius","displayName","ArrowDownIcon","ArrowRightIcon","Text","TextProps","HTMLProps","FromToArrowDirection","arrowComponents","down","right","FromToArrow","props","$","_c","restProps","t0","direction","undefined","ArrowComponent","t1","t2","useContext","DocumentChangeContext","DocumentChangeContextInstance","useDocumentChange","documentChange","Error","UserColor","FieldPreviewComponent","BooleanProps","checked","color","BooleanPreview","t0","$","_c","value","schemaType","Preview","options","layout","Checkbox","Switch","t1","background","t2","Symbol","for","t3","text","t4","t5","border","t6","Box","Flex","Text","useDiffAnnotationColor","DiffTooltip","FromToArrow","useDocumentChange","BooleanDiff","DiffComponent","Checkbox","Switch","BooleanFieldDiff","t0","$","_c","diff","schemaType","fromValue","toValue","title","options","Preview","layout","t1","Symbol","for","userColor","showFromValue","showToValue","undefined","t2","t3","t4","t5","t6","t7","useTranslation","Diff","useChangeVerb","diff","$","_c","t","hadPrevValue","hasValue","fromValue","hasNextValue","toValue","t0","value","Path","Card","rem","ElementType","HTMLProps","ReactNode","useMemo","styled","Annotation","Diff","getAnnotationAtPath","useAnnotationColor","DiffTooltip","DiffCardProps","annotation","as","React","JSX","IntrinsicElements","diff","disableHoverEffect","path","tooltip","description","StyledCardProps","$annotationColor","backgroundColor","color","StyledCard","theme","sanity","radius","card","enabled","bg","EMPTY_PATH","DiffCard","props","$","_c","annotationProp","children","className","ref","restProps","t0","t1","t2","style","undefined","t3","t4","t5","t6","background","text","t7","element","t8","t9","t10","Flex","Grid","GridProps","rem","useTheme","HTMLProps","ReactNode","useMemo","RefAttributes","FromToArrow","FromToProps","align","layout","from","to","Omit","HTMLDivElement","INLINE_COLUMN_STYLES","flexShrink","BLOCK_COLUMN_STYLES","alignItems","FLEX_ALIGN","Record","top","center","bottom","default","FromTo","props","$","_c","ref","restProps","style","t0","t1","undefined","theme","t2","maxWidth","display","gridTemplateColumns","sanity","space","t3","layoutStyles","columnStyles","t4","t5","t6","t7","children","t8","t9","Path","SchemaType","CSSProperties","FieldPreviewComponent","Diff","useChangeVerb","DiffCard","DiffTooltip","FromTo","DiffFromToProps","align","cardClassName","diff","layout","path","previewComponent","schemaType","cardStyles","flex","minWidth","display","whiteSpace","DiffFromTo","props","$","_c","PreviewComponent","action","changeVerb","t0","toValue","t1","fromValue","undefined","from","to","t2","t3","StringSchemaType","Box","legacyDateFormat","styled","FieldPreviewComponent","DatetimeWrapper","div","DatetimePreview","t0","$","_c","value","schemaType","t1","formatDateTime","t2","options","name","dateFormat","DEFAULT_DATE_FORMAT","timeFormat","DEFAULT_TIME_FORMAT","format","Date","DiffFromTo","DiffComponent","StringDiff","DatetimePreview","DatetimeFieldDiff","t0","$","_c","diff","schemaType","t1","ConditionalProperty","ConditionalPropertyCallbackContext","useMemo","isRecord","isThenable","value","Promise","then","useCheckCondition","checkProperty","checkPropertyName","context","$","_c","currentUser","document","parent","path","t0","bb0","isTrueIsh","undefined","t1","err","console","error","message","warn","ConditionalProperty","Path","SanityDocument","useCurrentUser","useUnique","useCheckCondition","ConditionalPropertyProps","parent","value","document","checkProperty","checkPropertyKey","path","useConditionalProperty","props","$","_c","t0","valueProp","undefined","currentUser","t1","isPropertyTruthy","ArraySchemaType","isTypedObject","SchemaType","Diff","resolveTypeName","value","_type","resolveJSType","getArrayDiffItemType","diff","schemaType","fromType","toType","action","resolveArrayMemberType","toValue","fromValue","typeName","declared","of","find","candidate","name","length","undefined","val","Array","isArray","ANNOTATION_SYMBOLS","CHILD_SYMBOL","DECORATOR_SYMBOLS","EMPTY_BLOCK_SYMBOL","INLINE_SYMBOLS","TRAILING_SPACE_SYMBOL","SEGMENT_START_SYMBOL","cleanupEfficiency","DIFF_DELETE","DIFF_EQUAL","DIFF_INSERT","makeDiff","ArraySchemaType","isPortableTextSpan","isPortableTextTextBlock","ObjectField","ObjectSchemaType","PortableTextBlock","PortableTextChild","PortableTextObject","PortableTextTextBlock","SchemaType","SpanSchemaType","flatten","isEqual","orderBy","ArrayDiff","DiffComponent","DiffComponentOptions","ObjectDiff","StringDiffSegment","TextSymbols","InlineSymbolMap","MarkSymbolMap","PortableTextDiff","UNKNOWN_TYPE_NAME","hasPTMemberType","schemaType","of","some","isPTSchemaType","startMarkSymbols","DECORATOR_SYMBOLS","map","set","concat","ANNOTATION_SYMBOLS","endMarkSymbols","allSymbols","INLINE_SYMBOLS","CHILD_SYMBOL","SEGMENT_START_SYMBOL","symbolRegex","RegExp","join","segmentRegex","BlockSchemaType","diffComponent","jsonType","name","isHeader","node","style","includes","findChildDiff","diff","child","childrenDiff","fields","children","items","filter","item","isChanged","toValue","fromValue","childDiff","getChildSchemaType","childrenField","find","f","cSchemaType","type","_type","undefined","getDecorators","spanSchemaType","title","value","decorators","getAnnotations","annotations","isDecorator","dec","blockToSymbolizedText","block","decoratorMap","annotationMap","inlineMap","returned","text","replace","spanDiff","findSpanDiffFromChild","textDiff","action","segments","seg","marks","forEach","mark","_isDecorator","_key","createPortableTextDiff","displayValue","_diff","origin","index","allMarkDefs","getAllMarkDefs","markDef","inlines","getInlineObjects","inline","fromText","toText","toPseudoValue","fromPseudoValue","pseudoDiff","buildSegments","annotation","fromIndex","toIndex","hasMoved","Error","fromInput","toInput","dmpDiffs","fromIdx","toIdx","op","push","length","slice","newSegments","markMatches","matchAll","lastIndex","match","Math","max","allChildren","cld","previousChildren","oCld","candidate","findAnnotationDiff","markDefKey","markDefs","isEmptyObject","object","Object","keys","escapeRegExp","allDefs","oldDefs","oDef","def","ObjectSchemaType","SchemaType","StudioLocaleResourceKeys","getPrintableType","FieldValueError","messageKey","expectedType","actualType","value","getValueError","schemaType","jsonType","valueType","Array","isArray","undefined","isObjectType","isObjectValue","field","fields","fieldError","name","type","Record","Card","Stack","Text","Code","CSSProperties","styled","useTranslation","DiffComponent","useChangeVerb","DiffCard","DiffTooltip","FromToArrow","CodeWrapper","div","cardStyles","flex","minWidth","display","whiteSpace","jsonify","value","JSON","stringify","JsonFieldDiff","t0","$","_c","diff","t","changeVerb","t1","fromValue","undefined","from","t2","toValue","to","t3","content","t4","t5","t6","SchemaType","ChangeNode","Diff","FieldChangeNode","GroupChangeNode","ItemDiff","noop","isFieldChange","change","type","isGroupChange","isAddedItemDiff","item","diff","action","isRemovedItemDiff","isUnchangedDiff","emptyValuesByType","string","number","boolean","array","object","Record","ObjectSchemaType","JsonFieldDiff","UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE","name","fields","jsonType","components","diff","ObjectSchemaType","ObjectDiff","SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES","Set","collectObjectSchemaFieldNames","schemaType","names","fieldSets","fieldsets","fields","map","field","single","fieldSet","add","name","getSortedUnknownChangedObjectFieldNames","diff","fieldFilter","schemaFieldNames","unknown","Object","keys","filter","has","sort","fieldName","fieldDiff","isChanged","includes","ArraySchemaType","MultiFieldSet","ObjectField","ObjectSchemaType","Path","SchemaType","getItemKeySegment","pathsAreEqual","pathToString","getArrayDiffItemType","ArrayDiff","ChangeNode","ChangeTitlePath","Diff","DiffComponent","FieldChangeNode","ItemDiff","ObjectDiff","hasPTMemberType","getValueError","JsonFieldDiff","isFieldChange","resolveDiffComponent","UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE","getSortedUnknownChangedObjectFieldNames","DiffContext","itemDiff","parentDiff","parentSchema","fieldFilter","buildChangeList","schemaType","diff","path","titlePath","context","diffComponent","jsonType","type","buildObjectChangeList","buildArrayChangeList","getFieldChange","buildUnknownFieldChangeNodes","fieldDiff","fieldPath","fieldTitlePath","fromValue","toValue","isEmpty","showHeader","showIndex","key","diffContext","changes","childContext","fieldSets","fieldsets","fields","map","field","single","fieldSet","push","buildFieldChange","buildFieldsetChangeList","unknownFieldNames","fieldName","concat","length","reduceTitlePaths","name","isChanged","includes","title","readOnly","hidden","fieldSetHidden","fieldsetReadOnly","fieldSetTitlePath","fieldsetName","changedOrMoved","items","filter","item","hasMoved","fromIndex","toIndex","action","isPortableText","list","reduce","acc","memberTypes","memberType","toType","fromType","console","warn","segment","indexOf","itemPath","itemContext","itemTitlePath","annotation","attachItemDiff","change","children","forEach","index","siblings","error","component","undefined","byLength","slice","Array","isArray","Path","PathSegment","getItemKey","ChangeNode","FieldChangeNode","isAddedAction","change","type","diff","action","flattenChangeNode","changeNode","newSubChanges","changes","forEach","cChange","push","isSubpathOf","subPath","parentPath","length","i","pathSegmentOfCorrectType","item","Record","child","nextItem","key","_key","isArray","Array","parseInt","diffItem","DiffOptions","InsertAfterPatch","SetPatch","UnsetPatch","isIndexSegment","isKeyedObject","isKeySegment","isTypedObject","PatchOperations","Path","isRecord","findIndex","getItemKeySegment","getValueAtPath","isEmptyObject","pathToString","ArrayDiff","ChangeNode","Diff","FieldOperationsAPI","ItemDiff","ObjectDiff","flattenChangeNode","isAddedAction","isSubpathOf","pathSegmentOfCorrectType","diffOptions","diffMatchPatch","enabled","lengthThresholdAbsolute","lengthThresholdRelative","undoChange","change","rootDiff","documentOperations","stubbed","Set","patches","stubbedPaths","type","allChanges","unsetChanges","filter","child","forEach","push","buildUnsetPatches","map","unsetChange","path","reverse","diff","action","itemDiff","parentDiff","hasMoved","buildMovePatches","buildUndoPatches","patch","execute","buildUnsetPatch","concurrentUnsetPaths","previousValue","toValue","Record","furthestEmptyAncestor","paths","i","length","unsetByEarlierPatch","some","unset","currentPath","ignorePaths","initialPath","Error","ancestorPath","slice","ancestorValue","updatedIgnorePaths","isStub","basePath","parentValue","fromIndex","fromValue","getFromItem","insertLocation","before","prevIndex","prevItemKey","prevSegment","after","insert","items","inserts","op","unsets","reduce","acc","concat","stubs","hasSets","sets","getParentStubs","value","set","nextValue","subPath","pathStr","has","nextSegment","nextIsArrayElement","itemValue","stub","getStubValue","Array","isArray","indexAtPrev","nextItem","itemPath","add","prevItem","prevSeg","_key","setIfMissing","onlyContainsStubs","item","Object","prototype","hasOwnProperty","call","nextPath","isIgnoredPath","ignorePath","isEmptyArray","undefined","props","_type","styled","ChangeListWrapper","div","Box","rem","Text","styled","useTranslation","Annotation","FieldChangeNode","FromToIndex","getAnnotationAtPath","DiffCard","RoundedCard","div","theme","sanity","radius","space","AnnotationText","ChangeTitleSegment","props","$","_c","change","segment","t0","hasMoved","fromIndex","toIndex","annotation","created","deleted","readableIndex","CreatedTitleSegment","annotationProp","undefined","t","t1","position","description","t2","content","t3","diff","diffAnnotation","t4","t5","Symbol","for","textDecoration","t6","t7","DeletedTitleSegment","MovedTitleSegment","indexDiff","indexSymbol","positions","Math","abs","direction","count","context","ChevronRightIcon","Text","Breadcrumbs","ChangeTitlePath","FieldChangeNode","ChangeTitleSegment","ChangeBreadcrumb","props","$","_c","change","titlePath","t0","Symbol","for","t1","t2","titleSegment","idx","showSegment","showIndex","map","ErrorOutlineIcon","Box","Card","Flex","Text","Component","ReactNode","isDev","TFunction","DiffErrorBoundaryProps","children","t","DiffErrorBoundaryState","error","Error","DiffErrorBoundary","getDerivedStateFromError","state","componentDidCatch","console","render","props","Box","BoxProps","Card","Stack","Text","Code","ReactNode","useCallback","useEffect","useRef","useState","ExecutionProps","styled","useTranslation","pathToString","FieldChangeNode","FromToArrow","DiffInspectWrapperProps","children","change","as","CodeWrapper","pre","Meta","div","DiffInspectWrapper","props","$","_c","restProps","isHovering","isInspecting","setIsInspecting","t0","Symbol","for","_temp","toggleInspect","t1","current","handleMouseEnter","t2","handleMouseLeave","t3","t4","onKeyDown","evt","metaKey","key","window","addEventListener","removeEventListener","t5","t6","state","MetaLabel","title","DiffInspector","t","diff","action","isChanged","itemDiff","fromIndex","hasMoved","toIndex","path","printMeta","t7","t8","fromValue","jsonify","t9","t10","t11","t12","t13","t14","toValue","t15","t16","t17","value","JSON","stringify","keys","Record","lines","Object","entries","forEach","push","join","Box","ReactNode","Preview","FieldPreviewComponent","Diff","DiffComponent","DiffFromTo","FallbackPreview","t0","$","_c","value","schemaType","t1","t2","FallbackDiff","Record","props","diff","rem","styled","FieldChangeContainer","div","theme","sanity","color","solid","critical","enabled","bg","DiffBorder","space","RevertIcon","HTMLProps","RefAttributes","styled","Button","ButtonProps","useTranslation","Root","theme","sanity","color","solid","critical","enabled","bg","RevertChangesButton","props","$","_c","changeCount","ref","restProps","selected","t","t0","count","t1","ConfirmPopover","useTranslation","RevertChangesConfirmDialogProps","open","onConfirm","onCancel","changeCount","referenceElement","HTMLElement","RevertChangesConfirmDialog","t0","$","_c","t","t1","t2","count","t3","t4","Symbol","for","t5","ErrorOutlineIcon","Box","Card","Flex","Text","useTranslation","FieldValueError","ValueError","t0","$","_c","error","t","t1","Symbol","for","t2","actualType","expectedType","messageKey","t3","ObjectSchemaType","Path","Stack","Fragment","HTMLAttributes","startTransition","useCallback","useMemo","useState","DiffContext","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useTranslation","useDocumentPairPermissions","FieldChangeNode","undoChange","useDocumentChange","ChangeBreadcrumb","DiffErrorBoundary","DiffInspectWrapper","FallbackDiff","DiffBorder","FieldChangeContainer","RevertChangesButton","RevertChangesConfirmDialog","ValueError","ParentWrapper","t0","$","_c","children","path","hasRevertHover","wrap","FieldWrapper","t1","undefined","lastArrayIndex","i","length","t2","slice","t3","FieldChange","props","addParentWrapper","change","hidden","readOnly","restProps","DiffComponent","diffComponent","documentId","schemaType","rootDiff","isComparingCurrent","targetDocumentState","isTargetReady","status","scopeId","name","ops","confirmRevertOpen","setConfirmRevertOpen","revertHovered","setRevertHovered","buttonElement","_setButtonElement","t4","Symbol","for","element","setButtonElement","t","t5","id","type","version","permission","permissions","isPermissionsLoading","t6","handleRevertChanges","t7","handleRevertChangesConfirm","t8","closeRevertChangesConfirmDialog","t9","handleRevertButtonMouseEnter","t10","handleRevertButtonMouseLeave","t11","parentSchema","jsonType","of","some","_temp","isArray","t12","fieldPath","t13","value","t14","showHeader","titlePath","t15","Boolean","t16","t17","error","t18","diff","t19","key","granted","t20","t21","t22","t23","t24","t25","ofType","rem","styled","ChangeListWrapper","div","GroupChangeContainer","theme","sanity","color","solid","critical","enabled","bg","space","ConditionalProperty","SanityDocument","Box","Stack","Text","Fragment","HTMLAttributes","startTransition","useCallback","useContext","useEffect","useMemo","useState","DiffContext","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useDocumentPairPermissions","useConditionalProperty","pathsAreEqual","ChangeNode","GroupChangeNode","isPTSchemaType","undoChange","isFieldChange","useDocumentChange","ChangeBreadcrumb","FieldChange","ChangeListWrapper","GroupChangeContainer","RevertChangesButton","RevertChangesConfirmDialog","ChangeResolverProps","change","readOnly","hidden","addParentWrapper","ChangeResolver","props","$","_c","value","t0","undefined","t1","t2","schemaType","t3","type","diff","toValue","t4","path","document","checkProperty","checkPropertyKey","isHidden","t5","t6","t7","t8","isReadOnly","t9","fieldsetName","t10","GroupChange","group","restProps","titlePath","changes","groupPath","diffPath","documentId","FieldWrapper","rootDiff","isComparingCurrent","every","_temp","isPortableText","isNestedInDiff","revertButtonElement","_setRevertButtonElement","Symbol","for","element","setRevertButtonElement","isRevertButtonHovered","useHover","targetDocumentState","isTargetReady","status","scopeId","name","docOperations","confirmRevertOpen","setConfirmRevertOpen","id","version","permission","permissions","isPermissionsLoading","handleRevertChanges","handleRevertChangesConfirm","closeRevertChangesConfirmDialog","granted","t11","key","length","map","change_0","content","t12","jsonType","of","some","_temp2","isPortableTextGroupArray","t13","ofType","node","setValue","handleMouseOver","handleMouseOut","addEventListener","removeEventListener","Stack","Text","useTranslation","NoChanges","$","_c","t","t0","t1","t2","t3","t4","SanityDocument","RevertIcon","ObjectSchemaType","Card","Stack","startTransition","useCallback","useContext","useMemo","useState","DiffContext","Button","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useTranslation","useDocumentPairPermissions","useConditionalProperty","ChangeNode","ObjectDiff","buildObjectChangeList","undoChange","useDocumentChange","ChangeListWrapper","ChangeResolver","NoChanges","RevertChangesConfirmDialog","ChangeListProps","schemaType","diff","fields","ChangeList","t0","$","_c","documentId","isComparingCurrent","value","targetDocumentState","isTargetReady","status","t1","scopeId","t2","name","t3","docOperations","path","isRoot","length","confirmRevertAllOpen","setConfirmRevertAllOpen","confirmRevertAllHover","setConfirmRevertAllHover","buttonElement","_setButtonElement","t4","Symbol","for","element","setButtonElement","t","t5","t6","readOnly","document","undefined","checkProperty","checkPropertyKey","isReadOnly","jsonType","Error","t7","id","type","version","permission","permissions","isPermissionsLoading","t8","fieldFilter","allChanges","t9","maybeFlatten","changes","rootChange","t10","revertAllChanges","t11","handleRevertAllChangesClick","t12","handleRevertAllChangesMouseEnter","t13","handleRevertAllChangesMouseLeave","t14","closeRevertAllChangesConfirmDialog","t15","showFooter","t16","change","key","hidden","map","t17","granted","t18","t19","t20","Box","Flex","Stack","Text","ComponentType","ReactNode","styled","MetaInfoProps","title","action","icon","children","markRemoved","MetaText","MetaInfo","props","$","_c","Icon","t0","t1","t2","t3","t4","t5","t6","useMemo","useSyncObservable","EMPTY","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useRefValue","refId","$","_c","client","t0","observable","getDocument","document$","value","undefined","DocumentIcon","Box","Card","Flex","Text","useMemo","styled","useUnitFormatter","useTranslation","ChangeList","DiffCard","DiffTooltip","FromTo","MetaInfo","useRefValue","DiffComponent","ObjectDiff","getHumanFriendlyBytes","getSizeDiff","File","FileAsset","SizeDiff","div","theme","sanity","color","solid","positive","enabled","bg","critical","FileFieldDiff","t0","$","_c","diff","schemaType","fromValue","toValue","fields","fromAsset","asset","toAsset","t","prev","_ref","next","t1","Symbol","for","unitDisplay","maximumFractionDigits","formatUnit","t2","ignoredFields","t3","Object","entries","filter","t4","name","field","isChanged","includes","map","_temp","changedFields","didAssetChange","t5","field_0","_temp2","nestedFields","pctDiff","size","prevSize","t6","nextSize","t7","display","flex","cardStyles","t8","originalFilename","from","t9","to","t10","t11","t12","t13","FileAssetChange","t14","t15","length","t16","name_0","field_1","useMemo","useObservable","Observable","of","OperatorFunction","catchError","map","LoadableState","LoadingState","LoadedState","T","ErrorState","value","error","isLoading","Error","LOADING_STATE","undefined","useLoadable","value$","initialValue","$","_c","t0","initial","t1","pipe","asLoadable","loadableObservable","const","useMemo","Observable","of","LoadableState","useLoadable","useDocumentPreviewStore","useDocumentValues","documentId","paths","$","_c","documentPreviewStore","t0","observePaths","_type","_ref","T","undefined","documentValues$","hexToRgba","hex","opacity","rgba","exec","slice","map","num","parseInt","concat","join","simpleHash","str","hash","length","toString","i","char","charCodeAt","getDeviceDpr","base","Math","ceil","window","devicePixelRatio","min","max","Image","ImageCrop","ImageHotspot","SVGProps","useTranslation","useDiffAnnotationColor","DiffTooltip","ObjectDiff","hexToRgba","HotspotCropSVGProps","crop","diff","hash","hotspot","width","height","HotspotCropSVG","props","$","_c","restProps","t0","t1","undefined","t","cropColor","hotspotColor","t2","t3","t4","t5","border","t6","t7","CropSVG","left","top","right","bottom","x","y","rectProps","Symbol","for","vectorEffect","HotspotSVG","offset","cx","cy","rx","ry","ellipseProps","t8","getImageDimensions","isDefaultCrop","isDefaultHotspot","hues","ImageIcon","createImageUrlBuilder","Box","Card","Flex","Text","SyntheticEvent","useMemo","useState","styled","useClient","useTranslation","useDocumentValues","DEFAULT_STUDIO_CLIENT_OPTIONS","MetaInfo","getDeviceDpr","simpleHash","HotspotCropSVG","ImagePreviewProps","MinimalAsset","ASSET_FIELDS","NoImagePreview","$","_c","t","t0","t1","ImageWrapper","div","gray","hex","Image","img","HotspotDiff","ImagePreview","props","id","action","diff","hotspot","crop","is","client","imageError","setImageError","value","asset","dimensions","imageBuilder","assetIsDeleted","title","originalFilename","T0","T1","T2","T3","T4","assetChanged","printAction","t10","t11","t12","t13","t14","t15","t16","t17","t2","t3","t4","t5","t6","t7","t8","t9","height","width","imageSource","image","dpr","fit","fromValue","_ref","toValue","t18","t19","metaAction","undefined","toString","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","Image","Box","Card","Text","useTranslation","TFunction","getAnnotationAtPath","ChangeList","DiffCard","DiffTooltip","FromTo","useDocumentChange","DiffComponent","ObjectDiff","ImagePreview","NoImagePreview","IMAGE_META_FIELDS","BASE_IMAGE_FIELDS","CARD_STYLES","flex","ImageFieldDiff","t0","$","_c","diff","schemaType","t","showFromValue","fromValue","toValue","fields","isChanged","fromRef","asset","_ref","toRef","t1","assetAnnotation","t2","Object","keys","t3","filter","name","changedFields","t4","t5","field","includes","map","_temp","nestedFields","assetAction","didAssetChange","didCropChange","didHotspotChange","didMetaChange","showImageDiff","showMetaChange","hotspot","undefined","crop","from","t6","to","t7","t8","imageDiff","t9","getChangeDescription","t10","length","t11","action","field_0","Box","styled","FieldPreviewComponent","NumberWrapper","div","NumberPreview","props","$","_c","value","t0","DiffFromTo","DiffComponent","NumberDiff","NumberPreview","NumberFieldDiff","t0","$","_c","diff","schemaType","t1","Box","Text","styled","InlineBox","InlineText","PreviewContainer","PopoverContainer","ChevronDownIcon","isKeySegment","ObjectSchemaType","Path","PortableTextChild","Flex","Text","useClickOutsideEvent","toString","MouseEvent","ReactNode","useCallback","useContext","useEffect","useMemo","useRef","useState","DiffContext","ReviewChangesContext","styled","Popover","useChangeIndicatorsReportedValues","useTranslation","useDiffAnnotationColor","ChangeList","DiffTooltip","ObjectDiff","isEmptyObject","InlineBox","InlineText","PopoverContainer","PreviewContainer","AnnotationProps","diff","object","schemaType","path","children","AnnotationWrapper","div","Annotation","t0","$","_c","restProps","t","t1","t2","action","AnnnotationWithDiffProps","AnnnotationWithDiff","onSetFocus","fullPath","popoverRef","Symbol","for","color","background","text","style","isRemoved","open","setOpen","t3","emptyObject","t4","t5","_key","t6","concat","markDefPath","t7","seg","slice","findIndex","prefix","annotationPath","t8","myPath","t9","myValue","values","t10","t11","t12","p","startsWith","filter","isEditing","length","t13","event","stopPropagation","preventDefault","setTimeout","handleOpenPopup","t14","t15","current","annotation","t16","annotations","t17","value","t18","annotationType","title","name","t19","t20","t21","popoverContent","t22","undefined","t23","context","t24","display","t25","t26","t27","t28","t29","t30","ReactNode","styled","Quote","blockquote","Blockquote","t0","$","_c","children","t1","Heading","ReactNode","styled","headingSizes","Record","h1","h2","h3","h4","h5","h6","StyledHeading","Header","t0","$","_c","style","children","t1","t2","ReactNode","styled","StyledParagraph","div","Paragraph","t0","$","_c","children","t1","Path","PortableTextTextBlock","Box","Card","Stack","Text","MouseEvent","useCallback","useContext","DiffContext","ReviewChangesContext","useTranslation","useDiffAnnotationColor","DiffTooltip","isHeader","PortableTextDiff","Blockquote","Header","Paragraph","EMPTY_PATH","Block","props","$","_c","diff","block","children","color","path","fullPath","onSetFocus","t","isRemoved","action","returned","t0","event","stopPropagation","handleClick","style","t1","fromStyle","origin","fields","annotation","fromValue","background","text","t2","Symbol","for","borderStyle","t3","t4","t5","t6","t7","t8","toStyle","t9","t10","t11","t12","t13","styled","DecoratorWrapper","span","decoration","theme","sanity","fonts","code","family","color","muted","default","enabled","bg","Decorator","t0","$","_c","mark","children","t1","ChevronDownIcon","isKeySegment","ObjectSchemaType","Path","PortableTextChild","PortableTextObject","Card","Flex","Text","useClickOutsideEvent","FOCUS_TERMINATOR","toString","MouseEvent","useCallback","useContext","useEffect","useMemo","useRef","useState","DiffContext","ReviewChangesContext","styled","Popover","useChangeIndicatorsReportedValues","useTranslation","Preview","useDiffAnnotationColor","ChangeList","DiffTooltip","ObjectDiff","isEmptyObject","InlineBox","InlineText","PopoverContainer","PreviewContainer","InlineObjectProps","diff","object","path","schemaType","InlineObjectWrapper","InlineObject","t0","$","_c","restProps","t","t1","_type","t2","InlineObjectWithDiffProps","InlineObjectWithDiff","fullPath","onSetFocus","Symbol","for","color","background","text","style","open","setOpen","t3","emptyObject","isRemoved","action","myPath","t4","t5","seg","_key","prefix","slice","findIndex","concat","myValue","values","t6","t7","p","startsWith","filter","isEditing","length","focusPath","t8","t9","event","stopPropagation","preventDefault","handleOpenPopup","t10","handleClose","t11","value","t12","t13","popoverContent","annotation","t14","annotations","t15","undefined","t16","context","t17","t18","t19","t20","t21","t22","PopoverContent","onClose","popoverRef","current","inlineObjectType","title","name","isKeySegment","Path","HTMLProps","SyntheticEvent","useCallback","useContext","useMemo","DiffContext","ReviewChangesContext","useTranslation","DiffCard","ObjectDiff","StringDiff","StringDiffSegment","InlineBox","TextProps","diff","childDiff","children","React","JSX","Element","path","segment","Text","t0","$","_c","restProps","diffWithFallback","hasChanged","action","t1","TextWithDiff","onSetFocus","fullPath","slice","spanSegment","t","isRemoved","t2","t3","seg","_key","prefix","findIndex","concat","focusPath","event","stopPropagation","preventDefault","handleClick","t4","segments","find","rSeg","text","realSeg","annotation","t5","description","context","diffCard","t6","t7","t8","isPortableTextSpan","ObjectSchemaType","PortableTextChild","PortableTextTextBlock","SpanSchemaType","uniq","xor","ReactNode","useMemo","useTranslation","TFunction","DiffCard","ArrayDiff","ObjectDiff","StringDiff","StringDiffSegment","escapeRegExp","findAnnotationDiff","findChildDiff","findSpanDiffFromChild","getAllMarkDefs","getChildSchemaType","getDecorators","getInlineObjects","isDecorator","TextSymbols","PortableTextDiff","Annotation","Block","Decorator","InlineObject","Text","decoratorSymbolsStart","DECORATOR_SYMBOLS","map","set","decoratorSymbolsEnd","annotationSymbolsStart","ANNOTATION_SYMBOLS","annotationSymbolsEnd","allSymbolsStart","concat","allSymbolsEnd","allDecoratorSymbols","markRegex","RegExp","join","Props","diff","schemaType","PortableText","props","$","_c","block","origin","toValue","fromValue","t","t0","inlineObjects","t1","defineRenderChild","renderChild","t2","displayValue","t3","children","t4","t5","child","t6","renderTextSegment","decoratorTypes","seg","segIndex","spanSchemaType","title","value","React","JSX","Element","text","replace","TRAILING_SPACE_SYMBOL","spanDiff","activeMarks","marks","renderDecorators","length","forEach","mark","_key","returned","fromPtDiffText","indirectMarksAnnotation","action","annotation","undefined","marksDiff","fields","marksAnnotation","marksChanged","ptDiffChildren","split","CHILD_SYMBOL","filter","ptDiffMatchString","controlString","slice","Math","max","indexOf","toTest","matches","matchAll","match","sym","find","aSet","isMarkStart","notClosed","lastIndexOf","push","some","m","description","isEmptyTextChange","_type","ptDiffChild","childrenDiff","segments","items","type","returnedChildren","annotationSegments","Record","textDiff","context","EMPTY_BLOCK_SYMBOL","childToIndex","activeAnnotations","object","symbols","endedAnnotation","allMarkDefs","isInline","INLINE_SYMBOLS","includes","isMarkEnd","isChildStart","isRemoved","pop","indexOfSymbol","findIndex","key","originChild","objectSchemaType","objectDiff","getChildFromFromValue","cld","childDiff","Error","active","lastChild","annotationDiff","annotations","name","useMemo","DiffComponent","ObjectDiff","PortableText","createPortableTextDiff","PTDiff","props","$","_c","diff","schemaType","t0","ptDiff","t1","t2","action","Reference","Box","styled","Preview","FieldPreviewComponent","ReferenceWrapper","div","ReferencePreview","t0","$","_c","value","schemaType","t1","DiffFromTo","DiffComponent","ReferenceDiff","ReferencePreview","ReferenceFieldDiff","t0","$","_c","diff","schemaType","t1","Slug","Box","styled","FieldPreviewComponent","SlugWrapper","div","SlugPreview","props","$","_c","value","t0","current","DiffFromTo","DiffComponent","ObjectDiff","SlugPreview","Slug","current","SlugFieldDiff","t0","$","_c","diff","schemaType","t1","Card","rem","Text","styled","useTranslation","StringDiff","StringDiffSegment","DiffCard","RoundedCard","span","theme","sanity","radius","ChangeSegment","DiffStringSegment","props","$","_c","segment","text","t","action","t0","annotation","t1","t2","description","t3","Symbol","for","textDecoration","t4","t5","display","DiffString","diff","segments","map","_temp","segmentIndex","Box","styled","FieldPreviewComponent","StringWrapper","div","StringPreview","props","$","_c","value","t0","styled","DiffFromTo","DiffString","DiffComponent","StringDiff","StringPreview","StringWrapper","div","StringFieldDiff","t0","$","_c","diff","schemaType","options","list","t1","DiffComponent","DiffComponentOptions","BooleanFieldDiff","DatetimeFieldDiff","FileFieldDiff","ImageFieldDiff","NumberFieldDiff","PTDiff","ReferenceFieldDiff","SlugFieldDiff","StringFieldDiff","defaultComponents","Record","block","boolean","component","showHeader","date","datetime","file","image","number","reference","crossDatasetReference","slug","string","ArraySchemaType","ObjectSchemaType","SchemaType","ComponentType","diffResolvers","Diff","DiffComponent","DiffComponentOptions","defaultComponents","resolveDiffComponent","type","parentSchemaType","D","itType","resolved","components","diff","tryResolve","name","isDateType","includes","defaultComponentKey","jsonType","schemaType","resolvers","resolver","console","error","undefined","isArraySchemaType","SchemaType","get","getOption","type","optionName","options","PSEUDO_OBJECTS","HIDDEN_FIELDS","NO_LEVEL_LAYOUTS","NO_LEVEL_TYPES","getTypeChain","visited","Set","has","add","next","getFieldLevel","schemaType","currentLevel","getArrayFieldLevel","getObjectFieldLevel","typeIfRelevant","asType","fields","jsonType","undefined","typeName","name","includes","isPseudoObject","hasVisibleFields","filter","f","length","hasListOptions","list","isNoLevelLayout","layout","asOneOfTypes","isKeyedObject","KeyedObject","Path","PathSegment","toString","isRecord","PathSegmentWithType","segment","type","PathWithTypes","FlattenOptions","compact","FlattenedPair","flatPath","value","context","flatPathArray","flatPathArrayWithTypes","flattenObject","object","Record","path","pathWithTypes","Generator","length","key","Object","entries","currentPath","concat","currentPathWithTypes","readType","Array","isArray","flattenArray","array","index","_key","_type","normalizePathSegment","isArraySchemaType","isObjectSchemaType","PathSegment","SchemaType","getTypeChain","normalizePathSegment","PathSegmentWithType","introspectSchema","schemaType","path","cache","WeakMap","Record","fullyQualifiedPath","Generator","head","tail","nextFullyQualifiedPath","concat","cacheKey","JSON","stringify","cachedSchemaType","get","set","cachedPath","segment","headSegment","type","headType","headSchemaType","fields","find","field","name","of","length","Error","typeChain","Set","some","isArrayOfObjectsSchemaType","isArrayOfPrimitivesSchemaType","isObjectSchemaType","ArrayOfPrimitivesFormNode","ArrayOfObjectsFormNode","BaseFormNode","ObjectFormNode","isObjectFormNode","formNode","schemaType","isArrayOfObjectsFormNode","isArrayOfPrimitivesFormNode","Path","Observable","concatWith","filter","from","map","merge","mergeMap","of","switchMap","isArrayOfObjectsFormNode","isArrayOfPrimitivesFormNode","isObjectFormNode","ArrayOfObjectsItemMember","ArrayOfObjectsMember","ArrayOfPrimitivesItemMember","ArrayOfPrimitivesMember","FieldMember","BaseFormNode","ObjectArrayFormNode","FormState","Member","MemberAtPath","path","member","Context","groups","members","readOrderedFormMembers","hasGroups","grouplessMembers","pipe","isFieldMember","memberGroups","some","group","memberGroup","name","source","includes","isFieldOrArrayMember","subject","selectSubject","memberAtPath","_allMembers","kind","field","item","isFieldMemberLike","maybeFieldMemberLike","maybeFieldMember","maybeFieldOrArrayMember","ObjectSchemaType","PathSegment","SchemaType","isArrayOfPrimitivesSchemaType","isArrayOfStringsSchemaType","isArraySchemaType","isObjectSchemaType","fromString","toString","Observable","catchError","combineLatest","filter","from","map","mergeMap","of","reduce","switchMap","toArray","resolveDiffComponent","DiffComponent","DiffComponentOptions","FormState","DivergenceNavigatorState","ReachableDivergence","ReachableDivergenceAtPath","Divergence","introspectSchema","readOrderedFormMembers","transposeSchema","divergences","Record","schemaType","formState","Pick","divergencesByNode","groups","members","_allMembers","pipe","path","pathString","divergenceAtPath","divergence","status","pathSchemaTypes","snapshots","subjectHead","pathWithTypes","upstreamHead","error","console","warn","isSupportedNode","transposed","pathSegments","divergenceSchemaType","at","compositeNodePath","compositeNodeDiffComponent","compositeNodeSchemaType","index","length","currentPathSegments","slice","currentSchemaType","parentSchemaType","diffComponent","undefined","isComposite","push","Object","entries","reachableDivergences","state","currentPath","isArrayListOption","Array","isArray","options","list","isArrayTag","layout","ObjectSchemaType","Path","SchemaType","fromString","startsWith","toString","pick","useCallback","useEffect","useMemo","useSyncObservable","BehaviorSubject","combineLatest","distinctUntilChanged","EMPTY","filter","map","merge","Observable","of","shareReplay","Subject","switchScan","DiffComponent","DiffComponentOptions","FormState","useWorkspace","CollatedDocumentDivergencesState","Divergence","DivergenceAtPath","transposeSchema","ReachableDivergence","isComposite","divergences","diffComponent","schemaType","ReachableDivergenceAtPath","path","divergence","DivergenceNavigatorState","focusedDivergence","previousDivergence","nextDivergence","state","upstreamId","allDivergences","divergencesByNode","Record","DivergenceNavigator","focusDivergence","blurDivergence","blurFocusedDivergence","Action","type","context","formState","Pick","DivergenceNavigatorContext","StateContext","useDivergenceNavigator","t0","$","_c","advancedVersionControl","t1","enabled","advancedVersionControlEnabled","t2","Symbol","for","dispatch","t3","undefined","schemaTypeContext","t4","t5","next","t6","formStateContext","t7","t8","t9","bb0","t10","pipe","_temp","_temp2","_temp3","_temp4","createStateReducer","readState","t11","t12","path_0","t13","t14","state_0","t15","previous","current","value","_id","value_0","withAddressablePaths","focusedDivergenceIndex","findIndex","at","length","shouldFocusNextDivergence","find","shouldFocusNext","status","nextContext","action","Object","entries","selectDivergenceCount","selectDivergence","divergencePath","selectFirstDescendantDivergence","useSyncObservable","TargetPerspective","ReleasesReducerState","useReleasesStore","getReleaseDocumentIdFromReleaseId","getVersionFromId","isDraftId","Result","Pick","release","useVersionRelease","documentId","$","_c","state$","readReleasesState","t0","Symbol","for","releases","Map","state","releasesState","t1","undefined","t2","t3","bb0","versionId","t4","t5","get","fromString","DivergenceEffect","SelectEffectContext","fromValue","toValue","upstreamParent","path","selectEffect","Exclude","at","Array","isArray","fromString","DivergenceEffect","SelectEffectFromHashContext","fromHash","toHash","upstreamParentIsArray","path","UNDEFINED_SHA1","selectEffectFromHash","Exclude","at","ResolutionMarker","Revision","Signature","ResolutionMarkerAtPath","path","resolutionMarker","isDivergenceResolutionMarker","maybeDivergenceResolutionMarker","Array","isArray","length","at","delayWhen","from","MonoTypeOperatorFunction","pipe","delayTask","Type","window","scheduler","yield","requestIdleCallback","idleCallback","Promise","resolve","lcs_dp","lcsDp","KeyedObject","intersection","EMPTY","filter","from","map","Observable","of","shareReplay","switchMap","toArray","createMultiKeyWeakMap","MultiKeyWeakMap","cache","MovesByKey","Record","findMovesInArrayOfObjects","a","b","cached","get","intersectingKeys","aIntersectingKeys","bIntersectingKeys","findIntersectingKeys","readMoves","pipe","aIntersecting","bIntersecting","length","x","y","lcs","aIndex","lcsKeys","size","_key","includes","indexOf","positionDelta","Object","fromEntries","set","FindIntersectingKeys","Set","prototype","findIntersectingKeysUsingSet","findIntersectingKeysUsingArray","aKeys","bKeys","subject","has","stringify","textEncoder","TextEncoder","hashData","data","Promise","hash","encode","String","Uint8Array","ArrayBuffer","digest","globalThis","crypto","subtle","hex","Array","from","map","i","toString","padStart","join","isKeyedObject","isKeySegment","KeyedObject","Path","SanityDocument","fromString","startsWith","toString","get","combineLatest","EMPTY","filter","first","from","map","merge","mergeMap","Observable","of","OperatorFunction","pipe","reduce","switchMap","takeWhile","tap","toArray","zipWith","isRecord","selectEffect","selectEffectFromHash","isDivergenceResolutionMarker","ResolutionMarker","delayTask","findMovesInArrayOfObjects","FlattenedPair","flattenObject","PathWithTypes","hashData","DivergenceResolution","_key","resolutionMarker","FindDivergencesContext","upstreamHead","subjectHead","upstreamAtFork","resolutions","DivergenceStatus","SnapshotType","SnapshotsByType","Record","value","parentArray","parentObjectType","pathWithTypes","DivergenceDetectionStrategy","DivergenceEffect","BaseDivergence","snapshots","documentType","isAddressable","effect","documentId","subjectId","sinceRevisionId","status","path","Divergence","Exclude","Extract","upstreamPosition","delta","position","DivergenceAtPath","context","skipFields","State","readDocumentDivergences","markName","_id","join","performance","mark","instance","entry","snapshotType","match","aggregateArrays","aggregateObjects","state","arrays","objects","undefined","parentPathArray","flatPathArray","slice","parentObject","flatPathArrayWithTypes","measure","start","detail","devtools","dataType","track","trackGroup","color","Object","entries","hasObjectSnapshot","some","hasKeyedObjectSnapshot","strategy","isRevisionIdEqual","_type","isPositionedNode","upstreamBaseIndex","upstreamHeadIndex","getPositionedNodeIndexes","moveInUpstream","isObjectArray","movesInUpstream","movesInSubject","key","moves","moveInSubject","positionDelta","createDocumentRevisionMarker","_rev","sinceForkMarkName","properties","hashes","fromValue","toValue","upstreamParent","parentPathSegment","at","find","item","isArray","Array","hasArraySnapshot","hasNullSnapshot","divergence","findPositionedNodeIndexByKey","Error","sinceResolutionMarkName","fromHash","toHash","upstreamParentIsArray","coalesceChangedObjectTypes","UpstreamBaseIndex","UpstreamHeadIndex","Input","SanityObjectLike","isSanityObjectLike","changedObjectPaths","divergences","sort","pathA","pathB","pathArrayA","pathArrayB","descendsChangedTypeObject","changedObjectPath","pathArray","parentObjectPath","isSubjectObjectTypeCompatible","isChangedObjectType","isFirstDescendantOfChangedObject","push","array","findIndex","upstreamId","upstreamRevisionId","split","maybeObjectArray","maybeSanityObjectLike","documentRevision","revisionId","isDivergenceResolutions","maybeDivergenceResolutions","every","isDivergenceResolution","maybeDivergenceResolution","isEqual","QuickLRU","debounceTime","distinctUntilChanged","EMPTY","filter","map","mergeMap","Observable","of","shareReplay","startWith","Subject","switchMap","switchScan","tap","toArray","Divergence","DivergenceAtPath","FindDivergencesContext","readDocumentDivergences","delayTask","CollatedDocumentDivergencesState","state","upstreamId","divergences","Record","CollatedDocumentDivergencesInstance","observable","context","CollatedDocumentDivergencesContext","subjectId","DEBOUNCE_DURATION","CACHE_MAX_SIZE","cacheWriteChannel","cache","collateDocumentDivergencesInitialState","undefined","collateDocumentDivergences","initialiseCache","cacheKey","getCacheKey","cachedInstance","get","markName","join","pipe","performance","mark","isContextEqual","nextContext","measure","start","detail","devtools","dataType","track","trackGroup","color","Object","fromEntries","instance","set","next","peekCollatedDocumentDivergences","writtenCacheKey","a","b","upstreamHead","_rev","subjectHead","upstreamAtFork","resolutions","maxSize","Pick","SanityClient","TransactionLogEventWithEffects","TransactionLogEventWithMutations","isCreateIfNotExistsMutation","isCreateMutation","isCreateOrReplaceMutation","applyPatch","QuickLRU","Observable","catchError","concat","concatMap","EMPTY","first","from","map","merge","of","scan","switchMap","getTransactionsLogs","defaultGetTransactionsLogs","SourceTransaction","source","transaction","TransactionAccumulation","a","Set","b","currentTransaction","PartialTransactionAccumulation","Omit","PAGE_LENGTH","cache","readMostRecentSharedTransaction","client","maxSize","cacheKey","join","cachedReader","get","reader","readTransactionsFollowingLineage","documentId","pipe","visited","add","id","undefined","accumulation","transactionIdsA","transactionIdsB","partner","has","error","delete","set","lineageCache","baseRevisionId","cursor","Error","request","limit","excludeContent","effectFormat","reverse","includeIdentifiedDocumentsOnly","toTransaction","tag","transactions","index","isCursor","isPageEnd","maybeReadNextPage","isVersionCreateTransaction","effects","createdDocument","apply","_system","base","rev","isCreateTransaction","mutations","some","mutation","revert","length","SanityDocument","EditStateFor","selectUpstreamVersion","upstreamEditState","version","published","SanityClient","TransactionLogEventWithMutations","TransactionLogEventWithEffects","getTransactionsLogs","TRANSLOG_ENTRY_LIMIT","documentTransactionsCache","Record","Object","create","getDocumentTransactions","documentId","client","toTransaction","fromTransaction","Promise","cacheKey","skipFromTransaction","transactions","tag","effectFormat","excludeContent","includeIdentifiedDocumentsOnly","limit","filter","transaction","id","length","nextTransactions","concat","MendozaPatch","TransactionLogEventWithEffects","ReleasesReducerState","getReleaseDocumentIdFromReleaseId","getVersionFromId","DocumentVariantType","DocumentRemoteMutationEvent","DocumentGroupEvent","EditDocumentVersionEvent","isCreateDocumentVersionEvent","isCreateLiveDocumentEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","isEditDocumentVersionEvent","isPublishDocumentVersionEvent","isScheduleDocumentVersionEvent","isUnpublishDocumentEvent","isUnscheduleDocumentVersionEvent","isUpdateLiveDocumentEvent","UpdateLiveDocumentEvent","removeDupes","events","newEvents","noDupes","reduce","acc","event","has","id","existingEvent","get","set","type","Map","Array","from","values","addEventId","Omit","documentVariantType","revisionId","timestamp","versionRevisionId","addParentToEvents","eventsWithParent","JSON","parse","stringify","forEach","index","documentId","versionId","i","length","nextEvent","parentId","creationEvent","transactions","MERGE_WINDOW","isWithinMergeWindow","a","b","Math","abs","Date","squashLiveEditEvents","previousEvent","author","push","remoteMutationToTransaction","documentIDs","transactionId","toISOString","effects","head","_id","apply","revert","updateVersionEvents","map","updatePublishedEvents","releases","releaseId","releaseDocumentId","release","sortEvents","remoteEdits","expandedEvents","eventsWithRemoteEdits","sort","MendozaEffectPair","MendozaPatch","TransactionLogEventWithEffects","getVersionFromId","getDocumentVariantType","EditDocumentVersionEvent","isEditDocumentVersionEvent","UpdateLiveDocumentEvent","isWithinMergeWindow","getEffectState","effect","modified","Boolean","deleted","isDeletePatch","apply","created","revert","patch","getEditTransaction","transaction","type","author","timestamp","revisionId","id","getEditEvents","transactions","documentId","liveEdit","editTransactions","filter","tx","effectState","effects","sort","a","b","Date","parse","result","event","documentVariantType","contributors","releaseId","length","push","lastEvent","includes","SanityClient","BehaviorSubject","from","of","catchError","map","scan","shareReplay","startWith","switchMap","tap","getDocumentVariantType","getDocumentTransactions","getEditEvents","DocumentGroupEvent","EditDocumentVersionEvent","HistoryClearedEvent","isCreateDocumentVersionEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","addEventId","removeDupes","HISTORY_CLEARED_EVENT_ID","EventsObservableValue","events","nextCursor","loading","error","Error","INITIAL_VALUE","InitialFetchEventsOptions","client","documentId","getInitialFetchEvents","documentVariantType","refetchEventsTrigger$","cursor","origin","fetchEvents","limit","params","URLSearchParams","toString","append","observable","request","Record","Omit","url","config","dataset","tag","pipe","response","ev","fetchEditEvents","eventWithRevision","find","event","versionRevisionId","revisionId","fromTransaction","toTransaction","undefined","transactions","editEvents","needsHistoryClearedEvent","length","clearedEventTimestamp","Date","timestamp","getTime","unshift","type","id","toISOString","author","events$","console","prev","next","reloadEvents","loadMore","lastCursorUsed","getValue","SanityClient","SanityDocument","Observable","of","catchError","map","shareReplay","startWith","HISTORY_CLEARED_EVENT_ID","EventsStoreRevision","documentRevisionCache","Record","Object","create","Result","InputContext","revisionId","Omit","Partial","Pick","Context","client","documentId","time","getDocumentAtRevision","document","loading","cacheKey","join","dataset","config","searchParams","URLSearchParams","revision","observable","request","documents","url","tag","pipe","response","_rev","error","Error","console","styled","css","Props","$enabled","FormGutterCustomProperties","div","SanityClient","ObjectSchemaType","SanityDocument","uuid","get","ComponentType","PropsWithChildren","useContext","useEffect","useMemo","useState","useSyncObservable","BehaviorSubject","combineLatest","EMPTY","filter","map","of","Subject","tap","DocumentDivergencesContextValue","DocumentDivergencesContext","collateDocumentDivergences","collateDocumentDivergencesInitialState","useDivergenceNavigator","isDivergenceResolutions","DivergenceResolution","FindDivergencesContext","readMostRecentSharedTransaction","ResolutionMarker","useClient","EditStateFor","selectUpstreamVersion","getDocumentAtRevision","DEFAULT_STUDIO_CLIENT_OPTIONS","isPublishedId","FormGutterCustomProperties","FormState","PropsEnabled","enabled","formState","upstreamEditState","editState","subjectId","schemaType","PropsDisabled","Props","DivergencesProvider","props","$","_c","t0","DivergencesProviderEnabled","children","client","hasUpstreamVersion","subject","t1","upstreamHead","draft","published","version","upstreamId","_id","t2","context","observable","collatedDivergences","_systemDivergences","resolutions","t3","subjectHead","useCollateDivergencesContext","t4","divergences","divergenceNavigator","sessionId","_temp","t5","value","t6","t7","disabledContextValue","DivergencesProviderDisabled","useDocumentDivergences","shouldFindForkPoint","_rev","baseIsForkPoint","a","b","mostRecentSharedTransaction","Symbol","for","listenUpstreamHead","next","listenSubjectHead","t8","t9","listenResolutions","t10","t11","t12","bb0","t13","documentId","revisionId","documentIDs","id","readUpstreamAtFork","t14","nextContext","pipe","_temp2","_temp3","_temp4","upstreamAtFork","_temp5","_temp6","_temp7","listenContext","document_2","document","document_1","revision","nextResolutions","document_0","Path","AnimatePresence","ComponentType","DivergenceIndicator","DivergenceNavigator","selectDivergence","useVersionRelease","useDocumentDivergences","Props","path","FormDivergenceIndicator","props","$","_c","divergenceNavigator","enabled","t0","FormDivergenceIndicatorEnabled","t1","state","divergence","release","upstreamBundle","upstreamId","t2","divergences","status","t3","defineEvent","InspectedDivergenceInfo","sessionId","divergenceCount","InspectedDivergence","name","version","description","ActedOnDivergenceInfo","action","ActedOnDivergence","append","at","NodePatch","Path","set","setIfMissing","unset","SanityPath","SanityDocument","fromString","isEqual","startsWith","EMPTY","first","from","map","mergeMap","Observable","of","DivergenceAtPath","ResolutionMarkerAtPath","flattenObject","SYSTEM_PATH","DIVERGENCE_RESOLUTION_PATH","const","DEFAULT_VALUES","createUpsertResolutionMarkerPatches","resolutionMarkers","upsertSystem","segment","index","array","slice","concat","path","setResolutionMarkers","flatMap","resolutionMarker","_key","createTakeFromUpstreamPatches","source","allDivergences","paths","pipe","divergencePath","divergence","divergencePathSegments","effect","isAncestorOrSibling","some","acceptedPath","length","nodeFlatPath","value","find","Error","SanityEncoder","useTelemetry","SanityDocument","fromString","get","useContext","useEffect","useState","useSyncObservable","Observable","EMPTY","filter","find","firstValueFrom","from","map","mergeMap","of","startWith","switchMap","toArray","zip","DocumentDivergencesContext","useEffectEvent","useClient","useDocumentOperation","useDocumentStore","selectUpstreamVersion","getDocumentAtRevision","DEFAULT_STUDIO_CLIENT_OPTIONS","getPublishedId","getVersionFromId","ActedOnDivergence","InspectedDivergence","ReachableDivergence","createTakeFromUpstreamPatches","createUpsertResolutionMarkerPatches","createDocumentRevisionMarker","DivergenceAtPath","ResolutionMarkerAtPath","hashData","HydratedSnapshot","isLoading","value","document","DivergenceController","markResolved","Promise","takeUpstreamValue","isReadOnly","isActionPending","upstreamBase","upstreamHead","useDivergenceController","divergence","allDivergences","contextReadOnly","$","_c","subjectId","documentId","documentType","sinceRevisionId","path","client","documentStore","telemetry","setIsActionPending","divergencesContext","sessionId","divergenceCount","enabled","state","divergences","length","t0","log","logInspectedDivergence","t1","t2","upstreamId","upstreamRevisionId","split","t3","loading","pipe","_temp","_temp2","document_0","undefined","_temp3","revisionId","readUpstreamBase","pair","t4","state_0","ready","_temp4","document_2","value_1","_temp5","editState","readUpstreamHead","Symbol","for","t5","t6","t7","patch","t8","action","markers","createResolutionMarkers","patches","execute","encodePatch","t9","patches_0","_temp6","t10","divergencePath","value_2","document_1","value_0","revision","reachableDivergence","effect","Error","_id","_rev","Path","LayerContextValue","Card","getTheme_v2","css","styled","pathToAnchorIdent","Props","$path","$layer","DivergenceOverlay","props","theme","space","zIndex","diffInput","wrap","ArrowLeftIcon","ArrowRightIcon","CloseIcon","Box","Card","Flex","Skeleton","Spinner","Text","useLayer","fromString","RefObject","ComponentType","Fragment","DocumentChangeContext","Button","DiffComponent","DiffComponentOptions","useVersionRelease","useTranslation","DivergenceNavigator","ReachableDivergence","useDivergenceController","DivergenceOverlay","DivergenceDetailProps","divergence","divergenceNavigator","title","containerElement","HTMLDivElement","readOnly","sectionPadding","DivergenceDetail","t0","$","_c","contextReadOnly","upstreamBase","upstreamHead","markResolved","takeUpstreamValue","isReadOnly","isActionPending","isLoading","state","allDivergences","release","upstreamRelease","upstreamReleaseState","documentId","t1","value","undefined","diff","t2","diffComponent","normalizeDiffComponent","t3","path","t4","divergenceIndex","divergences","findIndex","t","layer","document","t5","schemaType","isComparingCurrent","FieldWrapper","rootDiff","showFromValue","t6","t7","effect","versionName","metadata","t8","t9","t10","blurFocusedDivergence","t11","t12","content","portal","t13","t14","t15","width","aspectRatio","t16","t17","t18","t19","t20","t21","t22","t23","Symbol","for","justifyContent","t24","t25","length","position","count","t26","t27","t28","t29","t30","t31","previousDivergence","focusDivergence","t32","t33","t34","t35","t36","t37","nextDivergence","t38","t39","t40","t41","t42","t43","component","Path","useClickOutsideEvent","LayerProvider","Portal","AnimatePresence","motion","ComponentType","PropsWithChildren","Fragment","useEffect","useRef","DivergenceDetail","DivergenceNavigator","selectDivergence","useWorkspace","useDocumentDivergences","canUseAnchorPositioning","globalThis","CSS","supports","FormNodeDivergenceDetailProps","path","readOnly","FormNodeDivergenceDetail","props","$","_c","divergenceNavigator","enabled","children","t0","FormNodeDivergenceDetailEnabled","containerElement","divergenceDetailContainerElement","t1","state","divergence","t2","focusedDivergence","current","parentElement","scrollIntoView","block","t3","t4","t5","blurDivergence","t6","Symbol","for","MaybePortal","t7","status","opacity","duration","t8","t9","styled","FormArea","Props","$area","FormCell","div","ComponentType","PropsWithChildren","ReactNode","styled","FormCell","areas","const","FormArea","FormRowProps","gutterStartCell","FormRow","t0","$","_c","children","t1","t2","t3","FormRowContainer","div","join","Path","DeprecatedProperty","FormNodeValidation","Stack","HTMLProps","memo","ReactNode","DocumentFieldActionNode","FormNodePresence","useFieldActions","FieldCommentsProps","FormDivergenceIndicator","FormNodeDivergenceDetail","FormRow","FormFieldBaseHeader","FormFieldHeaderText","EMPTY_ARRAY","FormFieldProps","__unstable_headerActions","__unstable_presence","__internal_comments","__internal_slot","children","description","inputId","level","title","validation","deprecated","path","FormField","props","$","_c","comments","readOnly","restProps","t0","t1","t2","actions","undefined","presence","slot","focused","hovered","onMouseEnter","onMouseLeave","t3","t4","Boolean","t5","t6","t7","t8","ElementQuery","styled","TimeZoneButtonElementQuery","Box","Flex","TimeZoneButton","TimeZoneScope","useTimeZone","useTranslation","TimeZoneButtonElementQuery","Props","title","timeZoneScope","DialogHeader","props","$","_c","timeZone","t","t0","Symbol","for","opacity","position","width","t1","marginTop","marginBottom","t2","alternativeName","offset","t3","t4","Card","Text","endOfDay","useCallback","useMemo","CalendarDayProps","date","Date","focused","onSelect","isCurrentMonth","isToday","customValidation","selectedDate","selected","CalendarDay","props","$","_c","t0","bb0","t1","isValid","handleClick","t2","toDateString","t3","t4","t5","t6","t7","Symbol","for","textAlign","t8","t9","getDate","t10","t11","t12","range","MONTH_NAMES","WEEK_DAY_NAMES","HOURS_24","ARROW_KEYS","DEFAULT_TIME_PRESETS","TAIL_WEEKDAYS","addDays","eachWeekOfInterval","getWeek","lastDayOfMonth","startOfMonth","TAIL_WEEKDAYS","getWeekStartsOfMonth","date","Date","firstDay","start","end","getWeekDaysFromWeekStarts","weekStarts","map","weekStart","d","Week","number","days","getWeeksOfMonth","formatTime","hours","minutes","padStart","Box","Grid","Text","isSameDay","isSameMonth","TimeZoneScope","useTimeZone","CalendarDay","WEEK_DAY_NAMES","getWeeksOfMonth","CalendarMonthProps","date","Date","focused","selected","onSelect","hidden","customValidation","selectedDate","timeZoneScope","CalendarMonth","props","$","_c","getCurrentZoneDate","t0","t1","t2","Symbol","for","gridTemplateColumns","map","_temp","t3","t4","week","weekIdx","days","dayIdx","isToday","isCurrentMonth","t5","weekday","textAlign","ChangeEvent","ComponentProps","FocusEvent","useCallback","LazyTextInput","Props","Omit","value","onChange","year","YearInput","t0","$","_c","props","t1","event","numericValue","parseInt","currentTarget","isNaN","handleChange","t2","ChevronLeftIcon","ChevronRightIcon","Box","Button","Flex","Select","Text","addDays","addMonths","setDate","setHours","setMinutes","setMonth","setYear","range","ComponentProps","FormEvent","KeyboardEvent","useCallback","useEffect","useImperativeHandle","useRef","RefAttributes","TimeZoneScope","useTimeZone","CalendarMonth","ARROW_KEYS","DEFAULT_TIME_PRESETS","HOURS_24","MONTH_NAMES","features","formatTime","YearInput","CalendarProps","Omit","selectTime","selectedDate","Date","timeStep","onSelect","date","focusedDate","onFocusedDateChange","index","customValidation","timeZoneScope","PRESERVE_FOCUS_ELEMENT","overflow","position","outline","Calendar","props","$","_c","getCurrentZoneDate","zoneDateToUtc","forwardedRef","restProps","t0","t1","t2","ref","t3","undefined","t4","setFocusedDate","t5","month","setFocusedDateMonth","t6","e","Number","currentTarget","value","handleFocusedMonthChange","t7","by","moveFocusedDate","t8","year","setFocusedDateYear","t9","date_0","getHours","getMinutes","handleDateChange","t10","event","m","handleMinutesChange","t11","event_0","m_0","handleHoursChange","t12","hours","mins","handleTimeChange","t13","Symbol","for","current","t14","querySelector","focus","focusCurrentWeekDay","t15","event_1","includes","key","preventDefault","hasAttribute","handleKeyDown","t16","t17","t18","currentFocusInCalendarGrid","document","activeElement","matches","t19","t20","handleNowClick","t21","getMonth","t22","t23","getFullYear","t24","t25","t26","t27","t28","t29","borderTop","map","_temp","_temp2","timePresets","marginTop","t30","hours_0","minutes","m_1","padStart","h","CalendarTimePresetButton","onTimeChange","formatted","handleClick","toDateString","CalendarMonthSelect","onChange","handlePrevMonthClick","handleNextMonthClick","_temp3","i","CalendarYearSelect","handlePrevYearClick","handleNextYearClick","width","ComponentProps","useCallback","useState","RefAttributes","TimeZoneScope","useTimeZone","Calendar","DatePicker","props","$","_c","_value","customValidation","onChange","ref","rest","timeZoneScope","value","t0","Date","utcToCurrentZoneDate","focusedDate","setFocusedDay","t1","nextDate","undefined","handleSelect","t2","t3","t4","t5","CalendarIcon","Box","Button","LayerProvider","useClickOutsideEvent","usePortal","FocusEvent","KeyboardEvent","useCallback","useImperativeHandle","useRef","useState","RefAttributes","FocusLock","Popover","LazyTextInput","TimeZoneScope","DatePicker","Props","value","Date","id","readOnly","selectTime","timeStep","customValidity","placeholder","onInputChange","event","HTMLInputElement","inputValue","onChange","date","customValidation","selectedDate","timeZoneScope","DateTimeInput","props","$","_c","forwardedRef","rest","ref","popoverRef","inputRef","buttonRef","t0","Symbol","for","current","isPickerOpen","setPickerOpen","portal","t1","t2","t3","focus","select","handleDeactivation","t4","e","key","handleKeyUp","t5","handleClick","t6","padding","t7","display","suffix","t8","element","t9","TextInput","FocusEvent","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","RefAttributes","FormField","TimeZoneScope","useTimeZone","DateTimeInput","CommonProps","ParseResult","Props","title","description","parseInputValue","inputValue","formatInputValue","date","Date","deserialize","value","serialize","onChange","nextDate","selectTime","placeholder","timeStep","customValidation","selectedDate","timeZoneScope","CommonDateTimeInput","props","$","_c","forwardedRef","level","markers","readOnly","rest","ref","localValue","setLocalValue","t0","Symbol","for","t1","zoneDateToUtc","undefinedValue","t2","event","nextInputValue","currentTarget","result","isValid","handleDatePickerInputChange","t3","handleDatePickerChange","inputRef","t4","current","id","parseResult","t5","t6","map","_temp","nodeValidations","t7","error","message","path","t8","t9","Boolean","t10","m","item","isValidDate","date","Date","isNaN","valueOf","tz","tzHelper","format","getMinutes","isValid","parse","parseISO","setMinutes","useCallback","RefAttributes","TimeZoneScope","useTimeZone","useWorkspace","CommonDateTimeInput","CommonProps","ParseResult","isValidDate","ParsedOptions","calendarTodayLabel","customValidation","selectedDate","Date","customValidationMessage","timeStep","SchemaOptions","Props","onChange","date","timeZoneScope","type","name","title","description","options","placeholder","parseOptions","Number","serialize","toISOString","deserialize","isoString","deserialized","error","enforceTimeStep","dateString","minutes","leftOver","DateTimeInput","props","$","_c","forwardedRef","rest","ref","scheduledPublishing","inputDateTimeFormat","getCurrentZoneDate","timeZone","t0","t1","nextDate","handleChange","t2","date_0","in","formatInputValue","t3","inputValue","parsed","parseInputValue","t4","Card","Stack","useState","useTimeZone","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","ScheduleFormData","DateTimeInput","Props","onChange","formData","value","ScheduleForm","props","$","_c","getCurrentZoneDate","inputValue","setInputValue","t0","date","handleChange","t1","selectedDate","handleCustomValidation","t2","Symbol","for","t3","name","options","customValidation","customValidationMessage","title","t4","undefined","t5","timeZoneScope","Stack","PropsWithChildren","ScheduleFormData","ScheduleForm","Props","onChange","formData","value","EditScheduleForm","props","$","_c","t0","t1","children","ErrorOutlineIcon","Card","Flex","Inline","Text","Props","description","title","ErrorCallout","props","$","_c","t0","Symbol","for","t1","t2","t3","ReactNode","useContext","DocumentActionPropsContext","DocumentActionProps","DocumentActionPropsProvider","t0","$","_c","children","value","t1","useDocumentActionProps","context","undefined","Error","useState","Schedule","ScheduleFormData","useScheduleForm","schedule","$","_c","isDirty","setIsDirty","t0","executeAt","date","formData","setFormData","t1","form","equalDates","Date","getTime","handleFormChange","t2","onFormChange","ErrorOutlineIcon","InfoOutlineIcon","WarningOutlineIcon","Path","ValidationMarker","Box","ButtonTone","Flex","Stack","Text","MenuItem","useCallback","styled","StyledText","MENU_ITEM_TONES","Record","error","warning","info","ValidationListItemProps","marker","onClick","path","truncate","ValidationListItem","props","$","_c","t0","handleClick","menuItemTone","level","undefined","message","item","t1","t2","t3","t4","t5","t6","t7","t8","children","t9","t10","isValidationErrorMarker","isValidationInfoMarker","isValidationWarningMarker","ObjectSchemaType","Path","ValidationMarker","Container","useCallback","ValidationListItem","ValidationListProps","documentType","kind","validation","onFocus","path","onClose","truncate","ValidationList","props","$","_c","T0","t0","t1","t2","t3","t4","t5","t6","Symbol","for","bb0","errors","filter","warnings","info","t7","t8","undefined","handleClick","path_0","fields","field","find","curr","name","type","title","resolvePathTitle","hasErrors","length","hasWarnings","hasInfo","map","_error","i","_warning","i_0","_info","i_1","ErrorOutlineIcon","WarningOutlineIcon","ObjectSchemaType","Path","SchemaType","ValidationMarker","CardTone","Container","Stack","Menu","PathUtils","ReactNode","useCallback","useId","useRouter","Button","MenuButton","usePublishedId","useValidationState","ValidationList","ValidationProps","documentId","markers","type","menuHeader","POPOVER_PROPS","portal","constrainSize","preventOverflow","tone","width","placement","const","ValidationInfo","props","$","_c","router","hasError","hasWarning","visibility","id","publishId","t0","path","navigateIntent","encodeURIComponent","toString","onFocus","t1","t2","Symbol","for","content","t3","t4","t5","t6","t7","t8","t9","t10","t11","SanityDocument","SchemaType","ReactNode","combineLatest","Observable","of","map","startWith","DocumentPreviewStore","getDraftId","getPublishedId","Schedule","PaneItemPreviewState","isLoading","draft","published","isLiveEditEnabled","schemaType","liveEdit","getPreviewStateObservable","documentPreviewStore","documentId","title","draft$","snapshot","observeForPreview","_type","_ref","published$","pipe","getScheduledDocument","schedule","documents","getScheduledDocumentId","replaceAll","SchemaType","useMemo","useSchema","Schedule","getScheduledDocument","useScheduleSchemaType","schedule","$","_c","t0","firstDocument","schema","schemaName","documentType","t1","bb0","undefined","t2","get","useSchemaType","SchemaType","useMemo","useObservable","of","useDocumentPreviewStore","getPreviewStateObservable","PaneItemPreviewState","EMPTY_STATE","usePreviewState","documentId","schemaType","$","_c","documentPreviewStore","t0","preview$","ElementQuery","styled","DateWithTooltipElementQuery","Dialog","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useScheduleForm","useScheduleOperation","Schedule","EditScheduleForm","DialogHeader","DialogScheduleEditProps","onClose","schedule","DialogScheduleEdit","props","$","_c","updateSchedule","formData","isDirty","onFormChange","t0","date","scheduleId","id","handleScheduleUpdate","t1","t2","confirmButton","text","disabled","onClick","t3","Symbol","for","timeZoneScope","t4","t5","useCallback","useState","TimeZoneScope","DialogControls","show","hide","timeZoneScope","visible","useDialogVisible","$","_c","dialogVisible","setDialogVisible","t0","Symbol","for","t1","t2","TimeZoneScope","DialogScheduleEdit","Schedule","useDialogVisible","useDialogScheduleEdit","schedule","tzScope","$","_c","visible","show","hide","timeZoneScope","t0","onClose","dialogProps","t1","t2","dialogScheduleEditShow","CurrentUser","Box","SelectableTone","ComponentType","ReactNode","MenuItem","Tooltip","InsufficientPermissionsMessage","InsufficientPermissionsMessageProps","Props","currentUser","hasPermission","icon","onClick","permissionsOperationLabel","title","tone","disabled","MenuItemWithPermissionsTooltip","props","$","_c","t0","t1","t2","t3","CalendarIcon","CheckmarkCircleIcon","PublishIcon","TrashIcon","SchemaType","useScheduledPublishingEnabled","useDocumentPairPermissions","useCurrentUser","useScheduleOperation","Schedule","getScheduledDocument","MenuItemWithPermissionsTooltip","Props","actions","clear","delete","edit","execute","onDelete","onEdit","schedule","schemaType","ContextMenuItems","props","$","_c","mode","t0","firstDocument","currentUser","t1","name","t2","documentId","id","type","permission","permissions","isPermissionsLoading","deleteSchedule","publishSchedule","insufficientPermissions","granted","t3","handleEdit","t4","then","handleDelete","t5","handleExecute","t6","t7","t8","t9","t10","SchemaType","Menu","MenuButton","ContextMenuButton","Schedule","ContextMenuItems","Props","actions","clear","delete","edit","execute","onDelete","onEdit","schedule","schemaType","ScheduleContextMenu","props","$","_c","t0","Symbol","for","t1","t2","placement","portal","tone","t3","useEffect","useState","useValidationStatus","getDraftId","useScheduleSchemaType","Schedule","ValidationStatus","getScheduledDocumentId","Props","schedule","updateValidation","status","VALIDATION_DELAY_MS","ValidateScheduleDoc","t0","$","_c","schemaType","t1","id","name","t2","ValidationRunnerProps","schemaName","DelayedValidationRunner","ready","setReady","Symbol","for","timeout","setTimeout","clearTimeout","t3","ValidationRunner","draftId","validationStatus","isValidating","Text","formatDistance","Tooltip","useTimeZone","DATE_FORMAT","Props","date","Date","useElementQueries","DateWithTooltip","props","$","_c","t0","Symbol","for","type","formatDateTz","t1","addSuffix","distance","t2","format","LARGE","dateTimeLarge","t3","MEDIUM","dateTimeMedium","t4","SMALL","dateTimeSmall","t5","t6","t7","red","ErrorOutlineIcon","CardTone","Container","Flex","Text","Menu","Button","MenuButton","SCHEDULE_FAILED_TEXT","Props","stateReason","POPOVER_PROPS","portal","constrainSize","preventOverflow","tone","width","StateReasonFailedInfo","props","$","_c","t0","Symbol","for","content","t1","t2","color","hex","t3","t4","UserAvatar","Props","id","User","props","$","_c","t0","SchemaType","Badge","Box","Card","Flex","Stack","Text","ElementType","ReactNode","useMemo","useState","styled","Tooltip","DocumentStatus","DocumentStatusIndicator","useTimeZone","SanityDefaultPreview","useDocumentVersions","getDocumentVersionInfoFromVersions","useScheduledPublishingEnabled","DOCUMENT_HAS_ERRORS_TEXT","DOCUMENT_HAS_WARNINGS_TEXT","SCHEDULE_ACTION_DICTIONARY","Schedule","PaneItemPreviewState","getLastExecuteDate","EMPTY_VALIDATION_STATUS","useValidationState","ValidateScheduleDoc","ValidationInfo","DateWithTooltip","StateReasonFailedInfo","User","StatusDotPlaceholder","Props","children","contextMenu","linkComponent","React","JSX","IntrinsicElements","onClick","previewState","publishedDocumentId","schedule","schemaType","useElementQueries","PreviewWrapper","props","$","_c","mode","validationStatus","setValidationStatus","validation","hasError","validationTone","t0","Symbol","for","type","formatDateTz","T0","T1","T2","T3","T4","T5","T6","scheduleDate","t1","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t2","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t3","t30","t31","t4","t5","t6","t7","t8","t9","draft","published","executeDate","Date","state","opacity","undefined","open","t32","t33","flexBasis","flexGrow","action","flexShrink","badgeTone","width","date","format","t34","t35","t36","maxWidth","t37","t38","t39","visibility","t40","marginLeft","t41","t42","t43","author","t44","t45","t46","t47","t48","t49","t50","t51","t52","t53","t54","t55","stateReason","t56","t57","t58","t59","t60","DocumentVersionsStatus","documentId","versions","versionsInfo","SchemaType","useMemo","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useDocumentActionProps","useDialogScheduleEdit","Schedule","getScheduledDocumentId","ScheduleContextMenu","PreviewWrapper","Props","schedule","schemaType","DocumentPreview","props","$","_c","DialogScheduleEdit","dialogProps","dialogScheduleEditShow","onComplete","t0","publishedId","t1","t2","Symbol","for","delete","edit","t3","t4","t5","TrashIcon","Menu","MenuButton","MenuItem","ContextMenuButton","useScheduleOperation","Schedule","Props","onDelete","schedule","FallbackContextMenu","props","$","_c","deleteSchedule","t0","then","handleDelete","t1","Symbol","for","t2","t3","placement","portal","tone","t4","red","UnknownIcon","SanityDefaultPreview","Schedule","FallbackContextMenu","PreviewWrapper","NoSchemaItem","t0","$","_c","schedule","t1","t2","Symbol","for","color","hex","t3","SchemaType","ComponentType","ReactNode","Ref","useMemo","IntentLink","Preview","SanityDefaultPreview","getPublishedId","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useDialogScheduleEdit","usePublishedId","Schedule","PaneItemPreviewState","ScheduleContextMenu","PreviewWrapper","Props","previewState","schedule","schemaType","ToolPreview","props","timeZoneScope","visibleDocument","draft","published","isCompleted","state","isScheduled","DialogScheduleEdit","dialogProps","dialogScheduleEditShow","publishedId","_id","LinkComponent","Component","linkProps","children","ref","HTMLAnchorElement","rest","publishedDocId","undefined","type","name","id","displayName","clear","delete","edit","execute","isLoading","icon","useMemo","usePreviewState","useScheduleSchemaType","Schedule","getScheduledDocument","DateWithTooltipElementQuery","DocumentPreview","NoSchemaItem","ToolPreview","Props","schedule","type","ScheduleItem","props","$","_c","t0","firstDocument","schemaType","previewState","documentId","visibleDocument","draft","published","invalidDocument","isLoading","t1","bb0","t2","preview"],"sources":["../src/core/components/zOffsets/useZIndex.ts","../src/core/components/transitional/LegacyLayerProvider.tsx","../src/core/field/types/file/diff/helpers.ts","../src/core/hooks/useUnitFormatter.ts","../src/core/util/getPrintableType.ts","../src/core/util/useUnique.ts","../src/core/form/utils/pathToAnchorIdent.ts","../src/core/divergence/components/DivergenceIndicator.tsx","../src/core/field/TODO.ts","../src/core/field/diff/annotations/helpers.ts","../src/core/field/diff/annotations/hooks.ts","../src/core/releases/components/VersionInlineBadge.tsx","../src/core/store/events/types.ts","../src/core/field/diff/components/constants.ts","../src/core/field/diff/components/Event.tsx","../src/core/field/diff/components/DiffTooltip.tsx","../src/core/field/diff/components/FromToArrow.tsx","../src/core/field/diff/hooks/useDocumentChange.ts","../src/core/field/types/boolean/preview/BooleanPreview.tsx","../src/core/field/types/boolean/diff/BooleanFieldDiff.tsx","../src/core/field/diff/hooks/useChangeVerb.ts","../src/core/field/diff/components/DiffCard.tsx","../src/core/field/diff/components/FromTo.tsx","../src/core/field/diff/components/DiffFromTo.tsx","../src/core/field/types/datetime/preview/DatetimePreview.tsx","../src/core/field/types/datetime/diff/DatetimeFieldDiff.tsx","../src/core/field/conditional-property/utils.tsx","../src/core/field/conditional-property/useConditionalProperty.tsx","../src/core/field/schema/helpers.ts","../src/core/field/types/portableText/diff/symbols.ts","../src/core/field/types/portableText/diff/helpers.ts","../src/core/field/validation/index.ts","../src/core/field/diff/components/JsonFieldDiff.tsx","../src/core/field/diff/helpers.ts","../src/core/field/diff/changes/unknownDocumentFieldSchema.ts","../src/core/field/diff/changes/unknownObjectDiffFields.ts","../src/core/field/diff/changes/buildChangeList.ts","../src/core/field/diff/changes/helpers.ts","../src/core/field/diff/changes/undoChange.ts","../src/core/field/diff/components/ChangeList.styled.tsx","../src/core/field/diff/components/ChangeTitleSegment.tsx","../src/core/field/diff/components/ChangeBreadcrumb.tsx","../src/core/field/diff/components/DiffErrorBoundary.tsx","../src/core/field/diff/components/DiffInspectWrapper.tsx","../src/core/field/diff/components/FallbackDiff.tsx","../src/core/field/diff/components/FieldChange.styled.tsx","../src/core/field/diff/components/RevertChangesButton.tsx","../src/core/field/diff/components/RevertChangesConfirmDialog.tsx","../src/core/field/diff/components/ValueError.tsx","../src/core/field/diff/components/FieldChange.tsx","../src/core/field/diff/components/GroupChange.styled.tsx","../src/core/field/diff/components/ChangeResolver.tsx","../src/core/field/diff/components/NoChanges.tsx","../src/core/field/diff/components/ChangeList.tsx","../src/core/field/diff/components/MetaInfo.tsx","../src/core/field/diff/hooks/useRefValue.ts","../src/core/field/types/file/diff/FileFieldDiff.tsx","../src/core/util/useLoadable.ts","../src/core/store/document/hooks/useDocumentValues.ts","../src/core/field/types/image/diff/helpers.ts","../src/core/field/types/image/diff/HotspotCropSVG.tsx","../src/core/field/types/image/diff/ImagePreview.tsx","../src/core/field/types/image/diff/ImageFieldDiff.tsx","../src/core/field/types/number/preview/NumberPreview.tsx","../src/core/field/types/number/diff/NumberFieldDiff.tsx","../src/core/field/types/portableText/diff/components/styledComponents.tsx","../src/core/field/types/portableText/diff/components/Annotation.tsx","../src/core/field/types/portableText/diff/components/Blockquote.tsx","../src/core/field/types/portableText/diff/components/Header.tsx","../src/core/field/types/portableText/diff/components/Paragraph.tsx","../src/core/field/types/portableText/diff/components/Block.tsx","../src/core/field/types/portableText/diff/components/Decorator.tsx","../src/core/field/types/portableText/diff/components/InlineObject.tsx","../src/core/field/types/portableText/diff/components/Text.tsx","../src/core/field/types/portableText/diff/components/PortableText.tsx","../src/core/field/types/portableText/diff/PTDiff.tsx","../src/core/field/types/reference/preview/ReferencePreview.tsx","../src/core/field/types/reference/diff/ReferenceFieldDiff.tsx","../src/core/field/types/slug/preview/SlugPreview.tsx","../src/core/field/types/slug/diff/SlugFieldDiff.tsx","../src/core/field/diff/components/DiffString.tsx","../src/core/field/types/string/preview/StringPreview.tsx","../src/core/field/types/string/diff/StringFieldDiff.tsx","../src/core/field/diff/resolve/defaultComponents.ts","../src/core/field/diff/resolve/resolveDiffComponent.ts","../src/core/form/studio/inputResolver/helpers.ts","../src/core/divergence/utils/flatten.ts","../src/core/divergence/utils/introspectSchema.ts","../src/core/form/store/types/asserters.ts","../src/core/divergence/utils/readOrderedFormMembers.ts","../src/core/divergence/transposeSchema.ts","../src/core/divergence/divergenceNavigator.ts","../src/core/hooks/useVersionRelease.ts","../src/core/divergence/selectEffect.ts","../src/core/divergence/selectEffectFromHash.ts","../src/core/divergence/types/ResolutionMarker.ts","../src/core/divergence/utils/delayTask.ts","../src/core/divergence/utils/findMovesInArrayOfObjects.ts","../src/core/divergence/utils/hashData.ts","../src/core/divergence/readDocumentDivergences.ts","../src/core/divergence/collateDocumentDivergences.ts","../src/core/divergence/readMostRecentSharedTransaction.ts","../src/core/store/document/selectUpstreamVersion.ts","../src/core/store/events/getDocumentTransactions.ts","../src/core/store/events/utils.ts","../src/core/store/events/getEditEvents.ts","../src/core/store/events/getInitialFetchEvents.ts","../src/core/store/events/getDocumentAtRevision.ts","../src/core/form/components/FormGutterCustomProperties.ts","../src/core/form/contexts/DivergencesProvider.tsx","../src/core/form/components/FormDivergenceIndicator.tsx","../src/core/divergence/__telemetry__/divergence.telemetry.ts","../src/core/divergence/patches.ts","../src/core/divergence/hooks/useDivergenceController.ts","../src/core/divergence/components/DivergenceOverlay.tsx","../src/core/divergence/components/DivergenceDetail.tsx","../src/core/form/components/FormNodeDivergenceDetail.tsx","../src/core/form/components/layout/FormCell.tsx","../src/core/form/components/layout/FormRow.tsx","../src/core/form/components/formField/FormField.tsx","../src/core/scheduled-publishing/components/dialogs/TimeZoneButtonElementQuery.tsx","../src/core/scheduled-publishing/components/dialogs/DialogHeader.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/CalendarDay.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/constants.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/utils.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/CalendarMonth.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/features.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/YearInput.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/Calendar.tsx","../src/core/scheduled-publishing/components/dateInputs/base/DatePicker.tsx","../src/core/scheduled-publishing/components/dateInputs/base/DateTimeInput.tsx","../src/core/scheduled-publishing/components/dateInputs/CommonDateTimeInput.tsx","../src/core/scheduled-publishing/components/dateInputs/utils.ts","../src/core/scheduled-publishing/components/dateInputs/DateTimeInput.tsx","../src/core/scheduled-publishing/components/editScheduleForm/ScheduleForm.tsx","../src/core/scheduled-publishing/components/editScheduleForm/EditScheduleForm.tsx","../src/core/scheduled-publishing/components/errorCallout/ErrorCallout.tsx","../src/core/scheduled-publishing/contexts/documentActionProps.tsx","../src/core/scheduled-publishing/hooks/useScheduleForm.ts","../src/core/scheduled-publishing/components/validation/ValidationListItem.tsx","../src/core/scheduled-publishing/components/validation/ValidationList.tsx","../src/core/scheduled-publishing/components/validation/ValidationInfo.tsx","../src/core/scheduled-publishing/utils/paneItemHelpers.tsx","../src/core/scheduled-publishing/hooks/useSchemaType.ts","../src/core/scheduled-publishing/hooks/usePreviewState.ts","../src/core/scheduled-publishing/components/scheduleItem/dateWithTooltip/DateWithTooltipElementQuery.tsx","../src/core/scheduled-publishing/components/dialogs/DialogScheduleEdit.tsx","../src/core/scheduled-publishing/hooks/useDialogVisibile.ts","../src/core/scheduled-publishing/hooks/useDialogScheduleEdit.ts","../src/core/scheduled-publishing/components/scheduleContextMenu/MenuItemWithPermissionsTooltip.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/ContextMenuItems.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/ScheduleContextMenu.tsx","../src/core/scheduled-publishing/components/validation/SchedulesValidation.tsx","../src/core/scheduled-publishing/components/scheduleItem/dateWithTooltip/DateWithTooltip.tsx","../src/core/scheduled-publishing/components/scheduleItem/StateReasonFailedInfo.tsx","../src/core/scheduled-publishing/components/scheduleItem/User.tsx","../src/core/scheduled-publishing/components/scheduleItem/PreviewWrapper.tsx","../src/core/scheduled-publishing/components/scheduleItem/DocumentPreview.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/FallbackContextMenu.tsx","../src/core/scheduled-publishing/components/scheduleItem/NoSchemaItem.tsx","../src/core/scheduled-publishing/components/scheduleItem/ToolPreview.tsx","../src/core/scheduled-publishing/components/scheduleItem/ScheduleItem.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {ZIndexContext} from 'sanity/_singletons'\n\nimport {type ZIndexContextValue} from './types'\n\n/**\n * TODO: Rename to `useZOffsets`\n *\n * @internal\n */\nexport function useZIndex(): ZIndexContextValue {\n return useContext(ZIndexContext)\n}\n","import {LayerProvider} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {type ZIndexContextValue} from '../zOffsets/types'\nimport {useZIndex} from '../zOffsets/useZIndex'\n\n/** @internal */\nexport type ZIndexContextValueKey = keyof ZIndexContextValue\n\n/**\n * This component should only be used by core Sanity packages.\n * @internal\n */\nexport function LegacyLayerProvider({\n children,\n zOffset: zOffsetKey,\n}: {\n children: ReactNode\n zOffset: ZIndexContextValueKey\n}) {\n const zIndex = useZIndex()\n const zOffset = zIndex[zOffsetKey]\n\n return <LayerProvider zOffset={zOffset}>{children}</LayerProvider>\n}\n","import {type UnitFormatter} from '../../../../hooks/useUnitFormatter'\n\n/**\n * Calculates the size difference between two numbers, in percent\n *\n * @param prev - Previous size\n * @param next - Next size\n * @returns The size difference in percent\n * @internal\n */\nexport function getSizeDiff(prev: number | undefined, next: number | undefined): number {\n if (!prev || !next) {\n return 0\n }\n\n const increase = next - prev\n const pct = Math.round((increase / prev) * 100)\n\n return pct\n}\n\n/**\n * Get a \"human friendly\" representation of a number of bytes, using base10 units\n *\n * @param bytes - Number of bytes\n * @param format - The unit formatter to use (from `useUnitFormatter`)\n * @returns A human friendly representation of the number of bytes\n * @internal\n */\nexport function getHumanFriendlyBytes(bytes: number, format: UnitFormatter): string {\n if (bytes < 1000) {\n return format(bytes, 'byte')\n }\n\n if (bytes < 1000 * 1000) {\n return format(bytes / 1000, 'kilobyte')\n }\n\n if (bytes < 1000 * 1000 * 1000) {\n return format(bytes / (1000 * 1000), 'megabyte')\n }\n\n if (bytes < 1000 * 1000 * 1000 * 1000) {\n return format(bytes / (1000 * 1000 * 1000), 'gigabyte')\n }\n\n return format(bytes / (1000 * 1000 * 1000 * 1000), 'terabyte')\n}\n","import {useCurrentLocale} from '../i18n/hooks/useLocale'\nimport {intlCache} from '../i18n/intlCache'\n\n/**\n * Options for the `useUnitFormatter` hook\n *\n * @public\n */\nexport type UseUnitFormatterOptions = Pick<\n Intl.NumberFormatOptions,\n 'notation' | 'signDisplay' | 'unitDisplay' | 'maximumFractionDigits' | 'minimumFractionDigits'\n>\n\n/**\n * Available measurement units\n *\n * @public\n */\nexport type FormattableMeasurementUnit =\n | 'acre'\n | 'bit'\n | 'byte'\n | 'celsius'\n | 'centimeter'\n | 'day'\n | 'degree'\n | 'fahrenheit'\n | 'fluid-ounce'\n | 'foot'\n | 'gallon'\n | 'gigabit'\n | 'gigabyte'\n | 'gram'\n | 'hectare'\n | 'hour'\n | 'inch'\n | 'kilobit'\n | 'kilobyte'\n | 'kilogram'\n | 'kilometer'\n | 'liter'\n | 'megabit'\n | 'megabyte'\n | 'meter'\n | 'mile'\n | 'mile-scandinavian'\n | 'milliliter'\n | 'millimeter'\n | 'millisecond'\n | 'minute'\n | 'month'\n | 'ounce'\n | 'percent'\n | 'petabyte'\n | 'pound'\n | 'second'\n | 'stone'\n | 'terabit'\n | 'terabyte'\n | 'week'\n | 'yard'\n | 'year'\n\n/**\n * Formats a number using the specified unit, using the currently active locale.\n *\n * @param value - The number to format\n * @param unit - The unit to format the number as\n * @returns The formatted number\n * @public\n */\nexport type UnitFormatter = (value: number, unit: FormattableMeasurementUnit) => string\n\n/**\n * Returns a formatter with the given options. Function takes a number and the unit to format as\n * the second argument. The formatter will yield localized output, based on the users' selected\n * locale.\n *\n * This differs from regular `Intl.NumberFormat` in two ways:\n * 1. You do not need to instantiate a new formatter for each unit you want to format\n * (still happens behind the scenes, but is memoized)\n * 2. The default unit display style (`unitDisplay`) is `long`\n *\n * @example\n * ```ts\n * function MyComponent() {\n * const format = useUnitFormatter()\n * return <div>{format(2313, 'meter')}</div>\n * // en-US -> 2,313 meters\n * // fr-FR -> 2 313 mètres\n * }\n * ```\n *\n * @param options - Optional options for the unit formatter\n * @returns Formatter function\n * @public\n */\nexport function useUnitFormatter(options: UseUnitFormatterOptions = {}): UnitFormatter {\n const currentLocale = useCurrentLocale().id\n const defaultOptions: Intl.NumberFormatOptions = {\n unitDisplay: 'long',\n ...options,\n style: 'unit',\n }\n\n return function format(value: number, unit: FormattableMeasurementUnit) {\n const formatter = intlCache.numberFormat(currentLocale, {...defaultOptions, unit})\n return formatter.format(value)\n }\n}\n","/**\n * Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do. Can be extended to\n * account for other types, such as React components, fragments, elements etc, and should thus\n * not be counted as \"exhaustive\", as the list is both dynamic and will grow over time.\n *\n * @param value - The value to get the type name for\n * @returns A \"human friendly\" type name\n * @internal\n */\nexport function getPrintableType(value: unknown): string {\n const nativeType = typeof value\n\n if (nativeType === 'object') {\n if (value === null) return 'null'\n if (Array.isArray(value)) return 'array'\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name\n }\n }\n\n return nativeType\n}\n","import isEqual from 'lodash-es/isEqual.js'\nimport {useState} from 'react'\n\n/**\n * This React hook should be considered an escape hatch – to make sure that a value is the same\n * on every render. SHOULD NOT BE USED IN MOST CASES.\n * @deprecated please use `useMemo` and `useCallback` strategies instead to make deps stable, this hook runs comparisons on every single render and while each comparison can be fast, it quickly adds up\n *\n * @internal\n */\nexport function useUnique<ValueType>(value: ValueType): ValueType {\n const [previous, setPrevious] = useState(value)\n\n if (!isEqual(previous, value)) {\n setPrevious(value)\n return value\n }\n\n return previous\n}\n","import {type Path} from '@sanity/types'\nimport {toString} from '@sanity/util/paths'\n\n/**\n * Convert a field or input path to an anchor ident that can be used in CSS.\n *\n * @internal\n */\nexport function pathToAnchorIdent(type: 'input' | 'field', path: Path): string {\n return [\n `--${type}`,\n toString(path)\n .replaceAll(/[^a-z|0-9]+/gi, '_')\n .toLocaleLowerCase(),\n ].join('_')\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {type Path} from '@sanity/types'\nimport {motion} from 'motion/react'\nimport {type ComponentType} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {pathToAnchorIdent} from '../../form/utils/pathToAnchorIdent'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type TargetPerspective} from '../../perspective/types'\nimport {type DivergenceNavigator, type ReachableDivergence} from '../divergenceNavigator'\n\n/**\n * @internal\n */\nexport interface DivergenceIndicatorProps {\n divergence: ReachableDivergence\n divergenceNavigator: DivergenceNavigator\n path: Path\n upstreamBundle?: TargetPerspective\n}\n\n/**\n * @internal\n */\nexport const DivergenceIndicator: ComponentType<DivergenceIndicatorProps> = ({\n divergence,\n divergenceNavigator,\n path,\n upstreamBundle,\n}) => {\n const {t} = useTranslation()\n\n return (\n <Container $path={path} initial={{opacity: 0}} exit={{opacity: 0}} animate={{opacity: 1}}>\n <Button\n aria-label={t('divergence.unresolved-divergence', {\n count: 1,\n versionName:\n typeof upstreamBundle === 'string' ? upstreamBundle : upstreamBundle?.metadata.title,\n })}\n onClick={() =>\n divergenceNavigator.state.focusedDivergence === divergence.path\n ? divergenceNavigator.blurFocusedDivergence()\n : divergenceNavigator.focusDivergence(divergence.path)\n }\n selected={divergenceNavigator.state.focusedDivergence === divergence.path}\n mode=\"bleed\"\n icon={EditIcon}\n tooltipProps={{\n content: t('divergence.unresolved-divergence', {\n count: 1,\n versionName:\n typeof upstreamBundle === 'string' ? upstreamBundle : upstreamBundle?.metadata.title,\n }),\n placement: 'left',\n }}\n radius=\"full\"\n tone={upstreamBundle === 'published' ? 'positive' : 'suggest'}\n />\n </Container>\n )\n}\n\nconst Container = styled(motion.div)<{$path: Path}>`\n @supports (position-anchor: --anchor) {\n position: absolute;\n ${({$path}) => ($path ? `position-anchor: ${pathToAnchorIdent('input', $path)};` : undefined)}\n inset-block-start: anchor(center);\n transform: translateY(-50%);\n line-height: 0;\n }\n`\n","import {type DiffComponentResolver} from './types'\n\n// import diffResolvers from 'all:part:@sanity/base/diff-resolver'\nexport const diffResolvers: DiffComponentResolver[] = []\n","import {\n isIndexSegment,\n isIndexTuple,\n isKeySegment,\n type KeyedSegment,\n type Path,\n} from '@sanity/types'\n\nimport {type UserColor, type UserColorManager} from '../../../user-color/types'\nimport {pathToString, stringToPath} from '../../paths/helpers'\nimport {\n type Annotation,\n type ArrayDiff,\n type Diff,\n type ItemDiff,\n type ObjectDiff,\n type StringDiff,\n type StringDiffSegment,\n} from '../../types'\n\n/** @internal */\nexport function getAnnotationColor(\n colorManager: UserColorManager,\n annotation?: Annotation | null,\n): UserColor {\n return colorManager.get(annotation?.author || null)\n}\n\n/** @internal */\nexport function getAnnotationAtPath(diff: Diff, diffPath: string | Path): Annotation | undefined {\n const path: Path = Array.isArray(diffPath) ? diffPath : stringToPath(diffPath)\n\n return getAnnotationAt(diff, path)\n}\n\n/** @internal */\nexport function getDiffAtPath(diff: Diff, diffPath: string | Path): Diff | undefined {\n const path: Path = Array.isArray(diffPath) ? diffPath : stringToPath(diffPath)\n return getDiffAt(diff, path)\n}\n\nfunction getAnnotationAt(diff: Diff, path: Path): Annotation | undefined {\n const diffAt = getDiffAt(diff, path)\n if (!diffAt) {\n return undefined\n }\n\n if (diffAt.action === 'unchanged') {\n return undefined\n }\n\n return diffAt.annotation || undefined\n}\n\nfunction getDiffAt(diff: Diff, path: Path, parentPath: Path = []): Diff | undefined {\n if (path.length === 0) {\n return diff\n }\n\n const segment = path[0]\n const tail = path.slice(1)\n\n if (isIndexTuple(segment)) {\n throw new Error('Index tuples are not supported in diff paths')\n }\n\n if (isIndexSegment(segment) || isKeySegment(segment)) {\n const location = isIndexSegment(segment) ? `at index ${segment}` : `with key ${segment._key}`\n if (diff.type !== 'array') {\n warn(`Failed to get item ${location} at path ${pathToString(parentPath)} (not an array)`)\n return undefined\n }\n\n const itemDiff = diff.items.find(\n isIndexSegment(segment)\n ? (item) => item.toIndex === segment\n : (item) => itemMatchesKey(item, segment),\n )\n\n if (!itemDiff) {\n warn(`Failed to get item ${location} at path ${pathToString(parentPath)} (item missing)`)\n return undefined\n }\n\n return getDiffAt(itemDiff.diff, tail, parentPath.concat(segment))\n }\n\n if (diff.type !== 'object') {\n warn(`Failed to get property ${segment} at path ${pathToString(parentPath)} (not an object)`)\n return undefined\n }\n\n const fieldDiff = diff.fields[segment]\n if (typeof fieldDiff === 'undefined') {\n warn(\n `Failed to get property ${segment} at path ${pathToString(parentPath)} (field did not exist)`,\n )\n return undefined\n }\n\n return getDiffAt(fieldDiff, tail, parentPath.concat(segment))\n}\n\nfunction warn(_msg: string) {\n //console.warn(_msg)\n}\n\nfunction itemMatchesKey(item: ItemDiff, key: KeyedSegment) {\n const itemDiff = item.diff\n return itemDiff.type !== 'object' || !itemDiff.toValue ? false : itemDiff.toValue._key === key\n}\n\n/** @internal */\nexport type DiffVisitor = (diff: Diff | StringDiffSegment, path: Path) => boolean\n\n/**\n * Visit all diffs in tree, until visitor returns false\n *\n * @param diff - Diff to visit\n * @param visitor - Visitor function, return false to stop from going deeper\n *\n * @internal\n */\nexport function visitDiff(\n diff: Diff | StringDiffSegment,\n visitor: DiffVisitor,\n path: Path = [],\n): void {\n if (!visitor(diff, path)) {\n return\n }\n\n if (diff.type === 'array') {\n visitArrayDiff(diff, visitor, path)\n return\n }\n\n if (diff.type === 'object') {\n visitObjectDiff(diff, visitor, path)\n return\n }\n\n if (diff.type === 'string') {\n visitStringDiff(diff, visitor, path)\n }\n}\n\nfunction visitArrayDiff(diff: ArrayDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n diff.items.forEach((itemDiff) => {\n const _key = itemDiff.diff.type === 'object' && (itemDiff.diff.toValue?._key as string)\n const segment = _key ? {_key} : getItemDiffIndex(itemDiff)\n visitDiff(itemDiff.diff, visitor, path.concat(segment))\n })\n}\n\nfunction visitObjectDiff(diff: ObjectDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n Object.keys(diff.fields).forEach((fieldName) => {\n const fieldDiff = diff.fields[fieldName]\n visitDiff(fieldDiff, visitor, path.concat(fieldName))\n })\n}\n\nfunction visitStringDiff(diff: StringDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n diff.segments.forEach((segment) => {\n visitDiff(segment, visitor, path)\n })\n}\n\nfunction getItemDiffIndex(itemDiff: ItemDiff): number {\n return typeof itemDiff.toIndex === 'undefined' ? itemDiff.fromIndex || 0 : itemDiff.toIndex\n}\n","import {type Path} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {useUserColorManager} from '../../../user-color/hooks'\nimport {type UserColor} from '../../../user-color/types'\nimport {type Annotation, type Diff} from '../../types'\nimport {getAnnotationAtPath, getAnnotationColor} from './helpers'\n\n/** @internal */\nexport function useAnnotationColor(annotation?: Annotation | null): UserColor {\n const userColorManager = useUserColorManager()\n\n return getAnnotationColor(userColorManager, annotation)\n}\n\n/** @internal */\nexport function useDiffAnnotationColor(diff: Diff, path: string | Path = []): UserColor {\n const userColorManager = useUserColorManager()\n const annotation = useMemo(() => getAnnotationAtPath(diff, path), [diff, path])\n\n return useMemo(\n () => getAnnotationColor(userColorManager, annotation),\n [annotation, userColorManager],\n )\n}\n","import {type BadgeTone} from '@sanity/ui'\nimport {type FC, type PropsWithChildren} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type TargetPerspective} from '../../perspective/types'\nimport {LATEST} from '../util/const'\nimport {getReleaseTone} from '../util/getReleaseTone'\n\nconst StyledVersionInlineBadge = styled.span<{$tone?: BadgeTone}>((props) => {\n const {$tone} = props\n return css`\n color: var(--card-badge-${$tone ?? 'default'}-fg-color);\n background-color: var(--card-badge-${$tone ?? 'default'}-bg-color);\n border-radius: 3px;\n text-decoration: none;\n padding: 0px 2px;\n font-weight: 500;\n `\n})\n\n/**\n * @internal\n */\nexport const VersionInlineBadge = ({\n children,\n $tone,\n}: PropsWithChildren<{\n $tone?: BadgeTone\n}>) => <StyledVersionInlineBadge $tone={$tone}>{children}</StyledVersionInlineBadge>\n\n/**\n * @internal\n */\nexport const getVersionInlineBadge = (release?: TargetPerspective) => {\n const tone = getReleaseTone(release ?? LATEST)\n\n const ReturnComponent: FC<PropsWithChildren> = ({children}) => (\n <VersionInlineBadge $tone={tone}>{children}</VersionInlineBadge>\n )\n\n return ReturnComponent\n}\n","/**\n * # Draft model\n *\n * The following describes the semantics of the draft model in Content Releases.\n *\n * ## Terminology\n *\n * In this world we have the following terms:\n *\n * - \"Document\" is unfortunately an overloaded term. It _may_ refer to the\n * user's perspective of a document in Studio It _may_ refer to a specific\n * document as observed through the API, or it _may_ refer to user's\n * perspective of a document in Studio (which is a single \"document group\"\n * represented by multiple documents).\n * - \"Document version\" is a document with the ID of `drafts.` or `versions.{bundleId}.`\n * - \"Document group\" is an explicit way of referring to the published\n * document and all of its versions.\n * - \"Event\" (either on \"a document\" or on \"a release\") represents a change in the\n * state. They are often caused by actions, but they are not 1-to-1. The\n * \"publish release\" action causes a `ScheduleDocumentVersionEvent` for each\n * of the document versions inside the release.\n *\n * These are higher level events and you can not assume that they are being\n * caused by a single document actions. For instance, scheduling/publishing a\n * _release_ causes a `ScheduleDocumentEvent` to appear in the document's event\n * list.\n *\n * ## Document group event\n *\n * The completely lifecycle of a document group can be described with a series\n * of _events_. These are the higher level changes such as \"document was\n * published\", \"version was created\", \"document was scheduled\", and so forth.\n * Every event has a single timestamp.\n *\n * We're also using the following conventions:\n *\n * - `documentId` always refers to the published document ID (which is also what\n * we consider the ID for the whole group).\n * - `revisionId` refers to a revision on the published document.\n * - `versionId` refers to a document version ID.\n * - `releaseId` refers to the release of the document version.\n * This will be not present if `versionId` starts with`drafts.`.\n * - `versionRevisionId` refers to a revision on a document version.\n *\n * See {@link DocumentGroupEvent} for the full list of events.\n *\n * ## Document changes\n *\n * Interestingly, there's no document group events about the _contents_ of a\n * document. Instead we have a separate concept of _document changes_ which are\n * the actual changes of the attributes to a document.\n *\n * Document changes are constructed from edits (i.e. through the Edit action),\n * but are distinct objects. They have a time_span_, instead of a time_stamp_,\n * and can have multiple authors and/or fields modified in a single \"change\".\n * The change could be represented by \"these fields have been modifed in some\n * way\" or \"here's a detailed attribution of every new character that appeared\n * in this Portable Text\".\n *\n * ## Release events\n *\n * There's a separate set of events for releases which deals with changes done\n * at the whole release level (e.g. schedule/publish) that are _critical_ for\n * its behavior. These events intentionally do not include changes to\n * non-critical metadata (e.g. title). This is currently not defined here.\n *\n * ## Release activity\n *\n * When looking at the complete activity of a release it should be composed of\n * three different sources:\n *\n * 1. Release events (schedule/unschedule/publish etc).\n * 2. Release metadata changes.\n * 2. Document group events related to release – with the exclusion of events\n * which are caused by release-level actions.\n *\n * ## Relation to Content Lake APIs\n *\n * \"Document group events\", \"document changes\" and \"release events\" are\n * currently not exposed by the REST API in Content Lake. Some of these data\n * _might_ however already be inferred through using the History Transactions\n * API.\n *\n * The intention is for Studio to internally refer to these concepts using an\n * implementation which uses the _current_ Content Lake APIs. Over time we\n * aspire to extend the API to provide access to this data natively and\n * efficiently.\n *\n * ## Overall document lifecycle\n *\n * The overall document's existence is defined by the existence of either the\n * published document or a draft (either the main draft or a version in a\n * release).\n *\n * This means that there are two ways a document can be _created_:\n *\n * 1. `CreateDocumentVersionEvent`: This is what Studio does through an Edit action.\n * 2. `CreateLiveDocumentEvent`: A raw Create mutation sent outside of the Studio.\n *\n * The whole document is considered _deleted_ through a single event:\n *\n * 1. `DeleteDocumentGroupEvent`: This is caused either by the Delete action,\n * or when discarding the last draft.\n *\n * ## Version lifecycle\n *\n * A document version has the following lifecycle:\n *\n * 1. \"Version doesn't exist\".\n * - `CreateDocumentVersionEvent`: Edit action - \"Version exists\"\n * - `UnpublishDocumentEvent`: Unpublish action - \"Version exists\"\n * 2. \"Version exists\".\n * - `DeleteDocumentVersionEvent`: DiscardDraft action - \"Version doesn't\n * exist\"\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Version doesn't exist\"\n * - `ScheduleDocumentVersionEvent`: Schedule release action - \"Version is scheduled\"\n * - `DeleteDocumentGroupEvent`: Delete action _OR_ DiscardDraft [the last one] - \"Version doesn't exist\"\n * 3. \"Version is scheduled\".\n * - `PublishDocumentVersionEvent`: Automatically, on schedule - \"Version doesn't exist\"\n * - `UnscheduleDocumentVersionEvent`: Unschedule release action - \"Version exists\"\n *\n * ## Published lifecycle\n *\n * The published document has the following lifecycle:\n *\n * 1. \"Published document doesn't exist\".\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Published document exists\".\n * - `CreateLiveDocumentEvent`: Raw Create mutation - \"Published document exists\"\n * 2. \"Published document exists\"\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Published document exists\"\n * - `UnpublishDocumentEvent`: Unpublish action - \"Published document doesn't exist\"\n * - `DeleteDocumentGroupEvent`: Delete action - \"Published document doesn't exist\"\n * - `UpdateLiveDocumentEvent`: Raw Update mutation - \"Published document exists\"\n */\n\nimport {type ReleaseDocument} from '@sanity/client'\nimport {type SanityDocument} from '@sanity/types'\nimport {type Observable} from 'rxjs'\n\nimport {type ObjectDiff} from '../../field/types'\nimport {type DocumentVariantType} from '../../util/getDocumentVariantType'\n\n/**\n * Events relevant for the whole document group.\n * @hidden\n * @beta\n */\nexport type DocumentGroupEvent =\n | CreateDocumentVersionEvent\n | DeleteDocumentVersionEvent\n | PublishDocumentVersionEvent\n | UnpublishDocumentEvent\n | ScheduleDocumentVersionEvent\n | UnscheduleDocumentVersionEvent\n | DeleteDocumentGroupEvent\n | CreateLiveDocumentEvent\n | UpdateLiveDocumentEvent\n | EditDocumentVersionEvent\n | HistoryClearedEvent\n\n/**\n * @hidden\n * @beta\n */\nexport const isCreateDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is CreateDocumentVersionEvent => event.type === 'createDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isDeleteDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is DeleteDocumentVersionEvent => event.type === 'deleteDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isPublishDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is PublishDocumentVersionEvent => event.type === 'publishDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUnpublishDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UnpublishDocumentEvent => event.type === 'unpublishDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isScheduleDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is ScheduleDocumentVersionEvent => event.type === 'scheduleDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUnscheduleDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UnscheduleDocumentVersionEvent => event.type === 'unscheduleDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isDeleteDocumentGroupEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is DeleteDocumentGroupEvent => event.type === 'deleteDocumentGroup'\n\n/**\n * @hidden\n * @beta\n */\nexport const isCreateLiveDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is CreateLiveDocumentEvent => event.type === 'createLiveDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUpdateLiveDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UpdateLiveDocumentEvent => event.type === 'updateLiveDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isEditDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is EditDocumentVersionEvent => event.type === 'editDocumentVersion'\n\n/**\n * A generic event with a type and a timestamp.\n * @hidden\n * @beta\n */\nexport interface BaseEvent {\n id: string\n timestamp: string\n author: string\n /**\n * This is added client side to enhance the UI.\n */\n documentVariantType: DocumentVariantType\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface CreateDocumentVersionEvent extends BaseEvent {\n type: 'createDocumentVersion'\n documentId: string\n\n releaseId?: string\n versionId: string\n versionRevisionId: string\n\n /**\n * This is undefined for versions and drafts. (will be present only in publish document?)\n */\n revisionId?: string\n\n /**\n * This is present when this creation event is already published.\n */\n parentId?: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface HistoryClearedEvent extends BaseEvent {\n type: 'historyCleared'\n documentId: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface DeleteDocumentVersionEvent extends BaseEvent {\n type: 'deleteDocumentVersion'\n documentId: string\n\n releaseId?: string\n versionId: string\n versionRevisionId: string\n /**\n * This is added client side to enhance the UI.\n * For draft documents, it indicates the event that created this document that was later published\n * It will be used to expand the publish view.\n */\n creationEvent?: CreateDocumentVersionEvent\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface PublishDocumentVersionEvent extends BaseEvent {\n type: 'publishDocumentVersion'\n documentId: string\n revisionId: string\n\n versionId: string\n releaseId?: string\n\n /** This is only available when it was triggered by Publish action. */\n versionRevisionId?: string\n\n publishCause: 'document.publish' | 'release.publish' | 'release.schedule'\n\n contributors?: string[]\n\n /**\n * This is added client side to enhance the UI.\n */\n release?: ReleaseDocument | {_id: string; metadata?: undefined}\n\n /**\n * This is added client side to enhance the UI.\n * For draft documents, it indicates the event that created this document that was later published\n * It will be used to expand the publish view.\n */\n creationEvent?: CreateDocumentVersionEvent\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UnpublishDocumentEvent extends BaseEvent {\n type: 'unpublishDocument'\n documentId: string\n\n /** The version that was created based on it */\n versionId: string\n versionRevisionId: string\n releaseId?: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface ScheduleDocumentVersionEvent extends BaseEvent {\n type: 'scheduleDocumentVersion'\n documentId: string\n\n releaseId: string\n versionId: string\n versionRevisionId: string\n\n /** The _current_ state of this schedule. */\n state: 'pending' | 'unscheduled' | 'published'\n\n author: string\n publishAt: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UnscheduleDocumentVersionEvent extends BaseEvent {\n type: 'unscheduleDocumentVersion'\n documentId: string\n\n releaseId: string\n versionId: string\n versionRevisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface DeleteDocumentGroupEvent extends BaseEvent {\n type: 'deleteDocumentGroup'\n documentId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface CreateLiveDocumentEvent extends BaseEvent {\n type: 'createLiveDocument'\n documentId: string\n revisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UpdateLiveDocumentEvent extends BaseEvent {\n type: 'updateLiveDocument'\n documentId: string\n revisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n * This event won't be exposed by the API, it needs to be generated by validating the\n * transactions that occurred between two events. Usually, between two PublishDocumentEvents.\n * Or a create event and a publish event.\n */\nexport interface EditDocumentVersionEvent extends BaseEvent {\n type: 'editDocumentVersion'\n documentId: string\n // Given this event could be a result of multiple edits, we could have more than one author.\n contributors: string[]\n releaseId?: string\n /**\n * One edit event could contain multiple transactions that are merged together.\n * This represents the newest transaction in the merged events.\n */\n revisionId: string\n transactions: {\n type: 'editTransaction'\n author: string\n timestamp: string\n revisionId: string\n }[]\n /**\n * Present when an edit was already published, then the user decided to expand the event.\n */\n parentId?: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface EventsStoreRevision {\n revisionId: string\n loading: boolean\n document?: SanityDocument | null\n}\n\n/**\n * @internal\n * */\nexport interface EventsStore {\n events: DocumentGroupEvent[]\n nextCursor: string | null\n loading: boolean\n error: Error | null\n revision: EventsStoreRevision | null\n sinceRevision: EventsStoreRevision | null\n findRangeForRevision: (nextRev: string) => [string | null, string | null]\n findRangeForSince: (nextSince: string) => [string | null, string | null]\n loadMoreEvents: () => void\n getChangesList: () => Observable<{\n diff: ObjectDiff | null\n loading: boolean\n error: Error | null\n }>\n expandEvent: (event: DocumentGroupEvent) => Promise<void>\n lastNonDeletedRevId: string | null\n getDocumentAtRevision: (revision: string) => Observable<EventsStoreRevision | null>\n}\n\n/**\n * @internal\n **/\nexport type DocumentVersionEventType = DocumentGroupEvent['type']\n","import {type IconComponent} from '@sanity/icons'\nimport {AddCircleIcon} from '@sanity/icons/AddCircle'\nimport {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CircleIcon} from '@sanity/icons/Circle'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {TimelineIcon} from '@sanity/icons/Timeline'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UnpublishIcon} from '@sanity/icons/Unpublish'\nimport {type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\n\nimport {type StudioLocaleResourceKeys} from '../../../i18n/bundles/studio'\nimport {type DocumentVersionEventType} from '../../../store/events/types'\nimport {type DocumentVariantType} from '../../../util/getDocumentVariantType'\n\nexport const TIMELINE_ICON_COMPONENTS: Record<DocumentVersionEventType, IconComponent> = {\n historyCleared: TimelineIcon,\n createDocumentVersion: AddCircleIcon,\n createLiveDocument: AddCircleIcon,\n deleteDocumentGroup: TrashIcon,\n deleteDocumentVersion: CloseIcon,\n editDocumentVersion: EditIcon,\n updateLiveDocument: EditIcon,\n publishDocumentVersion: PublishIcon,\n unpublishDocument: UnpublishIcon,\n scheduleDocumentVersion: CalendarIcon,\n unscheduleDocumentVersion: CircleIcon,\n}\n\nexport const TIMELINE_ITEM_EVENT_TONE: Record<DocumentVersionEventType, ThemeColorAvatarColorKey> =\n {\n historyCleared: 'orange',\n createDocumentVersion: 'green',\n createLiveDocument: 'blue',\n updateLiveDocument: 'green',\n editDocumentVersion: 'yellow',\n unpublishDocument: 'orange',\n deleteDocumentVersion: 'orange',\n deleteDocumentGroup: 'orange',\n scheduleDocumentVersion: 'cyan',\n unscheduleDocumentVersion: 'cyan',\n publishDocumentVersion: 'green',\n }\n\n/**\n * @internal\n * mapping of events types with a readable key for translation\n */\nexport const TIMELINE_ITEM_I18N_KEY_MAPPING: Record<\n DocumentVariantType,\n Record<DocumentVersionEventType, StudioLocaleResourceKeys>\n> = {\n published: {\n createDocumentVersion: 'timeline.operation.created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.draft-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n draft: {\n createDocumentVersion: 'timeline.operation.draft-created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.draft-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n version: {\n createDocumentVersion: 'timeline.operation.version-created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.version-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n}\n","import {type AvatarSize, AvatarStack, Box, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {getTheme_v2, type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {type RelativeTimeOptions, useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {ReleaseTitle} from '../../../releases/components/ReleaseTitle'\nimport {VersionInlineBadge} from '../../../releases/components/VersionInlineBadge'\nimport {isReleaseDocument} from '../../../releases/store/types'\nimport {getReleaseTone} from '../../../releases/util/getReleaseTone'\nimport {\n type DocumentGroupEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n} from '../../../store/events/types'\nimport {useUser} from '../../../store/user/hooks'\nimport {\n TIMELINE_ICON_COMPONENTS,\n TIMELINE_ITEM_EVENT_TONE,\n TIMELINE_ITEM_I18N_KEY_MAPPING,\n} from './constants'\n\ninterface UserAvatarStackProps {\n maxLength?: number\n userIds: string[]\n size?: AvatarSize\n withTooltip?: boolean\n}\n\nfunction UserAvatarStack({maxLength, userIds, size, withTooltip = true}: 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\nconst IconBox = styled(Flex)<{$color: ThemeColorAvatarColorKey}>((props) => {\n const theme = getTheme_v2(props.theme)\n const color = props.$color\n\n return css`\n --card-icon-color: ${theme.color.avatar[color].fg};\n background-color: ${theme.color.avatar[color].bg};\n box-shadow: 0 0 0 1px var(--card-bg-color);\n\n position: absolute;\n width: ${theme.avatar.sizes[0].size}px;\n height: ${theme.avatar.sizes[0].size}px;\n right: -3px;\n bottom: -3px;\n border-radius: 50%;\n `\n})\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {\n minimal: true,\n useTemporalPhrase: true,\n}\n\nconst AvatarSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n border-radius: 50%;\n width: ${theme.avatar.sizes[1].size}px;\n height: ${theme.avatar.sizes[1].size}px;\n `\n})\n\nconst NameSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n width: 6ch;\n height: ${theme.font.text.sizes[0].lineHeight}px;\n `\n})\n\nconst UserLine = ({userId}: {userId: string}) => {\n const [user, loading] = useUser(userId)\n\n return (\n <Flex key={userId} align=\"center\" gap={2} padding={1}>\n <Box>{loading || !user ? <AvatarSkeleton animated /> : <UserAvatar user={user} />}</Box>\n <Box>\n {loading || !user?.displayName ? (\n <Text size={1}>\n <NameSkeleton animated />\n </Text>\n ) : (\n <Text muted size={1}>\n {user.displayName}\n </Text>\n )}\n </Box>\n </Flex>\n )\n}\nconst ChangesBy = ({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}\n\ninterface TimelineItemProps {\n event: DocumentGroupEvent\n showChangesBy: 'tooltip' | 'inline' | 'hidden'\n}\n/**\n * @internal\n */\nexport function Event({event, showChangesBy = 'tooltip'}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const {type, timestamp, documentVariantType} = event\n\n const IconComponent = TIMELINE_ICON_COMPONENTS[type]\n const contributors = 'contributors' in event ? event.contributors || [] : []\n\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 userIds = isEditDocumentVersionEvent(event) ? event.contributors : [event.author]\n\n return (\n <>\n <Flex align=\"center\" gap={3}>\n <div style={{position: 'relative'}}>\n <UserAvatarStack maxLength={3} userIds={userIds.filter(Boolean)} 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 gap={2}>\n <Text size={1} weight=\"medium\">\n {t(TIMELINE_ITEM_I18N_KEY_MAPPING[documentVariantType][type])}\n {isPublishDocumentVersionEvent(event) && documentVariantType === 'published' && (\n <>\n {' '}\n {event.release ? (\n <ReleaseTitle\n title={event.release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <VersionInlineBadge\n $tone={\n isReleaseDocument(event.release!)\n ? getReleaseTone(event.release)\n : 'default'\n }\n >\n {displayTitle}\n </VersionInlineBadge>\n )}\n </ReleaseTitle>\n ) : (\n <VersionInlineBadge $tone=\"caution\">\n {t('changes.versions.draft')}\n </VersionInlineBadge>\n )}\n </>\n )}\n </Text>\n\n <Text as=\"time\" size={1} muted dateTime={timestamp} title={formattedTimestamp}>\n {updatedTimeAgo}\n </Text>\n </Stack>\n\n {contributors.length > 0 && showChangesBy == 'tooltip' && (\n <Flex flex={1} justify=\"flex-end\" align=\"center\">\n <Tooltip placement=\"top\" content={<ChangesBy collaborators={contributors} />} portal>\n <Box paddingLeft={2} paddingY={2}>\n <UserAvatarStack\n maxLength={3}\n userIds={contributors}\n size={0}\n withTooltip={false}\n />\n </Box>\n </Tooltip>\n </Flex>\n )}\n </Flex>\n {contributors.length > 0 && showChangesBy === 'inline' && (\n <Box paddingTop={2}>\n <ChangesBy collaborators={contributors} />\n </Box>\n )}\n </>\n )\n}\n","import {type Path} from '@sanity/types'\nimport {Card, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {Tooltip, type TooltipProps} from '../../../../ui-components/tooltip/Tooltip'\nimport {LegacyLayerProvider} from '../../../components/transitional/LegacyLayerProvider'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useUser} from '../../../store/user/hooks'\nimport {type AnnotationDetails, type Diff} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {useAnnotationColor} from '../annotations/hooks'\nimport {Event} from '../components/Event'\n\n/** @internal */\nexport interface DiffTooltipProps extends TooltipProps {\n children: React.JSX.Element\n description?: ReactNode\n diff: Diff\n path?: Path | string\n}\n\n/** @internal */\nexport interface DiffTooltipWithAnnotationsProps extends TooltipProps {\n annotations: AnnotationDetails[]\n children: React.JSX.Element\n description?: ReactNode\n}\n\n/** @internal */\nexport function DiffTooltip(props: DiffTooltipProps | DiffTooltipWithAnnotationsProps) {\n if (!('diff' in props)) {\n return <DiffTooltipWithAnnotation {...props} />\n }\n\n const {diff, path = [], ...restProps} = props\n const annotation = getAnnotationAtPath(diff, path)\n\n return <DiffTooltipWithAnnotation {...restProps} annotations={annotation ? [annotation] : []} />\n}\n\nfunction DiffTooltipWithAnnotation(props: DiffTooltipWithAnnotationsProps) {\n const {annotations, children, description, ...restProps} = props\n const {t} = useTranslation()\n\n if (!annotations) {\n return children\n }\n\n const content = (\n <Stack gap={2} style={{minWidth: '240px'}} paddingTop={1}>\n <Text muted size={1} weight=\"medium\">\n {description || t('changes.changed-label')}\n </Text>\n <Stack gap={2}>\n {annotations.map((annotation, idx) => (\n // oxlint-disable-next-line no-array-index-key\n <AnnotationItem key={idx} annotation={annotation} />\n ))}\n </Stack>\n </Stack>\n )\n\n return (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <Tooltip content={content} portal {...restProps}>\n {children}\n </Tooltip>\n </LegacyLayerProvider>\n )\n}\n\nfunction AnnotationItem({annotation}: {annotation: AnnotationDetails}) {\n const {author, timestamp} = annotation\n const [user] = useUser(author)\n const color = useAnnotationColor(annotation)\n const timeAgo = useRelativeTime(timestamp, {minimal: true})\n const {t} = useTranslation()\n\n return (\n <>\n {annotation.event ? (\n <>\n <Card borderBottom marginBottom={2} />\n <Event event={annotation.event} showChangesBy=\"inline\" />\n </>\n ) : (\n <Inline gap={2}>\n <Flex\n align=\"center\"\n paddingRight={3}\n style={{\n backgroundColor: color.background,\n color: color.text,\n borderRadius: 'calc(23px / 2)',\n }}\n >\n {author && (\n <>\n <UserAvatar user={author} />\n <Inline paddingLeft={2}>\n <Text muted size={1} style={{color: color.text}}>\n {user ? user.displayName : t('changes.loading-author')}\n </Text>\n </Inline>\n </>\n )}\n </Flex>\n <Text as=\"time\" muted size={1} dateTime={timestamp}>\n {timeAgo}\n </Text>\n </Inline>\n )}\n </>\n )\n}\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {Text, type TextProps} from '@sanity/ui'\nimport {type HTMLProps} from 'react'\n\n/** @internal */\nexport type FromToArrowDirection = 'down' | 'right'\n\nconst arrowComponents = {\n down: ArrowDownIcon,\n right: ArrowRightIcon,\n}\n\n/** @internal */\nexport function FromToArrow(\n props: {direction?: FromToArrowDirection} & TextProps &\n Omit<HTMLProps<HTMLDivElement>, 'children' | 'ref'>,\n) {\n const {direction = 'right', ...restProps} = props\n const ArrowComponent = arrowComponents[direction]\n\n return (\n <Text muted size={1} {...restProps}>\n <ArrowComponent />\n </Text>\n )\n}\n","import {useContext} from 'react'\nimport {DocumentChangeContext} from 'sanity/_singletons'\n\nimport {type DocumentChangeContextInstance} from '../contexts/DocumentChangeContext'\n\n/** @internal */\nexport function useDocumentChange(): DocumentChangeContextInstance {\n const documentChange = useContext(DocumentChangeContext)\n\n if (!documentChange) {\n throw new Error('DocumentChange: missing context value')\n }\n\n return documentChange\n}\n","import {type UserColor} from '../../../../user-color/types'\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\ntype BooleanProps = {\n checked: boolean | undefined | null\n color?: UserColor\n}\n\nconst BooleanPreview: FieldPreviewComponent<boolean> = function BooleanPreview({\n value,\n schemaType,\n color,\n}) {\n const Preview = schemaType.options?.layout === 'checkbox' ? Checkbox : Switch\n return <Preview checked={value} color={color} />\n}\n\nexport function Checkbox({checked, color}: BooleanProps) {\n return (\n <svg\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill={color?.background}\n >\n <rect x=\"0\" y=\"0\" width=\"17\" height=\"17\" rx=\"2.5\" />\n {typeof checked === 'undefined' && (\n <path d=\"M4.07996 8.5H12.92\" stroke={color?.text} strokeWidth=\"2\" />\n )}\n {checked && <path d=\"M3.5 8L7 11.5L13.5 5\" stroke={color?.text} strokeWidth=\"2\" />}\n </svg>\n )\n}\n\nexport function Switch({checked, color}: BooleanProps) {\n return (\n <svg width=\"38\" height=\"22\" viewBox=\"0 0 38 22\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"38\" height=\"22\" rx=\"11\" fill={checked ? color?.border : color?.background} />\n {typeof checked === 'undefined' && (\n <rect x=\"11\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />\n )}\n {checked && <rect x=\"18\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />}\n {typeof checked === 'boolean' && !checked && (\n <rect x=\"4\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />\n )}\n </svg>\n )\n}\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport {useDiffAnnotationColor} from '../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromToArrow} from '../../../diff/components/FromToArrow'\nimport {useDocumentChange} from '../../../diff/hooks/useDocumentChange'\nimport {type BooleanDiff, type DiffComponent} from '../../../types'\nimport {Checkbox, Switch} from '../preview/BooleanPreview'\n\nexport const BooleanFieldDiff: DiffComponent<BooleanDiff> = ({diff, schemaType}) => {\n const {fromValue, toValue} = diff\n const {title, options} = schemaType\n const Preview = options?.layout === 'checkbox' ? Checkbox : Switch\n const userColor = useDiffAnnotationColor(diff, [])\n const {showFromValue} = useDocumentChange()\n const showToValue = toValue !== undefined && toValue !== null\n\n return (\n <Flex align=\"center\">\n <DiffTooltip diff={diff}>\n <Flex align=\"center\">\n {showFromValue && <Preview checked={fromValue} color={userColor} />}\n\n {showToValue && (\n <>\n {showFromValue && (\n <Box marginX={2}>\n <FromToArrow />\n </Box>\n )}\n <Preview checked={toValue} color={userColor} />\n </>\n )}\n </Flex>\n </DiffTooltip>\n\n {showToValue && title && (\n <Box marginLeft={2}>\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n )}\n </Flex>\n )\n}\n","import {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type Diff} from '../../types'\n\n/** @internal */\nexport function useChangeVerb(diff: Diff): string {\n const {t} = useTranslation()\n const hadPrevValue = hasValue(diff.fromValue)\n const hasNextValue = hasValue(diff.toValue)\n if (!hadPrevValue && hasNextValue) {\n return t('changes.added-label')\n }\n\n if (!hasNextValue && hadPrevValue) {\n return t('changes.removed-label')\n }\n\n return t('changes.changed-label')\n}\n\n/** @internal */\nfunction hasValue(value: unknown) {\n return value !== null && typeof value !== 'undefined' && value !== ''\n}\n","import {type Path} from '@sanity/types'\nimport {Card, rem} from '@sanity/ui'\nimport {type ElementType, type HTMLProps, type ReactNode, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {type Annotation, type Diff} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {useAnnotationColor} from '../annotations/hooks'\nimport {DiffTooltip} from './DiffTooltip'\n\n/** @internal */\nexport interface DiffCardProps {\n annotation?: Annotation\n as?: ElementType | keyof React.JSX.IntrinsicElements\n diff?: Diff\n disableHoverEffect?: boolean\n path?: Path | string\n tooltip?: {description?: ReactNode} | boolean\n}\n\ninterface StyledCardProps {\n $annotationColor: {backgroundColor: string; color: string}\n}\n\nconst StyledCard = styled(Card)<StyledCardProps>`\n --diff-card-radius: ${({theme}) => rem(theme.sanity.radius[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-card-bg-color: ${({theme}) => theme.sanity.color.card.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n max-width: 100%;\n position: relative;\n border-radius: var(--diff-card-radius);\n background-color: ${({$annotationColor}) => $annotationColor.backgroundColor};\n color: ${({$annotationColor}) => $annotationColor.color};\n z-index: 1;\n\n &:not(del) {\n text-decoration: none;\n }\n\n &[data-hover] {\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n &:hover {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n &::after {\n bottom: -3px;\n border-top: 1px solid var(---diff-card-bg-color);\n border-bottom: 2px solid currentColor;\n border-bottom-left-radius: var(--diff-card-radius);\n border-bottom-right-radius: var(--diff-card-radius);\n }\n }\n\n [data-from-to-layout]:hover & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n &::after {\n bottom: -3px;\n border-top: 1px solid var(---diff-card-bg-color);\n border-bottom: 2px solid currentColor;\n border-bottom-left-radius: var(--diff-card-radius);\n border-bottom-right-radius: var(--diff-card-radius);\n }\n }\n }\n`\n\nconst EMPTY_PATH: Path = []\n\n/** @internal */\nexport function DiffCard(props: DiffCardProps & Omit<HTMLProps<HTMLElement>, 'as' | 'height'>) {\n const {\n ref,\n annotation: annotationProp,\n as = 'div',\n children,\n className,\n diff,\n disableHoverEffect,\n path = EMPTY_PATH,\n style = {},\n tooltip,\n ...restProps\n } = props\n\n const annotation = useMemo(\n () => annotationProp || getAnnotationAtPath(diff!, path),\n [annotationProp, diff, path],\n )\n\n const color = useAnnotationColor(annotation)\n\n const element = (\n <StyledCard\n {...restProps}\n as={as}\n className={className}\n data-hover={disableHoverEffect || !annotation ? undefined : ''}\n data-ui=\"diff-card\"\n ref={ref}\n radius={1}\n // Added annotation color to the card using css to make it possible to override by the ReleaseReview\n $annotationColor={{backgroundColor: color.background, color: color.text}}\n style={style}\n >\n {children}\n </StyledCard>\n )\n\n if (tooltip && annotation) {\n return (\n <DiffTooltip\n annotations={[annotation]}\n description={tooltip && typeof tooltip === 'object' && tooltip.description}\n >\n {element}\n </DiffTooltip>\n )\n }\n\n return element\n}\n","import {Flex, Grid, type GridProps, rem, useTheme} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode, useMemo, type RefAttributes} from 'react'\n\nimport {FromToArrow} from './FromToArrow'\n\n/** @internal */\nexport type FromToProps = {\n align?: 'top' | 'center' | 'bottom'\n layout?: 'grid' | 'inline'\n from?: ReactNode\n to?: ReactNode\n} & Omit<HTMLProps<HTMLDivElement>, 'children' | 'as' | 'height' | 'wrap'>\n\nconst INLINE_COLUMN_STYLES = {flexShrink: 0}\nconst BLOCK_COLUMN_STYLES = {alignItems: 'stretch'}\n\nconst FLEX_ALIGN: Record<string, 'flex-start' | 'center' | 'flex-end'> = {\n top: 'flex-start',\n center: 'center',\n bottom: 'flex-end',\n default: 'flex-start',\n}\n\n/** @internal */\nexport function FromTo(props: FromToProps & RefAttributes<HTMLDivElement>) {\n const {ref, align = 'top', layout = 'inline', from, to, style, ...restProps} = props\n const theme = useTheme()\n\n const layoutStyles = useMemo(\n () => ({\n ...style,\n ...(layout === 'inline'\n ? {maxWidth: '100%', display: 'inline-flex'}\n : // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n {gridTemplateColumns: `minmax(0, 1fr) ${rem(theme.sanity.space[5])} minmax(0, 1fr)`}),\n }),\n [layout, style, theme],\n )\n\n const columnStyles = layout === 'inline' ? INLINE_COLUMN_STYLES : BLOCK_COLUMN_STYLES\n\n const children = (\n <>\n {from && (\n <>\n <Flex align={FLEX_ALIGN[align]} style={columnStyles}>\n {from}\n </Flex>\n <Flex align=\"center\" justify=\"center\" padding={2}>\n <FromToArrow />\n </Flex>\n </>\n )}\n <Flex align={FLEX_ALIGN[align]} style={columnStyles}>\n {to}\n </Flex>\n </>\n )\n\n if (layout === 'inline') {\n return (\n <Flex {...restProps} ref={ref} style={layoutStyles} data-from-to-layout>\n {children}\n </Flex>\n )\n }\n\n // Cast: HTMLProps is not assignable to GridProps because Grid marks legacy\n // `columns`/`rows` as `never` under @sanity/ui v4.\n return (\n <Grid {...(restProps as GridProps)} ref={ref} style={layoutStyles} data-from-to-layout>\n {children}\n </Grid>\n )\n}\n","import {type Path, type SchemaType} from '@sanity/types'\nimport {type CSSProperties} from 'react'\n\nimport {type FieldPreviewComponent} from '../../preview/types'\nimport {type Diff} from '../../types'\nimport {useChangeVerb} from '../hooks/useChangeVerb'\nimport {DiffCard} from './DiffCard'\nimport {DiffTooltip} from './DiffTooltip'\nimport {FromTo} from './FromTo'\n\n/** @internal */\nexport interface DiffFromToProps {\n align?: 'top' | 'center' | 'bottom'\n cardClassName?: string\n diff: Diff\n layout?: 'grid' | 'inline'\n path?: Path | string\n previewComponent: FieldPreviewComponent\n schemaType: SchemaType\n}\n\nconst cardStyles: CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: 'block',\n whiteSpace: 'break-spaces',\n}\n\n/** @internal */\nexport function DiffFromTo(props: DiffFromToProps) {\n const {\n align,\n cardClassName,\n diff,\n layout,\n path,\n previewComponent: PreviewComponent,\n schemaType,\n } = props\n const {action} = diff\n const changeVerb = useChangeVerb(diff)\n\n if (action === 'unchanged') {\n return (\n <DiffCard className={cardClassName} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.toValue} />\n </DiffCard>\n )\n }\n\n const from = diff.fromValue !== undefined && diff.fromValue !== null && (\n <DiffCard as=\"del\" className={cardClassName} diff={diff} path={path} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.fromValue} />\n </DiffCard>\n )\n\n const to = diff.toValue !== undefined && diff.toValue !== null && (\n <DiffCard as=\"ins\" className={cardClassName} diff={diff} path={path} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.toValue} />\n </DiffCard>\n )\n\n if (from && !to) {\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n {from}\n </DiffTooltip>\n )\n }\n\n if (!from && to) {\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n {to}\n </DiffTooltip>\n )\n }\n\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n <FromTo align={align} from={from} layout={layout} to={to} />\n </DiffTooltip>\n )\n}\n","import {type StringSchemaType} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport * as legacyDateFormat from '@sanity/util/legacyDateFormat'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst DatetimeWrapper = styled.div`\n display: inline-block;\n word-wrap: break-word;\n`\n\nexport const DatetimePreview: FieldPreviewComponent<string> = function DatetimePreview({\n value,\n schemaType,\n}) {\n return (\n <Box as={DatetimeWrapper} paddingX={2} paddingY={1}>\n {formatDateTime(value, schemaType)}\n </Box>\n )\n}\n\nfunction formatDateTime(value: string, schemaType: StringSchemaType): string {\n const {options, name} = schemaType\n const dateFormat = options?.dateFormat || legacyDateFormat.DEFAULT_DATE_FORMAT\n const timeFormat = options?.timeFormat || legacyDateFormat.DEFAULT_TIME_FORMAT\n\n return legacyDateFormat.format(\n new Date(value),\n name === 'date' ? dateFormat : `${dateFormat} ${timeFormat}`,\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type StringDiff} from '../../../types'\nimport {DatetimePreview} from '../preview/DatetimePreview'\n\nexport const DatetimeFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n align=\"center\"\n diff={diff}\n layout=\"grid\"\n previewComponent={DatetimePreview}\n schemaType={schemaType}\n />\n )\n}\n","import {type ConditionalProperty, type ConditionalPropertyCallbackContext} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {isRecord} from '../../util/isRecord'\n\nfunction isThenable(value: unknown): value is Promise<unknown> {\n return isRecord(value) && typeof value?.then === 'function'\n}\n\nexport function useCheckCondition(\n checkProperty: ConditionalProperty,\n checkPropertyName: string,\n context: ConditionalPropertyCallbackContext,\n): boolean {\n const {currentUser, document, parent, value, path} = context\n\n return useMemo(() => {\n let isTrueIsh = false\n\n if (typeof checkProperty === 'boolean' || checkProperty === undefined) {\n return checkProperty || false\n }\n\n try {\n isTrueIsh = checkProperty({\n document,\n parent,\n value,\n currentUser,\n path,\n })\n } catch (err) {\n console.error(\n `An error occurred while running the callback from \\`${checkPropertyName}\\`: ${err.message}`,\n )\n return false\n }\n\n if (isThenable(isTrueIsh)) {\n console.warn(\n `The \\`${checkPropertyName}\\` option is either a promise or a promise returning function. Async callbacks for \\`${checkPropertyName}\\` option is not currently supported.`,\n )\n return false\n }\n\n if (typeof isTrueIsh === 'undefined') {\n console.warn(\n `The \\`${checkPropertyName}\\` option is or returned \\`undefined\\`. \\`${checkPropertyName}\\` should return a boolean.`,\n )\n }\n\n return isTrueIsh\n }, [checkProperty, document, parent, value, currentUser, checkPropertyName, path])\n}\n","import {type ConditionalProperty, type Path, type SanityDocument} from '@sanity/types'\n\nimport {useCurrentUser} from '../../store/user/hooks'\nimport {useUnique} from '../../util/useUnique'\nimport {useCheckCondition} from './utils'\n\n/**\n * @internal Not yet a stable API\n */\nexport interface ConditionalPropertyProps {\n parent?: unknown\n value: unknown\n document?: SanityDocument\n checkProperty: ConditionalProperty\n checkPropertyKey: string\n path: Path\n}\n\n/**\n * Resolve a callback function to a boolean using the passed arguments\n *\n * @internal Not yet a stable API\n */\nexport const useConditionalProperty = (props: ConditionalPropertyProps): boolean => {\n const {checkProperty = false, checkPropertyKey, document, parent, value: valueProp, path} = props\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const value = useUnique(valueProp)\n const currentUser = useCurrentUser()\n\n const isPropertyTruthy = useCheckCondition(checkProperty, checkPropertyKey, {\n currentUser,\n document,\n parent,\n value,\n path,\n })\n\n return isPropertyTruthy\n}\n","import {type ArraySchemaType, isTypedObject, type SchemaType} from '@sanity/types'\n\nimport {type Diff} from '../types'\n\nfunction resolveTypeName(value: unknown): string {\n return isTypedObject(value) ? value._type : resolveJSType(value)\n}\n\nexport function getArrayDiffItemType(\n diff: Diff,\n schemaType: ArraySchemaType,\n): {fromType?: SchemaType; toType?: SchemaType} {\n if (diff.action === 'added') {\n return {\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n }\n\n if (diff.action === 'changed') {\n return {\n fromType: resolveArrayMemberType(schemaType, diff.fromValue),\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n }\n\n if (diff.action === 'removed') {\n return {\n fromType: resolveArrayMemberType(schemaType, diff.fromValue),\n }\n }\n\n // unchanged\n return {\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n}\n\nfunction resolveArrayMemberType(\n schemaType: ArraySchemaType,\n value: unknown,\n): SchemaType | undefined {\n const typeName = resolveTypeName(value)\n const declared = schemaType.of.find((candidate) => candidate.name === typeName)\n if (declared) {\n return declared as any\n }\n\n return (schemaType.of.length === 1 ? schemaType.of[0] : undefined) as any\n}\n\nfunction resolveJSType(val: unknown) {\n if (Array.isArray(val)) {\n return 'array'\n }\n\n if (val === null) {\n return 'null'\n }\n\n return typeof val\n}\n","export const ANNOTATION_SYMBOLS = [\n // [startTag, endTag]\n ['\\uF050', '\\uF051'],\n ['\\uF052', '\\uF053'],\n ['\\uF054', '\\uF055'],\n ['\\uF056', '\\uF057'],\n ['\\uF058', '\\uF059'],\n ['\\uF05A', '\\uF05B'],\n ['\\uF05C', '\\uF05D'],\n ['\\uF05F', '\\uF060'],\n ['\\uF061', '\\uF062'],\n ['\\uF063', '\\uF064'],\n ['\\uF065', '\\uF066'],\n ['\\uF067', '\\uF068'],\n ['\\uF069', '\\uF06A'],\n ['\\uF06B', '\\uF06C'],\n ['\\uF06E', '\\uF06F'],\n ['\\uF070', '\\uF071'],\n ['\\uF072', '\\uF073'],\n ['\\uF074', '\\uF075'],\n ['\\uF076', '\\uF077'],\n ['\\uF078', '\\uF079'],\n ['\\uF07A', '\\uF07B'],\n ['\\uF07C', '\\uF07D'],\n ['\\uF07E', '\\uF07F'],\n ['\\uF080', '\\uF081'],\n ['\\uF082', '\\uF083'],\n ['\\uF084', '\\uF085'],\n ['\\uF086', '\\uF087'],\n ['\\uF088', '\\uF089'],\n ['\\uF08A', '\\uF08B'],\n ['\\uF08C', '\\uF08D'],\n ['\\uF08E', '\\uF08F'],\n]\n\nexport const CHILD_SYMBOL = '\\uF0D0'\n\nexport const DECORATOR_SYMBOLS = [\n // [startTag, endTag]\n ['\\uF000', '\\uF001'],\n ['\\uF002', '\\uF003'],\n ['\\uF004', '\\uF005'],\n ['\\uF006', '\\uF007'],\n ['\\uF008', '\\uF009'],\n ['\\uF00A', '\\uF00B'],\n ['\\uF00C', '\\uF00D'],\n ['\\uF00F', '\\uF010'],\n ['\\uF011', '\\uF012'],\n ['\\uF013', '\\uF014'],\n ['\\uF015', '\\uF016'],\n ['\\uF017', '\\uF018'],\n ['\\uF019', '\\uF01A'],\n ['\\uF01B', '\\uF01C'],\n ['\\uF01E', '\\uF01F'],\n ['\\uF020', '\\uF021'],\n]\n\nexport const EMPTY_BLOCK_SYMBOL = '\\u21B2'\n\nexport const INLINE_SYMBOLS = [\n '\\uF090',\n '\\uF091',\n '\\uF092',\n '\\uF093',\n '\\uF094',\n '\\uF095',\n '\\uF096',\n '\\uF097',\n '\\uF098',\n '\\uF099',\n '\\uF09A',\n '\\uF09B',\n '\\uF09C',\n '\\uF09D',\n '\\uF09E',\n '\\uF09F',\n '\\uF0A0',\n '\\uF0A1',\n '\\uF0A2',\n '\\uF0A3',\n '\\uF0A4',\n '\\uF0A5',\n '\\uF0A6',\n '\\uF0A7',\n '\\uF0A8',\n '\\uF0A9',\n '\\uF0AA',\n '\\uF0AB',\n '\\uF0AC',\n '\\uF0AD',\n '\\uF0AE',\n '\\uF0AF',\n '\\uF0B0',\n '\\uF0B1',\n '\\uF0B2',\n '\\uF0B3',\n '\\uF0B4',\n '\\uF0B5',\n '\\uF0B6',\n '\\uF0B7',\n '\\uF0B8',\n '\\uF0B9',\n '\\uF0BA',\n '\\uF0BB',\n '\\uF0BC',\n '\\uF0BD',\n '\\uF0BE',\n '\\uF0BF',\n]\n\nexport const TRAILING_SPACE_SYMBOL = '\\u205F'\n\nexport const SEGMENT_START_SYMBOL = '\\u2060'\n","import {\n cleanupEfficiency,\n DIFF_DELETE,\n DIFF_EQUAL,\n DIFF_INSERT,\n makeDiff,\n} from '@sanity/diff-match-patch'\nimport {\n type ArraySchemaType,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type ObjectField,\n type ObjectSchemaType,\n type PortableTextBlock,\n type PortableTextChild,\n type PortableTextObject,\n type PortableTextTextBlock,\n type SchemaType,\n type SpanSchemaType,\n} from '@sanity/types'\nimport flatten from 'lodash-es/flatten.js'\nimport isEqual from 'lodash-es/isEqual.js'\nimport orderBy from 'lodash-es/orderBy.js'\n\nimport {\n type ArrayDiff,\n type DiffComponent,\n type DiffComponentOptions,\n type ObjectDiff,\n type StringDiffSegment,\n} from '../../../types'\nimport * as TextSymbols from './symbols'\nimport {type InlineSymbolMap, type MarkSymbolMap, type PortableTextDiff} from './types'\n\nconst UNKNOWN_TYPE_NAME = '_UNKOWN_TYPE_'\n\nexport function hasPTMemberType(schemaType: ArraySchemaType): boolean {\n return schemaType.of.some(isPTSchemaType)\n}\n\nconst startMarkSymbols = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[0]).concat(\n TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[0]),\n)\nconst endMarkSymbols = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[1]).concat(\n TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[1]),\n)\nconst allSymbols = startMarkSymbols\n .concat(endMarkSymbols)\n .concat(TextSymbols.INLINE_SYMBOLS)\n .concat(TextSymbols.CHILD_SYMBOL)\n .concat(TextSymbols.SEGMENT_START_SYMBOL)\nconst symbolRegex = new RegExp(`${allSymbols.join('|')}`, 'g')\nconst segmentRegex = new RegExp(`${allSymbols.join('|')}|\\n`, 'g')\n\ninterface BlockSchemaType extends ObjectSchemaType {\n diffComponent:\n | DiffComponent<ObjectDiff<PortableTextBlock>>\n | DiffComponentOptions<ObjectDiff<PortableTextBlock>>\n}\n\nexport function isPTSchemaType(schemaType: SchemaType): schemaType is BlockSchemaType {\n return schemaType.jsonType === 'object' && schemaType.name === 'block'\n}\n\nexport function isHeader(node: PortableTextBlock): boolean {\n return (\n isPortableTextTextBlock(node) &&\n !!node.style &&\n ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(node.style)\n )\n}\n\nexport function findChildDiff(diff: ObjectDiff, child: PortableTextChild): ObjectDiff {\n const childrenDiff = diff.fields.children as ArrayDiff\n return childrenDiff.items\n .filter(\n (item: any) =>\n item.diff.isChanged && (item.diff.toValue === child || item.diff.fromValue === child),\n )\n .map((item: any) => item.diff)\n .map((childDiff: any) => childDiff as ObjectDiff)[0]\n}\n\nexport function getChildSchemaType(\n fields: ObjectField[],\n child: PortableTextChild,\n): ObjectSchemaType | undefined {\n const childrenField = fields.find((f) => f.name === 'children')\n const cSchemaType =\n (childrenField &&\n childrenField.type &&\n childrenField.type.jsonType === 'array' &&\n (childrenField.type.of.find((type) => type.name === child._type) as ObjectSchemaType)) ||\n undefined\n return cSchemaType\n}\n\nexport function getDecorators(spanSchemaType: SpanSchemaType): {title: string; value: string}[] {\n if (spanSchemaType.decorators) {\n return orderBy(spanSchemaType.decorators, ['value'], ['asc'])\n }\n return []\n}\n\nfunction getAnnotations(spanSchemaType: SpanSchemaType): ObjectSchemaType[] {\n if (spanSchemaType.annotations) {\n return orderBy(spanSchemaType.annotations, ['name'], ['asc'])\n }\n return []\n}\n\nexport function isDecorator(name: string, schemaType: SpanSchemaType): boolean {\n return getDecorators(schemaType).some((dec) => dec.value === name)\n}\n\nfunction blockToSymbolizedText(\n diff: ObjectDiff,\n block: PortableTextTextBlock | undefined,\n decoratorMap: MarkSymbolMap,\n annotationMap: MarkSymbolMap,\n inlineMap: InlineSymbolMap,\n): string {\n if (!block) {\n return ''\n }\n return block.children\n .map((child) => {\n let returned = isPortableTextSpan(child) ? child.text?.replace(symbolRegex, '') : '' // Make sure symbols aren't in the text already\n if (isPortableTextSpan(child)) {\n // Attatch stringdiff segments\n const spanDiff = findSpanDiffFromChild(diff, child)\n const textDiff = spanDiff?.fields.text\n if (\n textDiff &&\n textDiff.toValue === child.text &&\n textDiff.type === 'string' &&\n textDiff.action !== 'unchanged'\n ) {\n returned = textDiff.segments\n .filter((seg) => seg.action !== 'removed')\n .map((seg) => seg.text.replace(symbolRegex, ''))\n .join('')\n }\n if (child.marks) {\n child.marks.forEach((mark) => {\n const _isDecorator = !!decoratorMap[mark]\n if (_isDecorator) {\n returned = `${decoratorMap[mark][0]}${returned}${decoratorMap[mark][1]}`\n } else if (annotationMap[mark]) {\n returned = `${annotationMap[mark][0]}${returned}${annotationMap[mark][1]}`\n }\n })\n }\n } else {\n returned = inlineMap[child._key]\n }\n return `${TextSymbols.CHILD_SYMBOL}${returned}`\n })\n .join('')\n}\n\nexport function createPortableTextDiff(\n diff: ObjectDiff,\n schemaType: ObjectSchemaType,\n): PortableTextDiff {\n const displayValue =\n diff.action === 'removed'\n ? (diff.fromValue as PortableTextTextBlock)\n : (diff.toValue as PortableTextTextBlock)\n const _diff: PortableTextDiff = {\n ...diff,\n origin: diff,\n displayValue,\n }\n\n if (displayValue) {\n const annotationMap: MarkSymbolMap = {}\n const decoratorMap: MarkSymbolMap = {}\n const inlineMap: InlineSymbolMap = {}\n const spanSchemaType = getChildSchemaType(schemaType.fields, {\n _key: 'bogus',\n _type: 'span',\n }) as SpanSchemaType\n if (spanSchemaType) {\n getDecorators(spanSchemaType).forEach((dec, index) => {\n decoratorMap[dec.value] = TextSymbols.DECORATOR_SYMBOLS[index]\n })\n }\n const allMarkDefs = getAllMarkDefs(_diff.origin)\n allMarkDefs.forEach((markDef, index) => {\n annotationMap[markDef._key] = TextSymbols.ANNOTATION_SYMBOLS[index]\n })\n const inlines = getInlineObjects(_diff.origin)\n inlines.forEach((inline, index) => {\n inlineMap[inline._key] = TextSymbols.INLINE_SYMBOLS[index]\n })\n const fromText = blockToSymbolizedText(\n _diff.origin,\n _diff.fromValue as PortableTextTextBlock,\n decoratorMap,\n annotationMap,\n inlineMap,\n )\n const toText = blockToSymbolizedText(\n _diff.origin,\n _diff.toValue as PortableTextTextBlock,\n decoratorMap,\n annotationMap,\n inlineMap,\n )\n const toPseudoValue = {\n ...displayValue,\n children: [\n {\n _type: 'span',\n _key: 'pseudoSpanKey',\n text: toText,\n marks: [],\n },\n ],\n }\n const fromPseudoValue = {\n displayValue,\n children: [\n {\n _type: 'span',\n _key: 'pseudoSpanKey',\n text: fromText,\n marks: [],\n },\n ],\n }\n const pseudoDiff = {\n origin: diff,\n action: 'changed',\n type: 'object',\n displayValue: toPseudoValue,\n fromValue: fromPseudoValue,\n toValue: toPseudoValue,\n isChanged: true,\n fields: {\n children: {\n action: 'changed',\n type: 'array',\n isChanged: true,\n items: [\n {\n diff: {\n action: 'changed',\n type: 'object',\n isChanged: true,\n fields: {\n text: {\n type: 'string',\n action: 'changed',\n isChanged: true,\n fromValue: fromText,\n toValue: toText,\n segments: buildSegments(fromText, toText).map((seg) => ({\n ...seg,\n ...(_diff.action !== 'unchanged' && _diff.annotation\n ? {annotation: _diff.annotation} // Fallback if we can't find a spesific original diff\n : {}),\n })),\n },\n },\n fromValue: fromPseudoValue.children[0],\n toValue: toPseudoValue.children[0],\n },\n annotation: null,\n fromIndex: 0,\n toIndex: 0,\n hasMoved: false,\n },\n ],\n fromValue: fromPseudoValue.children,\n toValue: toPseudoValue.children,\n },\n },\n }\n return pseudoDiff as PortableTextDiff\n }\n throw new Error('Can not display this diff')\n}\n\n/** @internal Exported for testing */\nexport function buildSegments(fromInput: string, toInput: string): StringDiffSegment[] {\n const segments: StringDiffSegment[] = []\n const dmpDiffs = cleanupEfficiency(makeDiff(fromInput, toInput))\n\n let fromIdx = 0\n let toIdx = 0\n for (const [op, text] of dmpDiffs) {\n switch (op) {\n case DIFF_EQUAL:\n segments.push({\n type: 'stringSegment',\n action: 'unchanged',\n text,\n })\n fromIdx += text.length\n toIdx += text.length\n break\n case DIFF_DELETE:\n segments.push({\n type: 'stringSegment',\n action: 'removed',\n text: fromInput.slice(fromIdx, fromIdx + text.length),\n annotation: null,\n })\n fromIdx += text.length\n break\n case DIFF_INSERT:\n segments.push({\n type: 'stringSegment',\n action: 'added',\n text: toInput.slice(toIdx, toIdx + text.length),\n annotation: null,\n })\n toIdx += text.length\n break\n default:\n // Do nothing\n }\n }\n // Clean up so that marks / symbols are treated as an own segment\n return flatten(\n segments.map((seg) => {\n const newSegments: StringDiffSegment[] = []\n if (seg.text.length > 1) {\n const markMatches = [...seg.text.matchAll(segmentRegex)]\n let lastIndex = -1\n markMatches.forEach((match) => {\n const index = match.index || 0\n if (index > lastIndex) {\n newSegments.push({...seg, text: seg.text.slice(lastIndex + 1, index)})\n newSegments.push({...seg, text: match[0]})\n }\n if (match === markMatches[markMatches.length - 1]) {\n newSegments.push({...seg, text: seg.text.slice(Math.max(0, index + 1))})\n }\n lastIndex = index\n })\n if (markMatches.length === 0) {\n newSegments.push(seg)\n }\n } else {\n newSegments.push(seg)\n }\n return newSegments\n }),\n ).filter((seg) => seg.text !== '')\n}\n\nexport function getInlineObjects(diff: ObjectDiff): PortableTextObject[] {\n const allChildren = diff.toValue\n ? diff.toValue.children.filter((cld: any) => cld._type !== 'span')\n : []\n const previousChildren = diff.fromValue\n ? diff.fromValue.children.filter((cld: any) => cld._type !== 'span')\n : []\n previousChildren.forEach((oCld: any) => {\n if (!allChildren.some((cld: any) => oCld._key === cld._key)) {\n allChildren.push(oCld)\n }\n })\n return orderBy(allChildren, ['_key'], ['asc']) as PortableTextObject[]\n}\n\nexport function findSpanDiffFromChild(\n diff: ObjectDiff,\n child: PortableTextChild,\n): ObjectDiff | undefined {\n // Find span in original diff which has a string segment similar to the one from the input\n const candidate =\n diff.fields.children &&\n diff.fields.children.action !== 'unchanged' &&\n diff.fields.children.type === 'array' &&\n diff.fields.children.items.find(\n (item: any) =>\n item.diff &&\n item.diff.type === 'object' &&\n (item.diff.action === 'removed'\n ? item.diff.fromValue && item.diff.fromValue._key === child._key\n : (item.diff.toValue && item.diff.toValue._key) === child._key),\n )\n if (candidate) {\n return candidate.diff as ObjectDiff\n }\n return undefined\n}\n\nexport function findAnnotationDiff(diff: ObjectDiff, markDefKey: string): ObjectDiff | undefined {\n return (\n ((diff.fields.markDefs &&\n diff.fields.markDefs.isChanged &&\n diff.fields.markDefs.type === 'array' &&\n diff.fields.markDefs.items.find(\n (item: any) =>\n item.diff &&\n item.diff.type === 'object' &&\n ((item.diff.toValue && item.diff.toValue._key && item.diff.toValue._key === markDefKey) ||\n (item.diff.fromValue &&\n item.diff.fromValue._key &&\n item.diff.fromValue._key === markDefKey)),\n )?.diff) as ObjectDiff) || undefined\n )\n}\n\nexport function isEmptyObject(object: PortableTextChild): boolean {\n return (object && isEqual(Object.keys(object), ['_key', '_type'])) || false\n}\n\nexport function escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n\nexport function getAllMarkDefs(diff: ObjectDiff): PortableTextChild[] {\n const allDefs: PortableTextChild[] = [\n ...(diff.toValue && diff.toValue.markDefs ? diff.toValue.markDefs : []),\n ]\n const oldDefs: PortableTextChild[] =\n diff.fromValue && diff.fromValue.markDefs ? diff.fromValue.markDefs : []\n oldDefs.forEach((oDef) => {\n if (!allDefs.some((def) => oDef._key === def._key)) {\n allDefs.push(oDef)\n }\n })\n return orderBy(allDefs, ['_key'], ['asc'])\n}\n","import {type ObjectSchemaType, type SchemaType} from '@sanity/types'\n\nimport {type StudioLocaleResourceKeys} from '../../i18n/bundles/studio'\nimport {getPrintableType} from '../../util/getPrintableType'\n\n/** @internal */\nexport interface FieldValueError {\n /**\n * i18n key for the error message\n */\n messageKey: StudioLocaleResourceKeys\n\n /**\n * The expected type of the value\n */\n expectedType: string\n\n /**\n * The actual type of the value\n */\n actualType: string\n\n /**\n * The actual value of the field\n */\n value: unknown\n}\n\n/** @internal */\nexport function getValueError(value: unknown, schemaType: SchemaType): FieldValueError | undefined {\n const {jsonType} = schemaType\n const valueType = Array.isArray(value) ? 'array' : typeof value\n\n if (value === null || valueType === 'undefined') {\n return undefined\n }\n\n if (valueType !== jsonType) {\n return {\n messageKey: 'changes.error.incorrect-type-message',\n value,\n expectedType: jsonType,\n actualType: getPrintableType(value),\n }\n }\n\n if (isObjectType(schemaType) && isObjectValue(value)) {\n for (const field of schemaType.fields) {\n const fieldError = getValueError(value[field.name], field.type as SchemaType)\n if (fieldError) {\n return fieldError\n }\n }\n }\n\n return undefined\n}\n\nfunction isObjectType(schemaType: SchemaType): schemaType is ObjectSchemaType {\n return schemaType.jsonType === 'object'\n}\n\nfunction isObjectValue(value: unknown): value is Record<string, unknown> {\n return value !== null && !Array.isArray(value) && typeof value === 'object'\n}\n","import {Card, Stack, Text} from '@sanity/ui'\nimport {Code} from '@sanity/ui/code'\nimport {type CSSProperties} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type DiffComponent} from '../../types'\nimport {useChangeVerb} from '../hooks/useChangeVerb'\nimport {DiffCard} from './DiffCard'\nimport {DiffTooltip} from './DiffTooltip'\nimport {FromToArrow} from './FromToArrow'\n\n/**\n * Horizontal scroll only. Avoid `overflow-x: auto` on `pre`: CSS pairs it with\n * `overflow-y: auto`, which spuriously shows a vertical scrollbar in flex layouts.\n */\nconst CodeWrapper = styled.div`\n max-width: 100%;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n`\n\nconst cardStyles: CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: 'block',\n whiteSpace: 'break-spaces',\n}\n\nfunction jsonify(value: unknown): string {\n if (typeof value === 'undefined') {\n return 'undefined'\n }\n return JSON.stringify(value, null, 2)\n}\n\n/** @internal */\nexport const JsonFieldDiff: DiffComponent = ({diff}) => {\n const {t} = useTranslation()\n const changeVerb = useChangeVerb(diff)\n\n const from = diff.fromValue !== undefined && diff.fromValue !== null && (\n <DiffCard as=\"del\" diff={diff} style={cardStyles}>\n <CodeWrapper>\n <Code language=\"json\" size={1}>\n {jsonify(diff.fromValue)}\n </Code>\n </CodeWrapper>\n </DiffCard>\n )\n\n const to = diff.toValue !== undefined && diff.toValue !== null && (\n <DiffCard as=\"ins\" diff={diff} style={cardStyles}>\n <CodeWrapper>\n <Code language=\"json\" size={1}>\n {jsonify(diff.toValue)}\n </Code>\n </CodeWrapper>\n </DiffCard>\n )\n\n const content =\n from && to ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n <Stack gap={3}>\n {from}\n <FromToArrow direction=\"down\" align=\"center\" />\n {to}\n </Stack>\n </DiffTooltip>\n ) : from ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n {from}\n </DiffTooltip>\n ) : to ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n {to}\n </DiffTooltip>\n ) : null\n\n return (\n <Stack gap={4} paddingY={1}>\n <Card border padding={3} radius={2} tone=\"caution\">\n <Text size={1}>{t('changes.unknown-schema-field.description')}</Text>\n </Card>\n {content}\n </Stack>\n )\n}\n","import {type SchemaType} from '@sanity/types'\n\nimport {\n type ChangeNode,\n type Diff,\n type FieldChangeNode,\n type GroupChangeNode,\n type ItemDiff,\n} from '../types'\n\n/** @internal */\nexport function noop(): void {}\n\n/** @internal */\nexport function isFieldChange(change: ChangeNode): change is FieldChangeNode {\n return change.type === 'field'\n}\n\n/** @internal */\nexport function isGroupChange(change: ChangeNode): change is GroupChangeNode {\n return change.type === 'group'\n}\n\n/** @internal */\nexport function isAddedItemDiff(\n item: ItemDiff,\n): item is ItemDiff & {diff: Diff & {action: 'added'}} {\n return item.diff.action === 'added'\n}\n\n/** @internal */\nexport function isRemovedItemDiff(\n item: ItemDiff,\n): item is ItemDiff & {diff: Diff & {action: 'removed'}} {\n return item.diff.action === 'removed'\n}\n\n/** @internal */\nexport function isUnchangedDiff(diff: Diff): diff is Diff & {action: 'unchanged'} {\n return diff.action === 'unchanged'\n}\n\n/**\n * A map of supported JSON types to valid empty values that may be used for diffing purposes when\n * the node has no underlying value to be compared with.\n *\n * @internal\n */\nexport const emptyValuesByType = {\n string: '',\n number: 0,\n boolean: false,\n array: [],\n object: {},\n} satisfies Record<SchemaType['jsonType'], unknown>\n","import {type ObjectSchemaType} from '@sanity/types'\n\nimport {JsonFieldDiff} from '../components/JsonFieldDiff'\n\nexport const UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE: ObjectSchemaType = {\n name: '__sanity.unknownDocumentField',\n fields: [],\n jsonType: 'object',\n components: {diff: JsonFieldDiff},\n}\n","import {type ObjectSchemaType} from '@sanity/types'\n\nimport {type ObjectDiff} from '../../types'\n\n/**\n * Keys we never surface as “unknown schema” JSON diffs — standard document\n * metadata (`_createdAt`, `_updatedAt`, `_rev`, `_type`), portable object\n * identity (`_key`), and internal blobs (`_system`) that would only add noise\n * or churn to Review changes.\n *\n * @internal\n */\nconst SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES = new Set<string>([\n '_createdAt',\n '_key',\n '_rev',\n '_system',\n '_type',\n '_updatedAt',\n])\n\n/**\n * Field names declared on an object schema type (including multi-fieldsets).\n *\n * @internal\n */\nexport function collectObjectSchemaFieldNames(schemaType: ObjectSchemaType): Set<string> {\n const names = new Set<string>()\n const fieldSets =\n schemaType.fieldsets || schemaType.fields.map((field) => ({single: true, field}))\n for (const fieldSet of fieldSets) {\n if (fieldSet.single) {\n names.add(fieldSet.field.name)\n } else {\n for (const field of fieldSet.fields) {\n names.add(field.name)\n }\n }\n }\n return names\n}\n\n/**\n * Keys present in `diff.fields` that are not declared on `schemaType`, have\n * `isChanged`, and pass optional `fieldFilter` (when set, the name must be\n * included). Skips standard metadata / internal keys in\n * `SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES` (see set above).\n * Sorted lexicographically for stable UI ordering.\n *\n * @internal\n */\nexport function getSortedUnknownChangedObjectFieldNames(\n schemaType: ObjectSchemaType,\n diff: ObjectDiff,\n fieldFilter?: string[],\n): string[] {\n const schemaFieldNames = collectObjectSchemaFieldNames(schemaType)\n const unknown = Object.keys(diff.fields).filter(\n (name) => !schemaFieldNames.has(name) && !SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES.has(name),\n )\n unknown.sort()\n return unknown.filter((fieldName) => {\n const fieldDiff = diff.fields[fieldName]\n if (!fieldDiff?.isChanged) {\n return false\n }\n if (fieldFilter && !fieldFilter.includes(fieldName)) {\n return false\n }\n return true\n })\n}\n","import {\n type ArraySchemaType,\n type MultiFieldSet,\n type ObjectField,\n type ObjectSchemaType,\n type Path,\n type SchemaType,\n} from '@sanity/types'\n\nimport {getItemKeySegment, pathsAreEqual, pathToString} from '../../paths/helpers'\nimport {getArrayDiffItemType} from '../../schema/helpers'\nimport {\n type ArrayDiff,\n type ChangeNode,\n type ChangeTitlePath,\n type Diff,\n type DiffComponent,\n type FieldChangeNode,\n type ItemDiff,\n type ObjectDiff,\n} from '../../types'\nimport {hasPTMemberType} from '../../types/portableText/diff/helpers'\nimport {getValueError} from '../../validation'\nimport {JsonFieldDiff} from '../components/JsonFieldDiff'\nimport {isFieldChange} from '../helpers'\nimport {resolveDiffComponent} from '../resolve/resolveDiffComponent'\nimport {UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE} from './unknownDocumentFieldSchema'\nimport {getSortedUnknownChangedObjectFieldNames} from './unknownObjectDiffFields'\n\ninterface DiffContext {\n itemDiff?: ItemDiff\n parentDiff?: ArrayDiff | ObjectDiff\n parentSchema?: ArraySchemaType | ObjectSchemaType\n fieldFilter?: string[]\n}\n\nfunction buildChangeList(\n schemaType: SchemaType,\n diff: Diff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n context: DiffContext = {},\n): ChangeNode[] {\n const diffComponent = resolveDiffComponent(schemaType, context.parentSchema)\n\n if (!diffComponent) {\n if (schemaType.jsonType === 'object' && diff.type === 'object') {\n return buildObjectChangeList(schemaType as ObjectSchemaType, diff, path, titlePath, context)\n }\n\n if (schemaType.jsonType === 'array' && diff.type === 'array') {\n return buildArrayChangeList(schemaType, diff, path, titlePath)\n }\n }\n\n return getFieldChange(schemaType, diff, path, titlePath, context)\n}\n\nfunction buildUnknownFieldChangeNodes(\n fieldDiff: Diff,\n fieldPath: Path,\n fieldTitlePath: ChangeTitlePath,\n {itemDiff, parentDiff, parentSchema}: DiffContext,\n): FieldChangeNode[] {\n const {fromValue, toValue, type} = fieldDiff\n\n if (type === 'array' && isEmpty(fromValue) && isEmpty(toValue)) {\n return []\n }\n\n return [\n {\n type: 'field',\n diff: fieldDiff,\n path: fieldPath,\n itemDiff,\n parentDiff,\n titlePath: fieldTitlePath,\n schemaType: UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE,\n showHeader: true,\n showIndex: true,\n key: pathToString(fieldPath) || 'root',\n diffComponent: JsonFieldDiff,\n parentSchema,\n },\n ]\n}\n\nexport function buildObjectChangeList(\n schemaType: ObjectSchemaType,\n diff: ObjectDiff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n diffContext: DiffContext = {},\n): ChangeNode[] {\n const changes: ChangeNode[] = []\n const {fieldFilter} = diffContext\n\n const childContext: DiffContext = {...diffContext, parentSchema: schemaType}\n const fieldSets =\n schemaType.fieldsets || schemaType.fields.map((field) => ({single: true, field}))\n for (const fieldSet of fieldSets) {\n if (fieldSet.single) {\n changes.push(...buildFieldChange(fieldSet.field, diff, path, titlePath, childContext))\n } else {\n changes.push(...buildFieldsetChangeList(fieldSet, diff, path, titlePath, childContext))\n }\n }\n\n const unknownFieldNames = getSortedUnknownChangedObjectFieldNames(schemaType, diff, fieldFilter)\n for (const fieldName of unknownFieldNames) {\n const fieldDiff = diff.fields[fieldName]\n const fieldPath = path.concat([fieldName])\n const fieldTitlePath = titlePath.concat([fieldName])\n changes.push(\n ...buildUnknownFieldChangeNodes(fieldDiff, fieldPath, fieldTitlePath, childContext),\n )\n }\n\n if (changes.length < 2) {\n return changes\n }\n\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n path,\n titlePath,\n changes: reduceTitlePaths(changes, titlePath.length),\n schemaType,\n },\n ]\n}\n\nfunction buildFieldChange(\n field: ObjectField,\n diff: ObjectDiff,\n path: Path,\n titlePath: ChangeTitlePath,\n diffContext: DiffContext & {fieldFilter?: string[]} = {},\n): ChangeNode[] {\n const {fieldFilter, ...context} = diffContext\n const fieldDiff = diff.fields[field.name]\n if (!fieldDiff || !fieldDiff.isChanged || (fieldFilter && !fieldFilter.includes(field.name))) {\n return []\n }\n\n const fieldPath = path.concat([field.name])\n const fieldTitlePath = titlePath.concat([field.type.title || field.name])\n return buildChangeList(field.type as any, fieldDiff, fieldPath, fieldTitlePath, context)\n}\n\nfunction buildFieldsetChangeList(\n fieldSet: MultiFieldSet,\n diff: ObjectDiff,\n path: Path,\n titlePath: ChangeTitlePath,\n diffContext: DiffContext & {fieldFilter?: string[]} = {},\n): ChangeNode[] {\n const {fields, name, title, readOnly, hidden} = fieldSet\n const {fieldFilter, ...context} = diffContext\n\n const fieldSetHidden = hidden\n const fieldsetReadOnly = readOnly\n\n const fieldSetTitlePath = titlePath.concat([title || name])\n const changes: ChangeNode[] = []\n\n for (const field of fields) {\n const fieldDiff = diff.fields[field.name]\n if (!fieldDiff || !fieldDiff.isChanged || (fieldFilter && !fieldFilter.includes(field.name))) {\n continue\n }\n\n const fieldPath = path.concat([field.name])\n const fieldTitlePath = fieldSetTitlePath.concat([field.type.title || field.name])\n changes.push(\n ...buildChangeList(\n {\n readOnly: fieldsetReadOnly,\n hidden: fieldSetHidden,\n ...field.type,\n } as any,\n fieldDiff,\n fieldPath,\n fieldTitlePath,\n context,\n ),\n )\n }\n\n if (changes.length < 2) {\n return changes\n }\n\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n fieldsetName: name,\n path,\n titlePath: fieldSetTitlePath,\n changes: reduceTitlePaths(changes, fieldSetTitlePath.length),\n readOnly: fieldsetReadOnly,\n hidden: fieldSetHidden,\n },\n ]\n}\n\nfunction buildArrayChangeList(\n schemaType: ArraySchemaType,\n diff: ArrayDiff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n): ChangeNode[] {\n const changedOrMoved = diff.items.filter(\n (item) =>\n (item.hasMoved && item.fromIndex !== item.toIndex) || item.diff.action !== 'unchanged',\n )\n\n if (changedOrMoved.length === 0) {\n return []\n }\n\n const isPortableText = hasPTMemberType(schemaType)\n const list: ChangeNode[] = []\n const changes = changedOrMoved.reduce((acc, itemDiff) => {\n const memberTypes = getArrayDiffItemType(itemDiff.diff, schemaType)\n const memberType = memberTypes.toType || memberTypes.fromType\n if (!memberType) {\n console.warn('Could not determine schema type for item at %s', pathToString(path))\n return acc\n }\n\n const segment =\n getItemKeySegment(itemDiff.diff.fromValue) ||\n getItemKeySegment(itemDiff.diff.toValue) ||\n diff.items.indexOf(itemDiff)\n\n const itemPath = path.concat(segment)\n const itemContext: DiffContext = {itemDiff, parentDiff: diff, parentSchema: schemaType}\n const itemTitlePath = titlePath.concat({\n hasMoved: itemDiff.hasMoved,\n toIndex: itemDiff.toIndex,\n fromIndex: itemDiff.fromIndex,\n annotation:\n itemDiff.diff.action === 'unchanged' ? itemDiff.annotation : itemDiff.diff.annotation,\n })\n\n const attachItemDiff = (change: ChangeNode): ChangeNode => {\n if (change.type === 'field' && pathsAreEqual(itemPath, change.path)) {\n change.itemDiff = itemDiff\n }\n\n return change\n }\n\n const children = buildChangeList(\n memberType,\n itemDiff.diff,\n itemPath,\n itemTitlePath,\n itemContext,\n ).map(attachItemDiff)\n\n if (isPortableText) {\n children.filter(isFieldChange).forEach((field, index, siblings) => {\n field.showHeader = siblings.length === 1\n field.showIndex = itemDiff.fromIndex !== itemDiff.toIndex && itemDiff.hasMoved\n })\n }\n\n if (children.length === 0) {\n // This can happen when there are no changes to the actual element, it's just been moved\n acc.push(...getFieldChange(memberType, itemDiff.diff, itemPath, itemTitlePath, itemContext))\n } else {\n acc.push(...children)\n }\n\n return acc\n }, list)\n\n if (changes.length > 1) {\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n path,\n titlePath,\n changes: reduceTitlePaths(changes, titlePath.length),\n schemaType,\n },\n ]\n }\n\n return changes\n}\n\nfunction getFieldChange(\n schemaType: SchemaType,\n diff: Diff,\n path: Path,\n titlePath: ChangeTitlePath,\n {itemDiff, parentDiff, parentSchema}: DiffContext = {},\n): FieldChangeNode[] {\n const {fromValue, toValue, type} = diff\n\n // Treat undefined => [] as no change\n if (type === 'array' && isEmpty(fromValue) && isEmpty(toValue)) {\n return []\n }\n\n let error\n if (typeof fromValue !== 'undefined') {\n error = getValueError(fromValue, schemaType)\n }\n\n if (!error && typeof toValue !== 'undefined') {\n error = getValueError(toValue, schemaType)\n }\n\n let showHeader = true\n let component: DiffComponent | undefined\n\n const diffComponent = resolveDiffComponent(schemaType, parentSchema)\n if (diffComponent && typeof diffComponent === 'function') {\n // Just a diff component with default options\n component = diffComponent\n } else if (diffComponent) {\n // Diff component with options\n component = (diffComponent as any).component\n showHeader =\n typeof (diffComponent as any).showHeader === 'undefined'\n ? showHeader\n : (diffComponent as any).showHeader\n }\n\n return [\n {\n type: 'field',\n diff,\n path,\n error,\n itemDiff,\n parentDiff,\n titlePath,\n schemaType,\n showHeader,\n showIndex: true,\n key: pathToString(path) || 'root',\n diffComponent: error ? undefined : component,\n parentSchema,\n },\n ]\n}\n\nfunction reduceTitlePaths(changes: ChangeNode[], byLength = 1): ChangeNode[] {\n return changes.map((change) => {\n change.titlePath = change.titlePath.slice(byLength)\n return change\n })\n}\n\nfunction isEmpty(item: unknown): boolean {\n return (Array.isArray(item) && item.length === 0) || item === null || typeof item === 'undefined'\n}\n","import {type Path, type PathSegment} from '@sanity/types'\n\nimport {getItemKey} from '../../paths/helpers'\nimport {type ChangeNode, type FieldChangeNode} from '../../types'\n\nconst isAddedAction = (change: ChangeNode): boolean => {\n return change.type === 'field' && change.diff.action === 'added'\n}\n\nconst flattenChangeNode = (changeNode: ChangeNode): FieldChangeNode[] => {\n if (changeNode.type !== 'group') {\n return [changeNode]\n }\n\n const newSubChanges: FieldChangeNode[] = []\n\n changeNode.changes.forEach((cChange) => {\n newSubChanges.push(...flattenChangeNode(cChange))\n })\n\n return newSubChanges\n}\n\n/**\n * Checks whether a path is under another path within the tree.\n */\nconst isSubpathOf = (subPath: Path, parentPath: Path): boolean => {\n if (parentPath.length >= subPath.length) {\n return false\n }\n\n for (let i = 0; i < parentPath.length; i++) {\n if (parentPath[i] !== subPath[i]) {\n return false\n }\n }\n\n return true\n}\n\nconst pathSegmentOfCorrectType = (item: Record<string, unknown>, child: string): PathSegment => {\n const nextItem = item[child]\n\n const key = getItemKey(nextItem)\n\n if (key) {\n return {_key: key}\n }\n\n const isArray = Array.isArray(item)\n\n if (isArray) {\n return parseInt(child, 10)\n }\n\n return child\n}\n\nexport {flattenChangeNode, isAddedAction, isSubpathOf, pathSegmentOfCorrectType}\n","import {\n diffItem,\n type DiffOptions,\n type InsertAfterPatch,\n type SetPatch,\n type UnsetPatch,\n} from '@sanity/diff-patch'\nimport {\n isIndexSegment,\n isKeyedObject,\n isKeySegment,\n isTypedObject,\n type PatchOperations,\n type Path,\n} from '@sanity/types'\n\nimport {isRecord} from '../../../util/isRecord'\nimport {\n findIndex,\n getItemKeySegment,\n getValueAtPath,\n isEmptyObject,\n pathToString,\n} from '../../paths/helpers'\nimport {\n type ArrayDiff,\n type ChangeNode,\n type Diff,\n type FieldOperationsAPI,\n type ItemDiff,\n type ObjectDiff,\n} from '../../types'\nimport {flattenChangeNode, isAddedAction, isSubpathOf, pathSegmentOfCorrectType} from './helpers'\n\nconst diffOptions: DiffOptions = {\n diffMatchPatch: {enabled: false, lengthThresholdAbsolute: 30, lengthThresholdRelative: 1.2},\n}\n\nexport function undoChange(\n change: ChangeNode,\n rootDiff: ObjectDiff | null,\n documentOperations: FieldOperationsAPI,\n stubbed?: Set<string>,\n): void {\n if (!rootDiff) {\n return\n }\n\n const patches: PatchOperations[] = []\n // Track stubbed paths to prevent duplicates when reverting group changes\n const stubbedPaths = stubbed ?? new Set<string>()\n\n if (change.type === 'group') {\n const allChanges = flattenChangeNode(change)\n\n const unsetChanges = allChanges.filter(isAddedAction)\n\n allChanges\n .filter((child) => !isAddedAction(child))\n .forEach((child) => {\n undoChange(child, rootDiff, documentOperations, stubbedPaths)\n })\n patches.push(\n ...buildUnsetPatches(rootDiff, unsetChanges.map((unsetChange) => unsetChange.path).reverse()),\n )\n } else if (change.diff.action === 'added') {\n // The reverse of an add operation is an unset -\n // so we don't need to worry about moved items in this case\n patches.push(...buildUnsetPatches(rootDiff, [change.path]))\n } else if (\n change.type === 'field' &&\n change.itemDiff &&\n change.parentDiff &&\n change.parentDiff.type === 'array' &&\n change.itemDiff.hasMoved\n ) {\n // If an array item has moved, we need to unset + insert it again\n // (we lack a \"move\" patch currently)\n patches.push(...buildMovePatches(change.itemDiff, change.parentDiff, change.path))\n } else {\n // For all other operations, try to find the most optimal case\n patches.push(...buildUndoPatches(change.diff, rootDiff, change.path, stubbedPaths))\n }\n\n documentOperations.patch.execute(patches)\n}\n\nfunction buildUnsetPatch(rootDiff: ObjectDiff, path: Path, concurrentUnsetPaths: Path[]): Path {\n const previousValue = rootDiff.toValue as Record<string, unknown>\n\n return furthestEmptyAncestor(previousValue, path, concurrentUnsetPaths)\n}\n\nfunction buildUnsetPatches(rootDiff: ObjectDiff, paths: Path[]): PatchOperations[] {\n const patches: Path[] = []\n\n for (let i = 0; i < paths.length; i++) {\n const unsetByEarlierPatch = patches.some((patch) => isSubpathOf(paths[i], patch))\n\n if (unsetByEarlierPatch) {\n continue\n }\n\n patches.push(buildUnsetPatch(rootDiff, paths[i], paths))\n }\n\n return [{unset: [...new Set(patches.map(pathToString))]}]\n}\n\n/**\n * Find the path to the furthest empty ancestor that's also a stub.\n *\n * Used for removing all stubs when unsetting a nested value.\n */\nfunction furthestEmptyAncestor(\n /**\n * The state of the tree before the change was made.\n */\n previousValue: Record<string, unknown>,\n /**\n * Path of the value to unset. Used for recursing.\n */\n currentPath: Path,\n /**\n * An optional list of path to forcefully mark as a stub regardless of what it actually is.\n */\n ignorePaths: Path[] = [],\n /**\n * Same as the first value of currentPath.\n */\n initialPath?: Path,\n): Path {\n if (currentPath.length <= 0) {\n /*\n * This means we are at root and no ancestors are stubs. We\n * can therefore safely unset only the actual value.\n */\n if (!initialPath) {\n /*\n * Will happen if the function is started with `currentPath = []`.\n */\n throw new Error('Root has no ancestor')\n }\n\n return initialPath\n }\n\n const ancestorPath = currentPath.slice(0, -1)\n const ancestorValue = getValueAtPath(previousValue, ancestorPath)\n\n /*\n * If the ancestor also is a stub we can add it to the ignore-list\n * so it'll be \"remembered\" as a stub without us having to scan\n * the whole tree again.\n */\n const updatedIgnorePaths = [\n ancestorPath,\n\n /*\n * We can filter out all the subpaths from under this ancestor\n * because since we ignore it higher up in the tree it doesn't\n * matter anymore what the values of subpaths are.\n */\n ...ignorePaths.filter((path) => !isSubpathOf(path, ancestorPath)),\n ]\n\n return isStub(ancestorValue, ancestorPath, ignorePaths)\n ? furthestEmptyAncestor(previousValue, ancestorPath, updatedIgnorePaths, initialPath)\n : currentPath\n}\n\nfunction buildMovePatches(\n itemDiff: ItemDiff,\n parentDiff: ArrayDiff,\n path: Path,\n): PatchOperations[] {\n const basePath = path.slice(0, -1)\n const {parentValue, fromIndex, fromValue} = getFromItem(parentDiff, itemDiff)\n\n let insertLocation\n if (fromIndex === 0) {\n // If it was moved from the beginning, we can use a simple prepend\n insertLocation = {before: pathToString([...basePath, 0])}\n } else {\n // Try to use item key segments where possible, falling back to array indexes\n const prevIndex = fromIndex - 1\n const prevItemKey = getItemKeySegment(parentValue[prevIndex])\n const prevSegment = prevItemKey || prevIndex\n insertLocation = {after: pathToString([...basePath, prevSegment])}\n }\n\n return [\n {\n unset: [pathToString(path)],\n },\n {\n insert: {...insertLocation, items: [fromValue]} as any,\n },\n ]\n}\n\nfunction buildUndoPatches(\n diff: Diff,\n rootDiff: ObjectDiff,\n path: Path,\n stubbedPaths: Set<string>,\n): PatchOperations[] {\n const patches = diffItem(diff.toValue, diff.fromValue, diffOptions, path)\n\n const inserts = patches\n .filter((patch): patch is InsertAfterPatch => patch.op === 'insert')\n .map(({after, items}) => ({insert: {after: pathToString(after), items}}) as any)\n\n const unsets = patches\n .filter((patch): patch is UnsetPatch => patch.op === 'unset')\n .reduce((acc, patch) => acc.concat(pathToString(patch.path)), [] as string[])\n\n const stubs: PatchOperations[] = []\n\n let hasSets = false\n const sets = patches\n .filter((patch): patch is SetPatch => patch.op === 'set')\n .reduce(\n (acc, patch) => {\n hasSets = true\n stubs.push(...getParentStubs(patch.path, rootDiff, stubbedPaths))\n acc[pathToString(patch.path)] = patch.value\n return acc\n },\n {} as Record<string, unknown>,\n )\n\n return [\n ...stubs,\n ...inserts,\n ...(unsets.length > 0 ? [{unset: unsets}] : []),\n ...(hasSets ? [{set: sets}] : []),\n ]\n}\n\nfunction getParentStubs(path: Path, rootDiff: ObjectDiff, stubbed: Set<string>): PatchOperations[] {\n const value = rootDiff.fromValue as Record<string, unknown>\n const nextValue = rootDiff.toValue as Record<string, unknown>\n const stubs: PatchOperations[] = []\n\n for (let i = 1; i <= path.length; i++) {\n const subPath = path.slice(0, i)\n const pathStr = pathToString(subPath)\n if (stubbed.has(pathStr)) {\n continue\n }\n\n const nextSegment = path[i]\n const nextIsArrayElement = isKeySegment(nextSegment) || isIndexSegment(nextSegment)\n const itemValue = getValueAtPath(value, subPath)\n const stub = getStubValue(itemValue)\n\n // If the next array element does not exist, we need to inject an insert stub here\n if (\n nextIsArrayElement &&\n Array.isArray(itemValue) &&\n !getValueAtPath(nextValue, path.slice(0, i + 1))\n ) {\n const indexAtPrev = findIndex(itemValue, nextSegment)\n const nextItem = getValueAtPath(value, subPath.concat(nextSegment))\n\n // Skip if already stubbed (prevents duplicate keys when reverting group changes)\n const itemPath = pathToString(subPath.concat(nextSegment))\n if (stubbed.has(itemPath)) {\n i++\n continue\n }\n stubbed.add(itemPath)\n\n const prevItem = itemValue[indexAtPrev - 1]\n const prevSeg = isKeyedObject(prevItem) ? {_key: prevItem._key} : indexAtPrev - 1\n const after = pathToString(subPath.concat(indexAtPrev < 1 ? 0 : prevSeg))\n stubs.push({setIfMissing: {[pathStr]: []}})\n stubs.push({insert: {after, items: [getStubValue(nextItem)]} as any})\n\n i++\n continue\n }\n\n if (typeof stub === 'undefined') {\n continue\n }\n\n stubbed.add(pathStr)\n stubs.push({setIfMissing: {[pathStr]: stub as Record<string, unknown>}})\n }\n return stubs\n}\n\n/**\n * Check if all items in an object or an array are stubs.\n */\nfunction onlyContainsStubs(\n /**\n * The item to check whether is a stub.\n */\n item: unknown,\n /**\n * The path to the item we're checking.\n */\n path: Path,\n /**\n * An optional list of path to forcefully mark as a stub regardless of what it actually is.\n */\n ignorePaths?: Path[],\n): boolean {\n /*\n * If we're trying to check for stubs inside something which isn't an object\n * or an array we're checking a string for example and it they cannot\n * contain stubs.\n */\n if (!isRecord(item) || !Array.isArray(item)) {\n return false\n }\n\n // oxlint-disable-next-line no-for-in-array - a bit risky to refactor this to no longer use for-in, do it later\n for (const child in item) {\n if (!Object.prototype.hasOwnProperty.call(item, child)) {\n continue\n }\n\n /*\n * _type or _key field alone doesn't affect whether the field is a stub or\n * not.\n */\n if (child === '_type' || child === '_key') {\n continue\n }\n\n const nextPath = [...path, pathSegmentOfCorrectType(item as Record<string, unknown>, child)]\n\n if (!isStub(item[child], nextPath, ignorePaths)) {\n return false\n }\n }\n\n return true\n}\n\nfunction isStub(item: unknown, path: Path, ignorePaths?: Path[]): boolean {\n const isIgnoredPath = ignorePaths?.some(\n (ignorePath) => pathToString(ignorePath) === pathToString(path),\n )\n\n const isEmptyArray = Array.isArray(item) && item.length <= 0\n\n return (\n isIgnoredPath ||\n item === undefined ||\n item === null ||\n isEmptyArray ||\n isEmptyObject(item) ||\n onlyContainsStubs(item, path, ignorePaths)\n )\n}\n\nfunction getStubValue(item: unknown): unknown {\n if (Array.isArray(item)) {\n return []\n }\n\n if (typeof item !== 'object' || item === null) {\n return undefined\n }\n\n const props: Record<string, unknown> = {}\n\n if (isKeyedObject(item)) {\n props._key = item._key\n }\n\n if (isTypedObject(item)) {\n props._type = item._type\n }\n\n return props\n}\n\nfunction getFromItem(parentDiff: ArrayDiff, itemDiff: ItemDiff) {\n if (parentDiff.fromValue && typeof itemDiff.fromIndex === 'number') {\n const fromValue = parentDiff.fromValue[itemDiff.fromIndex]\n return {\n parentValue: parentDiff.fromValue,\n fromIndex: itemDiff.fromIndex,\n fromValue,\n }\n }\n\n // Shouldn't ever happen\n throw new Error(`Failed to find item at index ${itemDiff.fromIndex}`)\n}\n","import {styled} from 'styled-components'\n\nexport const ChangeListWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n`\n","import {Box, rem, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type Annotation, type FieldChangeNode, type FromToIndex} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {DiffCard} from './DiffCard'\n\nconst RoundedCard = styled.div`\n border-radius: ${({theme}) => rem(theme.sanity.radius[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n padding: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n`\n\nconst AnnotationText = styled(Text)`\n &:not([hidden]) {\n color: inherit;\n }\n`\n\n/** @internal */\nexport function ChangeTitleSegment(props: {\n change?: FieldChangeNode\n segment: string | FromToIndex\n}) {\n const {change, segment} = props\n\n if (typeof segment === 'string') {\n return (\n <Box>\n <Text title={segment} size={1} weight=\"medium\" textOverflow=\"ellipsis\">\n {segment}\n </Text>\n </Box>\n )\n }\n\n const {hasMoved, fromIndex, toIndex, annotation} = segment\n const created = typeof fromIndex === 'undefined'\n const deleted = typeof toIndex === 'undefined'\n if (created) {\n // Item was created\n return <CreatedTitleSegment annotation={annotation} change={change} toIndex={toIndex} />\n }\n\n if (deleted) {\n // Item was deleted\n return <DeletedTitleSegment annotation={annotation} fromIndex={fromIndex} />\n }\n\n if (hasMoved && typeof toIndex !== 'undefined' && typeof fromIndex !== 'undefined') {\n // Item was moved\n return <MovedTitleSegment annotation={annotation} fromIndex={fromIndex} toIndex={toIndex} />\n }\n\n // Changed/unchanged\n const readableIndex = (toIndex || 0) + 1\n return (\n <Box padding={1}>\n <Text size={1} weight=\"medium\">\n #{readableIndex}\n </Text>\n </Box>\n )\n}\n\nfunction CreatedTitleSegment(props: {\n annotation: Annotation | undefined\n change?: FieldChangeNode\n toIndex?: number\n}) {\n const {annotation: annotationProp, change, toIndex = 0} = props\n const {t} = useTranslation()\n const readableIndex = toIndex + 1\n const description = t('changes.array.item-added-in-position', {position: readableIndex})\n const content = <>#{readableIndex}</>\n const diffAnnotation = change?.diff ? getAnnotationAtPath(change.diff, []) : undefined\n const annotation = diffAnnotation || annotationProp\n\n if (annotation) {\n return (\n <DiffCard annotation={annotation} tooltip={{description}} as={RoundedCard}>\n <AnnotationText size={1} weight=\"medium\" forwardedAs=\"ins\" style={{textDecoration: 'none'}}>\n {content}\n </AnnotationText>\n </DiffCard>\n )\n }\n\n return (\n <Text size={1} weight=\"medium\">\n {content}\n </Text>\n )\n}\n\nfunction DeletedTitleSegment(props: {annotation: Annotation | undefined; fromIndex?: number}) {\n const {annotation, fromIndex = 0} = props\n const {t} = useTranslation()\n const readableIndex = fromIndex + 1\n const description = t('changes.array.item-removed-from-position', {position: readableIndex})\n return (\n <DiffCard annotation={annotation || null} as={RoundedCard} tooltip={{description}}>\n <AnnotationText size={1} weight=\"medium\" forwardedAs=\"del\">\n #{readableIndex}\n </AnnotationText>\n </DiffCard>\n )\n}\n\nfunction MovedTitleSegment(props: {\n annotation: Annotation | undefined\n fromIndex: number\n toIndex: number\n}) {\n const {annotation, fromIndex, toIndex} = props\n const {t} = useTranslation()\n const indexDiff = toIndex - fromIndex\n const indexSymbol = indexDiff < 0 ? '↑' : '↓'\n const positions = Math.abs(indexDiff)\n const direction = indexDiff < 0 ? 'up' : 'down'\n const description = t('changes.array.item-moved', {\n count: positions,\n context: direction,\n })\n\n return (\n <>\n <Box padding={1}>\n <AnnotationText size={1} weight=\"medium\">\n #{toIndex + 1}\n </AnnotationText>\n </Box>\n <DiffCard annotation={annotation} as={RoundedCard} tooltip={{description}}>\n <AnnotationText size={1} weight=\"medium\">\n {indexSymbol}\n {Math.abs(indexDiff)}\n </AnnotationText>\n </DiffCard>\n </>\n )\n}\n","import {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {Text} from '@sanity/ui'\nimport {Breadcrumbs} from '@sanity/ui/breadcrumbs'\n\nimport {type ChangeTitlePath, type FieldChangeNode} from '../../types'\nimport {ChangeTitleSegment} from './ChangeTitleSegment'\n\n/** @internal */\nexport function ChangeBreadcrumb(props: {change?: FieldChangeNode; titlePath: ChangeTitlePath}) {\n const {change, titlePath} = props\n\n return (\n <Breadcrumbs\n maxLength={4}\n separator={\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n }\n >\n {titlePath.map((titleSegment, idx) => {\n const showSegment = typeof titleSegment === 'string' || !change || change.showIndex\n\n if (!showSegment) {\n return null\n }\n\n // oxlint-disable-next-line no-array-index-key\n return <ChangeTitleSegment key={idx} change={change} segment={titleSegment} />\n })}\n </Breadcrumbs>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {Component, type ReactNode} from 'react'\n\nimport {isDev} from '../../../environment'\nimport {type TFunction} from '../../../i18n/types'\n\n/** @internal */\nexport interface DiffErrorBoundaryProps {\n children: ReactNode\n t: TFunction\n}\n\n/** @internal */\nexport interface DiffErrorBoundaryState {\n error?: Error\n}\n\n/** @internal */\nexport class DiffErrorBoundary extends Component<DiffErrorBoundaryProps, DiffErrorBoundaryState> {\n static getDerivedStateFromError(error: Error) {\n return {error}\n }\n\n state: DiffErrorBoundaryState = {}\n\n componentDidCatch(error: Error) {\n console.error('Error rendering diff component: ')\n console.error(error)\n }\n\n render() {\n const {t} = this.props\n const {error} = this.state\n\n if (!error) {\n return this.props.children\n }\n\n return (\n <Card padding={3} radius={2} tone=\"critical\">\n <Flex>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n\n <Box paddingLeft={3}>\n <Text as=\"h3\" size={1} weight=\"medium\">\n {t('changes.error-boundary.title')}\n </Text>\n\n {isDev && (\n <Box marginTop={2}>\n <Text as=\"p\" size={1}>\n {t('changes.error-boundary.developer-info')}\n </Text>\n </Box>\n )}\n </Box>\n </Flex>\n </Card>\n )\n }\n}\n","import {Box, type BoxProps, Card, Stack, Text} from '@sanity/ui'\nimport {Code} from '@sanity/ui/code'\nimport {type ReactNode, useCallback, useEffect, useRef, useState} from 'react'\nimport {type ExecutionProps, styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {pathToString} from '../../paths/helpers'\nimport {type FieldChangeNode} from '../../types'\nimport {FromToArrow} from './FromToArrow'\n\n/** @internal */\nexport interface DiffInspectWrapperProps {\n children: ReactNode\n change: FieldChangeNode\n as?: ExecutionProps['as']\n}\n\nconst CodeWrapper = styled.pre`\n overflow-x: auto;\n position: relative;\n`\n\nconst Meta = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n`\n\n/** @internal */\nexport function DiffInspectWrapper(\n props: DiffInspectWrapperProps & Omit<BoxProps, 'as'>,\n): React.JSX.Element {\n const {children, as, change, ...restProps} = props\n const isHovering = useRef(false)\n const [isInspecting, setIsInspecting] = useState(false)\n\n const toggleInspect = useCallback(() => setIsInspecting((state) => !state), [setIsInspecting])\n const handleMouseEnter = useCallback(() => (isHovering.current = true), [])\n const handleMouseLeave = useCallback(() => (isHovering.current = false), [isHovering])\n\n useEffect(() => {\n function onKeyDown(evt: KeyboardEvent) {\n const {metaKey, key} = evt\n if (metaKey && key === 'i' && isHovering.current) {\n toggleInspect()\n }\n }\n\n window.addEventListener('keydown', onKeyDown, false)\n return () => window.removeEventListener('keydown', onKeyDown, false)\n }, [toggleInspect])\n\n return (\n <Box as={as} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} {...restProps}>\n {isInspecting ? <DiffInspector change={change} /> : children}\n </Box>\n )\n}\n\nconst MetaLabel = ({title}: {title: string}) => (\n <Box padding={3} display=\"inline-block\" as={Meta}>\n <Text muted size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n)\n\nfunction DiffInspector({change}: {change: FieldChangeNode}): React.JSX.Element | null {\n const {t} = useTranslation()\n return (\n <Stack gap={3}>\n <Card padding={3} tone=\"transparent\" as={CodeWrapper} radius={1}>\n <MetaLabel title={t('changes.inspector.meta-label')} />\n <Code language=\"json\" size={1}>\n {printMeta({\n path: pathToString(change.path),\n fromIndex: change.itemDiff?.fromIndex,\n toIndex: change.itemDiff?.toIndex,\n hasMoved: change.itemDiff?.hasMoved,\n action: change.diff.action,\n isChanged: change.diff.isChanged,\n })}\n </Code>\n </Card>\n <Card as={CodeWrapper} tone=\"critical\" padding={3} radius={1}>\n <MetaLabel title={t('changes.inspector.from-label')} />\n <Code language=\"json\" size={1}>\n {jsonify(change.diff.fromValue)}\n </Code>\n </Card>\n <Card>\n <FromToArrow direction=\"down\" align=\"center\" />\n </Card>\n <Card as={CodeWrapper} tone=\"positive\" padding={3} radius={1}>\n <MetaLabel title={t('changes.inspector.to-label')} />\n <Code language=\"json\" size={1}>\n {jsonify(change.diff.toValue)}\n </Code>\n </Card>\n </Stack>\n )\n}\n\nfunction jsonify(value: unknown) {\n if (typeof value === 'undefined') {\n return 'undefined'\n }\n\n return JSON.stringify(value, null, 2)\n}\n\nfunction printMeta(keys: Record<string, unknown>) {\n const lines: string[] = []\n\n Object.entries(keys).forEach(([key, value]) => {\n if (typeof value !== 'undefined' && value !== null) {\n lines.push(`${key}: ${value}`)\n }\n })\n\n return lines.join('\\n')\n}\n","import {Box} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {Preview} from '../../../preview/components/Preview'\nimport {type FieldPreviewComponent} from '../../preview/types'\nimport {type Diff, type DiffComponent} from '../../types'\nimport {DiffFromTo} from './DiffFromTo'\n\nconst FallbackPreview: FieldPreviewComponent<ReactNode> = ({value, schemaType}) => {\n return (\n <Box padding={2}>\n <Preview schemaType={schemaType} value={value as any} layout=\"default\" />\n </Box>\n )\n}\n\n/** @internal */\nexport const FallbackDiff: DiffComponent<Diff<unknown, Record<string, unknown>>> = (props) => {\n const {diff, schemaType} = props\n\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={FallbackPreview}\n layout=\"grid\"\n />\n )\n}\n","import {rem} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const FieldChangeContainer = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n &[data-revert-all-changes-hover] [data-revert-all-hover]::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n\nexport const DiffBorder = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-xsmall: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-small: ${({theme}) => rem(theme.sanity.space[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n position: relative;\n padding: var(--diff-inspect-padding-xsmall) 0 var(--diff-inspect-padding-xsmall)\n var(--diff-inspect-padding-small);\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n border-left: 1px solid var(--card-border-color);\n }\n\n &[data-error]:hover::before,\n &[data-revert-field-hover]:hover::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n","import {RevertIcon} from '@sanity/icons/Revert'\nimport {type HTMLProps, type RefAttributes} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button, type ButtonProps} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\nconst Root = styled(Button)`\n [data-ui='Text'] {\n font-weight: normal;\n }\n\n div[data-ui='Box'] {\n display: none;\n }\n\n &:not([data-disabled='true']):hover,\n &:not([data-disabled='true']):focus {\n --card-fg-color: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --card-bg-color: transparent;\n --card-border-color: transparent;\n\n div[data-ui='Box'] {\n display: block;\n }\n }\n`\n\n/** @internal */\nexport function RevertChangesButton(\n props: Omit<ButtonProps, 'tooltipProps'> &\n Omit<HTMLProps<HTMLButtonElement>, 'ref'> & {\n changeCount: number\n } & RefAttributes<HTMLButtonElement>,\n) {\n const {ref, selected, changeCount, ...restProps} = props\n const {t} = useTranslation()\n\n return (\n <Root\n icon={RevertIcon}\n selected={selected}\n text={t('changes.action.revert-changes-confirm-change', {count: changeCount})}\n mode=\"bleed\"\n ref={ref}\n tooltipProps={null}\n {...restProps}\n />\n )\n}\n","import {ConfirmPopover} from '../../../../ui-components/confirmPopover/ConfirmPopover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\ninterface RevertChangesConfirmDialogProps {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n changeCount: number\n referenceElement: HTMLElement | null\n}\n\n/**\n * @internal\n */\nexport function RevertChangesConfirmDialog({\n open,\n onConfirm,\n onCancel,\n changeCount,\n referenceElement,\n}: RevertChangesConfirmDialogProps) {\n const {t} = useTranslation()\n\n return (\n <ConfirmPopover\n cancelButtonText={t('changes.action.revert-all-cancel')}\n confirmButtonText={\n changeCount > 1\n ? t('changes.action.revert-all-confirm')\n : t('changes.action.revert-changes-confirm-change', {count: 1})\n }\n message={\n changeCount > 1\n ? t('changes.action.revert-all-description', {count: changeCount})\n : t('changes.action.revert-changes-description', {count: changeCount})\n }\n onCancel={onCancel}\n onConfirm={onConfirm}\n open={open}\n referenceElement={referenceElement}\n tone=\"critical\"\n placement=\"bottom\"\n fallbackPlacements={['bottom-start', 'bottom-end', 'top', 'top-start', 'top-end']}\n />\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type FieldValueError} from '../../validation'\n\n/** @internal */\nexport function ValueError({error}: {error: FieldValueError}) {\n const {t} = useTranslation()\n return (\n <Card tone=\"critical\" padding={3}>\n <Flex align=\"flex-start\">\n <Box>\n <Text>\n <ErrorOutlineIcon />\n </Text>\n </Box>\n <Box flex={1} paddingLeft={3}>\n <Text size={1} as=\"p\">\n {t(error.messageKey, {\n expectedType: error.expectedType,\n actualType: error.actualType,\n })}\n </Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {type ObjectSchemaType, type Path} from '@sanity/types'\nimport {Stack} from '@sanity/ui'\nimport {Fragment, type HTMLAttributes, startTransition, useCallback, useMemo, useState} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {type FieldChangeNode} from '../../types'\nimport {undoChange} from '../changes/undoChange'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeBreadcrumb} from './ChangeBreadcrumb'\nimport {DiffErrorBoundary} from './DiffErrorBoundary'\nimport {DiffInspectWrapper} from './DiffInspectWrapper'\nimport {FallbackDiff} from './FallbackDiff'\nimport {DiffBorder, FieldChangeContainer} from './FieldChange.styled'\nimport {RevertChangesButton} from './RevertChangesButton'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\nimport {ValueError} from './ValueError'\n\nconst ParentWrapper = ({\n children,\n path,\n hasRevertHover,\n wrap,\n}: {\n children: React.ReactNode\n path: Path\n hasRevertHover: boolean\n wrap: boolean\n}) => {\n const {FieldWrapper = Fragment} = useDocumentChange()\n\n if (wrap) {\n let lastArrayIndex = 0\n for (let i = 0; i < path.length; i++) {\n if (typeof path[i] !== 'string') {\n lastArrayIndex = i\n }\n }\n\n return (\n <FieldWrapper path={path.slice(0, lastArrayIndex + 1)} hasRevertHover={hasRevertHover}>\n {children}\n </FieldWrapper>\n )\n }\n return children\n}\n\n/** @internal */\nexport function FieldChange(\n props: {\n change: FieldChangeNode\n readOnly?: boolean\n hidden?: boolean\n addParentWrapper?: boolean\n } & HTMLAttributes<HTMLDivElement>,\n) {\n const {change, hidden, readOnly, addParentWrapper, ...restProps} = props\n const DiffComponent = change.diffComponent || FallbackDiff\n const {\n documentId,\n schemaType,\n rootDiff,\n isComparingCurrent,\n FieldWrapper = Fragment,\n } = useDocumentChange()\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const ops = useDocumentOperation(documentId, schemaType.name, getPairTarget(targetDocumentState))\n const [confirmRevertOpen, setConfirmRevertOpen] = useState(false)\n const [revertHovered, setRevertHovered] = useState(false)\n const [buttonElement, _setButtonElement] = useState<HTMLButtonElement | null>(null)\n const setButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setButtonElement(element))\n }\n const {t} = useTranslation()\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const handleRevertChanges = useCallback(() => {\n undoChange(change, rootDiff, ops)\n setConfirmRevertOpen(false)\n }, [change, rootDiff, ops])\n\n const handleRevertChangesConfirm = useCallback(() => {\n setConfirmRevertOpen(true)\n }, [])\n\n const closeRevertChangesConfirmDialog = useCallback(() => {\n setConfirmRevertOpen(false)\n }, [])\n\n const handleRevertButtonMouseEnter = useCallback(() => {\n setRevertHovered(true)\n }, [])\n\n const handleRevertButtonMouseLeave = useCallback(() => {\n setRevertHovered(false)\n }, [])\n\n const isArray =\n change.parentSchema?.jsonType === 'array' &&\n // And it's not a PortableText array\n !change.parentSchema.of.some((ofType) => ofType.type?.name === 'block')\n\n /* this condition is required in order to avoid situations where an array change has happened\n * but not necessarily an array item change. E.g. when adding one new item to an array, the changes pane\n * would be able to identify that a new item was added but not what array it belonged to (because the change path\n * is only related to the item itself, not the array)\n */\n const fieldPath = isArray ? change.path.slice(0, -1) : change.path\n\n const value = useMemo(() => ({path: change.path}), [change.path])\n\n if (hidden) {\n return null\n }\n\n return (\n <>\n <Stack gap={1} as={FieldChangeContainer} {...restProps}>\n {change.showHeader && <ChangeBreadcrumb change={change} titlePath={change.titlePath} />}\n <ParentWrapper\n path={fieldPath}\n hasRevertHover={revertHovered}\n wrap={Boolean(addParentWrapper)}\n >\n <FieldWrapper path={fieldPath} hasRevertHover={revertHovered}>\n <DiffInspectWrapper\n change={change}\n as={DiffBorder}\n data-revert-field-hover={revertHovered ? '' : undefined}\n data-error={change.error ? '' : undefined}\n data-revert-all-hover\n data-ui=\"field-diff-inspect-wrapper\"\n >\n {change.error ? (\n <ValueError error={change.error} />\n ) : (\n <DiffErrorBoundary t={t}>\n <DiffContext.Provider value={value}>\n <DiffComponent\n diff={change.diff}\n schemaType={change.schemaType as ObjectSchemaType}\n />\n </DiffContext.Provider>\n </DiffErrorBoundary>\n )}\n\n {isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <RevertChangesButton\n changeCount={1}\n onClick={handleRevertChangesConfirm}\n onMouseEnter={handleRevertButtonMouseEnter}\n onMouseLeave={handleRevertButtonMouseLeave}\n selected={confirmRevertOpen}\n disabled={readOnly || !isTargetReady}\n ref={setButtonElement}\n data-testid={`single-change-revert-button-${change?.key}`}\n />\n )}\n </DiffInspectWrapper>\n </FieldWrapper>\n </ParentWrapper>\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertOpen}\n onConfirm={handleRevertChanges}\n onCancel={closeRevertChangesConfirmDialog}\n changeCount={1}\n referenceElement={buttonElement}\n />\n </>\n )\n}\n","import {rem} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const ChangeListWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n`\n\nexport const GroupChangeContainer = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-xsmall: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-small: ${({theme}) => rem(theme.sanity.space[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n position: relative;\n padding: var(--diff-inspect-padding-xsmall) var(--diff-inspect-padding-small);\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n border-left: 1px solid var(--card-border-color);\n }\n\n &[data-error]:hover::before,\n &[data-revert-group-hover]:hover::before,\n &[data-revert-all-groups-hover]::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n","import {type ConditionalProperty, type SanityDocument} from '@sanity/types'\nimport {Box, Stack, Text} from '@sanity/ui'\nimport {\n Fragment,\n type HTMLAttributes,\n startTransition,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useConditionalProperty} from '../../conditional-property/useConditionalProperty'\nimport {pathsAreEqual} from '../../paths/helpers'\nimport {type ChangeNode, type GroupChangeNode} from '../../types'\nimport {isPTSchemaType} from '../../types/portableText/diff/helpers'\nimport {undoChange} from '../changes/undoChange'\nimport {isFieldChange} from '../helpers'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeBreadcrumb} from './ChangeBreadcrumb'\nimport {FieldChange} from './FieldChange'\nimport {ChangeListWrapper, GroupChangeContainer} from './GroupChange.styled'\nimport {RevertChangesButton} from './RevertChangesButton'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\n\n// `ChangeResolver` and `GroupChange` are mutually recursive (groups render their nested changes\n// through the resolver), so they live in the same module to avoid circular imports.\n\n/** @internal */\nexport interface ChangeResolverProps {\n change: ChangeNode\n readOnly?: ConditionalProperty\n hidden?: ConditionalProperty\n addParentWrapper?: boolean\n}\n\n/** @internal */\nexport function ChangeResolver(props: ChangeResolverProps) {\n const {change, hidden, readOnly} = props\n const {value = Fragment} = useDocumentChange()\n\n const isHidden = useConditionalProperty({\n // @todo: is parent missing here?\n document: value as SanityDocument,\n checkProperty: hidden || change.schemaType?.hidden,\n checkPropertyKey: 'hidden',\n value: change.type === 'field' ? change.diff.toValue : undefined,\n path: change.path,\n })\n\n const isReadOnly = useConditionalProperty({\n // @todo: is parent missing here?\n document: value as SanityDocument,\n checkProperty: readOnly || change.schemaType?.readOnly,\n checkPropertyKey: 'readOnly',\n value: change.type === 'field' ? change.diff.toValue : undefined,\n path: change.path,\n })\n\n if (isHidden) return null\n\n if (change.type === 'field') {\n return (\n <FieldChange\n change={change}\n readOnly={isReadOnly}\n addParentWrapper={props.addParentWrapper}\n />\n )\n }\n\n if (change.type === 'group') {\n return (\n <GroupChange\n change={change}\n data-testid={`group-change-${change.fieldsetName}`}\n readOnly={isReadOnly}\n />\n )\n }\n\n return (\n <Text>\n Unknown change type: <code>{(change as any).type || 'undefined'}</code>\n </Text>\n )\n}\n\n/** @internal */\nexport function GroupChange(\n props: {\n change: GroupChangeNode\n readOnly?: boolean\n hidden?: boolean\n } & HTMLAttributes<HTMLDivElement>,\n): React.JSX.Element | null {\n const {change: group, readOnly, hidden, ...restProps} = props\n const {titlePath, changes, path: groupPath} = group\n const {path: diffPath} = useContext(DiffContext)\n const {\n documentId,\n schemaType,\n FieldWrapper = Fragment,\n rootDiff,\n isComparingCurrent,\n } = useDocumentChange()\n\n const isPortableText = changes.every(\n (change) => isFieldChange(change) && isPTSchemaType(change.schemaType),\n )\n\n const isNestedInDiff = pathsAreEqual(diffPath, groupPath)\n const [revertButtonElement, _setRevertButtonElement] = useState<HTMLButtonElement | null>(null)\n const setRevertButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setRevertButtonElement(element))\n }\n const isRevertButtonHovered = useHover<HTMLButtonElement>(revertButtonElement)\n\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const docOperations = useDocumentOperation(\n documentId,\n schemaType.name,\n getPairTarget(targetDocumentState),\n )\n const [confirmRevertOpen, setConfirmRevertOpen] = useState(false)\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const handleRevertChanges = useCallback(() => {\n undoChange(group, rootDiff, docOperations)\n setConfirmRevertOpen(false)\n }, [group, rootDiff, docOperations])\n\n const handleRevertChangesConfirm = useCallback(() => {\n setConfirmRevertOpen(true)\n }, [])\n\n const closeRevertChangesConfirmDialog = useCallback(() => {\n setConfirmRevertOpen(false)\n }, [])\n\n const content = useMemo(\n () =>\n hidden ? null : (\n <>\n <Stack\n gap={1}\n as={GroupChangeContainer}\n data-ui=\"group-change-content\"\n data-revert-group-hover={isRevertButtonHovered ? '' : undefined}\n data-portable-text={isPortableText ? '' : undefined}\n >\n <Stack as={ChangeListWrapper} gap={5} data-ui=\"group-change-list\">\n {changes.map((change) => (\n <ChangeResolver\n key={change.key}\n change={change}\n readOnly={readOnly}\n hidden={hidden}\n // If the path of the nested change is more than two levels deep, we want to add a wrapper\n // with the parent path, for the change indicator to be shown.\n addParentWrapper={change.path.length - group.path.length > 1}\n />\n ))}\n </Stack>\n {isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <Box>\n <RevertChangesButton\n changeCount={changes.length}\n onClick={handleRevertChangesConfirm}\n // oxlint-disable-next-line react/react-compiler\n ref={setRevertButtonElement}\n selected={confirmRevertOpen}\n disabled={readOnly || !isTargetReady}\n data-testid={`group-change-revert-button-${group.key}`}\n />\n </Box>\n )}\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertOpen}\n onConfirm={handleRevertChanges}\n onCancel={closeRevertChangesConfirmDialog}\n changeCount={changes.length}\n referenceElement={revertButtonElement}\n />\n </>\n ),\n [\n changes,\n confirmRevertOpen,\n group.path.length,\n handleRevertChangesConfirm,\n hidden,\n isComparingCurrent,\n isPermissionsLoading,\n isPortableText,\n isRevertButtonHovered,\n isTargetReady,\n permissions?.granted,\n readOnly,\n handleRevertChanges,\n closeRevertChangesConfirmDialog,\n revertButtonElement,\n group.key,\n ],\n )\n\n const isPortableTextGroupArray =\n group.schemaType?.jsonType === 'array' &&\n group.schemaType.of.some((ofType) => ofType.name === 'block')\n\n return hidden ? null : (\n <Stack gap={1} {...restProps}>\n <ChangeBreadcrumb titlePath={titlePath} />\n {isNestedInDiff || isPortableTextGroupArray ? (\n content\n ) : (\n <FieldWrapper hasRevertHover={isRevertButtonHovered} path={groupPath}>\n {content}\n </FieldWrapper>\n )}\n </Stack>\n )\n}\n\nfunction useHover<T extends HTMLElement>(node: T | null): boolean {\n const [value, setValue] = useState(false)\n\n useEffect(() => {\n if (!node) {\n return undefined\n }\n\n const handleMouseOver = () => startTransition(() => setValue(true))\n const handleMouseOut = () => startTransition(() => setValue(false))\n\n node.addEventListener('mouseover', handleMouseOver)\n node.addEventListener('mouseout', handleMouseOut)\n\n return () => {\n node.removeEventListener('mouseover', handleMouseOver)\n node.removeEventListener('mouseout', handleMouseOut)\n }\n }, [node])\n\n return value\n}\n","import {Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\n/** @internal */\nexport function NoChanges() {\n const {t} = useTranslation()\n return (\n <Stack gap={3} paddingTop={2}>\n <Text size={1} weight=\"medium\" as=\"h3\">\n {t('changes.no-changes-title')}\n </Text>\n <Text as=\"p\" size={1} muted>\n {t('changes.no-changes-description')}\n </Text>\n </Stack>\n )\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {RevertIcon} from '@sanity/icons/Revert'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Card, Stack} from '@sanity/ui'\nimport {startTransition, useCallback, useContext, useMemo, useState} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useConditionalProperty} from '../../conditional-property/useConditionalProperty'\nimport {type ChangeNode, type ObjectDiff} from '../../types'\nimport {buildObjectChangeList} from '../changes/buildChangeList'\nimport {undoChange} from '../changes/undoChange'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeListWrapper} from './ChangeList.styled'\nimport {ChangeResolver} from './ChangeResolver'\nimport {NoChanges} from './NoChanges'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\n\n/** @internal */\nexport interface ChangeListProps {\n schemaType: ObjectSchemaType\n diff: ObjectDiff\n fields?: string[]\n}\n\n/** @internal */\nexport function ChangeList({diff, fields, schemaType}: ChangeListProps): React.JSX.Element | null {\n const {documentId, isComparingCurrent, value} = useDocumentChange()\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const docOperations = useDocumentOperation(\n documentId,\n schemaType.name,\n getPairTarget(targetDocumentState),\n )\n const {path} = useContext(DiffContext)\n const isRoot = path.length === 0\n const [confirmRevertAllOpen, setConfirmRevertAllOpen] = useState(false)\n const [confirmRevertAllHover, setConfirmRevertAllHover] = useState(false)\n const [buttonElement, _setButtonElement] = useState<HTMLButtonElement | null>(null)\n const setButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setButtonElement(element))\n }\n const {t} = useTranslation()\n\n const isReadOnly = useConditionalProperty({\n document: value as SanityDocument,\n value: undefined,\n checkProperty: schemaType.readOnly,\n checkPropertyKey: 'readOnly',\n path,\n })\n\n if (schemaType.jsonType !== 'object') {\n throw new Error(`Only object schema types are allowed in ChangeList`)\n }\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const allChanges = useMemo(\n () => buildObjectChangeList(schemaType, diff, path, [], {fieldFilter: fields}),\n [schemaType, fields, path, diff],\n )\n\n const changes = useMemo(\n () => (fields && fields.length === 0 ? [] : maybeFlatten(allChanges)),\n [allChanges, fields],\n )\n\n const rootChange = allChanges[0]\n\n const revertAllChanges = useCallback(() => {\n undoChange(rootChange, diff, docOperations)\n setConfirmRevertAllOpen(false)\n }, [rootChange, diff, docOperations])\n\n const handleRevertAllChangesClick = useCallback(() => {\n setConfirmRevertAllOpen(true)\n }, [])\n\n const handleRevertAllChangesMouseEnter = useCallback(() => {\n setConfirmRevertAllHover(true)\n }, [])\n\n const handleRevertAllChangesMouseLeave = useCallback(() => {\n setConfirmRevertAllHover(false)\n }, [])\n\n const closeRevertAllChangesConfirmDialog = useCallback(() => {\n setConfirmRevertAllOpen(false)\n }, [])\n\n if (changes.length === 0) {\n return isRoot ? <NoChanges /> : null\n }\n\n const showFooter = isRoot && changes.length > 1\n\n return (\n <Card>\n <Stack gap={5}>\n <Stack as={ChangeListWrapper} gap={5}>\n {changes.map((change) => (\n <div key={change.key}>\n <ChangeResolver\n key={change.key}\n change={change}\n data-revert-all-changes-hover={confirmRevertAllHover ? '' : undefined}\n readOnly={isReadOnly || change?.readOnly}\n hidden={change?.hidden}\n // If the path of the nested change is more than two levels deep, we want to add a wrapper\n // with the parent path, for the change indicator to be shown.\n addParentWrapper={change.path.length > 1}\n />\n </div>\n ))}\n </Stack>\n\n {showFooter && isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <Stack>\n <Button\n tone=\"critical\"\n mode=\"ghost\"\n text={t('changes.action.revert-all-confirm')}\n icon={RevertIcon}\n onClick={handleRevertAllChangesClick}\n onMouseEnter={handleRevertAllChangesMouseEnter}\n onMouseLeave={handleRevertAllChangesMouseLeave}\n disabled={isReadOnly || !isTargetReady}\n size=\"large\"\n ref={setButtonElement}\n />\n </Stack>\n )}\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertAllOpen}\n onConfirm={revertAllChanges}\n onCancel={closeRevertAllChangesConfirmDialog}\n changeCount={changes.length}\n referenceElement={buttonElement}\n />\n </Card>\n )\n}\n\nfunction maybeFlatten(changes: ChangeNode[]) {\n return changes.length === 1 && changes[0].type === 'group' && changes[0].path.length === 0\n ? changes[0].changes\n : changes\n}\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {type ComponentType, type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n/** @internal */\nexport interface MetaInfoProps {\n title: string\n action?: string\n icon?: ComponentType\n children?: ReactNode\n markRemoved?: boolean\n}\n\nconst MetaText = styled(Text)`\n color: inherit;\n`\n\n/** @internal */\nexport function MetaInfo(props: MetaInfoProps) {\n const {title, action, icon: Icon, children, markRemoved} = props\n\n return (\n <Flex padding={2} align=\"center\">\n {Icon && (\n <Box padding={2}>\n <MetaText size={4} forwardedAs={markRemoved ? 'del' : 'div'}>\n <Icon />\n </MetaText>\n </Box>\n )}\n\n <Stack gap={2} paddingLeft={2}>\n <MetaText\n size={1}\n weight=\"medium\"\n forwardedAs={markRemoved ? 'del' : 'h3'}\n textOverflow=\"ellipsis\"\n >\n {title}\n </MetaText>\n\n {action && <div>{action}</div>}\n\n <MetaText size={0} textOverflow=\"ellipsis\">\n {children}\n </MetaText>\n </Stack>\n </Flex>\n )\n}\n","import {useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {EMPTY} from 'rxjs'\n\nimport {useClient} from '../../../hooks/useClient'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../studioClient'\n\nexport function useRefValue<T extends Record<string, any> = Record<string, any>>(\n refId: string | undefined | null,\n): T | undefined {\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const document$ = useMemo(\n () => (refId ? client.observable.getDocument<T>(refId) : EMPTY),\n [client, refId],\n )\n // Kept synchronous: the falsy-ref guard below reads the live `refId`, so a\n // deferred snapshot could return the previously referenced document under a\n // newly selected ref.\n const value = useSyncObservable(document$)\n\n // Always return undefined in the case of a falsey ref to prevent bug\n // when going from an ID to an undefined state\n return refId ? value : undefined\n}\n","import {DocumentIcon} from '@sanity/icons/Document'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useUnitFormatter} from '../../../../hooks/useUnitFormatter'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ChangeList} from '../../../diff/components/ChangeList'\nimport {DiffCard} from '../../../diff/components/DiffCard'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromTo} from '../../../diff/components/FromTo'\nimport {MetaInfo} from '../../../diff/components/MetaInfo'\nimport {useRefValue} from '../../../diff/hooks/useRefValue'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {getHumanFriendlyBytes, getSizeDiff} from './helpers'\nimport {type File, type FileAsset} from './types'\n\nconst SizeDiff = styled.div`\n ${({theme}) => `\n --size-diff-positive: ${theme.sanity.color.solid.positive.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --size-diff-negative: ${theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n `}\n &:not([hidden]) {\n display: inline-block;\n }\n\n [data-number='positive'] {\n color: var(--size-diff-positive);\n }\n\n [data-number='negative'] {\n color: var(--size-diff-negative);\n }\n`\n\nexport const FileFieldDiff: DiffComponent<ObjectDiff<File>> = ({diff, schemaType}) => {\n const {fromValue, toValue, fields} = diff\n const fromAsset = fromValue?.asset\n const toAsset = toValue?.asset\n const {t} = useTranslation()\n const prev = useRefValue<FileAsset>(fromAsset?._ref)\n const next = useRefValue<FileAsset>(toAsset?._ref)\n const formatUnit = useUnitFormatter({unitDisplay: 'short', maximumFractionDigits: 2})\n const ignoredFields = ['_type', 'media']\n const changedFields = Object.entries(fields)\n .filter(([name, field]) => field.isChanged && !ignoredFields.includes(name))\n .map(([name]) => name)\n\n const didAssetChange = changedFields.includes('asset')\n\n const nestedFields = schemaType.fields\n .filter((field) => field.name !== 'asset' && changedFields.includes(field.name))\n .map((field) => field.name)\n\n const pctDiff = getSizeDiff(prev?.size, next?.size)\n const prevSize = prev?.size && getHumanFriendlyBytes(prev.size, formatUnit)\n const nextSize = next?.size && getHumanFriendlyBytes(next.size, formatUnit)\n\n const cardStyles = useMemo(() => ({display: 'block', flex: 1}), [])\n\n const from = prev && (\n <DiffCard as=\"del\" diff={diff} path=\"asset._ref\" style={cardStyles}>\n <MetaInfo\n title={prev.originalFilename || t('changes.file.meta-info-fallback-title')}\n icon={DocumentIcon}\n >\n <Text size={0} style={{color: 'inherit'}}>\n {prevSize}\n </Text>\n </MetaInfo>\n </DiffCard>\n )\n\n const to = next && (\n <DiffCard as=\"ins\" diff={diff} path=\"asset._ref\" style={cardStyles}>\n <MetaInfo\n title={next.originalFilename || t('changes.file.meta-info-fallback-title')}\n icon={DocumentIcon}\n >\n <Flex align=\"center\">\n <Text size={0} style={{color: 'inherit'}}>\n {nextSize}\n </Text>\n {pctDiff !== 0 && (\n <Card radius={2} padding={1} as={SizeDiff} marginLeft={2}>\n <Text size={0} data-number={pctDiff > 0 ? 'positive' : 'negative'}>\n {pctDiff > 0 ? '+' : '-'}\n {pctDiff}%\n </Text>\n </Card>\n )}\n </Flex>\n </MetaInfo>\n </DiffCard>\n )\n\n const FileAssetChange = (\n <>\n {/* Removed only */}\n {from && !to && (\n <DiffTooltip diff={diff} path=\"asset._ref\" description={t('changes.removed-label')}>\n {from}\n </DiffTooltip>\n )}\n\n {/* Removed and added */}\n {from && to && (\n <DiffTooltip diff={diff} path=\"asset._ref\">\n <FromTo from={from} layout=\"grid\" to={to} />\n </DiffTooltip>\n )}\n\n {/* Added only */}\n {!from && to && (\n <DiffTooltip diff={diff} path=\"asset._ref\" description={t('changes.added-label')}>\n {to}\n </DiffTooltip>\n )}\n </>\n )\n\n return (\n <>\n {didAssetChange && FileAssetChange}\n {nestedFields.length > 0 && (\n <Box marginTop={didAssetChange ? 4 : 3}>\n <ChangeList diff={diff} schemaType={schemaType} fields={nestedFields} />\n </Box>\n )}\n </>\n )\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of, type OperatorFunction} from 'rxjs'\nimport {catchError, map} from 'rxjs/operators'\n\n/** @internal */\nexport type LoadableState<T> = LoadingState | LoadedState<T> | ErrorState\n\n/** @internal */\nexport interface LoadingState {\n value: undefined\n error: null\n isLoading: true\n}\n\n/** @internal */\nexport interface LoadedState<T> {\n value: T\n error: null\n isLoading: false\n}\n\n/** @internal */\nexport interface ErrorState {\n value: undefined\n error: Error\n isLoading: false\n}\n\nconst LOADING_STATE: LoadingState = {\n isLoading: true,\n value: undefined,\n error: null,\n}\n\n/** @internal */\nexport function useLoadable<T>(value$: Observable<T>): LoadableState<T | undefined>\n/** @internal */\nexport function useLoadable<T>(value$: Observable<T>, initialValue: T): LoadableState<T>\n/** @internal */\nexport function useLoadable<T>(\n value$: Observable<T>,\n initialValue?: T,\n): LoadableState<T | undefined> {\n const initial: LoadableState<T> =\n typeof initialValue === 'undefined'\n ? LOADING_STATE\n : {isLoading: false, value: initialValue, error: null}\n\n const loadableObservable = useMemo(() => value$.pipe(asLoadable()), [value$])\n // Deferred: react-rx v5's deferral is identity-coherent, so when callers\n // key `value$` on identities like a document id the live loadable wins on\n // an identity change — the previous identity's loaded value never returns\n // under the new one.\n return useObservable(loadableObservable, initial)\n}\n\n/** @internal */\nexport function asLoadable<T>(): OperatorFunction<T, LoadableState<T>> {\n return (value$: Observable<T>) =>\n value$.pipe(\n map((value) => ({isLoading: false, value, error: null}) as const),\n catchError((error): Observable<ErrorState> =>\n of({isLoading: false, value: undefined, error}),\n ),\n )\n}\n","import {useMemo} from 'react'\nimport {type Observable, of} from 'rxjs'\n\nimport {type LoadableState, useLoadable} from '../../../util/useLoadable'\nimport {useDocumentPreviewStore} from '../../datastores'\n\n/** @internal */\nexport function useDocumentValues<T = Record<string, unknown>>(\n documentId: string,\n paths: string[],\n): LoadableState<T | undefined> {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const documentValues$ = useMemo(\n () =>\n documentId\n ? (documentPreviewStore.observePaths(\n {_type: 'reference', _ref: documentId},\n paths,\n ) as Observable<T>)\n : of(undefined),\n [documentId, documentPreviewStore, paths],\n )\n\n return useLoadable(documentValues$)\n}\n","// @todo: use `polished` for this?\nexport function hexToRgba(hex: string, opacity: number): string {\n const rgba = (/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex) || ([] as string[]))\n .slice(1)\n .map((num) => parseInt(num, 16))\n .concat(opacity)\n return `rgba(${rgba.join(', ')})`\n}\n\n// @todo: replace this\nexport function simpleHash(str: string): string {\n let hash = 0\n\n if (str.length == 0) {\n return hash.toString()\n }\n\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n\n hash = (hash << 5) - hash + char\n\n hash &= hash // Convert to 32bit integer\n }\n\n return hash.toString()\n}\n\nexport function getDeviceDpr(): number {\n const base = Math.ceil(window.devicePixelRatio || 1)\n return Math.min(3, Math.max(1, base))\n}\n","import {type Image, type ImageCrop, type ImageHotspot} from '@sanity/types'\nimport {type SVGProps} from 'react'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../types'\nimport {hexToRgba} from './helpers'\n\ninterface HotspotCropSVGProps {\n crop?: ImageCrop\n diff: ObjectDiff<Image>\n hash: string\n hotspot?: ImageHotspot\n width?: number\n height?: number\n}\n\nexport function HotspotCropSVG(\n props: HotspotCropSVGProps & Omit<SVGProps<SVGElement>, 'ref' | 'width' | 'height'>,\n) {\n const {crop, diff, hash, hotspot, width = 100, height = 100, ...restProps} = props\n const {t} = useTranslation()\n const cropColor = useDiffAnnotationColor(diff, 'crop')\n const hotspotColor = useDiffAnnotationColor(diff, 'hotspot')\n\n return (\n <svg\n {...restProps}\n fill=\"none\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n >\n <defs>\n {crop && hotspot && (\n <mask id={`mask-hotspot-${hash}`}>\n <rect x={0} y={0} width={width} height={height} fill=\"#fff\" />\n <HotspotSVG\n hotspot={hotspot}\n fill=\"#000\"\n offset={1}\n width={width}\n height={height}\n stroke=\"#000\"\n strokeWidth={3}\n />\n </mask>\n )}\n </defs>\n\n {crop && (\n <DiffTooltip diff={diff} path=\"crop\" description={t('changes.image.crop-changed')}>\n <g>\n <CropSVG\n crop={crop}\n fill={hexToRgba(cropColor.border, 0.25)}\n mask={hotspot ? `url(#mask-hotspot-${hash})` : undefined}\n stroke={cropColor.border}\n strokeWidth={1}\n width={width}\n height={height}\n />\n </g>\n </DiffTooltip>\n )}\n\n {hotspot && (\n <DiffTooltip diff={diff} path=\"hotspot\" description={t('changes.image.crop-changed')}>\n <g>\n <HotspotSVG\n hotspot={hotspot}\n fill={hexToRgba(hotspotColor.border, 0.25)}\n stroke={hotspotColor.border}\n strokeWidth={1}\n width={width}\n height={height}\n />\n </g>\n </DiffTooltip>\n )}\n </svg>\n )\n}\n\nfunction CropSVG({\n crop,\n width,\n height,\n ...restProps\n}: {crop: ImageCrop; width: number; height: number} & Omit<\n SVGProps<SVGRectElement>,\n 'width' | 'height'\n>) {\n const rectProps = {\n x: crop.left * width,\n y: crop.top * height,\n width: (1 - crop.right - crop.left) * width,\n height: (1 - crop.bottom - crop.top) * height,\n }\n\n return <rect {...restProps} {...rectProps} style={{vectorEffect: 'non-scaling-stroke'}} />\n}\n\nfunction HotspotSVG({\n hotspot,\n offset = 0,\n width,\n height,\n ...restProps\n}: {hotspot: ImageHotspot; offset?: number; width: number; height: number} & Omit<\n SVGProps<SVGEllipseElement>,\n 'width' | 'height'\n>) {\n const ellipseProps = {\n cx: hotspot.x * width,\n cy: hotspot.y * height,\n rx: (hotspot.width / 2) * width + offset,\n ry: (hotspot.height / 2) * height + offset,\n }\n\n return <ellipse {...restProps} {...ellipseProps} style={{vectorEffect: 'non-scaling-stroke'}} />\n}\n","import {getImageDimensions, isDefaultCrop, isDefaultHotspot} from '@sanity/asset-utils'\nimport {hues} from '@sanity/color'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {createImageUrlBuilder} from '@sanity/image-url'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type SyntheticEvent, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDocumentValues} from '../../../../store/document/hooks/useDocumentValues'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../../studioClient'\nimport {MetaInfo} from '../../../diff/components/MetaInfo'\nimport {getDeviceDpr, simpleHash} from './helpers'\nimport {HotspotCropSVG} from './HotspotCropSVG'\nimport {type ImagePreviewProps, type MinimalAsset} from './types'\n\nconst ASSET_FIELDS = ['originalFilename']\n\n// To trigger error state, change `src` attribute to random string (\"foo\")\n// To trigger slow loading, use a throttling proxy (charles) or browser devtools\n\n// To trigger deleted state, set `id` to valid, non-existant image asset ID,\n// eg: 'image-1217bc35db5030739b7be571c79d3c401551911d-300x200-png'\n\nexport const NoImagePreview = () => {\n const {t} = useTranslation()\n return (\n <Card flex={1} tone=\"transparent\" padding={4} radius={2} height=\"stretch\">\n <Flex align=\"center\" justify=\"center\" height=\"fill\">\n <Text size={1} muted>\n {t('changes.image.no-image-placeholder')}\n </Text>\n </Flex>\n </Card>\n )\n}\n\nconst ImageWrapper = styled.div`\n height: 100%;\n max-height: 190px;\n position: relative;\n\n /* Ideally the checkerboard component currently in the form builder should be made available and used here */\n background-color: ${hues.gray[100].hex};\n background-image:\n linear-gradient(45deg, ${hues.gray[50].hex} 25%, transparent 25%),\n linear-gradient(-45deg, ${hues.gray[50].hex} 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, ${hues.gray[50].hex} 75%),\n linear-gradient(-45deg, transparent 75%, ${hues.gray[50].hex} 75%);\n background-size: 16px 16px;\n background-position:\n 0 0,\n 0 8px,\n 8px -8px,\n -8px 0;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n box-shadow: inset 0 0 0 1px var(--card-border-color);\n pointer-events: none;\n }\n\n &[data-changed] {\n opacity: 0.45;\n }\n`\n\nconst Image = styled.img`\n display: block;\n flex: 1;\n min-height: 0;\n object-fit: contain;\n width: 100%;\n height: 100%;\n\n &[data-action='removed'] {\n opacity: 0.45;\n }\n`\n\nconst HotspotDiff = styled.div`\n svg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n`\n\nexport function ImagePreview(props: ImagePreviewProps): React.JSX.Element {\n const {id, action, diff, hotspot, crop, is} = props\n const {t} = useTranslation()\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const [imageError, setImageError] = useState<SyntheticEvent<HTMLImageElement>>()\n const {value: asset} = useDocumentValues<MinimalAsset>(id, ASSET_FIELDS)\n const dimensions = getImageDimensions(id)\n const imageBuilder = useMemo(() => createImageUrlBuilder(client), [client])\n\n // undefined = still loading, null = its gone\n const assetIsDeleted = asset === null\n\n const title = asset && asset.originalFilename\n const imageSource = imageBuilder\n .image(id)\n .height(190) // Should match container max-height\n .dpr(getDeviceDpr())\n .fit('max')\n\n const assetChanged = diff.fromValue?.asset?._ref !== diff.toValue?.asset?._ref\n\n let printAction\n if (action && action !== 'changed') {\n printAction = t(action === 'added' ? 'changes.added-label' : 'changes.removed-label')\n }\n\n const metaAction = action === 'changed' ? undefined : action\n\n return (\n <Flex direction=\"column\" height=\"fill\" flex={1}>\n <Box flex={1} padding={2} paddingBottom={0}>\n <Flex\n as={ImageWrapper}\n direction=\"column\"\n data-changed={is === 'from' && assetChanged ? '' : undefined}\n data-error={imageError ? '' : undefined}\n >\n {!assetIsDeleted && !imageError && (\n <Image\n src={imageSource.toString() || ''}\n alt={title}\n data-action={metaAction}\n onError={setImageError}\n width={dimensions.width}\n height={dimensions.height}\n />\n )}\n\n {(assetIsDeleted || imageError) && (\n <Box paddingY={5}>\n <Text size={1} muted align=\"center\">\n {t(assetIsDeleted ? 'changes.image.deleted' : 'changes.image.error-loading-image')}\n </Text>\n </Box>\n )}\n\n <HotspotDiff>\n <HotspotCropSVG\n crop={crop && !isDefaultCrop(crop) ? crop : undefined}\n diff={diff}\n hash={simpleHash(`${imageSource.toString() || ''}-${is}`)}\n hotspot={hotspot && !isDefaultHotspot(hotspot) ? hotspot : undefined}\n width={dimensions.width}\n height={dimensions.height}\n />\n </HotspotDiff>\n </Flex>\n </Box>\n\n <MetaInfo\n title={title || t('changes.image.meta-info-fallback-title')}\n icon={ImageIcon}\n markRemoved={assetChanged && is === 'from'}\n >\n {printAction ? (\n <div>{printAction}</div>\n ) : (\n <div>\n {dimensions.width} × {dimensions.height}\n </div>\n )}\n </MetaInfo>\n </Flex>\n )\n}\n","import {type Image} from '@sanity/types'\nimport {Box, Card, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../../i18n/types'\nimport {getAnnotationAtPath} from '../../../diff/annotations/helpers'\nimport {ChangeList} from '../../../diff/components/ChangeList'\nimport {DiffCard} from '../../../diff/components/DiffCard'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromTo} from '../../../diff/components/FromTo'\nimport {useDocumentChange} from '../../../diff/hooks/useDocumentChange'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {ImagePreview, NoImagePreview} from './ImagePreview'\n\nconst IMAGE_META_FIELDS = ['crop', 'hotspot']\nconst BASE_IMAGE_FIELDS = ['asset', 'media', ...IMAGE_META_FIELDS]\n\nconst CARD_STYLES = {\n flex: 1,\n}\n\nexport const ImageFieldDiff: DiffComponent<ObjectDiff<Image>> = ({diff, schemaType}) => {\n const {t} = useTranslation()\n const {showFromValue} = useDocumentChange()\n const {fromValue, toValue, fields, isChanged} = diff\n const fromRef = fromValue?.asset?._ref\n const toRef = toValue?.asset?._ref\n const assetAnnotation = getAnnotationAtPath(diff, ['asset', '_ref'])\n\n // Get all the changed fields within this image field\n const changedFields = Object.keys(fields).filter(\n (name) => fields[name].isChanged && name !== '_type',\n )\n\n const nestedFields = schemaType.fields\n .filter(\n (field) => !BASE_IMAGE_FIELDS.includes(field.name) && changedFields.includes(field.name),\n )\n .map((field) => field.name)\n\n let assetAction: 'changed' | 'added' | 'removed' = 'changed'\n if (!fromRef && toRef) {\n assetAction = 'added'\n } else if (!toRef && fromRef) {\n assetAction = 'removed'\n }\n\n const didAssetChange = changedFields.includes('asset')\n const didCropChange = changedFields.includes('crop')\n const didHotspotChange = changedFields.includes('hotspot')\n const didMetaChange = didCropChange || didHotspotChange\n const showImageDiff = didAssetChange || didMetaChange\n const showMetaChange = didMetaChange && !didAssetChange\n\n const from =\n fromValue && fromRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview\n is=\"from\"\n id={fromRef}\n diff={diff}\n action={assetAction}\n hotspot={showMetaChange && didHotspotChange ? fromValue.hotspot : undefined}\n crop={showMetaChange && didCropChange ? fromValue.crop : undefined}\n />\n </DiffCard>\n ) : (\n <NoImagePreview />\n )\n\n const to =\n toValue && toRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview\n is=\"to\"\n id={toRef}\n diff={diff}\n hotspot={showMetaChange && didHotspotChange ? toValue.hotspot : undefined}\n crop={showMetaChange && didCropChange ? toValue.crop : undefined}\n />\n </DiffCard>\n ) : (\n <NoImagePreview />\n )\n\n if (!from && !to) {\n return (\n <Card padding={4} radius={2} tone=\"transparent\">\n <Text muted size={1} align=\"center\">\n {t('changes.image.no-asset-set')}\n </Text>\n </Card>\n )\n }\n\n if (!isChanged) {\n return toRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview id={toRef} is=\"to\" diff={diff} />\n </DiffCard>\n ) : null\n }\n\n const imageDiff = (\n <FromTo align=\"center\" from={showFromValue ? from : undefined} layout=\"grid\" to={to} />\n )\n\n return (\n <>\n {showImageDiff &&\n (didAssetChange ? (\n <DiffTooltip\n annotations={assetAnnotation ? [assetAnnotation] : []}\n description={getChangeDescription(assetAction, t)}\n >\n {imageDiff}\n </DiffTooltip>\n ) : (\n imageDiff\n ))}\n {nestedFields.length > 0 && (\n <Box marginTop={showImageDiff ? 4 : 3}>\n <ChangeList diff={diff} schemaType={schemaType} fields={nestedFields} />\n </Box>\n )}\n </>\n )\n}\n\nfunction getChangeDescription(action: 'changed' | 'added' | 'removed', t: TFunction): string {\n switch (action) {\n case 'changed':\n return t('changes.changed-label')\n case 'added':\n return t('changes.added-label')\n case 'removed':\n return t('changes.removed-label')\n default:\n // Should never happen, but for linters' sake\n return 'Unknown change'\n }\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst NumberWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n`\n\nexport const NumberPreview: FieldPreviewComponent<string> = (props) => {\n const {value} = props\n\n return (\n <Box as={NumberWrapper} paddingX={2} paddingY={1}>\n {value}\n </Box>\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type NumberDiff} from '../../../types'\nimport {NumberPreview} from '../preview/NumberPreview'\n\nexport const NumberFieldDiff: DiffComponent<NumberDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={NumberPreview}\n layout=\"inline\"\n />\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const InlineBox = styled(Box)`\n &:not([hidden]) {\n display: inline;\n align-items: center;\n\n &[data-changed] {\n cursor: pointer;\n }\n }\n`\n\nexport const InlineText = styled(Text)`\n &:not([hidden]) {\n display: inline;\n color: inherit;\n }\n`\n\nexport const PreviewContainer = styled(Box)`\n &:not([hidden]) {\n display: inline-flex;\n align-items: center;\n\n ${InlineBox} [data-ui=\"Text\"] {\n opacity: 0.5;\n }\n }\n`\n\nexport const PopoverContainer = styled(Box)`\n min-width: 160px;\n max-height: 40vh;\n overflow-y: auto;\n`\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {isKeySegment, type ObjectSchemaType, type Path, type PortableTextChild} from '@sanity/types'\nimport {Flex, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {toString} from '@sanity/util/paths'\nimport {\n type MouseEvent,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../../ui-components/popover/Popover'\nimport {useChangeIndicatorsReportedValues} from '../../../../../changeIndicators/tracker'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {ChangeList} from '../../../../diff/components/ChangeList'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../../types'\nimport {isEmptyObject} from '../helpers'\nimport {InlineBox, InlineText, PopoverContainer, PreviewContainer} from './styledComponents'\n\ninterface AnnotationProps {\n diff?: ObjectDiff\n object: PortableTextChild\n schemaType?: ObjectSchemaType\n path: Path\n children: ReactNode\n}\n\nconst AnnotationWrapper = styled.div`\n text-decoration: none;\n display: inline;\n position: relative;\n border: 0;\n padding: 0;\n border-bottom: 2px dotted currentColor;\n box-shadow: inset 0 0 0 1px var(--card-border-color);\n white-space: nowrap;\n align-items: center;\n background-color: color(var(--card-fg-color) a(10%));\n\n &[data-changed] {\n cursor: pointer;\n }\n\n &[data-removed] {\n text-decoration: line-through;\n }\n\n &:hover ${PreviewContainer} {\n opacity: 1;\n }\n`\n\nexport function Annotation({\n children,\n diff,\n object,\n schemaType,\n path,\n ...restProps\n}: AnnotationProps) {\n const {t} = useTranslation()\n if (!schemaType) {\n return (\n <AnnotationWrapper {...restProps}>\n {t('changes.portable-text.unknown-annotation-schema-type')}\n </AnnotationWrapper>\n )\n }\n if (diff && diff.action !== 'unchanged') {\n return (\n <AnnnotationWithDiff\n {...restProps}\n diff={diff}\n object={object}\n schemaType={schemaType}\n path={path}\n >\n {children}\n </AnnnotationWithDiff>\n )\n }\n return <AnnotationWrapper>{children}</AnnotationWrapper>\n}\n\ninterface AnnnotationWithDiffProps {\n diff: ObjectDiff\n object: PortableTextChild\n schemaType: ObjectSchemaType\n path: Path\n children?: ReactNode\n}\n\nfunction AnnnotationWithDiff({\n diff,\n children,\n object,\n schemaType,\n path,\n ...restProps\n}: AnnnotationWithDiffProps) {\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {path: fullPath} = useContext(DiffContext)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const {t} = useTranslation()\n const color = useDiffAnnotationColor(diff, [])\n const style = useMemo(\n () => (color ? {background: color.background, color: color.text} : {}),\n [color],\n )\n const isRemoved = diff.action === 'removed'\n const [open, setOpen] = useState(false)\n const emptyObject = object && isEmptyObject(object)\n const markDefPath = useMemo(\n () => [path[0]].concat(['markDefs', {_key: object._key}]),\n [object._key, path],\n )\n const prefix = useMemo(\n () =>\n fullPath.slice(\n 0,\n fullPath.findIndex((seg) => isKeySegment(seg) && seg._key === object._key),\n ),\n [fullPath, object._key],\n )\n const annotationPath = useMemo(() => prefix.concat(path), [path, prefix])\n const myPath = useMemo(() => prefix.concat(markDefPath), [markDefPath, prefix])\n const myValue = `field-${toString(myPath)}`\n const values = useChangeIndicatorsReportedValues()\n const isEditing = useMemo(\n () => values.filter(([p]) => p.startsWith(myValue)).length > 0,\n [myValue, values],\n )\n\n useEffect(() => {\n if (!open && isEditing) {\n // oxlint-disable-next-line react/react-compiler\n setOpen(true)\n onSetFocus(myPath)\n }\n }, [isEditing, myPath, onSetFocus, open])\n\n const handleOpenPopup = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n setOpen(true)\n if (!isRemoved) {\n event.preventDefault()\n onSetFocus(annotationPath) // Go to span first\n setTimeout(() => onSetFocus(myPath), 10) // Open edit object interface\n }\n },\n [annotationPath, isRemoved, myPath, onSetFocus],\n )\n\n useClickOutsideEvent(!isEditing && (() => setOpen(false)), () => [popoverRef.current])\n\n const annotation = (diff.action !== 'unchanged' && diff.annotation) || null\n const annotations = useMemo(() => (annotation ? [annotation] : []), [annotation])\n\n const value = useMemo(() => ({path: myPath}), [myPath])\n\n const popoverContent = (\n <DiffContext.Provider value={value}>\n <PopoverContainer padding={3}>\n <div>\n {emptyObject && (\n <Text muted size={1} weight=\"medium\">\n {t('changes.portable-text.empty-object-annotation', {\n annotationType: schemaType.title || schemaType.name,\n })}\n </Text>\n )}\n {!emptyObject && <ChangeList diff={diff} schemaType={schemaType} />}\n </div>\n </PopoverContainer>\n </DiffContext.Provider>\n )\n\n return (\n <AnnotationWrapper\n {...restProps}\n onClick={handleOpenPopup}\n style={style}\n data-changed=\"\"\n data-removed={diff.action === 'removed' ? '' : undefined}\n >\n <Popover content={popoverContent} open={open} ref={popoverRef} portal>\n <PreviewContainer paddingLeft={1}>\n <DiffTooltip\n annotations={annotations}\n description={t('changes.portable-text.annotation', {context: diff.action})}\n >\n <InlineBox style={{display: 'inline-flex'}}>\n <span>{children}</span>\n <Flex align=\"center\" paddingX={1}>\n <InlineText size={0}>\n <ChevronDownIcon />\n </InlineText>\n </Flex>\n </InlineBox>\n </DiffTooltip>\n </PreviewContainer>\n </Popover>\n </AnnotationWrapper>\n )\n}\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nconst Quote = styled.blockquote`\n margin: 0;\n`\n\nexport function Blockquote({children}: {children: ReactNode}): React.JSX.Element {\n return (\n <div>\n <Quote>{children}</Quote>\n </div>\n )\n}\n","import {Heading} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nconst headingSizes: Record<string, number | undefined> = {\n h1: 2,\n h2: 1,\n h3: 0,\n h4: 0,\n h5: 0,\n h6: 0,\n}\n\nconst StyledHeading = styled(Heading)`\n &:not([hidden]) {\n display: inline;\n text-transform: none;\n margin: 0;\n\n &::before,\n &::after {\n content: unset;\n }\n }\n`\n\nexport function Header({style, children}: {style: string; children: ReactNode}): React.JSX.Element {\n return <StyledHeading size={headingSizes[style]}>{children}</StyledHeading>\n}\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n// This can contain nested <div> elements, so it's not rendered as a <p> element\nconst StyledParagraph = styled.div`\n text-transform: none;\n white-space: wrap;\n overflow-wrap: break-word;\n margin: 0;\n`\n\nexport function Paragraph({children}: {children: ReactNode}): React.JSX.Element {\n return <StyledParagraph>{children}</StyledParagraph>\n}\n","import {type Path, type PortableTextTextBlock} from '@sanity/types'\nimport {Box, Card, Stack, Text} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useContext} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {isHeader} from '../helpers'\nimport {type PortableTextDiff} from '../types'\nimport {Blockquote} from './Blockquote'\nimport {Header} from './Header'\nimport {Paragraph} from './Paragraph'\n\nconst EMPTY_PATH: Path = []\n\nexport function Block(props: {\n diff: PortableTextDiff\n block: PortableTextTextBlock\n children: React.JSX.Element\n}): React.JSX.Element {\n const {diff, block, children} = props\n const color = useDiffAnnotationColor(diff, EMPTY_PATH)\n const {path: fullPath} = useContext(DiffContext)\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {t} = useTranslation()\n const isRemoved = diff.action === 'removed'\n let returned = children\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n\n if (!isRemoved) {\n onSetFocus(fullPath)\n }\n },\n [fullPath, isRemoved, onSetFocus],\n )\n\n if (block.style === 'blockquote') {\n returned = <Blockquote>{returned}</Blockquote>\n } else if (block.style && isHeader(block)) {\n returned = <Header style={block.style}>{returned}</Header>\n } else {\n returned = <Paragraph>{returned}</Paragraph>\n }\n\n let fromStyle: string | undefined\n // If style was changed, indicate that\n if (\n diff.origin.action === 'changed' &&\n diff.origin.fields.style &&\n diff.origin.fields.style.action === 'changed' &&\n diff.origin.fields.style.annotation\n ) {\n fromStyle = diff?.origin?.fromValue?.style\n\n const style = color ? {background: color.background, color: color.text} : {}\n\n returned = (\n <Card\n padding={3}\n border\n radius={2}\n style={{borderStyle: 'dotted'}}\n diff-block-action={diff.action}\n data-block-note={`changed_from_style_${fromStyle || 'undefined'}`}\n >\n <Stack gap={2}>\n <DiffTooltip\n annotations={[diff.origin.fields.style?.annotation]}\n diff={diff.origin.fields.style}\n >\n <Text size={0}>\n {t('changes.portable-text.block-style-changed', {fromStyle, toStyle: block.style})}\n </Text>\n </DiffTooltip>\n <Box style={style}>{returned}</Box>\n </Stack>\n </Card>\n )\n }\n\n return (\n <div\n onClick={handleClick}\n data-diff-block-action={diff.action}\n data-block-note={`changed_from_style_${fromStyle || 'undefined'}`}\n >\n {returned}\n </div>\n )\n}\n","import {styled} from 'styled-components'\n\nconst DecoratorWrapper = styled.span<{decoration: string}>`\n display: inline;\n ${({theme, decoration}) => {\n switch (decoration) {\n case 'strong':\n return 'font-weight: bold;'\n case 'em':\n return 'font-style: italic;'\n case 'underline':\n return 'text-decoration: underline;'\n case 'overline':\n return 'text-decoration: overline;'\n case 'strike-through':\n return 'text-decoration: line-through;'\n case 'code':\n return `\n font-family: ${theme.sanity.fonts.code.family /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n background: ${theme.sanity.color.muted.default.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n `\n default:\n return ''\n }\n }}\n`\n\nexport function Decorator({mark, children}: {mark: string; children: React.JSX.Element}) {\n return <DecoratorWrapper decoration={mark}>{children}</DecoratorWrapper>\n}\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {\n isKeySegment,\n type ObjectSchemaType,\n type Path,\n type PortableTextChild,\n type PortableTextObject,\n} from '@sanity/types'\nimport {Card, Flex, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {FOCUS_TERMINATOR, toString} from '@sanity/util/paths'\nimport {type MouseEvent, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../../ui-components/popover/Popover'\nimport {useChangeIndicatorsReportedValues} from '../../../../../changeIndicators/tracker'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {Preview} from '../../../../../preview/components/Preview'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {ChangeList} from '../../../../diff/components/ChangeList'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../../types'\nimport {isEmptyObject} from '../helpers'\nimport {InlineBox, InlineText, PopoverContainer, PreviewContainer} from './styledComponents'\n\ninterface InlineObjectProps {\n diff?: ObjectDiff\n object: PortableTextObject\n path: Path\n schemaType?: ObjectSchemaType\n}\n\nconst InlineObjectWrapper = styled(Card)`\n &:not([hidden]) {\n display: inline;\n cursor: pointer;\n white-space: nowrap;\n align-items: center;\n\n &[data-removed] {\n text-decoration: line-through;\n }\n\n ${InlineBox} {\n display: inline-flex;\n }\n }\n`\n\nexport function InlineObject({diff, object, schemaType, ...restProps}: InlineObjectProps) {\n const {t} = useTranslation()\n if (!schemaType) {\n return (\n <InlineObjectWrapper {...restProps} border radius={1}>\n {t('changes.portable-text.unknown-inline-object-schema-type', {schemaType: object._type})}\n </InlineObjectWrapper>\n )\n }\n\n if (diff) {\n return (\n <InlineObjectWithDiff {...restProps} diff={diff} object={object} schemaType={schemaType} />\n )\n }\n\n return (\n <InlineObjectWrapper>\n <Preview schemaType={schemaType} value={object} layout=\"inline\" />\n </InlineObjectWrapper>\n )\n}\n\ninterface InlineObjectWithDiffProps {\n diff: ObjectDiff\n object: PortableTextChild\n path: Path\n schemaType: ObjectSchemaType\n}\n\nfunction InlineObjectWithDiff({\n diff,\n object,\n path,\n schemaType,\n ...restProps\n}: InlineObjectWithDiffProps) {\n const {path: fullPath} = useContext(DiffContext)\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {t} = useTranslation()\n const color = useDiffAnnotationColor(diff, [])\n const style = useMemo(\n () => (color ? {background: color.background, color: color.text} : {}),\n [color],\n )\n const [open, setOpen] = useState(false)\n const emptyObject = object && isEmptyObject(object)\n const isRemoved = diff.action === 'removed'\n const prefix = fullPath.slice(\n 0,\n fullPath.findIndex((seg) => isKeySegment(seg) && seg._key === object._key),\n )\n const myPath = prefix.concat(path)\n const myValue = `field-${toString(myPath)}`\n const values = useChangeIndicatorsReportedValues()\n const isEditing = values.filter(([p]) => p.startsWith(myValue)).length > 0\n\n const focusPath = fullPath.slice(0, -1).concat(path).concat([FOCUS_TERMINATOR])\n\n useEffect(() => {\n if (isEditing) {\n // oxlint-disable-next-line react/react-compiler\n setOpen(true)\n onSetFocus(focusPath)\n }\n }, [focusPath, isEditing, onSetFocus])\n\n const handleOpenPopup = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n setOpen(true)\n if (!isRemoved) {\n onSetFocus(focusPath)\n return\n }\n event.preventDefault()\n },\n [focusPath, isRemoved, onSetFocus],\n )\n\n const handleClose = useCallback(() => {\n setOpen(false)\n }, [])\n\n const value = useMemo(() => ({path: myPath}), [myPath])\n\n const popoverContent = (\n <DiffContext.Provider value={value}>\n <PopoverContent\n diff={diff}\n emptyObject={emptyObject}\n onClose={handleClose}\n schemaType={schemaType}\n />\n </DiffContext.Provider>\n )\n\n const annotation = (diff.action !== 'unchanged' && diff.annotation) || null\n const annotations = annotation ? [annotation] : []\n\n return (\n <InlineObjectWrapper\n {...restProps}\n onClick={handleOpenPopup}\n style={style}\n data-removed={diff.action === 'removed' ? '' : undefined}\n border\n radius={2}\n >\n <Popover content={popoverContent} open={open} portal>\n <PreviewContainer>\n <DiffTooltip\n annotations={annotations}\n description={t('changes.portable-text.inline-object', {context: diff.action})}\n >\n <InlineBox>\n <Preview schemaType={schemaType} value={object} layout=\"inline\" />\n <Flex align=\"center\" paddingX={1}>\n <InlineText size={0}>\n <ChevronDownIcon />\n </InlineText>\n </Flex>\n </InlineBox>\n </DiffTooltip>\n </PreviewContainer>\n </Popover>\n </InlineObjectWrapper>\n )\n}\n\nfunction PopoverContent({\n diff,\n emptyObject,\n onClose,\n schemaType,\n}: {\n diff: ObjectDiff\n emptyObject: boolean\n onClose: () => void\n schemaType: ObjectSchemaType\n}) {\n const {t} = useTranslation()\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n useClickOutsideEvent(onClose, () => [popoverRef.current])\n\n return (\n <PopoverContainer ref={popoverRef} padding={3}>\n {emptyObject && (\n <Text muted size={1} weight=\"medium\">\n {t('changes.portable-text.empty-inline-object', {\n inlineObjectType: schemaType.title || schemaType.name,\n })}\n </Text>\n )}\n {!emptyObject && <ChangeList diff={diff} schemaType={schemaType} />}\n </PopoverContainer>\n )\n}\n","import {isKeySegment, type Path} from '@sanity/types'\nimport {type HTMLProps, type SyntheticEvent, useCallback, useContext, useMemo} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {DiffCard} from '../../../../diff/components/DiffCard'\nimport {type ObjectDiff, type StringDiff, type StringDiffSegment} from '../../../../types'\nimport {InlineBox} from './styledComponents'\n\ninterface TextProps {\n diff?: StringDiff\n childDiff?: ObjectDiff\n children: React.JSX.Element\n path: Path\n segment: StringDiffSegment\n}\n\nexport function Text({\n diff,\n childDiff,\n children,\n path,\n segment,\n ...restProps\n}: TextProps & Omit<HTMLProps<HTMLSpanElement>, 'onClick'>) {\n const diffWithFallback = diff || childDiff\n const hasChanged =\n diffWithFallback && diffWithFallback.action !== 'unchanged' && segment.action !== 'unchanged'\n if (hasChanged) {\n return (\n <TextWithDiff {...restProps} childDiff={childDiff} diff={diff} segment={segment} path={path}>\n {children}\n </TextWithDiff>\n )\n }\n return <InlineBox>{children}</InlineBox>\n}\n\nfunction TextWithDiff({diff, childDiff, children, path, segment, ...restProps}: TextProps) {\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {path: fullPath} = useContext(DiffContext)\n const spanSegment = useMemo(() => path.slice(-2, 1)[0], [path])\n const {t} = useTranslation()\n const isRemoved = diff && diff.action === 'removed'\n const prefix = fullPath.slice(\n 0,\n fullPath.findIndex(\n (seg) => isKeySegment(seg) && isKeySegment(spanSegment) && seg._key === spanSegment._key,\n ),\n )\n const focusPath = prefix.concat(path)\n\n const handleClick = useCallback(\n (event: SyntheticEvent) => {\n event.stopPropagation()\n if (!isRemoved) {\n event.preventDefault()\n onSetFocus(focusPath)\n }\n },\n [focusPath, isRemoved, onSetFocus],\n )\n const realSeg = diff && diff.segments.find((rSeg) => rSeg.text === segment.text)\n\n const diffWithFallback = realSeg || diff || childDiff\n const annotation =\n (diffWithFallback && diffWithFallback.action !== 'unchanged' && diffWithFallback.annotation) ||\n (realSeg &&\n diff &&\n diff.action !== 'unchanged' &&\n realSeg.action === 'removed' &&\n diff.annotation) ||\n null\n\n const diffCard =\n annotation && segment.action !== 'unchanged' ? (\n <DiffCard\n annotation={annotation}\n as={segment.action === 'removed' ? 'del' : 'ins'}\n tooltip={{description: t('changes.portable-text.text', {context: segment.action})}}\n >\n {children}\n </DiffCard>\n ) : null\n\n return (\n <InlineBox {...restProps} onClick={handleClick} data-changed=\"\">\n <span>\n <>{diffCard || children}</>\n </span>\n </InlineBox>\n )\n}\n","import {\n isPortableTextSpan,\n type ObjectSchemaType,\n type PortableTextChild,\n type PortableTextTextBlock,\n type SpanSchemaType,\n} from '@sanity/types'\nimport uniq from 'lodash-es/uniq.js'\nimport xor from 'lodash-es/xor.js'\nimport {type ReactNode, useMemo} from 'react'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../../../i18n/types'\nimport {DiffCard} from '../../../../diff/components/DiffCard'\nimport {\n type ArrayDiff,\n type ObjectDiff,\n type StringDiff,\n type StringDiffSegment,\n} from '../../../../types'\nimport {\n escapeRegExp,\n findAnnotationDiff,\n findChildDiff,\n findSpanDiffFromChild,\n getAllMarkDefs,\n getChildSchemaType,\n getDecorators,\n getInlineObjects,\n isDecorator,\n} from '../helpers'\nimport * as TextSymbols from '../symbols'\nimport {type PortableTextDiff} from '../types'\nimport {Annotation} from './Annotation'\nimport {Block} from './Block'\nimport {Decorator} from './Decorator'\nimport {InlineObject} from './InlineObject'\nimport {Text} from './Text'\n\nconst decoratorSymbolsStart = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[0])\nconst decoratorSymbolsEnd = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[1])\nconst annotationSymbolsStart = TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[0])\nconst annotationSymbolsEnd = TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[1])\n\nconst allSymbolsStart = decoratorSymbolsStart.concat(annotationSymbolsStart)\nconst allSymbolsEnd = decoratorSymbolsEnd.concat(annotationSymbolsEnd)\n\nconst allDecoratorSymbols = decoratorSymbolsStart.concat(decoratorSymbolsEnd)\nconst markRegex = new RegExp(`${allDecoratorSymbols.concat(allSymbolsEnd).join('|')}`, 'g')\n\ntype Props = {\n diff: PortableTextDiff\n schemaType: ObjectSchemaType\n}\n\nexport function PortableText(props: Props): React.JSX.Element {\n const {diff, schemaType} = props\n const block = (diff.origin.toValue || diff.origin.fromValue) as PortableTextTextBlock\n const {t} = useTranslation()\n\n const inlineObjects = useMemo(\n () => (diff.origin.toValue ? getInlineObjects(diff.origin) : []),\n [diff.origin],\n )\n\n const renderChild = useMemo(\n () => defineRenderChild({block, diff, inlineObjects, schemaType, t}),\n [block, diff, inlineObjects, schemaType, t],\n )\n\n return (\n <Block block={diff.displayValue} diff={diff}>\n {<>{(diff.displayValue.children || []).map((child) => renderChild(child))}</>}\n </Block>\n )\n}\n\nfunction renderTextSegment({\n diff,\n child,\n decoratorTypes,\n seg,\n segIndex,\n spanSchemaType,\n t,\n}: {\n diff: PortableTextDiff\n child: PortableTextChild\n decoratorTypes: {title: string; value: string}[]\n seg: StringDiffSegment\n segIndex: number\n spanSchemaType: SpanSchemaType\n t: TFunction\n}): React.JSX.Element {\n // Newlines\n if (seg.text === '\\n') {\n return <br />\n }\n // Make sure we render trailing spaces correctly\n let children = (\n <span key={`text-${segIndex}`}>\n {seg.text.replace(/ /g, TextSymbols.TRAILING_SPACE_SYMBOL)}\n </span>\n )\n const spanDiff = child && findSpanDiffFromChild(diff.origin, child)\n // Render decorator diff info\n const activeMarks = isPortableTextSpan(child) ? child.marks || [] : []\n if (spanDiff) {\n children = renderDecorators({\n activeMarks,\n decoratorTypes,\n diff,\n children,\n seg,\n segIndex,\n spanDiff,\n spanSchemaType,\n t,\n })\n }\n // Render the segment with the active marks\n if (activeMarks && activeMarks.length > 0) {\n activeMarks.forEach((mark) => {\n if (isDecorator(mark, spanSchemaType)) {\n children = (\n <Decorator key={`decorator-${mark}-${child._key}-${segIndex}`} mark={mark}>\n {children}\n </Decorator>\n )\n }\n })\n }\n return children\n}\n\nfunction renderDecorators({\n activeMarks,\n decoratorTypes,\n diff,\n children,\n seg,\n segIndex,\n spanDiff,\n spanSchemaType,\n t,\n}: {\n activeMarks: string[]\n decoratorTypes: {title: string; value: string}[]\n diff: PortableTextDiff\n children: React.JSX.Element\n seg: StringDiffSegment\n segIndex: number\n spanDiff: ObjectDiff\n spanSchemaType: SpanSchemaType\n t: TFunction\n}): React.JSX.Element {\n let returned = <span key={`text-segment-${segIndex}`}>{children}</span>\n const fromPtDiffText: string =\n (diff.origin.fromValue && diff.fromValue && diff.fromValue.children[0].text) || '' // Always one child\n\n // There are cases where we have changed marks, but it's an indirect change in the diff data.\n // For example when '<>normal-text</><>bold-text</>' and 'bold' is unbolded. Then 'bold' is added to first span,\n // and 'bold' is removed from the second span: '<>normal-text-bold</><>-text</>'. No marks are changed.\n // We do however want to indicate to the user that someone removed bold from 'bold'\n // In these cases, fallback to the diff annotation information in the span itself.\n const indirectMarksAnnotation =\n (spanDiff && spanDiff.action !== 'unchanged' && spanDiff.annotation) || undefined\n\n const marksDiff = spanDiff?.fields?.marks as ArrayDiff\n const marksAnnotation =\n (marksDiff && marksDiff.action !== 'unchanged' && marksDiff.annotation) ||\n indirectMarksAnnotation\n\n let marksChanged: string[] = []\n const ptDiffChildren = fromPtDiffText\n .split(TextSymbols.CHILD_SYMBOL)\n .filter((text) => !!text)\n .join('')\n const ptDiffMatchString = ptDiffChildren\n const controlString = ptDiffMatchString.slice(\n 0,\n Math.max(0, ptDiffMatchString.indexOf(seg.text) + seg.text.length),\n )\n const toTest = controlString.slice(0, Math.max(0, controlString.indexOf(seg.text)))\n const marks: string[] = []\n const matches = [...toTest.matchAll(markRegex)]\n matches.forEach((match) => {\n const sym = match[0]\n const set = TextSymbols.DECORATOR_SYMBOLS.concat(TextSymbols.ANNOTATION_SYMBOLS).find(\n (aSet) => aSet.indexOf(sym) > -1,\n )\n if (set) {\n const isMarkStart = sym === set[0]\n const mark: string =\n decoratorTypes[\n isMarkStart ? decoratorSymbolsStart.indexOf(sym) : decoratorSymbolsEnd.indexOf(sym)\n ]?.value || sym // Annotation marks are uniqe anyway\n const notClosed = toTest.lastIndexOf(sym) > toTest.lastIndexOf(set[1])\n if (notClosed) {\n marks.push(mark)\n }\n }\n })\n marksChanged = xor(activeMarks, uniq(marks))\n // Only for decorators, annotations are taken care of elsewhere\n if (\n marksAnnotation &&\n marksChanged.length > 0 &&\n marksChanged.some((m) => isDecorator(m, spanSchemaType))\n ) {\n returned = (\n <DiffCard\n key={`diffcard-annotation-${segIndex}-${marksChanged.join('-')}`}\n annotation={marksAnnotation}\n as={'ins'}\n tooltip={{\n description: t('changes.portable-text.changed-formatting'),\n }}\n >\n {returned}\n </DiffCard>\n )\n }\n return returned\n}\n\nfunction isEmptyTextChange(block: PortableTextTextBlock, diff: PortableTextDiff) {\n return (\n block.children.length === 1 &&\n block.children[0]._type === 'span' &&\n typeof block.children[0].text === 'string' &&\n block.children[0].text === '' &&\n diff.origin.action !== 'unchanged'\n )\n}\n\nfunction defineRenderChild({\n block,\n diff,\n inlineObjects,\n schemaType,\n t,\n}: {\n block: any\n diff: any\n inlineObjects: any\n schemaType: any\n t: any\n}) {\n return (ptDiffChild: PortableTextChild) => {\n const spanSchemaType = getChildSchemaType(schemaType.fields, ptDiffChild) as SpanSchemaType\n let decoratorTypes: {title: string; value: string}[] = []\n if (spanSchemaType) {\n decoratorTypes = getDecorators(spanSchemaType)\n const childrenDiff = diff.fields.children as ArrayDiff\n const segments =\n (childrenDiff.items[0].diff &&\n childrenDiff.items[0].diff.type === 'object' &&\n childrenDiff.items[0].diff.fields.text.type === 'string' &&\n childrenDiff.items[0].diff.fields.text.segments) ||\n []\n const returnedChildren: ReactNode[] = []\n const annotationSegments: Record<string, ReactNode[]> = {}\n // Special case for new empty PT-block (single span child with empty text)\n if (\n isEmptyTextChange(block, diff) &&\n (diff.origin.action === 'added' || diff.origin.action === 'removed')\n ) {\n const textDiff = findChildDiff(diff.origin, block.children[0]) || diff.origin\n if (textDiff && textDiff.action !== 'unchanged') {\n return (\n <DiffCard\n key={`empty-block-${block._key}`}\n annotation={textDiff.annotation}\n as={textDiff.action === 'removed' ? 'del' : 'ins'}\n tooltip={{\n description: t('changes.portable-text.empty-text', {context: textDiff.action}),\n }}\n >\n <span>{TextSymbols.EMPTY_BLOCK_SYMBOL}</span>\n </DiffCard>\n )\n }\n }\n // Run through all the segments from the PortableTextDiff\n let childToIndex = -1\n let segIndex = -1\n const activeAnnotations: {mark: string; object: PortableTextChild; symbols: string[]}[] = []\n let endedAnnotation: {mark: string; object: PortableTextChild; symbols: string[]} | undefined\n const allMarkDefs = getAllMarkDefs(diff.origin)\n segments.forEach((seg) => {\n segIndex++\n const isInline = TextSymbols.INLINE_SYMBOLS.includes(seg.text)\n const isMarkStart = allSymbolsStart.includes(seg.text)\n const isMarkEnd = allSymbolsEnd.includes(seg.text)\n const isChildStart = seg.text === TextSymbols.CHILD_SYMBOL\n const isRemoved = seg.action === 'removed'\n if (isChildStart) {\n if (!isRemoved) {\n childToIndex++\n }\n // No output\n } else if (isMarkStart || isMarkEnd) {\n if (isMarkStart && annotationSymbolsStart.includes(seg.text)) {\n const object = allMarkDefs[annotationSymbolsStart.indexOf(seg.text)]\n if (object) {\n activeAnnotations.push({\n mark: object._key,\n symbols: [seg.text, annotationSymbolsEnd[annotationSymbolsStart.indexOf(seg.text)]],\n object,\n })\n }\n }\n if (isMarkEnd && annotationSymbolsEnd.includes(seg.text)) {\n endedAnnotation = activeAnnotations.pop()\n }\n // No output\n } else if (isInline) {\n // Render inline object\n const indexOfSymbol = TextSymbols.INLINE_SYMBOLS.findIndex((sym) => sym === seg.text)\n const key = inlineObjects[indexOfSymbol]?._key\n const originChild = inlineObjects[indexOfSymbol]\n if (key) {\n const objectSchemaType = getChildSchemaType(schemaType.fields, originChild)\n const objectDiff = findChildDiff(diff.origin, originChild)\n returnedChildren.push(\n <InlineObject\n key={`inline-object-${originChild._key}`}\n object={originChild}\n path={[{_key: block._key}, 'children', {_key: originChild._key}]}\n diff={objectDiff}\n schemaType={objectSchemaType}\n />,\n )\n }\n } else if (seg.text) {\n // TODO: find a better way of getting a removed child\n const getChildFromFromValue = () =>\n diff.origin.fromValue?.children.find(\n (cld: any) => cld.text && cld.text.match(escapeRegExp(seg.text)),\n ) as PortableTextChild\n const child = block.children[childToIndex] || getChildFromFromValue()\n const childDiff = child && findSpanDiffFromChild(diff.origin, child)\n if (!child) {\n throw new Error('Could not find child')\n }\n const textDiff = childDiff?.fields?.text\n ? (childDiff?.fields?.text as StringDiff)\n : undefined\n const text = (\n <Text\n key={`text-${child._key}-${segIndex}`}\n diff={textDiff}\n path={[{_key: block._key}, 'children', {_key: child._key}]}\n childDiff={childDiff}\n segment={seg}\n >\n {renderTextSegment({\n diff,\n child,\n decoratorTypes,\n seg,\n segIndex,\n spanSchemaType,\n t,\n })}\n </Text>\n )\n\n // Render annotations text changes within the annotation child\n if (activeAnnotations.length > 0) {\n activeAnnotations.forEach((active) => {\n annotationSegments[active.mark] = annotationSegments[active.mark] || []\n annotationSegments[active.mark].push(text)\n })\n }\n if (endedAnnotation) {\n const key = `annotation-${endedAnnotation.object._key}`\n const lastChild = returnedChildren[returnedChildren.length - 1] as React.JSX.Element\n if (lastChild && lastChild.key !== key) {\n const annotationDiff = findAnnotationDiff(diff.origin, endedAnnotation.mark)\n const objectSchemaType =\n endedAnnotation &&\n spanSchemaType.annotations &&\n spanSchemaType.annotations.find(\n (type) =>\n endedAnnotation &&\n endedAnnotation.object &&\n type.name === endedAnnotation.object._type,\n )\n returnedChildren.push(\n <Annotation\n key={key}\n object={endedAnnotation.object}\n diff={annotationDiff}\n path={[{_key: block._key}, 'children', {_key: child._key}]}\n schemaType={objectSchemaType}\n >\n <>{annotationSegments[endedAnnotation.mark]}</>\n </Annotation>,\n )\n }\n // delete annotationSegments[endedAnnotation.mark]\n endedAnnotation = undefined\n }\n if (activeAnnotations.length === 0) {\n returnedChildren.push(text)\n }\n } // end if seg.text\n })\n return <div key={block._key}>{returnedChildren}</div>\n }\n throw new Error(\"'span' schemaType not found\")\n }\n}\n","import {useMemo} from 'react'\n\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {PortableText} from './components/PortableText'\nimport {createPortableTextDiff} from './helpers'\n\nexport const PTDiff: DiffComponent<ObjectDiff> = (props) => {\n const {diff, schemaType} = props\n\n const ptDiff = useMemo(() => createPortableTextDiff(diff, schemaType), [diff, schemaType])\n\n return (\n <div data-diff-action={diff.action}>\n <PortableText diff={ptDiff} schemaType={schemaType} />\n </div>\n )\n}\n","import {type Reference} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {Preview} from '../../../../preview/components/Preview'\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst ReferenceWrapper = styled.div`\n word-wrap: break-word;\n`\n\nexport const ReferencePreview: FieldPreviewComponent<Reference> = ({value, schemaType}) => (\n <Box as={ReferenceWrapper} padding={2}>\n <Preview schemaType={schemaType} value={value} layout=\"default\" />\n </Box>\n)\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type ReferenceDiff} from '../../../types'\nimport {ReferencePreview} from '../preview/ReferencePreview'\n\nexport const ReferenceFieldDiff: DiffComponent<ReferenceDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n align=\"center\"\n diff={diff}\n layout=\"grid\"\n path=\"_ref\"\n previewComponent={ReferencePreview}\n schemaType={schemaType}\n />\n )\n}\n","import {type Slug} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst SlugWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n white-space: pre-wrap;\n`\n\nexport const SlugPreview: FieldPreviewComponent<Slug> = (props) => {\n const {value} = props\n\n return (\n <Box as={SlugWrapper} paddingX={2} paddingY={1}>\n {value.current}\n </Box>\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {SlugPreview} from '../preview/SlugPreview'\n\ninterface Slug {\n current?: string\n}\n\nexport const SlugFieldDiff: DiffComponent<ObjectDiff<Slug>> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n layout=\"inline\"\n diff={diff}\n schemaType={schemaType}\n previewComponent={SlugPreview}\n />\n )\n}\n","import {Card, rem, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type StringDiff, type StringDiffSegment} from '../../types'\nimport {DiffCard} from './DiffCard'\n\nconst RoundedCard = styled.span`\n border-radius: ${({theme}) => rem(theme.sanity.radius[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n`\n\nconst ChangeSegment = styled(Text)`\n &:not([hidden]) {\n display: inline;\n line-height: calc(1.25em + 2px);\n }\n\n &:hover {\n background-color: none !important;\n background-image: linear-gradient(\n to bottom,\n var(--card-bg-color) 0,\n var(--card-bg-color) 33.333%,\n currentColor 33.333%,\n currentColor 100%\n );\n background-size: 1px 3px;\n background-repeat: repeat-x;\n background-position-y: bottom;\n padding-bottom: 3px;\n box-shadow: 0 0 0 1px var(--card-bg-color);\n z-index: 1;\n }\n`\n\n/** @internal */\nexport function DiffStringSegment(props: {segment: StringDiffSegment}): React.JSX.Element {\n const {segment} = props\n const {text} = segment\n const {t} = useTranslation()\n\n if (segment.action === 'added') {\n return (\n <DiffCard\n annotation={segment.annotation}\n disableHoverEffect\n tooltip={{description: t('changes.added-label')}}\n as={RoundedCard}\n >\n <ChangeSegment as=\"ins\" style={{textDecoration: 'none'}}>\n {text}\n </ChangeSegment>\n </DiffCard>\n )\n }\n\n if (segment.action === 'removed') {\n return (\n <DiffCard\n annotation={segment.annotation}\n as={RoundedCard}\n disableHoverEffect\n tooltip={{description: t('changes.removed-label')}}\n >\n <ChangeSegment as=\"del\">{text}</ChangeSegment>\n </DiffCard>\n )\n }\n\n return (\n <Card as=\"span\" radius={2} style={{display: 'inline'}}>\n {text}\n </Card>\n )\n}\n\n/** @internal */\nexport function DiffString(props: {diff: StringDiff}) {\n const {diff} = props\n\n return (\n <>\n {(diff.segments || []).map((segment, segmentIndex) => (\n <DiffStringSegment\n // oxlint-disable-next-line no-array-index-key\n key={segmentIndex}\n segment={segment}\n />\n ))}\n </>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst StringWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n white-space: pre-wrap;\n`\n\nexport const StringPreview: FieldPreviewComponent<string> = (props) => {\n const {value} = props\n\n return (\n <Box as={StringWrapper} paddingX={2} paddingY={1}>\n {value}\n </Box>\n )\n}\n","import {styled} from 'styled-components'\n\nimport {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {DiffString} from '../../../diff/components/DiffString'\nimport {type DiffComponent, type StringDiff} from '../../../types'\nimport {StringPreview} from '../preview/StringPreview'\n\nconst StringWrapper = styled.div`\n white-space: pre-wrap;\n word-wrap: break-word;\n`\n\nexport const StringFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n const {options} = schemaType\n\n if (options?.list) {\n // When the string is considered to be an \"enum\", don't show individual\n // string segment changes, rather treat is as a \"from -> to\" diff\n return <DiffFromTo diff={diff} previewComponent={StringPreview} schemaType={schemaType} />\n }\n\n return (\n <StringWrapper>\n <DiffString diff={diff} />\n </StringWrapper>\n )\n}\n","import {type DiffComponent, type DiffComponentOptions} from '../../types'\nimport {BooleanFieldDiff} from '../../types/boolean/diff/BooleanFieldDiff'\nimport {DatetimeFieldDiff} from '../../types/datetime/diff/DatetimeFieldDiff'\nimport {FileFieldDiff} from '../../types/file/diff/FileFieldDiff'\nimport {ImageFieldDiff} from '../../types/image/diff/ImageFieldDiff'\nimport {NumberFieldDiff} from '../../types/number/diff/NumberFieldDiff'\nimport {PTDiff} from '../../types/portableText/diff/PTDiff'\nimport {ReferenceFieldDiff} from '../../types/reference/diff/ReferenceFieldDiff'\nimport {SlugFieldDiff} from '../../types/slug/diff/SlugFieldDiff'\nimport {StringFieldDiff} from '../../types/string/diff/StringFieldDiff'\n\nexport const defaultComponents: Record<\n string,\n DiffComponent<any> | DiffComponentOptions<any> | undefined\n> = {\n block: PTDiff,\n boolean: {component: BooleanFieldDiff, showHeader: false},\n date: DatetimeFieldDiff,\n datetime: DatetimeFieldDiff,\n file: FileFieldDiff,\n image: ImageFieldDiff,\n number: NumberFieldDiff,\n reference: ReferenceFieldDiff,\n crossDatasetReference: ReferenceFieldDiff,\n slug: SlugFieldDiff,\n string: StringFieldDiff,\n}\n","import {type ArraySchemaType, type ObjectSchemaType, type SchemaType} from '@sanity/types'\nimport {type ComponentType} from 'react'\n\nimport {diffResolvers} from '../../TODO'\nimport {type Diff, type DiffComponent, type DiffComponentOptions} from '../../types'\nimport {defaultComponents} from './defaultComponents'\n\n/** @internal */\nexport function resolveDiffComponent<D extends Diff = any>(\n type: SchemaType,\n parentSchemaType?: ArraySchemaType | ObjectSchemaType,\n): DiffComponent<D> | DiffComponentOptions | undefined {\n let itType: SchemaType | undefined = type\n\n while (itType) {\n const resolved =\n itType?.components?.diff ||\n tryResolve(itType, parentSchemaType) ||\n defaultComponents[itType.name]\n\n if (resolved) {\n return resolved as DiffComponent<any>\n }\n\n itType = itType.type\n }\n\n const isDateType = ['date', 'datetime'].includes(type.name)\n\n // The date and datetime has the same jsonType as string, but we want to use\n // a different default component for them. Therefore, we use the name of the\n // type instead of the jsonType for these types.\n const defaultComponentKey = isDateType ? type.name : type.jsonType\n\n return defaultComponents[defaultComponentKey]\n}\n\nfunction tryResolve(\n schemaType: SchemaType,\n parentSchemaType?: ArraySchemaType | ObjectSchemaType,\n): DiffComponent<any> | DiffComponentOptions | undefined {\n const resolvers = diffResolvers\n\n let resolved: ComponentType | DiffComponentOptions | undefined\n\n for (const resolver of resolvers) {\n if (typeof resolver !== 'function') {\n console.error('Diff component resolver is not a function: ', resolver)\n continue\n }\n\n resolved = resolver({schemaType, parentSchemaType})\n\n if (resolved) {\n return resolved as DiffComponent\n }\n }\n return undefined\n}\n","import {isArraySchemaType, type SchemaType} from '@sanity/types'\nimport get from 'lodash-es/get.js'\n\nexport function getOption(type: SchemaType, optionName: string) {\n return get(type.options, optionName)\n}\n\nconst PSEUDO_OBJECTS = ['array', 'file', 'image', 'reference', 'slug']\nconst HIDDEN_FIELDS = ['asset', 'crop', 'hotspot', '_ref', '_weak', 'media']\nconst NO_LEVEL_LAYOUTS = ['tags']\nconst NO_LEVEL_TYPES = ['slug']\n\nexport function getTypeChain(type: SchemaType | undefined, visited: Set<SchemaType>): SchemaType[] {\n if (!type) return []\n if (visited.has(type)) return []\n\n visited.add(type)\n\n const next = type.type ? getTypeChain(type.type, visited) : []\n return [type, ...next]\n}\n\nexport function getFieldLevel(schemaType: SchemaType, currentLevel: number) {\n return isArraySchemaType(schemaType)\n ? getArrayFieldLevel(schemaType, currentLevel)\n : getObjectFieldLevel(schemaType, currentLevel)\n}\n\nfunction getObjectFieldLevel(schemaType: SchemaType, currentLevel: number): number {\n const {type, options} = schemaType\n const typeIfRelevant = asType(type, PSEUDO_OBJECTS)\n const fields = schemaType?.jsonType === 'object' ? schemaType.fields : undefined\n\n const typeName = typeIfRelevant?.name || ''\n\n if (NO_LEVEL_TYPES.includes(typeName)) {\n return 0\n }\n\n const isPseudoObject = PSEUDO_OBJECTS.includes(typeName)\n const hasVisibleFields = (fields?.filter((f) => !HIDDEN_FIELDS.includes(f.name)).length ?? 0) > 0\n const hasListOptions = (options?.list?.length ?? 0) > 0\n\n if (hasVisibleFields || hasListOptions || !isPseudoObject) {\n return currentLevel\n }\n\n return 0\n}\n\nfunction getArrayFieldLevel(schemaType: SchemaType, currentLevel: number): number {\n const {options} = schemaType\n\n const hasListOptions = (options?.list || [])?.length > 0\n const isNoLevelLayout = NO_LEVEL_LAYOUTS.includes(options?.layout || '')\n\n if (hasListOptions && !isNoLevelLayout) {\n return currentLevel\n }\n\n return 0\n}\n\nfunction asType(\n schemaType: SchemaType | undefined,\n asOneOfTypes: string[],\n): SchemaType | undefined {\n if (schemaType?.name && asOneOfTypes.includes(schemaType?.name)) {\n return schemaType\n }\n if (!schemaType) {\n return undefined\n }\n return asType(schemaType.type, asOneOfTypes)\n}\n","import {isKeyedObject, type KeyedObject, type Path, type PathSegment} from '@sanity/types'\nimport {toString} from '@sanity/util/paths'\n\nimport {isRecord} from '../../util/isRecord'\n\n/**\n * @internal\n */\nexport interface PathSegmentWithType {\n segment: number | string\n type: string\n}\n\n/**\n * @internal\n */\nexport type PathWithTypes = PathSegmentWithType[]\n\n/**\n * @internal\n */\nexport interface FlattenOptions {\n /**\n * When compact mode is switched on, object and array fields will not be yielded. They will still\n * be iterated, and their descendant nodes that are primitive types will be yielded.\n */\n compact?: boolean\n}\n\nexport type FlattenedPair = [\n flatPath: string,\n value: unknown,\n context: {\n /**\n * The node's path as an array.\n */\n flatPathArray: Path\n\n /**\n * The node's path as an array, enriched with the content type found at each segment.\n */\n flatPathArrayWithTypes: PathWithTypes\n },\n]\n\n/**\n * Flatten a Sanity object, yielding a `[flatPath: string, value: unknown]` tuple for every\n * descendant node, found at any depth.\n *\n * This is very similar to `Object.entries`, but it flattens the object and produces a JSONMatch\n * path that reflects the full path of each descendant node.\n *\n * Given the object:\n *\n * ```ts\n * {\n * x: {\n * y: 'z'\n * }\n * }\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * ['x', { y: 'z' }] // Skipped when operating in compact mode.\n * ['x.y', 'z']\n * ```\n *\n * @internal\n */\nexport function* flattenObject(\n object: Record<string, unknown>,\n {compact = false}: FlattenOptions = {},\n path: Path = [],\n pathWithTypes: PathWithTypes = [],\n): Generator<FlattenedPair> {\n if (path.length !== 0 && !compact) {\n yield [\n toString(path),\n object,\n {\n flatPathArray: path,\n flatPathArrayWithTypes: pathWithTypes,\n },\n ]\n }\n\n for (const [key, value] of Object.entries(object)) {\n const currentPath = path.concat(key)\n\n const currentPathWithTypes = pathWithTypes.concat({\n segment: key,\n type: readType(value),\n })\n\n if (Array.isArray(value)) {\n yield* flattenArray(value, {compact}, currentPath, currentPathWithTypes)\n continue\n }\n\n if (typeof value === 'object' && value !== null) {\n if (isRecord(value)) {\n yield* flattenObject(value, {compact}, currentPath, currentPathWithTypes)\n }\n continue\n }\n\n yield [\n toString(currentPath),\n value,\n {\n flatPathArray: currentPath,\n flatPathArrayWithTypes: currentPathWithTypes,\n },\n ]\n }\n}\n\n/**\n * Flatten a Sanity array, yielding a `[flatPath: string, value: unknown]` tuple for every\n * descendant node, found at any depth.\n *\n * This is very similar to `Array.prototype.entries`, but it flattens the array and produces a\n * JSONMatch path that reflects the full path of each descendant node.\n *\n * Given an array of primitives:\n *\n * ```ts\n * ['a', 'b']\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * ['[0]', 'a']\n * ['[1]', 'b']\n * ```\n *\n * Given an array of objects:\n *\n * ```ts\n * [\n * { _key: 'a' },\n * { _key: 'b' },\n * ]\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * [\n * '[_key==\"a\"]',\n * { '_key': 'a' },\n * ]\n * [\n * '[_key==\"a\"]._key',\n * 'a',\n * ]\n * [\n * '[_key==\"b\"]',\n * { '_key': 'b' },\n * ]\n * [\n * '[_key==\"b\"]._key',\n * 'b',\n * ]\n * ```\n *\n * @internal\n */\nexport function* flattenArray(\n array: (KeyedObject | string | number | boolean | null | undefined)[],\n {compact = false}: FlattenOptions = {},\n path: Path = [],\n pathWithTypes: PathWithTypes = [],\n): Generator<FlattenedPair> {\n if (path.length !== 0 && !compact) {\n yield [\n toString(path),\n array,\n {\n flatPathArray: path,\n flatPathArrayWithTypes: pathWithTypes,\n },\n ]\n }\n\n for (const [index, value] of array.entries()) {\n if (Array.isArray(value)) {\n // Arrays cannot be direct children of arrays.\n continue\n }\n\n if (typeof value === 'object' && value !== null) {\n if (isKeyedObject(value)) {\n yield* flattenObject(\n value,\n {compact},\n path.concat({_key: value._key}),\n pathWithTypes.concat({\n segment: value._key,\n type: readType(value),\n }),\n )\n }\n continue\n }\n\n const currentPath = path.concat(index)\n\n const currentPathWithTypes = pathWithTypes.concat({\n segment: index,\n type: readType(value),\n })\n\n yield [\n toString(currentPath),\n value,\n {\n flatPathArray: currentPath,\n flatPathArrayWithTypes: currentPathWithTypes,\n },\n ]\n }\n}\n\nfunction readType(value: unknown): string {\n if (isRecord(value) && '_type' in value && typeof value._type === 'string') {\n return value._type\n }\n\n if (Array.isArray(value)) {\n return 'array'\n }\n\n return typeof value\n}\n\n/**\n * @internal\n */\nexport function normalizePathSegment(\n segment: PathSegment | PathSegmentWithType,\n): PathSegmentWithType | {segment: PathSegment; type?: never} {\n if (typeof segment === 'object' && 'type' in segment) {\n return segment\n }\n\n return {\n segment,\n }\n}\n","import {\n isArraySchemaType,\n isObjectSchemaType,\n type PathSegment,\n type SchemaType,\n} from '@sanity/types'\n\nimport {getTypeChain} from '../../form/studio/inputResolver/helpers'\nimport {normalizePathSegment, type PathSegmentWithType} from './flatten'\n\n/**\n * Extract the schema types that lead to the provided path.\n *\n * For each segment of the provided path, the corresponding schema type is yielded.\n *\n * If any path segment is ambiguous (e.g. part of a polymorphic array), a `PathSegmentWithType`\n * segment must be provided instead. The introspection process will select the schema type that\n * matches the specified type.\n *\n * @internal\n */\nexport function* introspectSchema(\n schemaType: SchemaType | undefined,\n path: (PathSegment | PathSegmentWithType)[],\n cache: WeakMap<SchemaType, Record<string, SchemaType>> = new WeakMap(),\n fullyQualifiedPath: (PathSegment | PathSegmentWithType)[] = [],\n): Generator<SchemaType> {\n const [head, ...tail] = path\n\n if (typeof schemaType === 'undefined') {\n return\n }\n\n if (typeof head === 'undefined') {\n return\n }\n\n const nextFullyQualifiedPath = fullyQualifiedPath.concat(head)\n const cacheKey = JSON.stringify(nextFullyQualifiedPath)\n let cachedSchemaType = cache.get(schemaType)\n\n if (typeof cachedSchemaType === 'undefined') {\n cachedSchemaType = {}\n cache.set(schemaType, cachedSchemaType)\n }\n\n const cachedPath = cachedSchemaType?.[cacheKey]\n const {segment: headSegment, type: headType} = normalizePathSegment(head)\n\n let headSchemaType: SchemaType | undefined\n\n if (typeof cachedPath !== 'undefined') {\n headSchemaType = cachedPath\n } else {\n if (isObjectSchemaType(schemaType)) {\n headSchemaType = schemaType.fields.find((field) => field.name === headSegment)?.type\n }\n\n if (isArraySchemaType(schemaType)) {\n if (schemaType.of.length === 0) {\n throw new Error(\n `Array schema at segment \\`${JSON.stringify(headSegment)}\\` has no constituent types`,\n )\n }\n\n if (schemaType.of.length === 1) {\n headSchemaType = schemaType.of[0]\n } else {\n if (typeof headType === 'undefined') {\n throw new Error(\n `No type hint provided for polymorphic array segment: \\`${JSON.stringify(headSegment)}\\``,\n )\n }\n\n headSchemaType = schemaType.of.find((type) => {\n const typeChain = getTypeChain(type, new Set())\n return typeChain.some(({name}) => name === headType)\n })\n }\n }\n\n if (typeof headSchemaType === 'undefined') {\n throw new Error(`Could not resolve schema segment: \\`${JSON.stringify(headSegment)}\\``)\n }\n\n cachedSchemaType[cacheKey] = headSchemaType\n }\n\n yield headSchemaType\n yield* introspectSchema(headSchemaType, tail, cache, nextFullyQualifiedPath)\n}\n","import {\n isArrayOfObjectsSchemaType,\n isArrayOfPrimitivesSchemaType,\n isObjectSchemaType,\n} from '@sanity/types'\n\nimport {\n type ArrayOfPrimitivesFormNode,\n type ArrayOfObjectsFormNode,\n type BaseFormNode,\n type ObjectFormNode,\n} from './nodes'\n\n/** @internal */\nexport function isObjectFormNode(formNode: BaseFormNode): formNode is ObjectFormNode {\n return isObjectSchemaType(formNode.schemaType)\n}\n/** @internal */\nexport function isArrayOfObjectsFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfObjectsFormNode {\n return isArrayOfObjectsSchemaType(formNode.schemaType)\n}\n\n/** @internal */\nexport function isArrayOfPrimitivesFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfPrimitivesFormNode {\n return isArrayOfPrimitivesSchemaType(formNode.schemaType)\n}\n","import {type Path} from '@sanity/types'\nimport {type Observable, concatWith, filter, from, map, merge, mergeMap, of, switchMap} from 'rxjs'\n\nimport {\n isArrayOfObjectsFormNode,\n isArrayOfPrimitivesFormNode,\n isObjectFormNode,\n} from '../../form/store/types/asserters'\nimport {\n type ArrayOfObjectsItemMember,\n type ArrayOfObjectsMember,\n type ArrayOfPrimitivesItemMember,\n type ArrayOfPrimitivesMember,\n type FieldMember,\n} from '../../form/store/types/members'\nimport {type BaseFormNode, type ObjectArrayFormNode} from '../../form/store/types/nodes'\nimport {type FormState} from '../../form/store/useFormState'\n\ntype Member = FieldMember | ArrayOfObjectsItemMember | ArrayOfPrimitivesItemMember\n\ntype MemberAtPath = [path: Path, member: Member]\n\ninterface Context {\n groups?: FormState['groups']\n members: FormState['_allMembers'] | ArrayOfObjectsMember[] | ArrayOfPrimitivesMember[]\n}\n\n/**\n * Read form members in the order they appear, accounting for groups. If a field\n * appears in multiple groups, it'll be emitted each time it appears.\n *\n * Each member is emitted as a `[path, member]` tuple.\n *\n * This can be used in operations that derive state based on the way form\n * members are presented in the document editor. For example, to create a\n * navigable outline of the form.\n *\n * @internal\n */\nexport function readOrderedFormMembers({groups, members = []}: Context): Observable<MemberAtPath> {\n const hasGroups = typeof groups !== 'undefined'\n\n const grouplessMembers = from(members).pipe(\n filter(isFieldMember),\n filter(({groups: memberGroups}) => {\n if (typeof groups === 'undefined') {\n return true\n }\n\n return !groups.some((group) => memberGroups.some((memberGroup) => memberGroup === group.name))\n }),\n )\n\n const source = hasGroups\n ? from(groups).pipe(\n switchMap((group) =>\n from(members).pipe(\n filter(isFieldMember),\n filter(({groups: memberGroups}) => memberGroups.includes(group.name)),\n ),\n ),\n )\n : from(members)\n\n return merge(grouplessMembers, source).pipe(\n filter(isFieldOrArrayMember),\n map((member) => {\n const subject = selectSubject(member)\n return [subject.path, member]\n }),\n mergeMap<MemberAtPath, Observable<MemberAtPath>>((memberAtPath) => {\n const [, member] = memberAtPath\n const subject = selectSubject(member)\n\n if (isObjectFormNode(subject)) {\n return of(memberAtPath).pipe(\n concatWith(\n readOrderedFormMembers({\n groups: subject.groups,\n members: subject._allMembers,\n }),\n ),\n )\n }\n\n if (isArrayOfObjectsFormNode(subject) || isArrayOfPrimitivesFormNode(subject)) {\n return of(memberAtPath).pipe(\n concatWith(\n readOrderedFormMembers({\n members: subject.members,\n }),\n ),\n )\n }\n\n return of(memberAtPath)\n }),\n )\n}\n\nfunction selectSubject(member: Member): BaseFormNode | ObjectArrayFormNode {\n return member.kind === 'field' ? member.field : member.item\n}\n\nfunction isFieldMemberLike(maybeFieldMemberLike: unknown): maybeFieldMemberLike is {kind: string} {\n return (\n typeof maybeFieldMemberLike === 'object' &&\n maybeFieldMemberLike !== null &&\n 'kind' in maybeFieldMemberLike &&\n typeof maybeFieldMemberLike.kind === 'string'\n )\n}\n\nfunction isFieldMember(maybeFieldMember: unknown): maybeFieldMember is FieldMember {\n return isFieldMemberLike(maybeFieldMember) && maybeFieldMember.kind === 'field'\n}\n\nfunction isFieldOrArrayMember(\n maybeFieldOrArrayMember: unknown,\n): maybeFieldOrArrayMember is FieldMember | ArrayOfObjectsItemMember | ArrayOfPrimitivesItemMember {\n return (\n isFieldMemberLike(maybeFieldOrArrayMember) &&\n ['field', 'item'].includes(maybeFieldOrArrayMember.kind)\n )\n}\n","import {\n type ObjectSchemaType,\n type PathSegment,\n type SchemaType,\n isArrayOfPrimitivesSchemaType,\n isArrayOfStringsSchemaType,\n isArraySchemaType,\n isObjectSchemaType,\n} from '@sanity/types'\nimport {fromString, toString} from '@sanity/util/paths'\nimport {\n type Observable,\n catchError,\n combineLatest,\n filter,\n from,\n map,\n mergeMap,\n of,\n reduce,\n switchMap,\n toArray,\n} from 'rxjs'\n\nimport {resolveDiffComponent} from '../field/diff/resolve/resolveDiffComponent'\nimport {type DiffComponent, type DiffComponentOptions} from '../field/types'\nimport {type FormState} from '../form/store/useFormState'\nimport {\n type DivergenceNavigatorState,\n type ReachableDivergence,\n type ReachableDivergenceAtPath,\n} from './divergenceNavigator'\nimport {type Divergence} from './readDocumentDivergences'\nimport {introspectSchema} from './utils/introspectSchema'\nimport {readOrderedFormMembers} from './utils/readOrderedFormMembers'\n\n/**\n * Transpose a collated set of divergences onto a given schema type.\n *\n * This process:\n *\n * - Omits divergences that occur at paths missing from the schema.\n * - Omits divergences that descend \"composite\" nodes:\n * - Nodes that have a dedicated diff component, such as references.\n * - Nodes whose descendants have *all* been unset.\n * - Omits unaddressable divergences, unless they affect \"composite\" nodes.\n * - Resolves each divergence's diff component.\n * - Orders divergences to match the way the form renders them.\n *\n * @internal\n */\nexport function transposeSchema(\n divergences: Record<string, Divergence>,\n schemaType: ObjectSchemaType,\n formState: Pick<FormState, 'groups' | '_allMembers'>,\n): Observable<{\n divergences: ReachableDivergenceAtPath[]\n divergencesByNode: DivergenceNavigatorState['divergencesByNode']\n}> {\n return readOrderedFormMembers({groups: formState.groups, members: formState._allMembers})\n .pipe(\n map(([path]) => {\n const pathString = toString(path)\n const divergenceAtPath = divergences[pathString]\n return [pathString, divergenceAtPath] satisfies [path: string, divergence: Divergence]\n }),\n filter(([, divergence]) => typeof divergence !== 'undefined'),\n filter(([, divergence]) => divergence.status === 'unresolved'),\n switchMap(([path, divergence]) =>\n combineLatest({\n path: of(path),\n divergence: of(divergence),\n pathSchemaTypes: from(\n introspectSchema(\n schemaType,\n divergence.snapshots.subjectHead?.pathWithTypes ??\n divergence.snapshots.upstreamHead?.pathWithTypes ??\n fromString(path),\n ),\n ).pipe(\n toArray(),\n // Divergences can affect fields that aren't present in the schema. In this scenario,\n // `introspectSchema` throws an error. This behaviour is expected, because divergences are\n // computed by comparing raw document data.\n //\n // When this occurs, the divergence is x and a warning is logged.\n catchError((error) => {\n console.warn(error)\n return of([])\n }),\n ),\n }),\n ),\n filter(isSupportedNode),\n )\n .pipe(\n reduce<\n {\n path: string\n pathSchemaTypes: SchemaType[]\n divergence: Divergence\n },\n Record<string, ReachableDivergence>\n >((transposed, {path, pathSchemaTypes, divergence}) => {\n const pathSegments = fromString(path)\n const divergenceSchemaType = pathSchemaTypes.at(-1)\n\n if (typeof divergenceSchemaType === 'undefined') {\n return transposed\n }\n\n let compositeNodePath: PathSegment[] | undefined\n let compositeNodeDiffComponent: DiffComponentOptions | DiffComponent<any> | undefined\n let compositeNodeSchemaType: SchemaType | undefined\n\n for (let index = 0; index < pathSegments.length; index++) {\n const currentPathSegments = pathSegments.slice(0, index + 1)\n const currentSchemaType = pathSchemaTypes[index]\n const parentSchemaType = pathSchemaTypes[index - 1]\n\n if (typeof currentSchemaType === 'undefined') {\n break\n }\n\n const diffComponent =\n isArraySchemaType(currentSchemaType) || isObjectSchemaType(currentSchemaType)\n ? resolveDiffComponent(\n currentSchemaType,\n isObjectSchemaType(parentSchemaType) || isArraySchemaType(parentSchemaType)\n ? parentSchemaType\n : undefined,\n )\n : undefined\n\n if (typeof diffComponent !== 'undefined') {\n compositeNodePath = currentPathSegments\n compositeNodeDiffComponent = diffComponent\n compositeNodeSchemaType = currentSchemaType\n break\n }\n }\n\n if (\n typeof compositeNodePath !== 'undefined' &&\n typeof compositeNodeSchemaType !== 'undefined' &&\n typeof compositeNodeDiffComponent !== 'undefined'\n ) {\n transposed[toString(compositeNodePath)] ??= {\n ...divergence,\n path: toString(compositeNodePath),\n isComposite: true,\n divergences: [],\n schemaType: compositeNodeSchemaType,\n diffComponent: compositeNodeDiffComponent,\n }\n\n transposed[toString(compositeNodePath)].divergences.push([divergence.path, divergence])\n return transposed\n }\n\n const parentSchemaType = pathSchemaTypes.at(-2)\n\n transposed[path] ??= {\n ...divergence,\n isComposite: false,\n divergences: [],\n schemaType: divergenceSchemaType,\n diffComponent: resolveDiffComponent(\n divergenceSchemaType,\n isObjectSchemaType(parentSchemaType) || isArraySchemaType(parentSchemaType)\n ? parentSchemaType\n : undefined,\n ),\n }\n\n transposed[path].divergences.push([divergence.path, divergence])\n return transposed\n }, {}),\n mergeMap((transposed) => from(Object.entries(transposed))),\n toArray(),\n map((reachableDivergences) => {\n const divergencesByNode = reachableDivergences.reduce<\n DivergenceNavigatorState['divergencesByNode']\n >((state, [path]) => {\n const pathSegments = fromString(path)\n\n for (let index = 0; index < pathSegments.length; index++) {\n const currentPathSegments = pathSegments.slice(0, index + 1)\n const currentPath = toString(currentPathSegments)\n\n state[currentPath] ??= 0\n state[currentPath]++\n }\n\n return state\n }, {})\n\n return {\n divergences: reachableDivergences,\n divergencesByNode,\n }\n }),\n )\n}\n\n/**\n * Check whether the UI is capable of rendering the provided divergence.\n *\n * The UI does not currently support:\n *\n * - Options inside an array list.\n * - Tags inside an array of tags.\n */\nfunction isSupportedNode({\n pathSchemaTypes,\n}: {\n path: string\n divergence: Divergence\n pathSchemaTypes: SchemaType[]\n}): boolean {\n const parentSchemaType = pathSchemaTypes.at(-2)\n\n const isArrayListOption =\n isArrayOfPrimitivesSchemaType(parentSchemaType) &&\n Array.isArray(parentSchemaType?.options?.list)\n\n const isArrayTag =\n (isArrayOfStringsSchemaType(parentSchemaType) &&\n parentSchemaType?.options &&\n parentSchemaType.options.layout === 'tags') ??\n false\n\n return !isArrayListOption && !isArrayTag\n}\n","import {type ObjectSchemaType, type Path, type SchemaType} from '@sanity/types'\nimport {fromString, startsWith, toString} from '@sanity/util/paths'\nimport pick from 'lodash-es/pick.js'\nimport {useCallback, useEffect, useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n type Observable,\n of,\n shareReplay,\n Subject,\n switchScan,\n} from 'rxjs'\n\nimport {type DiffComponent, type DiffComponentOptions} from '../field/types'\nimport {type FormState} from '../form/store/useFormState'\nimport {useWorkspace} from '../studio/workspace'\nimport {type CollatedDocumentDivergencesState} from './collateDocumentDivergences'\nimport {type Divergence, type DivergenceAtPath} from './readDocumentDivergences'\nimport {transposeSchema} from './transposeSchema'\n\n/**\n * A divergence that has been transposed onto a schema type and that can be\n * reached in the document editor.\n *\n * @internal\n */\nexport type ReachableDivergence = Divergence & {\n /**\n * A composite divergence occurs when there is a divergence in a leaf node,\n * but it does not make sense to report it directly.\n *\n * A good example is when a divergence occurs in a reference field. It's not\n * useful to report the `_ref` id change directly, nor does it integrate\n * well with the document editor. Instead, the divergence is reported on the\n * reference field itself.\n *\n * Composite divergences are identified by checking whether they descend a\n * node that has a dedicated diff component.\n */\n isComposite: boolean\n /**\n * All of the divergences this reachable divergence is composed of.\n *\n * To perform an action (e.g. ignore or copy from upstream) on a composite\n * divergence, the action must be performed on all descendant divergences.\n */\n divergences: DivergenceAtPath[]\n diffComponent?: DiffComponent | DiffComponentOptions\n schemaType: SchemaType\n}\n\n/**\n * @internal\n */\nexport type ReachableDivergenceAtPath = [path: string, divergence: ReachableDivergence]\n\n/**\n * @internal\n */\nexport interface DivergenceNavigatorState {\n focusedDivergence: string | undefined\n previousDivergence: string | undefined\n nextDivergence: string | undefined\n state: CollatedDocumentDivergencesState['state']\n upstreamId: string | undefined\n /**\n * For iterating ancestors when copying changes from upstream.\n */\n allDivergences: DivergenceAtPath[]\n /**\n * For paging through all reachable divergences in the document.\n */\n divergences: ReachableDivergenceAtPath[]\n /**\n * For showing a summary of divergences occurring node-by-node, and allowing\n * the editor to focus the first divergence inside a node.\n */\n divergencesByNode: Record<string, number>\n}\n\n/**\n * @internal\n */\nexport interface DivergenceNavigator {\n /**\n * Focus the divergence at the provided path.\n */\n focusDivergence: (path: string) => void\n /**\n * Blur the divergence at the provided path.\n */\n blurDivergence: (path: string) => void\n /**\n * Blur the current focused divergence.\n */\n blurFocusedDivergence: () => void\n /**\n * The current state.\n */\n state: DivergenceNavigatorState\n}\n\ntype Action =\n | {\n type: 'FOCUS'\n context: {\n path: string\n }\n }\n | {\n type: 'BLUR'\n context: {\n path: string\n }\n }\n | {\n type: 'BLUR_FOCUSED'\n context?: never\n }\n | {\n type: 'READ_DIVERGENCES'\n context: {\n divergences: CollatedDocumentDivergencesState\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers'>\n }\n }\n\ninterface DivergenceNavigatorContext {\n divergences: Observable<CollatedDocumentDivergencesState>\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers' | 'value'>\n}\n\ninterface StateContext {\n divergences: CollatedDocumentDivergencesState\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers'>\n}\n\n/**\n * Transpose a set of divergences onto the provided schema type, and create the\n * state and functions necessary to render and navigate them.\n *\n * @internal\n */\nexport function useDivergenceNavigator({\n divergences,\n schemaType,\n formState,\n}: DivergenceNavigatorContext): DivergenceNavigator {\n const {\n advancedVersionControl: {enabled: advancedVersionControlEnabled},\n } = useWorkspace()\n\n const dispatch = useMemo(() => new Subject<Action>(), [])\n\n const schemaTypeContext = useMemo(\n () => new BehaviorSubject<ObjectSchemaType | undefined>(undefined),\n [],\n )\n useEffect(() => schemaTypeContext.next(schemaType), [schemaTypeContext, schemaType])\n\n const formStateContext = useMemo(\n () =>\n new BehaviorSubject<Pick<FormState, 'groups' | '_allMembers' | 'value'> | undefined>(\n undefined,\n ),\n [],\n )\n useEffect(() => formStateContext.next(formState), [formStateContext, formState])\n\n const context = useMemo<Observable<StateContext>>(() => {\n if (!advancedVersionControlEnabled) {\n return EMPTY\n }\n\n return combineLatest({\n divergences: divergences,\n schemaType: schemaTypeContext.pipe(filter((value) => typeof value !== 'undefined')),\n formState: formStateContext.pipe(\n filter((value) => typeof value !== 'undefined'),\n // Form state is used to map divergences to fields, and order them to\n // match the order fields and groups are rendered in the document\n // editor.\n //\n // However, form state also encapsulates current value, the focused\n // path, etc. and changes with every change to the displayed document\n // and interaction with the document editor.\n //\n // It's unnecessary to remap divergences every time the displayed\n // document or state, like the focus path, changes. Therefore, the\n // form state is only emitted when the displayed document id changes\n // (e.g. when an editor first opens a document, or when they switch to\n // a different version of a document).\n distinctUntilChanged((previous, current) => previous.value?._id === current.value?._id),\n map((state) => (state ? pick(state, ['groups', '_allMembers']) : state)),\n ),\n })\n }, [advancedVersionControlEnabled, divergences, schemaTypeContext, formStateContext])\n\n const readState = useMemo(() => createStateReducer({dispatch, context}), [dispatch, context])\n\n const focusDivergence: DivergenceNavigator['focusDivergence'] = useCallback(\n (path) => {\n dispatch.next({\n type: 'FOCUS',\n context: {\n path,\n },\n })\n },\n [dispatch],\n )\n\n const blurDivergence: DivergenceNavigator['blurDivergence'] = useCallback(\n (path) => {\n dispatch.next({\n type: 'BLUR',\n context: {\n path,\n },\n })\n },\n [dispatch],\n )\n\n const blurFocusedDivergence: DivergenceNavigator['blurFocusedDivergence'] = useCallback(() => {\n dispatch.next({\n type: 'BLUR_FOCUSED',\n })\n }, [dispatch])\n\n // Kept synchronous: `previousDivergence` / `nextDivergence` are the targets\n // the prev/next buttons pass to `focusDivergence`, so a deferred snapshot\n // could re-focus a stale neighbor instead of advancing during rapid\n // navigation.\n const state = useSyncObservable(readState, {\n focusedDivergence: undefined,\n previousDivergence: undefined,\n nextDivergence: undefined,\n upstreamId: undefined,\n state: 'pending',\n divergences: [],\n allDivergences: [],\n divergencesByNode: {},\n })\n\n return {\n state,\n focusDivergence,\n blurDivergence,\n blurFocusedDivergence,\n }\n}\n\n/**\n * Ensure the `focusedDivergence` path leads to an addressable divergence, and\n * set the previous and next divergence paths.\n *\n * This implementation allows users to cycle through divergences infinitely.\n */\nfunction withAddressablePaths(state: DivergenceNavigatorState): DivergenceNavigatorState {\n const focusedDivergenceIndex = state.divergences.findIndex(\n ([path]) => path === state.focusedDivergence,\n )\n\n return {\n ...state,\n focusedDivergence: focusedDivergenceIndex === -1 ? undefined : state.focusedDivergence,\n previousDivergence:\n typeof state.focusedDivergence === 'undefined'\n ? undefined\n : state.divergences.at(\n (focusedDivergenceIndex - 1 + state.divergences.length) % state.divergences.length,\n )?.[0],\n nextDivergence:\n typeof state.focusedDivergence === 'undefined'\n ? undefined\n : state.divergences.at((focusedDivergenceIndex + 1) % state.divergences.length)?.[0],\n }\n}\n\n/**\n * Check whether the currently focused divergence has been eliminated, or has\n * become resolved. When this occurs, the next divergence will be automatically\n * focused.\n */\nfunction shouldFocusNextDivergence(\n state: DivergenceNavigatorState,\n divergences: ReachableDivergenceAtPath[],\n): boolean {\n if (\n typeof state.focusedDivergence === 'undefined' ||\n typeof state.nextDivergence === 'undefined'\n ) {\n return false\n }\n\n const focusedDivergence = divergences.find(([path]) => path === state.focusedDivergence)?.[1]\n\n const shouldFocusNext =\n typeof focusedDivergence === 'undefined' || focusedDivergence.status === 'resolved'\n\n return shouldFocusNext\n}\n\nfunction createStateReducer({\n dispatch,\n context,\n}: {\n dispatch: Subject<Action>\n context: Observable<StateContext>\n}) {\n return merge(\n dispatch,\n context.pipe(\n map(\n (nextContext) =>\n ({\n type: 'READ_DIVERGENCES',\n context: nextContext,\n }) satisfies Action,\n ),\n ),\n ).pipe(\n switchScan<Action, DivergenceNavigatorState, Observable<DivergenceNavigatorState>>(\n (state, action) => {\n switch (action.type) {\n case 'READ_DIVERGENCES': {\n return transposeSchema(\n action.context.divergences.divergences,\n action.context.schemaType,\n action.context.formState,\n ).pipe(\n map(({divergences, divergencesByNode}) => {\n return withAddressablePaths({\n ...state,\n upstreamId: action.context.divergences.upstreamId,\n state: action.context.divergences.state,\n allDivergences: Object.entries(action.context.divergences.divergences),\n divergences,\n divergencesByNode,\n focusedDivergence: shouldFocusNextDivergence(state, divergences)\n ? state.nextDivergence\n : state.focusedDivergence,\n })\n }),\n )\n }\n case 'FOCUS': {\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: action.context.path,\n }),\n )\n }\n case 'BLUR': {\n if (typeof state.focusedDivergence === 'undefined') {\n return of(state)\n }\n\n if (action.context.path !== state.focusedDivergence) {\n return of(state)\n }\n\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: undefined,\n }),\n )\n }\n case 'BLUR_FOCUSED': {\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: undefined,\n }),\n )\n }\n default: {\n return of(state)\n }\n }\n },\n {\n focusedDivergence: undefined,\n previousDivergence: undefined,\n nextDivergence: undefined,\n upstreamId: undefined,\n state: 'pending',\n divergences: [],\n allDivergences: [],\n divergencesByNode: {},\n },\n ),\n shareReplay(1),\n )\n}\n\n/**\n * @internal\n */\nexport function selectDivergenceCount(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): number | undefined {\n return state?.divergencesByNode?.[toString(path)]\n}\n\n/**\n * Select divergence by path.\n *\n * @internal\n */\nexport function selectDivergence(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): ReachableDivergence | undefined {\n if (typeof state === 'undefined') {\n return undefined\n }\n\n return state.divergences\n .filter(([divergencePath]) => divergencePath === toString(path))\n .map(([, divergence]) => divergence)\n .at(0)\n}\n\n/**\n * Select first descendant divergence by path.\n *\n * @internal\n */\nexport function selectFirstDescendantDivergence(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): ReachableDivergence | undefined {\n return state?.divergences.find(([divergencePath]) =>\n startsWith(path, fromString(divergencePath)),\n )?.[1]\n}\n","import {useSyncObservable} from 'react-rx'\n\nimport {type TargetPerspective} from '../perspective/types'\nimport {type ReleasesReducerState} from '../releases/store/reducer'\nimport {useReleasesStore} from '../releases/store/useReleasesStore'\nimport {getReleaseDocumentIdFromReleaseId} from '../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getVersionFromId, isDraftId} from '../util/draftUtils'\n\ntype Result = Pick<ReleasesReducerState, 'error' | 'state'> & {\n release: TargetPerspective | undefined\n}\n\n/**\n * Determine the `TargetPerspective` (a release or variant name) that\n * corresponds with the provided document id by looking for its owner in the\n * known list of releases.\n *\n * @internal\n */\nexport function useVersionRelease(documentId: string | undefined): Result {\n const {state$: readReleasesState} = useReleasesStore()\n\n const releasesState = useSyncObservable(readReleasesState, {\n releases: new Map(),\n state: 'initialising',\n } satisfies ReleasesReducerState)\n\n if (typeof documentId === 'undefined') {\n return {\n release: undefined,\n state: 'initialising',\n }\n }\n\n const versionId = getVersionFromId(documentId)\n\n if (typeof versionId === 'undefined') {\n return {\n release: isDraftId(documentId) ? 'drafts' : 'published',\n state: 'loaded',\n }\n }\n\n // `release` falls back to the version id if the version is a member of an anonymous bundle.\n return {\n ...releasesState,\n release: releasesState?.releases.get(getReleaseDocumentIdFromReleaseId(versionId)) ?? versionId,\n }\n}\n","import {fromString} from '@sanity/util/paths'\n\nimport {type DivergenceEffect} from './readDocumentDivergences'\n\ninterface SelectEffectContext {\n /**\n * The value being transitioned from.\n */\n fromValue: unknown\n\n /**\n * The value being transitioned to.\n */\n toValue: unknown\n\n /**\n * The upstream node's parent value. This is used to infer whether the node is an array member.\n */\n upstreamParent: unknown\n\n /**\n * The path to the node, as a string.\n */\n path: string\n}\n\n/**\n * Infer the effect type that occurs when transitioning the value `fromValue` to the value `toValue`.\n *\n * @internal\n */\nexport function selectEffect({\n fromValue,\n toValue,\n upstreamParent,\n path,\n}: SelectEffectContext): Exclude<DivergenceEffect, 'move'> {\n if (\n fromString(path).at(-1) === '_type' &&\n typeof fromValue !== 'undefined' &&\n typeof toValue !== 'undefined' &&\n fromValue !== toValue\n ) {\n return 'changeObjectType'\n }\n\n if (typeof fromValue !== 'undefined' && typeof toValue === 'undefined') {\n return 'unset'\n }\n\n if (\n Array.isArray(upstreamParent) &&\n typeof fromValue === 'undefined' &&\n typeof toValue !== 'undefined'\n ) {\n return 'insert'\n }\n\n return 'set'\n}\n","import {fromString} from '@sanity/util/paths'\n\nimport {type DivergenceEffect} from './readDocumentDivergences'\n\ninterface SelectEffectFromHashContext {\n /**\n * The hash of the value being transitioned from.\n */\n fromHash: unknown\n\n /**\n * The hash of the value being transitioned to.\n */\n toHash: unknown\n\n /**\n * Whether the upstrean node's parent is an array. This is used to infer whether the node is an\n * array member.\n */\n upstreamParentIsArray: boolean\n\n /**\n * The path to the node, as a string.\n */\n path: string\n}\n\nconst UNDEFINED_SHA1 = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'\n\n/**\n * Infer the effect type that occurs when transitioning the value `fromValue` to the value `toValue`,\n * using the hash of the node's value.\n *\n * @internal\n */\nexport function selectEffectFromHash({\n fromHash,\n toHash,\n upstreamParentIsArray,\n path,\n}: SelectEffectFromHashContext): Exclude<DivergenceEffect, 'move'> {\n if (\n fromString(path).at(-1) === '_type' &&\n fromHash !== UNDEFINED_SHA1 &&\n toHash !== UNDEFINED_SHA1 &&\n fromHash !== toHash\n ) {\n return 'changeObjectType'\n }\n\n if (fromHash !== UNDEFINED_SHA1 && toHash === UNDEFINED_SHA1) {\n return 'unset'\n }\n\n if (upstreamParentIsArray && fromHash === UNDEFINED_SHA1 && toHash !== UNDEFINED_SHA1) {\n return 'insert'\n }\n\n return 'set'\n}\n","/**\n * @internal\n */\nexport type ResolutionMarker = [\n /**\n * The upstream revision at the time of resolution.\n *\n * This is used to determine whether any change has occurred to the upstream document since the\n * divergence was marked as resolved.\n */\n Revision: string,\n\n /**\n * The signature represents the node's value at the time of resolution.\n *\n * - For primitive nodes, it's the hash of node's upstream value at the time of resolution.\n * - For object array members, it's the position of the node in the upstream array at the time of\n * resolution.\n *\n * This is used to determine whether any change has occurred in the upstream node itself since the\n * divergence was marked as resolved.\n */\n Signature: string | number,\n]\n\n/**\n * @internal\n */\nexport type ResolutionMarkerAtPath = [path: string, resolutionMarker: ResolutionMarker]\n\n/**\n * @internal\n */\nexport function isDivergenceResolutionMarker(\n maybeDivergenceResolutionMarker: unknown,\n): maybeDivergenceResolutionMarker is ResolutionMarker {\n return (\n Array.isArray(maybeDivergenceResolutionMarker) &&\n maybeDivergenceResolutionMarker.length === 2 &&\n typeof maybeDivergenceResolutionMarker.at(0) === 'string' &&\n (typeof maybeDivergenceResolutionMarker.at(1) === 'string' ||\n typeof maybeDivergenceResolutionMarker.at(1) === 'number')\n )\n}\n","import {delayWhen, from, type MonoTypeOperatorFunction, pipe} from 'rxjs'\n\n/**\n * Delay an observable's emissions, allowing the browser to first complete other higher priority\n * work.\n *\n * @internal\n */\nexport function delayTask<Type>(): MonoTypeOperatorFunction<Type> {\n if (typeof window?.scheduler !== 'undefined') {\n const {scheduler} = window\n return delayWhen(() => from(scheduler.yield()))\n }\n\n if (typeof requestIdleCallback === 'function') {\n const idleCallback = new Promise((resolve) => requestIdleCallback(resolve))\n return delayWhen(() => from(idleCallback))\n }\n\n return pipe()\n}\n","import {lcs_dp as lcsDp} from '@algorithm.ts/lcs'\nimport {type KeyedObject} from '@sanity/types'\nimport intersection from 'lodash-es/intersection.js'\nimport {EMPTY, filter, from, map, type Observable, of, shareReplay, switchMap, toArray} from 'rxjs'\n\nimport {createMultiKeyWeakMap, type MultiKeyWeakMap} from '../../store/createMultiKeyWeakMap'\n\nlet cache: MultiKeyWeakMap | undefined\n\ntype MovesByKey = Record<string, number>\n\n/**\n * Identify objects that are present at a different postition in array B than in array A, preserving\n * the longest common subsequence shared by array A and B.\n *\n * For example, given arrays with the following keys:\n * A: a, b, c, d\n * B: b, c, d, a\n *\n * The only moved object is a, which has a position delta of 3.\n * The longest common subsequence is b, c, d. None of these objects have moved.\n */\nexport function findMovesInArrayOfObjects(\n a: KeyedObject[] | undefined,\n b: KeyedObject[] | undefined,\n): Observable<MovesByKey> {\n // If either arrays are nonexistent, there cannot be moved nodes.\n if (typeof a === 'undefined' || typeof b === 'undefined') {\n return EMPTY\n }\n\n cache ??= createMultiKeyWeakMap()\n const cached = cache.get<Observable<MovesByKey>>([a, b])\n\n if (typeof cached !== 'undefined') {\n return cached\n }\n\n const {intersectingKeys, aIntersectingKeys, bIntersectingKeys} = findIntersectingKeys(a, b)\n\n const readMoves = of([aIntersectingKeys, bIntersectingKeys]).pipe(\n map(([aIntersecting, bIntersecting]) =>\n lcsDp(\n aIntersecting.length,\n bIntersecting.length,\n (x, y) => aIntersecting[x] === bIntersecting[y],\n ),\n ),\n map((lcs) => lcs.map(([aIndex]) => aIntersectingKeys[aIndex])),\n switchMap((lcsKeys) => {\n if (intersectingKeys.size < 3) {\n return from(lcsKeys)\n }\n if (lcsKeys.length === 1) {\n return from(intersectingKeys)\n }\n return from(intersectingKeys).pipe(filter((_key) => !lcsKeys.includes(_key)))\n }),\n map((_key) => [_key, bIntersectingKeys.indexOf(_key) - aIntersectingKeys.indexOf(_key)]),\n filter(([, positionDelta]) => positionDelta !== 0),\n toArray(),\n map(Object.fromEntries),\n shareReplay(1),\n )\n\n cache.set([a, b], readMoves)\n return readMoves\n}\n\ntype FindIntersectingKeys = (\n a: KeyedObject[],\n b: KeyedObject[],\n) => {\n intersectingKeys: Set<string>\n aIntersectingKeys: string[]\n bIntersectingKeys: string[]\n}\n\nconst findIntersectingKeys: FindIntersectingKeys = (a, b) => {\n if ('intersection' in Set.prototype) {\n return findIntersectingKeysUsingSet(a, b)\n }\n\n return findIntersectingKeysUsingArray(a, b)\n}\n\nconst findIntersectingKeysUsingSet: FindIntersectingKeys = (a, b) => {\n const aKeys = new Set(a.map(({_key}) => _key))\n const bKeys = new Set(b.map(({_key}) => _key))\n\n // @ts-expect-error - `intersection()` newer than target envs, but is feature-tested (array fallback)\n const intersectingKeys = aKeys.intersection(bKeys)\n\n const [aIntersectingKeys, bIntersectingKeys] = [a, b].map((subject) =>\n subject.filter(({_key}) => intersectingKeys.has(_key)).map(({_key}) => _key),\n )\n\n return {\n intersectingKeys,\n aIntersectingKeys,\n bIntersectingKeys,\n }\n}\n\nconst findIntersectingKeysUsingArray: FindIntersectingKeys = (a, b) => {\n const aKeys = a.map(({_key}) => _key)\n const bKeys = b.map(({_key}) => _key)\n\n const intersectingKeys = intersection(aKeys, bKeys)\n\n const [aIntersectingKeys, bIntersectingKeys] = [a, b].map((subject) =>\n subject.filter(({_key}) => intersectingKeys.includes(_key)).map(({_key}) => _key),\n )\n\n return {\n intersectingKeys: new Set(intersectingKeys),\n aIntersectingKeys,\n bIntersectingKeys,\n }\n}\n","import stringify from 'json-stable-stringify'\n\nlet textEncoder: TextEncoder | undefined\n\n/**\n * Produce a stable hash of any data that can be represented in JSON.\n */\nexport function hashData(data: unknown): Promise<string> {\n textEncoder ??= new TextEncoder()\n\n if (typeof data === 'string') {\n return hash(textEncoder.encode(data))\n }\n\n if (typeof data === 'number' || typeof data === 'boolean') {\n return hash(textEncoder.encode(String(data)))\n }\n\n return hash(textEncoder.encode(stringify(data)))\n}\n\nasync function hash(data: Uint8Array<ArrayBuffer>) {\n const digest = await globalThis.crypto.subtle.digest('SHA-1', data)\n return hex(new Uint8Array(digest))\n}\n\nasync function hex(data: Uint8Array) {\n return Array.from(data)\n .map((i) => i.toString(16).padStart(2, '0'))\n .join('')\n}\n","import {\n isKeyedObject,\n isKeySegment,\n type KeyedObject,\n type Path,\n type SanityDocument,\n} from '@sanity/types'\nimport {fromString, startsWith, toString} from '@sanity/util/paths'\nimport get from 'lodash-es/get.js'\nimport {\n combineLatest,\n EMPTY,\n filter,\n first,\n from,\n map,\n merge,\n mergeMap,\n type Observable,\n of,\n type OperatorFunction,\n pipe,\n reduce,\n switchMap,\n takeWhile,\n tap,\n toArray,\n zipWith,\n} from 'rxjs'\n\nimport {isRecord} from '../util/isRecord'\nimport {selectEffect} from './selectEffect'\nimport {selectEffectFromHash} from './selectEffectFromHash'\nimport {isDivergenceResolutionMarker, type ResolutionMarker} from './types/ResolutionMarker'\nimport {delayTask} from './utils/delayTask'\nimport {findMovesInArrayOfObjects} from './utils/findMovesInArrayOfObjects'\nimport {type FlattenedPair, flattenObject, type PathWithTypes} from './utils/flatten'\nimport {hashData} from './utils/hashData'\n\n/**\n * @internal\n */\nexport interface DivergenceResolution {\n _key: string\n resolutionMarker: ResolutionMarker\n}\n\n/**\n * @internal\n */\nexport interface FindDivergencesContext {\n upstreamHead: SanityDocument\n subjectHead: SanityDocument\n upstreamAtFork: SanityDocument\n resolutions?: DivergenceResolution[]\n}\n\ntype DivergenceStatus = 'unresolved' | 'resolved'\n\ntype SnapshotType = 'subjectHead' | 'upstreamHead' | 'upstreamAtFork'\n\ntype SnapshotsByType = Record<\n SnapshotType,\n | undefined\n | {\n value: unknown\n\n /**\n * If the node is a direct descendant of an array, `parentArray` can be used to access all of\n * the parent array's descendants. This is used to determine the movement of array nodes.\n */\n parentArray?: KeyedObject[] | unknown[]\n\n /**\n * If the node is a direct descendant of an object, this can be used to determine the parent\n * object's type. This is used to determine objects whose type has changed.\n */\n parentObjectType?: string\n\n /**\n * The node's path as an array, enriched with the content type found at each segment.\n */\n pathWithTypes: PathWithTypes\n }\n>\n\ntype DivergenceDetectionStrategy = 'sinceFork' | 'sinceResolution'\n\n/**\n * @internal\n */\nexport type DivergenceEffect = 'unset' | 'set' | 'insert' | 'move' | 'changeObjectType'\n\n/**\n * @internal\n */\nexport type BaseDivergence = {\n snapshots: SnapshotsByType\n documentType: string\n\n /**\n * Whether the divergence is addressable.\n *\n * Divergences that occur at leaf primitive nodes are addressable. Addressable divergences can be\n * marked as resolved.\n */\n isAddressable: boolean\n\n /**\n * The type of operation that occurred upstream to cause the divergence.\n */\n effect?: DivergenceEffect\n\n /**\n * The upstream document id.\n */\n documentId: string\n\n /**\n * The subject document id.\n */\n subjectId: string\n\n /**\n * The upstream revision that caused the divergence.\n */\n sinceRevisionId: string\n\n /**\n * Whether the divergence has been resolved or not.\n */\n status: DivergenceStatus\n\n /**\n * The stringified path to the divergence in the document.\n *\n * TODO: It'd be more efficient to provide this as an array to avoid repeatedly converting it to\n * and from a string.\n */\n path: string\n}\n\n/**\n * @internal\n */\nexport type Divergence = BaseDivergence &\n (\n | {\n effect: Exclude<DivergenceEffect, 'move'>\n }\n | {\n effect: Extract<DivergenceEffect, 'move'>\n\n /**\n * The position of the item in the upstream array.\n */\n upstreamPosition: number\n\n /**\n * The distance the item has moved in the upstream array since the last consistent state.\n */\n delta: number\n }\n | {\n effect: Extract<DivergenceEffect, 'insert'>\n\n /**\n * The position at which the item was inserted inro the upstream array.\n */\n position: number\n }\n | {\n effect?: undefined\n delta?: never\n position?: never\n }\n )\n\nexport type DivergenceAtPath = [path: string, context: Divergence]\n\n// Fields that are never considered divergent.\nconst skipFields = /(\\.|^)_(id|rev|key|system|createdAt|updatedAt|systemDivergences)(\\.|$)/g\n\ntype State = Record<string, SnapshotsByType>\n\n/**\n * @internal\n */\nexport function readDocumentDivergences({\n upstreamAtFork,\n upstreamHead,\n subjectHead,\n resolutions = [],\n}: FindDivergencesContext): Observable<DivergenceAtPath> {\n if (\n typeof subjectHead === 'undefined' ||\n typeof upstreamHead === 'undefined' ||\n typeof upstreamAtFork === 'undefined'\n ) {\n return EMPTY\n }\n\n const markName = [subjectHead._id, upstreamHead._id, upstreamAtFork._id].join('.')\n\n performance.mark(markName)\n\n const instance: Observable<DivergenceAtPath> = merge<[SnapshotType, FlattenedPair][]>(\n from(flattenObject(subjectHead)).pipe(\n map((entry) => ['subjectHead', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n from(flattenObject(upstreamHead)).pipe(\n map((entry) => ['upstreamHead', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n from(flattenObject(upstreamAtFork)).pipe(\n map((entry) => ['upstreamAtFork', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n )\n .pipe(\n map(([snapshotType, [path, value, context]]) => ({\n snapshotType,\n path,\n value,\n context,\n })),\n filter(({path}) => !path.match(skipFields)),\n aggregateArrays(),\n aggregateObjects(),\n reduce((state, {snapshotType, path, value, arrays, objects, context}): State => {\n state[path] ??= {\n subjectHead: undefined,\n upstreamHead: undefined,\n upstreamAtFork: undefined,\n }\n\n const parentPathArray = toString(context.flatPathArray.slice(0, -1))\n const parentArray = arrays[parentPathArray]\n const parentObject = objects[parentPathArray]\n\n state[path][snapshotType] = {\n value,\n parentArray,\n parentObjectType: get(parentObject, '_type'),\n pathWithTypes: context.flatPathArrayWithTypes,\n }\n\n return state\n }, {}),\n tap(() => {\n performance.measure(markName, {\n start: markName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Iterate all versions',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n },\n },\n })\n }),\n switchMap((state) => from(Object.entries(state))),\n switchMap(([path, snapshots]) =>\n from(resolutions).pipe(\n first(({_key}) => _key === path, {resolutionMarker: undefined}),\n map(({resolutionMarker}) => resolutionMarker),\n map((resolutionMarker) => ({path, snapshots, resolutionMarker})),\n ),\n ),\n )\n .pipe(\n filter(({snapshots}) => {\n const hasObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n snapshots.subjectHead?.value,\n ].some(isRecord)\n\n const hasKeyedObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n snapshots.subjectHead?.value,\n ].some(isKeyedObject)\n\n return !hasObjectSnapshot || hasKeyedObjectSnapshot\n }),\n delayTask(),\n mergeMap<\n {\n path: string\n snapshots: SnapshotsByType\n resolutionMarker: ResolutionMarker | undefined\n },\n Observable<DivergenceAtPath>\n >(({path, snapshots, resolutionMarker}) => {\n const strategy: DivergenceDetectionStrategy =\n typeof resolutionMarker === 'undefined' ? 'sinceFork' : 'sinceResolution'\n\n if (isRevisionIdEqual({strategy, upstreamAtFork, upstreamHead, resolutionMarker})) {\n // The entire document is unchanged since resolution: the divergence remains resolved.\n if (strategy === 'sinceResolution' && typeof resolutionMarker !== 'undefined') {\n return of<DivergenceAtPath>([\n path,\n {\n status: 'resolved',\n isAddressable: false,\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n path: path,\n snapshots,\n sinceRevisionId: resolutionMarker?.[0],\n },\n ])\n }\n\n // The entire document is unchanged since fork: there are no divergences.\n return EMPTY\n }\n\n // Divergences aren't usually reported at the object level, but instead for leaf primitive\n // nodes.\n //\n // However, the position of an object in an array *can* diverge. This causes a divergence of\n // the object istelf, with the \"move\" effect.\n if (\n isPositionedNode({\n strategy,\n snapshots,\n resolutionMarker,\n })\n ) {\n const [upstreamBaseIndex, upstreamHeadIndex] = getPositionedNodeIndexes({\n strategy,\n snapshots,\n resolutionMarker,\n })\n\n return of(upstreamHeadIndex - upstreamBaseIndex).pipe(\n // Position has changed in upstream.\n filter((moveInUpstream) => moveInUpstream !== 0),\n delayTask(),\n zipWith(\n isObjectArray(snapshots.subjectHead?.parentArray) &&\n isObjectArray(snapshots.upstreamHead?.parentArray)\n ? findMovesInArrayOfObjects(\n snapshots.subjectHead.parentArray,\n snapshots.upstreamHead?.parentArray,\n )\n : of<Record<string, number>>({}),\n ),\n map(([movesInUpstream, movesInSubject]): [number, number | undefined] => {\n const key =\n get(snapshots, ['upstreamAtFork', 'value', '_key']) ??\n get(snapshots, ['upstreamHead', 'value', '_key'])\n\n return [movesInUpstream, movesInSubject[key]]\n }),\n filter((moves): moves is [number, number] => {\n const [, moveInSubject] = moves\n return typeof moveInSubject !== 'undefined'\n }),\n map(([, positionDelta]): DivergenceAtPath => [\n path,\n {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n status: 'unresolved',\n isAddressable: true,\n effect: 'move',\n delta: positionDelta,\n upstreamPosition: upstreamHeadIndex,\n sinceRevisionId: createDocumentRevisionMarker(\n upstreamAtFork._id,\n upstreamAtFork?._rev,\n ),\n path: path,\n snapshots,\n },\n ]),\n )\n }\n\n if (strategy === 'sinceFork') {\n const sinceForkMarkName = ['sinceFork', markName, path].join('.')\n performance.mark(sinceForkMarkName)\n\n return combineLatest({\n upstreamAtFork: from(hashData(snapshots.upstreamAtFork?.value)),\n upstreamHead: from(hashData(snapshots.upstreamHead?.value)),\n subjectHead: from(hashData(snapshots.subjectHead?.value)),\n }).pipe(\n tap(() => {\n performance.measure(path, {\n start: sinceForkMarkName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Hash snapshots',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n properties: [\n ['Upstream at fork', snapshots.upstreamAtFork?.value],\n ['Upstream head', snapshots.upstreamHead?.value],\n ['Subject head', snapshots.subjectHead?.value],\n ['Strategy', strategy],\n ],\n },\n },\n })\n }),\n delayTask(),\n map((hashes) => ({\n hashes,\n effect: selectEffect({\n fromValue: snapshots.upstreamAtFork?.value,\n toValue: snapshots.upstreamHead?.value,\n upstreamParent: snapshots.upstreamHead?.parentArray,\n path,\n }),\n })),\n // The upstream has changed since the fork occurred.\n takeWhile(\n ({hashes, effect}) =>\n effect === 'insert' ||\n effect === 'unset' ||\n hashes.upstreamAtFork !== hashes.upstreamHead,\n ),\n // The upstream is different to the current value in the subject document.\n takeWhile(\n ({hashes, effect}) =>\n effect === 'insert' ||\n effect === 'unset' ||\n hashes.upstreamHead !== hashes.subjectHead,\n ),\n // If the node is an inserted array item, and it already exists in\n // the subject document, skip it.\n takeWhile(({effect}) => {\n if (effect === 'insert') {\n const parentPathSegment = fromString(path).at(-1)\n\n if (parentPathSegment && isKeySegment(parentPathSegment)) {\n return (\n typeof snapshots.subjectHead?.parentArray?.find(\n (item) => isKeyedObject(item) && item._key === get(parentPathSegment, '_key'),\n ) === 'undefined'\n )\n }\n\n if (typeof parentPathSegment === 'number') {\n return (\n typeof snapshots.subjectHead?.parentArray?.[parentPathSegment] === 'undefined'\n )\n }\n }\n\n return true\n }),\n takeWhile(() => {\n const isArray = [snapshots.upstreamAtFork?.value, snapshots.upstreamHead?.value].some(\n Array.isArray,\n )\n return !isArray\n }),\n map(({effect}): DivergenceAtPath => {\n const hasObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(isRecord)\n\n const hasKeyedObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(isKeyedObject)\n\n const hasArraySnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(Array.isArray)\n\n const hasNullSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some((value) => value === null)\n\n const isAddressable =\n (!hasObjectSnapshot && !hasArraySnapshot) ||\n hasKeyedObjectSnapshot ||\n (hasNullSnapshot && !hasObjectSnapshot && !hasArraySnapshot)\n\n const divergence = {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n status: 'unresolved',\n isAddressable,\n effect,\n sinceRevisionId: createDocumentRevisionMarker(\n upstreamAtFork._id,\n upstreamAtFork?._rev,\n ),\n path,\n snapshots,\n } satisfies BaseDivergence\n\n // Item inserted into object array.\n if (divergence.effect === 'insert') {\n return [\n path,\n {\n ...divergence,\n position:\n findPositionedNodeIndexByKey(\n snapshots.upstreamHead?.parentArray,\n get(snapshots, ['upstreamHead', 'value', '_key']),\n ) ?? 0,\n },\n ]\n }\n\n return [path, divergence]\n }),\n )\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n const sinceResolutionMarkName = ['sinceResolution', markName, path].join('.')\n performance.mark(sinceResolutionMarkName)\n\n return combineLatest({\n upstreamHead: from(hashData(snapshots.upstreamHead?.value)),\n subjectHead: from(hashData(snapshots.subjectHead?.value)),\n }).pipe(\n tap(() => {\n performance.measure(path, {\n start: sinceResolutionMarkName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Hash snapshots',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n properties: [\n ['Upstream at fork', snapshots.upstreamAtFork?.value],\n ['Upstream head', snapshots.upstreamHead?.value],\n ['Subject head', snapshots.subjectHead?.value],\n ['Strategy', strategy],\n ],\n },\n },\n })\n }),\n delayTask(),\n map((hashes): DivergenceAtPath => [\n path,\n {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n path: path,\n snapshots,\n status:\n // The upstream has not changed since the resolution.\n hashes.upstreamHead === resolutionMarker[1] ||\n // The upstream is not different to the current value in the subject document.\n hashes.upstreamHead === hashes.subjectHead\n ? 'resolved'\n : 'unresolved',\n // A resolution already exists for the node, so it can be assumed the divergence\n // is addressable.\n isAddressable: true,\n effect: selectEffectFromHash({\n fromHash: resolutionMarker[1],\n toHash: hashes.upstreamHead,\n upstreamParentIsArray: Array.isArray(snapshots.upstreamHead),\n path,\n }),\n sinceRevisionId: resolutionMarker[0],\n },\n ]),\n )\n }\n\n return EMPTY\n }),\n coalesceChangedObjectTypes(),\n )\n\n return instance\n}\n\nfunction isPositionedNode({\n strategy,\n snapshots,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n snapshots: SnapshotsByType\n resolutionMarker?: ResolutionMarker\n}): boolean {\n if (strategy === 'sinceFork') {\n return (\n isKeyedObject(snapshots.upstreamAtFork?.value) && isKeyedObject(snapshots.upstreamHead?.value)\n )\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n return isKeyedObject(snapshots.upstreamHead?.value)\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction getPositionedNodeIndexes({\n strategy,\n snapshots,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n snapshots: SnapshotsByType\n resolutionMarker?: ResolutionMarker\n}): [UpstreamBaseIndex: number, UpstreamHeadIndex: number] {\n const key =\n get(snapshots, ['upstreamAtFork', 'value', '_key']) ??\n get(snapshots, ['upstreamHead', 'value', '_key'])\n\n if (strategy === 'sinceFork') {\n return [\n findPositionedNodeIndexByKey(snapshots.upstreamAtFork?.parentArray, key),\n findPositionedNodeIndexByKey(snapshots.upstreamHead?.parentArray, key),\n ]\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n if (typeof resolutionMarker[1] !== 'number') {\n throw new Error('Expected upstream position at resolution as number, but received string')\n }\n\n return [\n resolutionMarker[1],\n findPositionedNodeIndexByKey(snapshots.upstreamHead?.parentArray, key),\n ]\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction aggregateArrays<\n Input extends {\n snapshotType: SnapshotType\n path: string\n value: unknown\n },\n>(): OperatorFunction<Input, Input & {arrays: Record<string, unknown[]>}> {\n const arrays: Record<string, unknown[]> = {}\n\n return switchMap((entry) => {\n if (Array.isArray(entry.value)) {\n arrays[entry.path] = entry.value\n }\n\n return of({...entry, arrays})\n })\n}\n\nfunction aggregateObjects<\n Input extends {\n snapshotType: SnapshotType\n path: string\n value: unknown\n },\n>(): OperatorFunction<Input, Input & {objects: Record<string, SanityObjectLike>}> {\n const objects: Record<string, SanityObjectLike> = {}\n\n return switchMap((entry) => {\n if (isSanityObjectLike(entry.value)) {\n objects[entry.path] = entry.value\n }\n\n return of({...entry, objects})\n })\n}\n\n/**\n * If an object type has changed since its last consistent state, the object's descendant nodes are\n * no longer guaranteed to be compatible. This is most likely to occur in arrays of objects, because\n * they allow polymorphism.\n *\n * An object's type is unlikely to change due to an operation performed by an editor in Studio,\n * but this can occur when scripting or using an agent to update content.\n *\n * This operation:\n *\n * 1. Finds any object whose type has changed.\n * 2. Filters all divergences that affect descendants of the changed object.\n * 3. Emits a single divergence for the object itself.\n */\nfunction coalesceChangedObjectTypes(): OperatorFunction<DivergenceAtPath, DivergenceAtPath> {\n const changedObjectPaths: Path[] = []\n\n return pipe(\n toArray(),\n // Ensure the object's `_type` field is iterated first.\n switchMap((divergences) => {\n return from(\n divergences.sort(([pathA], [pathB]) => {\n const pathArrayA = fromString(pathA)\n const pathArrayB = fromString(pathB)\n\n if (pathArrayA.at(-1) === '_type' && pathArrayB.at(-1) !== '_type') {\n return -1\n }\n\n if (pathArrayA.at(-1) !== '_type' && pathArrayB.at(-1) === '_type') {\n return 1\n }\n\n return 0\n }),\n )\n }),\n mergeMap<DivergenceAtPath, Observable<DivergenceAtPath>>(([path, divergence]) => {\n const descendsChangedTypeObject = changedObjectPaths.some((changedObjectPath) =>\n startsWith(changedObjectPath, fromString(path)),\n )\n\n if (descendsChangedTypeObject) {\n return EMPTY\n }\n\n const pathArray = fromString(path)\n const parentObjectPath = pathArray.slice(0, -1)\n\n const hasKeyedObjectSnapshot = [\n divergence.snapshots.upstreamHead?.value,\n divergence.snapshots.subjectHead?.value,\n ].some(isKeyedObject)\n\n // Whether the object's current state in the upstream can be meaningfully compared with its\n // current state in the subject.\n //\n // Object type changes are only expected in arrays of objects.\n const isSubjectObjectTypeCompatible =\n !hasKeyedObjectSnapshot ||\n divergence.snapshots.upstreamHead?.parentObjectType ===\n divergence.snapshots.subjectHead?.parentObjectType\n\n // Whether the object's type has changed in the upstream. It indicates whether the last\n // consistent state of the object can be meaninfully compared with the current state of the\n // object in the upstream.\n const isChangedObjectType = divergence.effect === 'changeObjectType'\n\n const isFirstDescendantOfChangedObject = !changedObjectPaths.some(\n (changedObjectPath) => toString(changedObjectPath) === toString(parentObjectPath),\n )\n\n // When encountering the first node in an object that has changed type, emit a divergence on\n // the object itself, and suppress any other divergences affecting descendants of the object.\n if (\n isChangedObjectType ||\n (!isSubjectObjectTypeCompatible && isFirstDescendantOfChangedObject)\n ) {\n changedObjectPaths.push(parentObjectPath)\n\n return of<DivergenceAtPath>([\n toString(parentObjectPath),\n {\n // Note: `snapshots` currently reflects the `_type` node, or first descendant node\n // encountered, rather than the object itself.\n ...divergence,\n effect: 'changeObjectType',\n isAddressable: true,\n path: toString(parentObjectPath),\n },\n ])\n }\n\n return of([path, divergence])\n }),\n )\n}\n\nfunction findPositionedNodeIndexByKey(array: unknown[] = [], key: string | undefined): number {\n return array.findIndex((value) => {\n if (typeof value !== 'object' || value === null || !('_key' in value)) {\n return false\n }\n\n return value._key === key\n })\n}\n\nfunction isRevisionIdEqual({\n strategy,\n upstreamAtFork,\n upstreamHead,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n upstreamAtFork: SanityDocument\n upstreamHead: SanityDocument\n resolutionMarker?: ResolutionMarker\n}): boolean {\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n const [upstreamId, upstreamRevisionId] = resolutionMarker[0].split('@')\n return upstreamId === upstreamHead._id && upstreamRevisionId === upstreamHead._rev\n }\n\n if (strategy === 'sinceFork') {\n return upstreamAtFork?._rev === upstreamHead._rev\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction isObjectArray(maybeObjectArray: unknown): maybeObjectArray is KeyedObject[] {\n if (Array.isArray(maybeObjectArray)) {\n return maybeObjectArray.some(isKeyedObject)\n }\n return false\n}\n\ninterface SanityObjectLike {\n _type: string\n [key: string]: unknown\n}\n\nfunction isSanityObjectLike(\n maybeSanityObjectLike: unknown,\n): maybeSanityObjectLike is SanityObjectLike {\n return (\n typeof maybeSanityObjectLike === 'object' &&\n maybeSanityObjectLike !== null &&\n '_type' in maybeSanityObjectLike\n )\n}\n\n/**\n * @internal\n */\nexport function createDocumentRevisionMarker(\n ...documentRevision: [documentId: string, revisionId: string]\n): string {\n return documentRevision.join('@')\n}\n\n/**\n * @internal\n */\nexport function isDivergenceResolutions(\n maybeDivergenceResolutions: unknown,\n): maybeDivergenceResolutions is DivergenceResolution[] {\n return (\n Array.isArray(maybeDivergenceResolutions) &&\n maybeDivergenceResolutions.every(isDivergenceResolution)\n )\n}\n\n/**\n * @internal\n */\nfunction isDivergenceResolution(\n maybeDivergenceResolution: unknown,\n): maybeDivergenceResolution is DivergenceResolution {\n return (\n typeof maybeDivergenceResolution === 'object' &&\n maybeDivergenceResolution !== null &&\n '_key' in maybeDivergenceResolution &&\n typeof maybeDivergenceResolution._key === 'string' &&\n 'resolutionMarker' in maybeDivergenceResolution &&\n isDivergenceResolutionMarker(maybeDivergenceResolution.resolutionMarker)\n )\n}\n","import isEqual from 'lodash-es/isEqual.js'\nimport QuickLRU from 'quick-lru'\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n mergeMap,\n type Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n switchMap,\n switchScan,\n tap,\n toArray,\n} from 'rxjs'\n\nimport {\n type Divergence,\n type DivergenceAtPath,\n type FindDivergencesContext,\n readDocumentDivergences,\n} from './readDocumentDivergences'\nimport {delayTask} from './utils/delayTask'\n\nexport interface CollatedDocumentDivergencesState {\n state: 'pending' | 'ready'\n upstreamId: string | undefined\n divergences: Record<string, Divergence>\n}\n\n/**\n * @internal\n */\nexport interface CollatedDocumentDivergencesInstance {\n observable: Observable<CollatedDocumentDivergencesState>\n context: Subject<FindDivergencesContext>\n}\n\ninterface CollatedDocumentDivergencesContext {\n upstreamId: string | undefined\n subjectId: string | undefined\n}\n\nconst DEBOUNCE_DURATION = 1_000\nconst CACHE_MAX_SIZE = 10\n\nlet cacheWriteChannel: Subject<string>\nlet cache: QuickLRU<string, CollatedDocumentDivergencesInstance>\n\n/**\n * @internal\n */\nexport const collateDocumentDivergencesInitialState: CollatedDocumentDivergencesState = {\n state: 'pending',\n upstreamId: undefined,\n divergences: {},\n}\n\n/**\n * Collate all divergences in a single document.\n *\n * For each upstream id and subject id pair, the instance is cached globally in a LRU store.\n * Computation is throttled, and yields to the main thread to minimise blocking of the UI.\n *\n * The consumer is responsible for providing the data this computation depends on\n * (`FindDivergencesContext`). If any of the underlying context changes, recomputation can be\n * triggered by writing the updated context to the returned `context` subject.\n *\n * @internal\n */\nexport function collateDocumentDivergences({\n upstreamId,\n subjectId,\n}: CollatedDocumentDivergencesContext): CollatedDocumentDivergencesInstance {\n initialiseCache()\n\n const cacheKey = getCacheKey({upstreamId, subjectId})\n const cachedInstance = cache.get(cacheKey)\n\n if (typeof cachedInstance !== 'undefined') {\n return cachedInstance\n }\n\n const context = new Subject<FindDivergencesContext>()\n const markName = ['collateDocumentDivergences', cacheKey].join('.')\n\n if (typeof upstreamId === 'undefined' || typeof subjectId === 'undefined') {\n return {\n observable: EMPTY,\n context,\n }\n }\n\n const observable: Observable<CollatedDocumentDivergencesState> = context.pipe(\n debounceTime(DEBOUNCE_DURATION),\n tap(() => performance.mark(cacheKey)),\n distinctUntilChanged(isContextEqual),\n switchScan((state, nextContext) => {\n return of(nextContext).pipe(\n delayTask(),\n tap(() => performance.mark(markName)),\n switchMap(readDocumentDivergences),\n toArray(),\n tap(() =>\n performance.measure(cacheKey, {\n start: markName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Find all divergences',\n trackGroup: 'Aggregate Divergences',\n color: 'tertiary-dark',\n },\n },\n }),\n ),\n map<DivergenceAtPath[], Record<string, Divergence>>(Object.fromEntries),\n map<Record<string, Divergence>, CollatedDocumentDivergencesState>((divergences) => ({\n ...state,\n state: 'ready',\n upstreamId,\n divergences,\n })),\n startWith<CollatedDocumentDivergencesState>({\n ...state,\n upstreamId,\n state: 'pending',\n }),\n )\n }, collateDocumentDivergencesInitialState),\n startWith(collateDocumentDivergencesInitialState),\n shareReplay(1),\n )\n\n const instance: CollatedDocumentDivergencesInstance = {context, observable}\n\n cache.set(cacheKey, instance)\n cacheWriteChannel.next(cacheKey)\n\n return instance\n}\n\n/**\n * Subscribe to collated document divergences without initiating computation.\n *\n * @internal\n */\nexport function peekCollatedDocumentDivergences({\n upstreamId,\n subjectId,\n}: CollatedDocumentDivergencesContext): Observable<CollatedDocumentDivergencesState> {\n initialiseCache()\n\n if (typeof upstreamId === 'undefined' || typeof subjectId === 'undefined') {\n return EMPTY\n }\n\n const cacheKey = getCacheKey({upstreamId, subjectId})\n const instance = cache.get(cacheKey)\n\n if (typeof instance !== 'undefined') {\n return instance.observable\n }\n\n return cacheWriteChannel.pipe(\n filter((writtenCacheKey) => writtenCacheKey === cacheKey),\n map((writtenCacheKey) => cache.get(writtenCacheKey)),\n filter((cachedInstance) => typeof cachedInstance !== 'undefined'),\n mergeMap(({observable}) => observable),\n startWith(collateDocumentDivergencesInitialState),\n shareReplay(1),\n )\n}\n\nfunction isContextEqual(a: FindDivergencesContext, b: FindDivergencesContext): boolean {\n return (\n a.upstreamHead._rev === b.upstreamHead._rev &&\n a.subjectHead._rev === b.subjectHead._rev &&\n a.upstreamAtFork._rev === b.upstreamAtFork._rev &&\n isEqual(a.resolutions, b.resolutions)\n )\n}\n\nfunction initialiseCache() {\n cache ??= new QuickLRU({maxSize: CACHE_MAX_SIZE})\n cacheWriteChannel ??= new Subject()\n}\n\nfunction getCacheKey({\n subjectId,\n upstreamId,\n}: Pick<CollatedDocumentDivergencesContext, 'subjectId' | 'upstreamId'>): string {\n return [upstreamId, subjectId].join('.')\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n type TransactionLogEventWithEffects,\n type TransactionLogEventWithMutations,\n isCreateIfNotExistsMutation,\n isCreateMutation,\n isCreateOrReplaceMutation,\n} from '@sanity/types'\nimport {applyPatch} from 'mendoza'\nimport QuickLRU from 'quick-lru'\nimport {\n type Observable,\n catchError,\n concat,\n concatMap,\n EMPTY,\n first,\n from,\n map,\n merge,\n of,\n scan,\n switchMap,\n} from 'rxjs'\n\nimport {getTransactionsLogs as defaultGetTransactionsLogs} from '../store/translog/getTransactionsLogs'\n\ntype SourceTransaction = [source: 'a' | 'b', transaction: TransactionLogEventWithEffects]\n\ninterface TransactionAccumulation {\n a: Set<string>\n b: Set<string>\n currentTransaction: SourceTransaction\n}\n\ninterface PartialTransactionAccumulation extends Omit<\n TransactionAccumulation,\n 'currentTransaction'\n> {\n currentTransaction: SourceTransaction | undefined\n}\n\nconst PAGE_LENGTH = 50\n\nlet cache: QuickLRU<string, Observable<TransactionLogEventWithEffects | undefined>> | undefined\n\n/**\n * Find the most recent transaction shared by two documents, following each base\n * document link found in the `_system.base` field in order to construct the\n * content's full history, including its lineage.\n *\n * As soon as any transaction is found that appears in the lineage of each\n * document, that transaction is emitted and the process ends. It can be assumed\n * the emitted transaction is the most recent point in time that the content of\n * the two documents was identical.\n *\n * @internal\n */\nexport function readMostRecentSharedTransaction({\n a,\n b,\n client,\n getTransactionsLogs = defaultGetTransactionsLogs,\n}: {\n a?: string\n b?: string\n client: SanityClient\n getTransactionsLogs?: typeof defaultGetTransactionsLogs\n}): Observable<TransactionLogEventWithEffects | undefined> {\n if (typeof a === 'undefined' || typeof b === 'undefined') {\n return EMPTY\n }\n\n cache ??= new QuickLRU({\n maxSize: 250,\n })\n\n const cacheKey = [a, b].join(';')\n const cachedReader = cache.get(cacheKey)\n\n if (typeof cachedReader !== 'undefined') {\n return cachedReader\n }\n\n const reader = merge(\n readTransactionsFollowingLineage({documentId: a, client, getTransactionsLogs}).pipe(\n map((transaction) => ['a', transaction] satisfies SourceTransaction),\n ),\n readTransactionsFollowingLineage({documentId: b, client, getTransactionsLogs}).pipe(\n map((transaction) => ['b', transaction] satisfies SourceTransaction),\n ),\n ).pipe(\n scan<SourceTransaction, PartialTransactionAccumulation>(\n (visited, [source, transaction]) => {\n visited[source].add(transaction.id)\n visited.currentTransaction = [source, transaction] satisfies SourceTransaction\n return visited\n },\n {\n a: new Set<string>(),\n b: new Set<string>(),\n currentTransaction: undefined,\n },\n ),\n first((accumulation): accumulation is TransactionAccumulation => {\n const {a: transactionIdsA, b: transactionIdsB, currentTransaction} = accumulation\n\n if (typeof currentTransaction === 'undefined') {\n return false\n }\n\n const [source, transaction] = currentTransaction\n const partner = source === 'a' ? transactionIdsB : transactionIdsA\n\n return partner.has(transaction.id)\n }, undefined),\n map((accumulation) => {\n if (typeof accumulation === 'undefined') {\n return undefined\n }\n\n const [, transaction] = accumulation.currentTransaction\n return transaction\n }),\n catchError((error) => {\n cache?.delete(cacheKey)\n throw error\n }),\n )\n\n cache.set(cacheKey, reader)\n return reader\n}\n\nlet lineageCache:\n | QuickLRU<string, Observable<TransactionLogEventWithEffects & TransactionLogEventWithMutations>>\n | undefined\n\n/**\n * Read the entire history of a document, following each base document link\n * found in the `_system.base` field in order to construct the content's full\n * history, including its lineage.\n *\n * This is necessary, because history isn't copied when creating a version of a\n * document.\n *\n * @internal\n */\nexport function readTransactionsFollowingLineage({\n documentId,\n baseRevisionId,\n cursor,\n client,\n getTransactionsLogs = defaultGetTransactionsLogs,\n}: {\n documentId: string\n baseRevisionId?: string\n cursor?: string\n client: SanityClient\n getTransactionsLogs?: typeof defaultGetTransactionsLogs\n}): Observable<TransactionLogEventWithEffects & TransactionLogEventWithMutations> {\n if (PAGE_LENGTH < 2) {\n throw new Error(\n 'Page length must be greater than 1, because the Content Lake API response is inclusive of `toTransaction`.',\n )\n }\n\n lineageCache ??= new QuickLRU({\n maxSize: 250,\n })\n\n const cacheKey = [documentId, baseRevisionId, cursor].join(';')\n const cachedReader = lineageCache.get(cacheKey)\n\n if (typeof cachedReader !== 'undefined') {\n return cachedReader\n }\n\n const request = getTransactionsLogs(client, documentId, {\n limit: PAGE_LENGTH,\n excludeContent: true,\n effectFormat: 'mendoza',\n reverse: true,\n includeIdentifiedDocumentsOnly: true,\n toTransaction: cursor ?? baseRevisionId,\n tag: 'sanity.studio.divergences.read-version-lineage',\n })\n\n const reader = from(request).pipe(\n switchMap((transactions) => from(transactions)),\n concatMap((transaction, index) => {\n const isCursor = transaction.id === cursor\n\n // Content Lake response is inclusive of `toTransaction`, which means\n // transactions occurring at page boundaries will be re-emitted when using\n // `toTransaction` as a cursor.\n //\n // This step prevents the observable re-emitting such transactions.\n if (isCursor) {\n return EMPTY\n }\n\n const isPageEnd = index === PAGE_LENGTH - 1\n\n const maybeReadNextPage = isPageEnd\n ? readTransactionsFollowingLineage({\n documentId,\n baseRevisionId,\n cursor: transaction.id,\n client,\n getTransactionsLogs,\n })\n : EMPTY\n\n if (\n isVersionCreateTransaction(transaction, documentId) &&\n typeof transaction.effects[documentId] !== 'undefined'\n ) {\n const createdDocument = applyPatch({}, transaction.effects[documentId]?.apply)\n\n if (typeof createdDocument._system?.base !== 'undefined') {\n return concat(\n of(transaction),\n readTransactionsFollowingLineage({\n documentId: createdDocument._system.base.id,\n baseRevisionId: createdDocument._system.base.rev,\n client,\n getTransactionsLogs,\n }),\n maybeReadNextPage,\n )\n }\n }\n\n return concat(of(transaction), maybeReadNextPage)\n }),\n catchError((error) => {\n lineageCache?.delete(cacheKey)\n throw error\n }),\n )\n\n lineageCache.set(cacheKey, reader)\n return reader\n}\n\nfunction isVersionCreateTransaction(\n transaction: TransactionLogEventWithEffects & TransactionLogEventWithMutations,\n documentId: string,\n): boolean {\n const isCreateTransaction = transaction.mutations.some(\n (mutation) =>\n isCreateMutation(mutation) ||\n isCreateOrReplaceMutation(mutation) ||\n isCreateIfNotExistsMutation(mutation),\n )\n\n // Infer that a version was created if reverting the transaction is performed\n // by pushing `null` onto the output stack (Mendoza opcode 0).\n return (\n isCreateTransaction &&\n typeof transaction.effects[documentId] !== 'undefined' &&\n transaction.effects[documentId].revert.length === 2 &&\n transaction.effects[documentId].revert[0] === 0 &&\n transaction.effects[documentId].revert[1] === null\n )\n}\n","import {type SanityDocument} from '@sanity/types'\n\nimport {type EditStateFor} from './document-pair/editState'\n\n/**\n * Given an `EditState` object targeting the upstream version, select the first relevant document\n * that exists.\n *\n * - This is the version document itself if it exists.\n * - Otherwise, it is the published document.\n * - If neither documents exist, there is no existent upstream version.\n *\n * Unlike in other parts of the codebase, draft versions are never relevant here, because they\n * cannot be the upstream version of another document.\n *\n * @internal\n */\nexport function selectUpstreamVersion(upstreamEditState: EditStateFor): SanityDocument | null {\n return upstreamEditState.version ?? upstreamEditState.published\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n type TransactionLogEventWithMutations,\n type TransactionLogEventWithEffects,\n} from '@sanity/types'\n\nimport {getTransactionsLogs} from '../translog/getTransactionsLogs'\n\nconst TRANSLOG_ENTRY_LIMIT = 50\n\nconst documentTransactionsCache: Record<\n string,\n (TransactionLogEventWithEffects & TransactionLogEventWithMutations)[]\n> = Object.create(null)\n\n// Transactions could be cached, given they are not gonna change EVER.\n// Transactions are in an order, so if we have [rev4, rev3, rev2] and we already got [rev4, rev3] we can just get the diff between rev3 and rev2 and increment it.\n\nexport async function getDocumentTransactions({\n documentId,\n client,\n toTransaction,\n fromTransaction,\n}: {\n documentId: string\n client: SanityClient\n toTransaction?: string\n fromTransaction: string\n}): Promise<(TransactionLogEventWithEffects & TransactionLogEventWithMutations)[]> {\n const cacheKey = `${documentId}-${toTransaction}-${fromTransaction}`\n if (documentTransactionsCache[cacheKey] && typeof toTransaction !== 'undefined') {\n return documentTransactionsCache[cacheKey]\n }\n const skipFromTransaction = fromTransaction !== toTransaction\n\n let transactions = await getTransactionsLogs(client, documentId, {\n tag: 'sanity.studio.documents.history',\n effectFormat: 'mendoza',\n excludeContent: true,\n includeIdentifiedDocumentsOnly: true,\n limit: TRANSLOG_ENTRY_LIMIT,\n fromTransaction: fromTransaction,\n toTransaction: toTransaction,\n })\n if (skipFromTransaction) {\n transactions = transactions.filter((transaction) => transaction.id !== fromTransaction)\n }\n\n if (\n skipFromTransaction\n ? // The transaction received with the id fromTransaction is not included in the list but it's returned by the API; remove that from the count\n transactions.length === TRANSLOG_ENTRY_LIMIT - 1\n : transactions.length === TRANSLOG_ENTRY_LIMIT\n ) {\n // We have received the max values, we need to fetch the next batch. (Unless we have reached the toTransaction)\n if (\n (toTransaction && transactions[transactions.length - 1].id !== toTransaction) ||\n !toTransaction\n ) {\n const nextTransactions = await getDocumentTransactions({\n documentId,\n client,\n toTransaction,\n fromTransaction: transactions[transactions.length - 1].id,\n })\n return transactions.concat(nextTransactions)\n }\n }\n\n documentTransactionsCache[cacheKey] = transactions\n return transactions\n}\n","import {type MendozaPatch, type TransactionLogEventWithEffects} from '@sanity/types'\n\nimport {type ReleasesReducerState} from '../../releases/store/reducer'\nimport {getReleaseDocumentIdFromReleaseId} from '../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {type DocumentVariantType} from '../../util/getDocumentVariantType'\nimport {type DocumentRemoteMutationEvent} from '../document/buffered-doc/types'\nimport {\n type DocumentGroupEvent,\n type EditDocumentVersionEvent,\n isCreateDocumentVersionEvent,\n isCreateLiveDocumentEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n isUpdateLiveDocumentEvent,\n type UpdateLiveDocumentEvent,\n} from './types'\n\nexport function removeDupes(\n events: DocumentGroupEvent[],\n newEvents: DocumentGroupEvent[],\n): DocumentGroupEvent[] {\n const noDupes = [...events, ...newEvents].reduce((acc, event) => {\n if (acc.has(event.id)) {\n const existingEvent = acc.get(event.id) as DocumentGroupEvent\n if (isEditDocumentVersionEvent(existingEvent) && !isEditDocumentVersionEvent(event)) {\n // Replaces the edit event with the none edit event, the publish event and the last edit event before the publish have the same id.\n acc.set(event.id, event)\n }\n\n if (existingEvent.type !== event.type) {\n // In the strange case two events got the same id but different types, we need to add a unique key to the map so both events are available\n // This could happen with a document that is created and published with the same revision id, for example in our e2e tests.\n acc.set(`${event.id}-${event.type}`, event)\n }\n return acc\n }\n return acc.set(event.id, event)\n }, new Map<string, DocumentGroupEvent>())\n return Array.from(noDupes.values())\n}\n\nexport function addEventId(\n event: Omit<DocumentGroupEvent, 'id'>,\n documentVariantType: DocumentVariantType,\n): DocumentGroupEvent {\n // this tries to infer the id of the event by checking if we are dealing with a published or version document\n let id = ''\n if (isCreateDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published'\n ? event.revisionId || `publishCreation--${event.timestamp}`\n : event.versionRevisionId\n } else if (isDeleteDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published' ? `deleteAt-${event.timestamp}` : event.versionRevisionId\n } else if (isPublishDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published'\n ? event.revisionId\n : event.versionRevisionId || event.revisionId\n } else if (isUnpublishDocumentEvent(event)) {\n // This event is only available for the published document\n id = documentVariantType === 'published' ? `unpublishAt-${event.timestamp}` : ''\n } else if (isScheduleDocumentVersionEvent(event)) {\n // This event is only available for the version document\n id = documentVariantType === 'published' ? '' : event.versionRevisionId\n } else if (isUnscheduleDocumentVersionEvent(event)) {\n id = documentVariantType === 'published' ? '' : event.versionRevisionId\n } else if (isDeleteDocumentGroupEvent(event)) {\n id = `deleted-${event.timestamp}`\n } else if (isCreateLiveDocumentEvent(event)) {\n id = event.revisionId\n } else if (isUpdateLiveDocumentEvent(event)) {\n id = event.revisionId\n } else if (isEditDocumentVersionEvent(event)) {\n id = event.revisionId\n }\n return {...event, id} as DocumentGroupEvent\n}\n\nexport function addParentToEvents(events: DocumentGroupEvent[]): DocumentGroupEvent[] {\n const eventsWithParent = JSON.parse(JSON.stringify(events)) as DocumentGroupEvent[]\n eventsWithParent.forEach((event, index) => {\n if (isPublishDocumentVersionEvent(event) || isDeleteDocumentVersionEvent(event)) {\n event.documentId = event.versionId\n // Find the creation event and edit events for this published event\n for (let i = index; i < eventsWithParent.length; i++) {\n const nextEvent = eventsWithParent[i]\n if (isEditDocumentVersionEvent(nextEvent)) {\n nextEvent.parentId = event.id\n }\n if (isCreateDocumentVersionEvent(nextEvent)) {\n event.creationEvent = nextEvent\n nextEvent.parentId = event.id\n // When we find the create event we should stop the loop. Events are ordered\n break\n }\n }\n }\n if (isEditDocumentVersionEvent(event)) {\n // If it's the first edit event after expanding a publish, the id of this event will be shared with the id of the published event, we need to use the following transaction id.\n if (event.parentId === event.id && event.transactions[1]?.revisionId) {\n event.id = event.transactions[1].revisionId\n }\n }\n })\n return eventsWithParent\n}\n\nconst MERGE_WINDOW = 5 * 60 * 1000 // 5 minutes\n\nexport function isWithinMergeWindow(a: string, b: string): boolean {\n return Math.abs(Date.parse(a) - Date.parse(b)) < MERGE_WINDOW\n}\n\nexport function squashLiveEditEvents(events: DocumentGroupEvent[]): DocumentGroupEvent[] {\n return events.reduce((acc: DocumentGroupEvent[], event) => {\n if (isUpdateLiveDocumentEvent(event)) {\n const previousEvent = acc[acc.length - 1]\n // check if the previous event is the same type is within the merge window and same author\n if (\n previousEvent &&\n isUpdateLiveDocumentEvent(previousEvent) &&\n isWithinMergeWindow(previousEvent.timestamp, event.timestamp) &&\n previousEvent.author === event.author\n ) {\n return acc\n }\n }\n acc.push(event)\n return acc\n }, [])\n}\n\nexport function remoteMutationToTransaction(\n event: DocumentRemoteMutationEvent,\n): TransactionLogEventWithEffects {\n return {\n author: event.author,\n documentIDs: [],\n id: event.transactionId,\n timestamp: event.timestamp.toISOString(),\n effects: {\n [event.head._id]: {\n apply: event.effects.apply as MendozaPatch,\n revert: event.effects.revert as MendozaPatch,\n },\n },\n }\n}\n\n/**\n * Updates the version publish document id.\n */\nexport function updateVersionEvents(events: DocumentGroupEvent[]) {\n return events.map((event) => {\n if (isPublishDocumentVersionEvent(event)) {\n return {\n ...event,\n documentId: event.versionId,\n }\n }\n return event\n })\n}\n\n/**\n * Adds the release information to the publish event.\n */\nexport function updatePublishedEvents(\n events: DocumentGroupEvent[],\n releases: ReleasesReducerState,\n) {\n return events.map((event) => {\n if (isPublishDocumentVersionEvent(event)) {\n const releaseId = getVersionFromId(event.versionId)\n if (releaseId) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(releaseId)\n const release = releases.releases.get(releaseDocumentId)\n return {\n ...event,\n release: release || {_id: releaseDocumentId},\n }\n }\n return event\n }\n return event\n })\n}\n\nexport function sortEvents({\n remoteEdits,\n events,\n expandedEvents,\n}: {\n remoteEdits: (UpdateLiveDocumentEvent | EditDocumentVersionEvent)[]\n events: DocumentGroupEvent[]\n expandedEvents: EditDocumentVersionEvent[]\n}): DocumentGroupEvent[] {\n const eventsWithRemoteEdits = [...remoteEdits, ...events, ...expandedEvents].sort(\n // Sort by timestamp, newest first unless is an edit event that has a corresponding publish event\n (a, b) => {\n if (\n isPublishDocumentVersionEvent(a) &&\n isEditDocumentVersionEvent(b) &&\n a.versionRevisionId === b.revisionId\n ) {\n return -1\n }\n if (\n isPublishDocumentVersionEvent(b) &&\n isEditDocumentVersionEvent(a) &&\n b.versionRevisionId === a.revisionId\n ) {\n return +1\n }\n\n return Date.parse(b.timestamp) - Date.parse(a.timestamp)\n },\n )\n return eventsWithRemoteEdits\n}\n","import {\n type MendozaEffectPair,\n type MendozaPatch,\n type TransactionLogEventWithEffects,\n} from '@sanity/types'\n\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {getDocumentVariantType} from '../../util/getDocumentVariantType'\nimport {\n type EditDocumentVersionEvent,\n isEditDocumentVersionEvent,\n type UpdateLiveDocumentEvent,\n} from './types'\nimport {isWithinMergeWindow} from './utils'\n\nexport function getEffectState(\n effect?: MendozaEffectPair,\n): 'noop' | 'deleted' | 'modified' | 'created' {\n const modified = Boolean(effect)\n const deleted = effect && isDeletePatch(effect?.apply)\n const created = effect && isDeletePatch(effect?.revert)\n\n if (deleted) {\n return 'deleted'\n }\n if (created) {\n return 'created'\n }\n\n if (modified) {\n return 'modified'\n }\n\n return 'noop'\n}\n\nfunction isDeletePatch(patch: MendozaPatch): boolean {\n return patch[0] === 0 && patch[1] === null\n}\n\nconst getEditTransaction = (\n transaction: TransactionLogEventWithEffects,\n): EditDocumentVersionEvent['transactions'][number] => {\n return {\n type: 'editTransaction',\n author: transaction.author,\n timestamp: transaction.timestamp,\n revisionId: transaction.id,\n }\n}\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: true,\n): UpdateLiveDocumentEvent[]\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: false,\n): EditDocumentVersionEvent[]\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: boolean,\n): (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[]\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: boolean,\n): (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[] {\n const editTransactions = transactions\n .filter((tx) => {\n const effectState = getEffectState(tx.effects[documentId])\n // We only care about the transactions that have modified the document\n return effectState === 'modified'\n })\n // We sort the transactions by timestamp, newest first\n .sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp))\n\n const result: (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[] = []\n for (const transaction of editTransactions) {\n // If result is empty, add the current event\n const event = liveEdit\n ? ({\n id: transaction.id,\n timestamp: transaction.timestamp,\n type: 'updateLiveDocument',\n documentId: documentId,\n revisionId: transaction.id,\n author: transaction.author,\n documentVariantType: getDocumentVariantType(documentId),\n } satisfies UpdateLiveDocumentEvent)\n : ({\n type: 'editDocumentVersion',\n documentId: documentId,\n id: transaction.id,\n timestamp: transaction.timestamp,\n author: transaction.author,\n contributors: [transaction.author],\n releaseId: getVersionFromId(documentId),\n revisionId: transaction.id,\n transactions: [getEditTransaction(transaction)],\n documentVariantType: getDocumentVariantType(documentId),\n } satisfies EditDocumentVersionEvent)\n if (result.length === 0) {\n result.push(event)\n continue\n }\n\n const lastEvent = result[result.length - 1]\n\n if (isWithinMergeWindow(lastEvent.timestamp, event.timestamp)) {\n if (isEditDocumentVersionEvent(lastEvent)) {\n // Add the transaction event to the transactions\n lastEvent.transactions.push(getEditTransaction(transaction))\n if (!lastEvent.contributors.includes(event.author) && lastEvent.author !== event.author) {\n // Update event the contributors list\n lastEvent.contributors.push(event.author)\n }\n }\n } else {\n // If the time difference is greater than the window, add as a new event\n result.push(event)\n }\n }\n\n return result\n}\n","import {type SanityClient} from '@sanity/client'\nimport {BehaviorSubject, from, of} from 'rxjs'\nimport {catchError, map, scan, shareReplay, startWith, switchMap, tap} from 'rxjs/operators'\n\nimport {getDocumentVariantType} from '../../util/getDocumentVariantType'\nimport {getDocumentTransactions} from './getDocumentTransactions'\nimport {getEditEvents} from './getEditEvents'\nimport {\n type DocumentGroupEvent,\n type EditDocumentVersionEvent,\n type HistoryClearedEvent,\n isCreateDocumentVersionEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n} from './types'\nimport {addEventId, removeDupes} from './utils'\n\nexport const HISTORY_CLEARED_EVENT_ID = 'history-cleared'\nexport interface EventsObservableValue {\n events: DocumentGroupEvent[]\n nextCursor: string\n loading: boolean\n error: null | Error\n}\nconst INITIAL_VALUE: EventsObservableValue = {\n events: [],\n nextCursor: '',\n loading: true,\n error: null,\n}\n\ninterface InitialFetchEventsOptions {\n client: SanityClient\n documentId: string\n}\nexport function getInitialFetchEvents({client, documentId}: InitialFetchEventsOptions) {\n const documentVariantType = getDocumentVariantType(documentId)\n const refetchEventsTrigger$ = new BehaviorSubject<{\n cursor: string | null\n origin: 'loadMore' | 'reload' | 'initial'\n }>({\n cursor: null,\n origin: 'initial',\n })\n\n const fetchEvents = ({limit, nextCursor}: {limit: number; nextCursor: string | null}) => {\n const params = new URLSearchParams({\n limit: limit.toString(),\n })\n if (nextCursor) {\n params.append('nextCursor', nextCursor)\n }\n return client.observable\n .request<{\n events: Record<string, Omit<DocumentGroupEvent, 'id'>[]>\n nextCursor: string\n }>({\n url: `/data/history/${client.config().dataset}/events/documents/${documentId}?${params.toString()}`,\n tag: 'get-document-events',\n })\n .pipe(\n map((response) => {\n return {\n events:\n response.events[documentId]?.map((ev) => addEventId(ev, documentVariantType)) || [],\n nextCursor: response.nextCursor,\n loading: false,\n error: null,\n }\n }),\n )\n }\n\n const fetchEditEvents = (events: DocumentGroupEvent[]) => {\n const eventWithRevision =\n documentVariantType === 'version'\n ? events.find(isCreateDocumentVersionEvent)\n : events.find(\n (event) =>\n 'versionRevisionId' in event &&\n event.versionRevisionId &&\n !isDeleteDocumentVersionEvent(event) &&\n !isDeleteDocumentGroupEvent(event),\n )\n\n const revisionId =\n eventWithRevision &&\n 'versionRevisionId' in eventWithRevision &&\n eventWithRevision.versionRevisionId\n return from(\n getDocumentTransactions({\n client,\n documentId,\n fromTransaction: revisionId || '',\n toTransaction: undefined, // We need to get up to the present moment\n }),\n ).pipe(\n map((transactions) => {\n const editEvents: (EditDocumentVersionEvent | HistoryClearedEvent)[] = getEditEvents(\n transactions,\n documentId,\n false,\n )\n const needsHistoryClearedEvent =\n events.length === 0 && transactions.length > 0 && editEvents.length > 0\n if (needsHistoryClearedEvent) {\n const clearedEventTimestamp =\n new Date(editEvents[editEvents.length - 1].timestamp).getTime() - 1\n\n editEvents.unshift({\n type: 'historyCleared',\n documentId,\n id: HISTORY_CLEARED_EVENT_ID,\n timestamp: new Date(clearedEventTimestamp).toISOString(),\n author: '',\n documentVariantType,\n })\n }\n return editEvents\n }),\n )\n }\n let nextCursor: string = ''\n\n return {\n events$: refetchEventsTrigger$.pipe(\n switchMap(({cursor, origin}) => {\n return fetchEvents({\n nextCursor: cursor,\n limit: origin === 'reload' ? 10 : 100,\n }).pipe(\n switchMap((response) => {\n if (documentVariantType === 'published' || origin === 'loadMore') {\n // For the published document we don't need to fetch the edit transactions.\n return of({...response, origin})\n }\n return fetchEditEvents(response.events).pipe(\n map((editEvents) => {\n return {...response, events: [...editEvents, ...response.events], origin}\n }),\n )\n }),\n catchError((error: Error) => {\n console.error('Error fetching events', error)\n return [{events: [], nextCursor: '', loading: false, error: error, origin}]\n }),\n startWith({events: [], nextCursor: '', loading: true, error: null, origin}),\n )\n }),\n scan((prev, next) => {\n return {\n events: removeDupes(prev.events, next.events),\n // If we are reloading, we should keep the cursor as it was before.\n nextCursor: next.origin === 'reload' ? prev.nextCursor : next.nextCursor,\n loading: next.loading,\n error: next.error,\n }\n }, INITIAL_VALUE),\n tap((response) => {\n nextCursor = response.nextCursor\n }),\n shareReplay(1),\n ),\n /**\n * Loads new events for the document, fetching the latest events from the API.\n */\n reloadEvents: () => refetchEventsTrigger$.next({cursor: null, origin: 'reload'}),\n /**\n * Loads more events for the document, fetching the next batch of events from the API.\n */\n loadMore: () => {\n const lastCursorUsed = refetchEventsTrigger$.getValue().cursor\n if (nextCursor && lastCursorUsed !== nextCursor) {\n refetchEventsTrigger$.next({origin: 'loadMore', cursor: nextCursor})\n }\n },\n }\n}\n","import {type SanityClient, type SanityDocument} from '@sanity/client'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, map, shareReplay, startWith} from 'rxjs/operators'\n\nimport {HISTORY_CLEARED_EVENT_ID} from './getInitialFetchEvents'\nimport {type EventsStoreRevision} from './types'\n\nconst documentRevisionCache: Record<string, Observable<EventsStoreRevision>> = Object.create(null)\n\n/**\n * - When fetching by `revisionId`, `revisionId` will always be present in the result.\n * - When fetching by `time`, `revisionId` will only be present after fetching.\n */\ntype Result<InputContext> = InputContext extends {revisionId: string}\n ? EventsStoreRevision\n : Omit<EventsStoreRevision, 'revisionId'> & Partial<Pick<EventsStoreRevision, 'revisionId'>>\n\ntype Context = {client: SanityClient; documentId: string} & (\n | {\n /**\n * Fetch the document revision by revision id.\n */\n revisionId: string\n time?: never\n }\n | {\n revisionId?: never\n /**\n * Fetch the document revision by time, formatted as a Content Lake compatible\n * date-time string.\n */\n time: string\n }\n)\n\nexport function getDocumentAtRevision<InputContext extends Context>({\n client,\n documentId,\n revisionId,\n time,\n}: InputContext): Observable<Result<InputContext> | null> {\n if (revisionId === HISTORY_CLEARED_EVENT_ID) {\n return of({document: null, loading: false, revisionId: revisionId})\n }\n const cacheKey = `${documentId}@${revisionId ? ['revisionId', revisionId].join('.') : ['time', time].join('.')}`\n const dataset = client.config().dataset\n if (!documentRevisionCache[cacheKey]) {\n const searchParams = new URLSearchParams(\n typeof revisionId === 'string' ? {revision: revisionId} : {time},\n )\n documentRevisionCache[cacheKey] = client.observable\n .request<{documents: SanityDocument[]}>({\n url: `/data/history/${dataset}/documents/${documentId}?${searchParams}`,\n tag: 'get-document-revision',\n })\n .pipe(\n map((response) => {\n const document = response.documents[0]\n return {document: document, loading: false, revisionId: document?._rev}\n }),\n\n catchError((error: Error) => {\n // TODO: Handle error\n console.error('Error fetching document at revision', error)\n return [\n {\n document: null,\n loading: false,\n revisionId: revisionId,\n } satisfies Result<Context> as any,\n ]\n }),\n startWith({\n document: null,\n loading: true,\n revisionId: revisionId,\n } satisfies Result<Context> as any),\n shareReplay(1),\n )\n }\n\n return documentRevisionCache[cacheKey]\n}\n","import {styled, css} from 'styled-components'\n\ninterface Props {\n $enabled: boolean\n}\n\n/**\n * @internal\n */\nexport const FormGutterCustomProperties = styled.div<Props>(({$enabled}) => {\n return css`\n display: contents;\n --formGutterEnabled: ${$enabled ? 1 : 0};\n `\n})\n","import {type SanityClient} from '@sanity/client'\nimport {type ObjectSchemaType, type SanityDocument} from '@sanity/types'\nimport {uuid} from '@sanity/uuid'\nimport get from 'lodash-es/get.js'\nimport {\n type ComponentType,\n type PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {BehaviorSubject, combineLatest, EMPTY, filter, map, of, Subject, tap} from 'rxjs'\nimport {type DocumentDivergencesContextValue, DocumentDivergencesContext} from 'sanity/_singletons'\n\nimport {\n collateDocumentDivergences,\n collateDocumentDivergencesInitialState,\n} from '../../divergence/collateDocumentDivergences'\nimport {useDivergenceNavigator} from '../../divergence/divergenceNavigator'\nimport {\n isDivergenceResolutions,\n type DivergenceResolution,\n type FindDivergencesContext,\n} from '../../divergence/readDocumentDivergences'\nimport {readMostRecentSharedTransaction} from '../../divergence/readMostRecentSharedTransaction'\nimport {type ResolutionMarker} from '../../divergence/types/ResolutionMarker'\nimport {useClient} from '../../hooks/useClient'\nimport {type EditStateFor} from '../../store/document/document-pair/editState'\nimport {selectUpstreamVersion} from '../../store/document/selectUpstreamVersion'\nimport {getDocumentAtRevision} from '../../store/events/getDocumentAtRevision'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {isPublishedId} from '../../util/draftUtils'\nimport {FormGutterCustomProperties} from '../components/FormGutterCustomProperties'\nimport {type FormState} from '../store/useFormState'\n\ninterface PropsEnabled extends PropsWithChildren {\n enabled: true\n formState: FormState\n upstreamEditState: EditStateFor\n editState: EditStateFor\n subjectId: string\n schemaType: ObjectSchemaType\n}\n\ninterface PropsDisabled extends PropsWithChildren {\n enabled: false\n}\n\ntype Props = PropsEnabled | PropsDisabled\n\n/**\n * @internal\n */\nexport const DivergencesProvider: ComponentType<Props> = (props) => {\n if (props.enabled) {\n return <DivergencesProviderEnabled {...props} />\n }\n\n return <DivergencesProviderDisabled {...props} />\n}\n\nconst DivergencesProviderEnabled: ComponentType<PropsEnabled> = ({\n formState,\n upstreamEditState,\n editState,\n subjectId,\n schemaType,\n children,\n}) => {\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const upstreamHead = selectUpstreamVersion(upstreamEditState)\n const upstreamId = upstreamHead?._id\n const hasUpstreamVersion = typeof upstreamId !== 'undefined'\n\n const subject = isPublishedId(subjectId)\n ? editState.published\n : (editState.version ?? editState.draft)\n\n const collatedDivergences =\n !hasUpstreamVersion || typeof upstreamId === 'undefined' || typeof subjectId === 'undefined'\n ? {\n context: new Subject<FindDivergencesContext>(),\n observable: of(collateDocumentDivergencesInitialState),\n }\n : collateDocumentDivergences({\n subjectId: subjectId,\n upstreamId: upstreamId,\n })\n\n useCollateDivergencesContext({\n upstreamHead,\n hasUpstreamVersion,\n subjectHead: subject,\n resolutions:\n subject &&\n '_systemDivergences' in subject &&\n typeof subject._systemDivergences === 'object' &&\n subject._systemDivergences !== null &&\n 'resolutions' in subject._systemDivergences &&\n isDivergenceResolutions(subject._systemDivergences.resolutions)\n ? subject._systemDivergences.resolutions\n : [],\n client,\n context: collatedDivergences.context,\n })\n\n const divergenceNavigator = useDivergenceNavigator({\n divergences: collatedDivergences.observable,\n schemaType,\n formState,\n })\n\n const [sessionId] = useState(() => uuid())\n\n const value = useMemo<DocumentDivergencesContextValue>(\n () => ({enabled: true, sessionId, ...divergenceNavigator}),\n [sessionId, divergenceNavigator],\n )\n\n return (\n <DocumentDivergencesContext.Provider value={value}>\n <FormGutterCustomProperties $enabled>{children}</FormGutterCustomProperties>\n </DocumentDivergencesContext.Provider>\n )\n}\n\nconst disabledContextValue: DocumentDivergencesContextValue = {\n enabled: false,\n sessionId: null,\n}\n\nconst DivergencesProviderDisabled: ComponentType<PropsWithChildren> = ({children}) => {\n return (\n <DocumentDivergencesContext.Provider value={disabledContextValue}>\n <FormGutterCustomProperties $enabled={false}>{children}</FormGutterCustomProperties>\n </DocumentDivergencesContext.Provider>\n )\n}\n\n/**\n * @internal\n */\nexport function useDocumentDivergences(): DocumentDivergencesContextValue {\n return useContext(DocumentDivergencesContext)\n}\n\n/**\n * Listen to the dependencies required to collate divergences, and update its\n * context when they change.\n */\nfunction useCollateDivergencesContext({\n upstreamHead,\n hasUpstreamVersion,\n subjectHead,\n resolutions,\n client,\n context,\n}: {\n upstreamHead: SanityDocument | null\n hasUpstreamVersion: boolean\n subjectHead: SanityDocument | null\n resolutions: {\n _key: string\n resolutionMarker: ResolutionMarker\n }[]\n client: SanityClient\n context: Subject<FindDivergencesContext>\n}):\n | {\n upstreamHead: SanityDocument\n subjectHead: SanityDocument\n resolutions: DivergenceResolution[]\n upstreamAtFork: SanityDocument\n }\n | undefined {\n const shouldFindForkPoint = hasUpstreamVersion && subjectHead && upstreamHead\n\n const baseIsForkPoint =\n get(subjectHead, ['_system', 'base', 'id']) === upstreamHead?._id &&\n get(subjectHead, ['_system', 'base', 'rev']) === upstreamHead?._rev\n\n // Kept synchronous: this is an input to the `readUpstreamAtFork` stream that\n // is combined with the live document heads below — a deferred snapshot could\n // pair an outdated fork-point revision with newer heads.\n const mostRecentSharedTransaction = useSyncObservable(\n shouldFindForkPoint && baseIsForkPoint\n ? EMPTY\n : readMostRecentSharedTransaction({\n a: upstreamHead?._id,\n b: subjectHead?._id,\n client,\n }),\n )\n\n const listenUpstreamHead = useMemo(() => new BehaviorSubject<SanityDocument | null>(null), [])\n useEffect(() => listenUpstreamHead.next(upstreamHead), [upstreamHead, listenUpstreamHead])\n\n const listenSubjectHead = useMemo(() => new BehaviorSubject<SanityDocument | null>(null), [])\n useEffect(() => listenSubjectHead.next(subjectHead), [subjectHead, listenSubjectHead])\n\n const listenResolutions = useMemo(\n () => new BehaviorSubject<DivergenceResolution[] | null>(null),\n [],\n )\n\n useEffect(() => listenResolutions.next(resolutions ?? []), [resolutions, listenResolutions])\n\n // Read the base upstream document.\n //\n // - If the subject version's `_system.base.id` points to its current\n // upstream, the target of the subject's `_system.base` is inferred to be\n // the base upstream document.\n // - Otherwise, the base upstream document is identified using the most recent\n // transaction shared by the subject and upstream versions.\n const readUpstreamAtFork = useMemo(() => {\n if (shouldFindForkPoint && baseIsForkPoint) {\n return getDocumentAtRevision({\n client,\n documentId: get(subjectHead, ['_system', 'base', 'id']),\n revisionId: get(subjectHead, ['_system', 'base', 'rev']),\n })\n }\n\n if (\n upstreamHead === null ||\n subjectHead === null ||\n !hasUpstreamVersion ||\n typeof mostRecentSharedTransaction === 'undefined'\n ) {\n return EMPTY\n }\n\n return getDocumentAtRevision({\n client,\n documentId: mostRecentSharedTransaction.documentIDs[0],\n revisionId: mostRecentSharedTransaction.id,\n })\n }, [\n upstreamHead,\n subjectHead,\n hasUpstreamVersion,\n mostRecentSharedTransaction,\n client,\n shouldFindForkPoint,\n baseIsForkPoint,\n ])\n\n const listenContext = useMemo(() => {\n return combineLatest({\n upstreamHead: listenUpstreamHead.pipe(\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n subjectHead: listenSubjectHead.pipe(\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n resolutions: listenResolutions.pipe(map((nextResolutions) => nextResolutions ?? [])),\n upstreamAtFork: readUpstreamAtFork.pipe(\n filter((revision) => revision !== null),\n map(({document}) => document),\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n }).pipe(tap((nextContext) => context.next(nextContext)))\n }, [readUpstreamAtFork, context, listenUpstreamHead, listenSubjectHead, listenResolutions])\n\n // The subscription exists to drive the `context.next` pipeline above; the\n // returned snapshot is not consumed for rendering, so deferring it would\n // only desynchronize the pipeline.\n return useSyncObservable(listenContext)\n}\n","import {type Path} from '@sanity/types'\nimport {AnimatePresence} from 'motion/react'\nimport {type ComponentType} from 'react'\n\nimport {DivergenceIndicator} from '../../divergence/components/DivergenceIndicator'\nimport {type DivergenceNavigator, selectDivergence} from '../../divergence/divergenceNavigator'\nimport {useVersionRelease} from '../../hooks/useVersionRelease'\nimport {useDocumentDivergences} from '../contexts/DivergencesProvider'\n\ninterface Props {\n path: Path\n}\n\nexport const FormDivergenceIndicator: ComponentType<Props> = (props) => {\n const divergenceNavigator = useDocumentDivergences()\n\n if (!divergenceNavigator.enabled) {\n return null\n }\n\n return <FormDivergenceIndicatorEnabled {...props} divergenceNavigator={divergenceNavigator} />\n}\n\nconst FormDivergenceIndicatorEnabled: ComponentType<\n Props & {divergenceNavigator: DivergenceNavigator & {enabled: true}}\n> = ({divergenceNavigator, path}) => {\n const divergence = selectDivergence(divergenceNavigator.state, path)\n const {release: upstreamBundle} = useVersionRelease(divergenceNavigator.state.upstreamId ?? '')\n\n return (\n <AnimatePresence>\n {divergence && divergence.divergences[0][1].status === 'unresolved' && (\n <DivergenceIndicator\n path={path}\n divergenceNavigator={divergenceNavigator}\n divergence={divergence}\n upstreamBundle={upstreamBundle}\n />\n )}\n </AnimatePresence>\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\nexport interface InspectedDivergenceInfo {\n sessionId: string | null\n divergenceCount: number | null\n}\n\nexport const InspectedDivergence = defineEvent<InspectedDivergenceInfo>({\n name: 'Inspected Divergence',\n version: 1,\n description: 'User inspected divergence in a single node',\n})\n\nexport interface ActedOnDivergenceInfo {\n action: 'take-upstream-value' | 'mark-resolved'\n sessionId: string | null\n divergenceCount: number | null\n}\n\nexport const ActedOnDivergence = defineEvent<ActedOnDivergenceInfo>({\n name: 'Acted On Divergence',\n version: 1,\n description: 'User acted on divergence in a single node',\n})\n","import {append, at, type NodePatch, type Path, set, setIfMissing, unset} from '@sanity/mutate'\nimport {type Path as SanityPath, type SanityDocument} from '@sanity/types'\nimport {fromString, isEqual, startsWith} from '@sanity/util/paths'\nimport {EMPTY, first, from, map, mergeMap, type Observable, of} from 'rxjs'\n\nimport {type DivergenceAtPath} from './readDocumentDivergences'\nimport {type ResolutionMarkerAtPath} from './types/ResolutionMarker'\nimport {flattenObject} from './utils/flatten'\n\nconst SYSTEM_PATH = '_systemDivergences'\nconst DIVERGENCE_RESOLUTION_PATH = [SYSTEM_PATH, 'resolutions'] as const satisfies Path\nconst DEFAULT_VALUES = [{}, []]\n\n/**\n * Create patches to set the provided resolution markers on the subject version,\n * ensuring the necessary `_systemDivergences` field exists.\n *\n * @internal\n */\nexport function createUpsertResolutionMarkerPatches(\n ...resolutionMarkers: ResolutionMarkerAtPath[]\n): NodePatch[] {\n const upsertSystem = DIVERGENCE_RESOLUTION_PATH.map((segment, index, array) =>\n array.slice(0, index).concat(segment),\n ).map((path, index) => at(path, setIfMissing(DEFAULT_VALUES[index])))\n\n const setResolutionMarkers = resolutionMarkers.flatMap(([path, resolutionMarker]) => [\n at([...DIVERGENCE_RESOLUTION_PATH, {_key: path}], unset()),\n at(\n DIVERGENCE_RESOLUTION_PATH,\n append([\n {\n _key: path,\n resolutionMarker,\n },\n ]),\n ),\n ])\n\n return [...upsertSystem, ...setResolutionMarkers]\n}\n\n/**\n * Resolve an array of divergences by taking their upstream value.\n *\n * @internal\n */\nexport function createTakeFromUpstreamPatches(\n source: SanityDocument,\n allDivergences: DivergenceAtPath[],\n ...paths: SanityPath[]\n): Observable<NodePatch> {\n return from(allDivergences).pipe(\n mergeMap(([divergencePath, divergence]) => {\n const divergencePathSegments = fromString(divergencePath)\n\n // Set ancestoral or sibling object `_type`.\n if (divergence.effect === 'set' && divergencePathSegments.at(-1) === '_type') {\n const isAncestorOrSibling = paths.some((acceptedPath) => {\n return (\n acceptedPath.length > divergencePathSegments.length - 1 &&\n startsWith(divergencePathSegments.slice(0, -1), acceptedPath) &&\n !isEqual(divergencePathSegments, acceptedPath)\n )\n })\n\n if (isAncestorOrSibling) {\n return from(flattenObject(source)).pipe(\n first(([nodeFlatPath]) => nodeFlatPath === divergencePath),\n map(([, value]) => value),\n map((value) => at(divergencePath, set(value))),\n )\n }\n }\n\n // Divergence not selected for copy.\n if (typeof paths.find((path) => isEqual(path, divergencePathSegments)) === 'undefined') {\n return EMPTY\n }\n\n if (divergence.effect === 'insert') {\n // TODO: Support array insertions.\n throw new Error('Array insertions not supported')\n }\n\n if (divergence.effect === 'unset') {\n return of(at(divergencePath, unset()))\n }\n\n if (divergence.effect === 'set') {\n return from(flattenObject(source)).pipe(\n first(([nodeFlatPath]) => nodeFlatPath === divergencePath),\n map(([, value]) => value),\n map((value) => at(divergencePath, set(value))),\n )\n }\n\n return EMPTY\n }),\n )\n}\n","import {SanityEncoder} from '@sanity/mutate'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {type SanityDocument} from '@sanity/types'\nimport {fromString, get} from '@sanity/util/paths'\nimport {useContext, useEffect, useState} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {\n type Observable,\n EMPTY,\n filter,\n find,\n firstValueFrom,\n from,\n map,\n mergeMap,\n of,\n startWith,\n switchMap,\n toArray,\n zip,\n} from 'rxjs'\nimport {DocumentDivergencesContext} from 'sanity/_singletons'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useDocumentOperation} from '../../hooks/useDocumentOperation'\nimport {useDocumentStore} from '../../store/datastores'\nimport {selectUpstreamVersion} from '../../store/document/selectUpstreamVersion'\nimport {getDocumentAtRevision} from '../../store/events/getDocumentAtRevision'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {getPublishedId, getVersionFromId} from '../../util/draftUtils'\nimport {ActedOnDivergence, InspectedDivergence} from '../__telemetry__/divergence.telemetry'\nimport {type ReachableDivergence} from '../divergenceNavigator'\nimport {createTakeFromUpstreamPatches, createUpsertResolutionMarkerPatches} from '../patches'\nimport {createDocumentRevisionMarker, type DivergenceAtPath} from '../readDocumentDivergences'\nimport {type ResolutionMarkerAtPath} from '../types/ResolutionMarker'\nimport {hashData} from '../utils/hashData'\n\ntype HydratedSnapshot =\n | {\n isLoading: true\n value?: never\n }\n | {\n isLoading: false\n value?: {\n value: unknown\n document: SanityDocument\n }\n }\n\n/**\n * @internal\n */\nexport interface DivergenceController {\n /**\n * Resolve the divergence by setting its resolution marker to the current\n * upstream node.\n */\n markResolved: () => Promise<void>\n /**\n * Resolve the divergence by taking the value from the upstream node.\n */\n takeUpstreamValue: () => Promise<void>\n isLoading: boolean\n isReadOnly: boolean\n isActionPending: boolean\n upstreamBase: HydratedSnapshot\n upstreamHead: HydratedSnapshot\n}\n\n/**\n * @internal\n */\nexport function useDivergenceController(\n divergence: ReachableDivergence,\n allDivergences: DivergenceAtPath[],\n contextReadOnly: boolean,\n): DivergenceController {\n const {subjectId, documentId, documentType, sinceRevisionId, path} = divergence\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const documentStore = useDocumentStore()\n const telemetry = useTelemetry()\n const [isActionPending, setIsActionPending] = useState<boolean>(false)\n\n // Why: `useDocumentDivergences` throws outside a `DivergencesProvider`, and\n // the controller can render in trees that lack one. Read the context directly.\n const divergencesContext = useContext(DocumentDivergencesContext)\n const sessionId = divergencesContext?.sessionId ?? null\n // Why: `null` distinguishes \"no provider mounted\" from \"known zero\n // divergences\" in telemetry.\n const divergenceCount = divergencesContext?.enabled\n ? divergencesContext.state.divergences.length\n : null\n\n const logInspectedDivergence = useEffectEvent(() =>\n telemetry.log(InspectedDivergence, {sessionId, divergenceCount}),\n )\n useEffect(logInspectedDivergence, [logInspectedDivergence])\n\n const [upstreamId, upstreamRevisionId] = sinceRevisionId.split('@')\n\n const readUpstreamBase: Observable<HydratedSnapshot> = getDocumentAtRevision({\n client,\n documentId: upstreamId,\n revisionId: upstreamRevisionId,\n }).pipe(\n switchMap((state) => {\n if (state?.loading) {\n return of({\n isLoading: true,\n })\n }\n return of(state).pipe(\n filter((revision) => revision !== null),\n map(({document}) => document),\n switchMap((document) => {\n if (!document) {\n return EMPTY\n }\n\n return of(get(document, path)).pipe(\n map((value) => ({value, document})),\n startWith(undefined),\n )\n }),\n map((value) => ({isLoading: false, value})),\n )\n }),\n )\n\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the divergence's own\n // document id, independent of the selected perspective.\n const readUpstreamHead: Observable<HydratedSnapshot> = documentStore.pair\n .editState(getPublishedId(documentId), documentType, getVersionFromId(documentId))\n .pipe(\n switchMap((state) => {\n if (!state.ready) {\n return of({\n isLoading: true,\n })\n }\n\n return of(state).pipe(\n map(selectUpstreamVersion),\n find((document) => document !== null),\n switchMap((document) => {\n if (typeof document === 'undefined') {\n return EMPTY\n }\n\n return of(get(document, path)).pipe(\n map((value) => ({value, document})),\n startWith(undefined),\n )\n }),\n map((value) => ({isLoading: false, value})),\n )\n }),\n )\n\n // Kept synchronous: `markResolved` / `takeUpstreamValue` build and execute\n // patches from `upstreamHead.value.document` (and gate on `isLoading`), so a\n // deferred snapshot could act against a stale upstream document head.\n const upstreamBase = useSyncObservable(readUpstreamBase, {isLoading: true})\n const upstreamHead = useSyncObservable(readUpstreamHead, {isLoading: true})\n\n const isLoading = upstreamBase.isLoading || upstreamHead.isLoading\n const isReadOnly = contextReadOnly || isLoading || isActionPending\n\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the divergence's subject\n // id, independent of the selected perspective.\n const {patch} = useDocumentOperation(\n getPublishedId(subjectId),\n documentType,\n getVersionFromId(subjectId),\n )\n\n const markResolved = async () => {\n if (isReadOnly || upstreamHead.isLoading || typeof upstreamHead.value === 'undefined') {\n return\n }\n\n setIsActionPending(true)\n\n telemetry.log(ActedOnDivergence, {\n action: 'mark-resolved',\n sessionId,\n divergenceCount,\n })\n\n const markers = await firstValueFrom(\n createResolutionMarkers(upstreamHead.value.document, divergence).pipe(toArray()),\n )\n\n const patches = createUpsertResolutionMarkerPatches(...markers)\n patch.execute(patches.map(SanityEncoder.encodePatch))\n }\n\n const takeUpstreamValue = async () => {\n if (isReadOnly || upstreamHead.isLoading || typeof upstreamHead.value === 'undefined') {\n return\n }\n\n setIsActionPending(true)\n\n telemetry.log(ActedOnDivergence, {\n action: 'take-upstream-value',\n sessionId,\n divergenceCount,\n })\n\n const patches = await firstValueFrom(\n createTakeFromUpstreamPatches(\n upstreamHead.value.document,\n allDivergences,\n ...divergence.divergences.map(([divergencePath]) => fromString(divergencePath)),\n ).pipe(toArray()),\n )\n\n patch.execute(patches.map(SanityEncoder.encodePatch))\n }\n\n return {\n upstreamBase,\n upstreamHead,\n markResolved,\n takeUpstreamValue,\n isLoading,\n isReadOnly,\n isActionPending,\n }\n}\n\nfunction createResolutionMarkers(\n document: SanityDocument,\n reachableDivergence: ReachableDivergence,\n): Observable<ResolutionMarkerAtPath> {\n return from(reachableDivergence.divergences).pipe(\n mergeMap(([path, divergence]) => zip(of(get(document, path)), of(divergence))),\n mergeMap(([value, divergence]) => {\n if (divergence.effect === 'move') {\n throw new Error('Resolution of \"move\" divergences not implemented')\n }\n\n if (typeof value === 'undefined') {\n throw new Error(`Could not resolve upstream value at \\`${divergence.path}\\``)\n }\n\n return zip(\n of(divergence.path),\n zip(of(createDocumentRevisionMarker(document._id, document._rev)), from(hashData(value))),\n )\n }),\n )\n}\n","import {type Path} from '@sanity/types'\nimport {type LayerContextValue, Card} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {css, styled} from 'styled-components'\n\nimport {pathToAnchorIdent} from '../../form/utils/pathToAnchorIdent'\n\ninterface Props {\n $path: Path\n $layer: LayerContextValue\n}\n\n/**\n * @internal\n */\nexport const DivergenceOverlay = styled(Card)<Props>(({$path, $layer, ...props}) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n inline-size: 100%;\n margin-block-start: ${theme.space[3]}px;\n\n @supports (position-anchor: --anchor) {\n position: fixed;\n position-anchor: ${pathToAnchorIdent('input', $path)};\n position-area: block-end span-all;\n position-try-fallbacks: flip-block;\n inline-size: calc(anchor-size(inline) + ${theme.space[5]}px);\n z-index: ${$layer.zIndex};\n }\n `\n})\n","import {diffInput, wrap} from '@sanity/diff'\nimport {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, Skeleton, Spinner, Text, useLayer} from '@sanity/ui'\nimport {fromString} from '@sanity/util/paths'\nimport {type RefObject, type ComponentType, Fragment} from 'react'\nimport {DocumentChangeContext} from 'sanity/_singletons'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {type DiffComponent, type DiffComponentOptions} from '../../field/types'\nimport {useVersionRelease} from '../../hooks/useVersionRelease'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type DivergenceNavigator, type ReachableDivergence} from '../divergenceNavigator'\nimport {useDivergenceController} from '../hooks/useDivergenceController'\nimport {DivergenceOverlay} from './DivergenceOverlay'\n\n/**\n * @internal\n */\nexport interface DivergenceDetailProps {\n divergence: ReachableDivergence\n divergenceNavigator: DivergenceNavigator\n title?: string\n containerElement?: RefObject<HTMLDivElement | null>\n readOnly: boolean | undefined\n}\n\nconst sectionPadding = 4\n\n/**\n * @internal\n */\nexport const DivergenceDetail: ComponentType<DivergenceDetailProps> = ({\n divergenceNavigator,\n divergence,\n containerElement,\n readOnly: contextReadOnly,\n}) => {\n const {\n upstreamBase,\n upstreamHead,\n markResolved,\n takeUpstreamValue,\n isReadOnly,\n isActionPending,\n isLoading,\n } = useDivergenceController(\n divergence,\n divergenceNavigator.state.allDivergences,\n contextReadOnly ?? false,\n )\n\n const {release: upstreamRelease, state: upstreamReleaseState} = useVersionRelease(\n divergence.documentId,\n )\n\n const diff = isLoading\n ? undefined\n : diffInput<any>(\n wrap(upstreamBase?.value?.value ?? null, {}),\n wrap(upstreamHead?.value?.value ?? null, {}),\n )\n\n const DiffComponent = normalizeDiffComponent(divergence.diffComponent)\n\n const divergenceIndex = divergenceNavigator.state.divergences.findIndex(\n ([path]) => path === divergence.path,\n )\n\n const {t} = useTranslation()\n const layer = useLayer()\n\n return (\n <DocumentChangeContext.Provider\n value={{\n documentId: divergence.documentId,\n schemaType: divergence.schemaType,\n isComparingCurrent: false,\n FieldWrapper: Fragment,\n rootDiff: null,\n value: upstreamHead?.value?.document ?? {},\n showFromValue: true,\n }}\n >\n <div ref={containerElement}>\n <DivergenceOverlay\n open\n border\n radius={3}\n shadow={2}\n $path={fromString(divergence.path)}\n contentEditable={false}\n $layer={layer}\n >\n <Flex justify=\"space-between\" align=\"center\">\n <Box paddingX={sectionPadding} paddingY={sectionPadding}>\n <Text size={1}>\n {upstreamReleaseState === 'loaded' &&\n t('divergence.effect.summary', {\n title: divergence.schemaType.title,\n effect: t('divergence.effect.changed'),\n versionName:\n typeof upstreamRelease === 'string'\n ? upstreamRelease\n : upstreamRelease?.metadata.title,\n })}\n </Text>\n </Box>\n <Box paddingLeft={sectionPadding} paddingRight={3}>\n <Button\n aria-label={t('divergence.action.close.label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={divergenceNavigator.blurFocusedDivergence}\n tooltipProps={{\n content: t('divergence.action.close.label'),\n portal: true,\n }}\n />\n </Box>\n </Flex>\n <Card padding={sectionPadding} borderTop borderBottom>\n {isLoading ? (\n <Skeleton\n animated\n delay={1000}\n radius={1}\n style={{width: '100%', aspectRatio: '1/0.125'}}\n />\n ) : (\n <>\n {diff &&\n DiffComponent && (\n // oxlint-disable-next-line react/react-compiler\n <DiffComponent diff={diff} schemaType={divergence.schemaType} />\n )}\n </>\n )}\n </Card>\n <Box paddingX={sectionPadding} paddingY={sectionPadding - 1}>\n <Flex flex={1} gap={2} justify=\"space-between\">\n <Flex flex={1} gap={3} align=\"center\">\n <Flex gap={2} align=\"center\">\n <Button\n mode=\"ghost\"\n tone=\"neutral\"\n text={t('divergence.action.markResolved.label')}\n type=\"button\"\n onClick={markResolved}\n disabled={isReadOnly}\n />\n <Button\n mode=\"ghost\"\n tone=\"neutral\"\n text={t('divergence.action.takeFromUpstream.label')}\n type=\"button\"\n onClick={takeUpstreamValue}\n disabled={isReadOnly}\n />\n </Flex>\n {isActionPending && <Spinner />}\n </Flex>\n <Flex flex={1} gap={2} style={{justifyContent: 'flex-end'}} align=\"center\">\n <Text size={1}>\n {t('divergence.pagination', {\n position: divergenceIndex + 1,\n count: divergenceNavigator.state.divergences.length,\n })}\n </Text>\n <Button\n aria-label={t('divergence.action.previous.label')}\n tooltipProps={{\n content: t('divergence.action.previous.label'),\n }}\n mode=\"ghost\"\n tone=\"neutral\"\n icon={ArrowLeftIcon}\n type=\"button\"\n disabled={divergenceNavigator.state.divergences.length < 2}\n onClick={() => {\n if (typeof divergenceNavigator.state.previousDivergence !== 'undefined') {\n divergenceNavigator.focusDivergence(\n divergenceNavigator.state.previousDivergence,\n )\n }\n }}\n />\n <Button\n aria-label={t('divergence.action.next.label')}\n tooltipProps={{\n content: t('divergence.action.next.label'),\n }}\n mode=\"ghost\"\n tone=\"neutral\"\n icon={ArrowRightIcon}\n type=\"button\"\n disabled={divergenceNavigator.state.divergences.length < 2}\n onClick={() => {\n if (typeof divergenceNavigator.state.nextDivergence !== 'undefined') {\n divergenceNavigator.focusDivergence(divergenceNavigator.state.nextDivergence)\n }\n }}\n />\n </Flex>\n </Flex>\n </Box>\n </DivergenceOverlay>\n </div>\n </DocumentChangeContext.Provider>\n )\n}\n\nfunction normalizeDiffComponent(\n diffComponent: DiffComponent | DiffComponentOptions | undefined,\n): DiffComponent | undefined {\n if (typeof diffComponent === 'undefined') {\n return undefined\n }\n\n if ('component' in diffComponent) {\n return diffComponent.component\n }\n\n return diffComponent\n}\n","import {type Path} from '@sanity/types'\nimport {useClickOutsideEvent, LayerProvider, Portal} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {type ComponentType, type PropsWithChildren, Fragment, useEffect, useRef} from 'react'\n\nimport {DivergenceDetail} from '../../divergence/components/DivergenceDetail'\nimport {type DivergenceNavigator, selectDivergence} from '../../divergence/divergenceNavigator'\nimport {useWorkspace} from '../../studio/workspace'\nimport {useDocumentDivergences} from '../contexts/DivergencesProvider'\n\nconst canUseAnchorPositioning =\n 'CSS' in globalThis && typeof CSS !== 'undefined' && typeof CSS.supports === 'function'\n ? CSS.supports('(position-anchor: --anchor)')\n : false\n\n/**\n * @internal\n */\nexport interface FormNodeDivergenceDetailProps {\n path: Path\n readOnly: boolean | undefined\n}\n\n/**\n * @internal\n */\nexport const FormNodeDivergenceDetail: ComponentType<\n PropsWithChildren<FormNodeDivergenceDetailProps>\n> = (props) => {\n const {\n advancedVersionControl: {enabled: advancedVersionControlEnabled},\n } = useWorkspace()\n\n const divergenceNavigator = useDocumentDivergences()\n\n if (!divergenceNavigator.enabled) {\n return props.children\n }\n\n return <FormNodeDivergenceDetailEnabled {...props} divergenceNavigator={divergenceNavigator} />\n}\n\nconst FormNodeDivergenceDetailEnabled: ComponentType<\n PropsWithChildren<\n FormNodeDivergenceDetailProps & {divergenceNavigator: DivergenceNavigator & {enabled: true}}\n >\n> = ({divergenceNavigator, children, path, readOnly}) => {\n const containerElement = useRef<HTMLDivElement | null>(null)\n const divergenceDetailContainerElement = useRef<HTMLDivElement | null>(null)\n const divergence = selectDivergence(divergenceNavigator.state, path)\n\n useEffect(() => {\n if (\n typeof divergenceNavigator.state.focusedDivergence !== 'undefined' &&\n divergenceNavigator.state.focusedDivergence === divergence?.path\n ) {\n containerElement.current?.parentElement?.scrollIntoView({block: 'center'})\n }\n }, [divergenceNavigator.state.focusedDivergence, divergence?.path])\n\n useClickOutsideEvent(\n () => {\n if (\n typeof divergenceNavigator.state.focusedDivergence !== 'undefined' &&\n divergenceNavigator.state.focusedDivergence === divergence?.path\n ) {\n divergenceNavigator?.blurDivergence(divergence.path)\n }\n },\n () => [containerElement.current, divergenceDetailContainerElement.current],\n )\n\n // Only use a portal if the browser supports anchor positioning. If the browser does not support\n // anchor positioning, the element is rendered alongside the subject in the document.\n const MaybePortal = canUseAnchorPositioning ? Portal : Fragment\n\n return (\n <div ref={containerElement}>\n {children}\n <MaybePortal>\n <LayerProvider zOffset={1}>\n <AnimatePresence>\n {divergence &&\n divergence.status === 'unresolved' &&\n divergenceNavigator.state.focusedDivergence === divergence.path && (\n <motion.div\n initial={{opacity: 0}}\n exit={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.1}}\n >\n <DivergenceDetail\n containerElement={divergenceDetailContainerElement}\n divergence={divergence}\n divergenceNavigator={divergenceNavigator}\n readOnly={readOnly}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </LayerProvider>\n </MaybePortal>\n </div>\n )\n}\n","import {styled} from 'styled-components'\n\nimport {type FormArea} from './FormRow'\n\ninterface Props {\n $area: FormArea\n}\n\n/**\n * @internal\n */\nexport const FormCell = styled.div<Props>`\n grid-area: ${({$area}) => $area};\n`\n","import {type ComponentType, type PropsWithChildren, type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nimport {FormCell} from './FormCell'\n\nconst areas = ['gutterStart', 'body', 'gutterEnd'] as const\nexport type FormArea = (typeof areas)[number]\n\nexport interface FormRowProps extends PropsWithChildren {\n gutterStartCell?: ReactNode\n}\n\n/**\n * @internal\n */\nexport const FormRow: ComponentType<FormRowProps> = ({children, gutterStartCell}) => (\n <FormRowContainer>\n {gutterStartCell && <FormCell $area=\"gutterStart\">{gutterStartCell}</FormCell>}\n <FormCell $area=\"body\">{children}</FormCell>\n </FormRowContainer>\n)\n\nconst FormRowContainer = styled.div`\n display: grid;\n grid-template-areas: '${areas.join(' ')}';\n grid-template-columns: var(--formGutterSize, 0px) 1fr var(--formGutterSize, 0px);\n gap: var(--formGutterGap, 0px);\n\n /* Collapse the end gutter and gap for nested rows. */\n & & {\n grid-template-columns: var(--formGutterSize, 0px) 1fr 0;\n margin-inline-end: calc(var(--formGutterGap, 0px) * -1);\n }\n`\n","import {type Path, type DeprecatedProperty, type FormNodeValidation} from '@sanity/types'\nimport {Stack} from '@sanity/ui'\nimport {type HTMLProps, memo, type ReactNode} from 'react'\n\nimport {type DocumentFieldActionNode} from '../../../config/document/fieldActions/types'\nimport {type FormNodePresence} from '../../../presence/types'\nimport {useFieldActions} from '../../field/actions/useFieldActions'\nimport {type FieldCommentsProps} from '../../types/fieldProps'\nimport {FormDivergenceIndicator} from '../FormDivergenceIndicator'\nimport {FormNodeDivergenceDetail} from '../FormNodeDivergenceDetail'\nimport {FormRow} from '../layout/FormRow'\nimport {FormFieldBaseHeader} from './FormFieldBaseHeader'\nimport {FormFieldHeaderText} from './FormFieldHeaderText'\n\nconst EMPTY_ARRAY: never[] = []\n\n/** @internal */\nexport interface FormFieldProps {\n /**\n * @hidden\n * @beta\n */\n __unstable_headerActions?: DocumentFieldActionNode[]\n /**\n * @hidden\n * @beta\n */\n __unstable_presence?: FormNodePresence[]\n /** @internal @deprecated DO NOT USE */\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments?: FieldCommentsProps\n /** @internal @deprecated ONLY USED BY AI ASSIST PLUGIN */\n __internal_slot?: ReactNode\n children: ReactNode\n description?: ReactNode\n /**\n * The unique ID used to target the actual input element\n */\n inputId?: string\n /**\n * The nesting level of the form field\n */\n level?: number\n title?: ReactNode\n /**\n * @beta\n */\n validation?: FormNodeValidation[]\n deprecated?: DeprecatedProperty\n path: Path\n}\n\n/** @internal */\nexport const FormField = memo(function FormField(\n props: FormFieldProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n const {\n __unstable_headerActions: actions = EMPTY_ARRAY,\n __unstable_presence: presence = EMPTY_ARRAY,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_slot: slot = null,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments: comments,\n children,\n description,\n inputId,\n level,\n path,\n readOnly,\n title,\n validation,\n deprecated,\n ...restProps\n } = props\n const {focused, hovered, onMouseEnter, onMouseLeave} = useFieldActions()\n\n return (\n <FormNodeDivergenceDetail path={path} readOnly={readOnly}>\n <FormRow gutterStartCell={<FormDivergenceIndicator path={path} />}>\n <Stack\n {...restProps}\n data-level={level}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n gap={2}\n >\n {/*\n NOTE: It’s not ideal to hide validation, presence and description when there's no `title`.\n So we might want to separate the concerns of input vs formfield components later on.\n */}\n {title && (\n <FormFieldBaseHeader\n __internal_comments={comments}\n __internal_slot={slot}\n actions={actions}\n fieldFocused={Boolean(focused)}\n fieldHovered={hovered}\n presence={presence}\n inputId={inputId}\n content={\n <FormFieldHeaderText\n description={description}\n inputId={inputId}\n title={title}\n validation={validation}\n deprecated={deprecated}\n />\n }\n />\n )}\n <div>{children}</div>\n </Stack>\n </FormRow>\n </FormNodeDivergenceDetail>\n )\n})\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst TimeZoneButtonElementQuery = styled(ElementQuery)`\n .button-small {\n display: block;\n }\n .button-large {\n display: none;\n }\n\n &[data-eq-min~='2'] {\n .button-small {\n display: none;\n }\n .button-large {\n display: block;\n }\n }\n`\n\nexport default TimeZoneButtonElementQuery\n","import {Box, Flex} from '@sanity/ui'\n\nimport {TimeZoneButton} from '../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport TimeZoneButtonElementQuery from './TimeZoneButtonElementQuery'\n\ninterface Props {\n title: string\n timeZoneScope: TimeZoneScope\n}\n\nconst DialogHeader = (props: Props) => {\n const {title, timeZoneScope} = props\n const {timeZone} = useTimeZone(timeZoneScope)\n const {t} = useTranslation()\n return (\n <TimeZoneButtonElementQuery>\n <Flex align=\"center\">\n {title}\n {/*\n HACK: Sanity UI will attempt to focus the first 'focusable' descendant of any dialog.\n Typically this is fine, but since our first focusable element is a button with a tooltip, this\n default behaviour causes the tooltip to appear whenever the dialog is opened, which we don't want!\n\n To get around this, we include a pseudo-hidden input to ensure our tooltip-enabled button remains\n unfocused on initial mount.\n */}\n <input style={{opacity: 0, position: 'absolute', width: 0}} tabIndex={-1} type=\"button\" />\n <Box marginLeft={2} style={{marginTop: '-1em', marginBottom: '-1em'}}>\n <TimeZoneButton\n tooltipContent={t('time-zone.time-zone-tooltip-scheduled-publishing', {\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n })}\n timeZoneScope={timeZoneScope}\n useElementQueries\n />\n </Box>\n </Flex>\n </TimeZoneButtonElementQuery>\n )\n}\n\nexport default DialogHeader\n","import {Card, Text} from '@sanity/ui'\nimport {endOfDay} from 'date-fns/endOfDay'\nimport {useCallback, useMemo} from 'react'\n\ninterface CalendarDayProps {\n date: Date\n focused?: boolean\n onSelect: (date: Date) => void\n isCurrentMonth?: boolean\n isToday: boolean\n customValidation?: (selectedDate: Date) => boolean\n selected?: boolean\n}\n\nexport function CalendarDay(props: CalendarDayProps) {\n const {date, focused, isCurrentMonth, isToday, customValidation, onSelect, selected} = props\n\n // Round date to the end of day when passing to custom validate function.\n // Remember that all calendar days are in UTC, but comparison is done with 'wall clock' time.\n const isValid = useMemo(() => {\n if (!customValidation) {\n return true\n }\n return customValidation(endOfDay(date))\n }, [date, customValidation])\n\n const handleClick = useCallback(() => {\n if (isValid) {\n onSelect(date)\n }\n }, [date, isValid, onSelect])\n\n return (\n <div aria-selected={selected} data-ui=\"CalendarDay\">\n <Card\n aria-label={date.toDateString()}\n aria-pressed={selected}\n as=\"button\"\n __unstable_focusRing\n data-weekday\n data-focused={focused ? 'true' : ''}\n disabled={!isValid}\n role=\"button\"\n tabIndex={-1}\n onClick={handleClick}\n padding={3}\n radius={2}\n selected={selected}\n tone={isToday || selected ? 'primary' : 'default'}\n >\n <Text\n muted={!selected && !isCurrentMonth}\n style={{textAlign: 'center'}}\n weight={isCurrentMonth ? 'medium' : 'regular'}\n >\n {date.getDate()}\n </Text>\n </Card>\n </div>\n )\n}\n","import range from 'lodash-es/range.js'\n\nexport const MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nexport const WEEK_DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n\nexport const HOURS_24 = range(0, 24)\n\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']\n\nexport const DEFAULT_TIME_PRESETS = [\n [0, 0],\n [6, 0],\n [12, 0],\n [18, 0],\n [23, 59],\n]\n\n// all weekdays except first\nexport const TAIL_WEEKDAYS = [1, 2, 3, 4, 5, 6]\n","import {addDays} from 'date-fns/addDays'\nimport {eachWeekOfInterval} from 'date-fns/eachWeekOfInterval'\nimport {getWeek} from 'date-fns/getWeek'\nimport {lastDayOfMonth} from 'date-fns/lastDayOfMonth'\nimport {startOfMonth} from 'date-fns/startOfMonth'\n\nimport {TAIL_WEEKDAYS} from './constants'\n\nconst getWeekStartsOfMonth = (date: Date): Date[] => {\n const firstDay = startOfMonth(date)\n return eachWeekOfInterval({\n start: firstDay,\n end: lastDayOfMonth(firstDay),\n })\n}\n\nconst getWeekDaysFromWeekStarts = (weekStarts: Date[]): Date[][] => {\n return weekStarts.map((weekStart) => [\n weekStart,\n ...TAIL_WEEKDAYS.map((d) => addDays(weekStart, d)),\n ])\n}\n\ntype Week = {\n number: number\n days: Date[]\n}\n\nexport const getWeeksOfMonth = (date: Date): Week[] =>\n getWeekDaysFromWeekStarts(getWeekStartsOfMonth(date)).map((days): Week => ({\n number: getWeek(days[0]),\n days,\n }))\n\nexport const formatTime = (hours: number, minutes: number): string =>\n `${`${hours}`.padStart(2, '0')}:${`${minutes}`.padStart(2, '0')}`\n","import {Box, Grid, Text} from '@sanity/ui'\nimport {isSameDay} from 'date-fns/isSameDay'\nimport {isSameMonth} from 'date-fns/isSameMonth'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../../hooks/useTimeZone'\nimport {CalendarDay} from './CalendarDay'\nimport {WEEK_DAY_NAMES} from './constants'\nimport {getWeeksOfMonth} from './utils'\n\ninterface CalendarMonthProps {\n date: Date\n focused?: Date\n selected?: Date\n onSelect: (date: Date) => void\n hidden?: boolean\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function CalendarMonth(props: CalendarMonthProps) {\n const {customValidation, timeZoneScope} = props\n const {getCurrentZoneDate} = useTimeZone(timeZoneScope)\n return (\n <Box aria-hidden={props.hidden || false} data-ui=\"CalendarMonth\">\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(7, minmax(44px, 46px))'}}>\n {WEEK_DAY_NAMES.map((weekday) => (\n <Box key={weekday} paddingY={2}>\n <Text size={1} weight=\"medium\" style={{textAlign: 'center'}}>\n {weekday}\n </Text>\n </Box>\n ))}\n\n {/* Note: UTC dates are passed to each Calendar day but we use 'wall time' for comparison */}\n {getWeeksOfMonth(props.date).map((week, weekIdx) =>\n week.days.map((date, dayIdx) => {\n const focused = props.focused && isSameDay(date, props.focused)\n const selected = props.selected && isSameDay(date, props.selected)\n const isToday = isSameDay(date, getCurrentZoneDate())\n const isCurrentMonth = props.focused && isSameMonth(date, props.focused)\n\n return (\n <CalendarDay\n key={`${weekIdx}-${dayIdx}`}\n date={date}\n focused={focused}\n isCurrentMonth={isCurrentMonth}\n isToday={isToday}\n customValidation={customValidation}\n onSelect={props.onSelect}\n selected={selected}\n />\n )\n }),\n )}\n </Grid>\n </Box>\n )\n}\n","export const features = {\n dayPresets: false,\n timePresets: false,\n}\n","import {type ChangeEvent, type ComponentProps, type FocusEvent, useCallback} from 'react'\n\nimport {LazyTextInput} from '../../../../../components/inputs/DateInputs/LazyTextInput'\n\ntype Props = Omit<ComponentProps<typeof LazyTextInput>, 'onChange' | 'value'> & {\n value?: number\n onChange: (year: number) => void\n}\n\nexport const YearInput = ({onChange, ...props}: Props) => {\n const handleChange = useCallback(\n (event: FocusEvent<HTMLInputElement> | ChangeEvent<HTMLInputElement>) => {\n const numericValue = parseInt(event.currentTarget.value, 10)\n if (!isNaN(numericValue)) {\n onChange(numericValue)\n }\n },\n [onChange],\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n {...props}\n onChange={handleChange}\n inputMode=\"numeric\"\n />\n )\n}\n","import {ChevronLeftIcon} from '@sanity/icons/ChevronLeft'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button,\n Flex,\n Select,\n Text,\n} from '@sanity/ui'\nimport {addDays} from 'date-fns/addDays'\nimport {addMonths} from 'date-fns/addMonths'\nimport {setDate} from 'date-fns/setDate'\nimport {setHours} from 'date-fns/setHours'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {setMonth} from 'date-fns/setMonth'\nimport {setYear} from 'date-fns/setYear'\nimport range from 'lodash-es/range.js'\nimport {\n type ComponentProps,\n type FormEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n type RefAttributes,\n} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../../hooks/useTimeZone'\nimport {CalendarMonth} from './CalendarMonth'\nimport {ARROW_KEYS, DEFAULT_TIME_PRESETS, HOURS_24, MONTH_NAMES} from './constants'\nimport {features} from './features'\nimport {formatTime} from './utils'\nimport {YearInput} from './YearInput'\n\nexport type CalendarProps = Omit<ComponentProps<'div'>, 'onSelect'> & {\n selectTime?: boolean\n selectedDate?: Date\n timeStep?: number\n onSelect: (date: Date) => void\n focusedDate: Date\n onFocusedDateChange: (index: Date) => void\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\n// This is used to maintain focus on a child element of the calendar-grid between re-renders\n// When using arrow keys to move focus from a day in one month to another we are setting focus at the button for the day\n// after it has changed but *only* if we *already* had focus inside the calendar grid (e.g not if focus was on the \"next\n// year\" button, or any of the other controls)\n// When moving from the last day of a month that displays 6 weeks in the grid to a month that displays 5 weeks, current\n// focus gets lost on render, so this provides us with a stable element to help us preserve focus on a child element of\n// the calendar grid between re-renders\nconst PRESERVE_FOCUS_ELEMENT = (\n <span\n data-preserve-focus\n style={{overflow: 'hidden', position: 'absolute', outline: 'none'}}\n tabIndex={-1}\n />\n)\n\nexport function Calendar(props: CalendarProps & RefAttributes<HTMLDivElement>) {\n const {getCurrentZoneDate, zoneDateToUtc} = useTimeZone(props.timeZoneScope)\n const {\n ref: forwardedRef,\n selectTime,\n onFocusedDateChange,\n selectedDate = getCurrentZoneDate(),\n focusedDate = selectedDate,\n timeStep = 1,\n onSelect,\n customValidation,\n timeZoneScope,\n ...restProps\n } = props\n\n const setFocusedDate = useCallback(\n (date: Date) => onFocusedDateChange(zoneDateToUtc(date)),\n [onFocusedDateChange, zoneDateToUtc],\n )\n\n const setFocusedDateMonth = useCallback(\n (month: number) => setFocusedDate(setDate(setMonth(focusedDate, month), 1)),\n [focusedDate, setFocusedDate],\n )\n\n const handleFocusedMonthChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (e: FormEvent<HTMLSelectElement>) => setFocusedDateMonth(Number(e.currentTarget.value)),\n [setFocusedDateMonth],\n )\n\n const moveFocusedDate = useCallback(\n (by: number) => setFocusedDate(addMonths(focusedDate, by)),\n [focusedDate, setFocusedDate],\n )\n\n const setFocusedDateYear = useCallback(\n (year: number) => setFocusedDate(setYear(focusedDate, year)),\n [focusedDate, setFocusedDate],\n )\n\n const handleDateChange = useCallback(\n (date: Date) => {\n onSelect(\n zoneDateToUtc(\n setMinutes(setHours(date, selectedDate.getHours()), selectedDate.getMinutes()),\n ),\n )\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleMinutesChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (event: FormEvent<HTMLSelectElement>) => {\n const m = Number(event.currentTarget.value)\n onSelect(zoneDateToUtc(setMinutes(selectedDate, m)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleHoursChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (event: FormEvent<HTMLSelectElement>) => {\n const m = Number(event.currentTarget.value)\n onSelect(zoneDateToUtc(setHours(selectedDate, m)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleTimeChange = useCallback(\n (hours: number, mins: number) => {\n onSelect(zoneDateToUtc(setHours(setMinutes(selectedDate, mins), hours)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const ref = useRef<HTMLDivElement | null>(null)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const focusCurrentWeekDay = useCallback(() => {\n ref.current?.querySelector<HTMLElement>(`[data-focused=\"true\"]`)?.focus()\n }, [ref])\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (!ARROW_KEYS.includes(event.key)) {\n return\n }\n event.preventDefault()\n if (event.currentTarget.hasAttribute('data-calendar-grid')) {\n focusCurrentWeekDay()\n return\n }\n if (event.key === 'ArrowUp') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -7)))\n }\n if (event.key === 'ArrowDown') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 7)))\n }\n if (event.key === 'ArrowLeft') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -1)))\n }\n if (event.key === 'ArrowRight') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 1)))\n }\n // set focus temporarily on this element to make sure focus is still inside the calendar-grid after re-render\n ref.current?.querySelector<HTMLElement>('[data-preserve-focus]')?.focus()\n },\n [zoneDateToUtc, ref, focusCurrentWeekDay, onFocusedDateChange, focusedDate],\n )\n\n useEffect(() => {\n focusCurrentWeekDay()\n }, [focusCurrentWeekDay])\n\n useEffect(() => {\n const currentFocusInCalendarGrid = document.activeElement?.matches(\n '[data-calendar-grid], [data-calendar-grid] [data-preserve-focus]',\n )\n if (\n // Only move focus if it's currently in the calendar grid\n currentFocusInCalendarGrid\n ) {\n focusCurrentWeekDay()\n }\n }, [ref, focusCurrentWeekDay, focusedDate])\n\n const handleNowClick = useCallback(() => onSelect(new Date()), [onSelect])\n\n return (\n <Box data-ui=\"Calendar\" {...restProps} ref={ref}>\n {/* Select date */}\n <Box padding={2}>\n {/* Select month and year */}\n <Flex>\n <Box flex={1}>\n <CalendarMonthSelect\n moveFocusedDate={moveFocusedDate}\n onChange={handleFocusedMonthChange}\n value={focusedDate?.getMonth()}\n />\n </Box>\n <Box marginLeft={2}>\n <CalendarYearSelect\n moveFocusedDate={moveFocusedDate}\n onChange={setFocusedDateYear}\n value={focusedDate.getFullYear()}\n />\n </Box>\n </Flex>\n\n {/* Selected month (grid of days) */}\n <Box\n data-calendar-grid\n onKeyDown={handleKeyDown}\n marginTop={2}\n overflow=\"hidden\"\n tabIndex={0}\n >\n <CalendarMonth\n date={focusedDate}\n focused={focusedDate}\n customValidation={customValidation}\n onSelect={handleDateChange}\n selected={selectedDate}\n timeZoneScope={timeZoneScope}\n />\n {PRESERVE_FOCUS_ELEMENT}\n </Box>\n </Box>\n\n {/* Select time */}\n {selectTime && (\n <Box padding={2} style={{borderTop: '1px solid var(--card-border-color)'}}>\n <Flex align=\"center\">\n <Flex align=\"center\" flex={1}>\n <Box>\n <Select\n aria-label=\"Select hour\"\n value={selectedDate?.getHours()}\n onChange={handleHoursChange}\n >\n {HOURS_24.map((h) => (\n <option key={h} value={h}>\n {`${h}`.padStart(2, '0')}\n </option>\n ))}\n </Select>\n </Box>\n\n <Box paddingX={1}>\n <Text>:</Text>\n </Box>\n\n <Box>\n <Select\n aria-label=\"Select minutes\"\n value={selectedDate?.getMinutes()}\n onChange={handleMinutesChange}\n >\n {range(0, 60, timeStep).map((m) => (\n <option key={m} value={m}>\n {`${m}`.padStart(2, '0')}\n </option>\n ))}\n </Select>\n </Box>\n </Flex>\n\n <Box marginLeft={2}>\n <Button text=\"Set to current time\" mode=\"bleed\" onClick={handleNowClick} />\n </Box>\n </Flex>\n\n {features.timePresets && (\n <Flex direction=\"row\" justify=\"center\" align=\"center\" style={{marginTop: 5}}>\n {DEFAULT_TIME_PRESETS.map(([hours, minutes]) => {\n return (\n <CalendarTimePresetButton\n key={`${hours}-${minutes}`}\n hours={hours}\n minutes={minutes}\n onTimeChange={handleTimeChange}\n selectedDate={selectedDate}\n />\n )\n })}\n </Flex>\n )}\n </Box>\n )}\n </Box>\n )\n}\n\nfunction CalendarTimePresetButton(props: {\n hours: number\n minutes: number\n onTimeChange: (hours: number, minutes: number) => void\n selectedDate: Date\n}) {\n const {hours, minutes, onTimeChange, selectedDate} = props\n const formatted = formatTime(hours, minutes)\n\n const handleClick = useCallback(() => {\n onTimeChange(hours, minutes)\n }, [hours, minutes, onTimeChange])\n\n return (\n <Button\n text={formatted}\n aria-label={`${formatted} on ${selectedDate.toDateString()}`}\n mode=\"bleed\"\n fontSize={1}\n onClick={handleClick}\n />\n )\n}\n\nfunction CalendarMonthSelect(props: {\n moveFocusedDate: (by: number) => void\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n onChange: (e: FormEvent<HTMLSelectElement>) => void\n value?: number\n}) {\n const {moveFocusedDate, onChange, value} = props\n\n const handlePrevMonthClick = useCallback(() => moveFocusedDate(-1), [moveFocusedDate])\n\n const handleNextMonthClick = useCallback(() => moveFocusedDate(1), [moveFocusedDate])\n\n return (\n <Flex flex={1}>\n <Button\n aria-label=\"Go to previous month\"\n onClick={handlePrevMonthClick}\n mode=\"bleed\"\n icon={ChevronLeftIcon}\n paddingX={2}\n radius={0}\n />\n <Box flex={1}>\n <Select radius={0} value={value} onChange={onChange}>\n {MONTH_NAMES.map((m, i) => (\n // oxlint-disable-next-line no-array-index-key\n <option key={i} value={i}>\n {m}\n </option>\n ))}\n </Select>\n </Box>\n <Button\n aria-label=\"Go to next month\"\n mode=\"bleed\"\n icon={ChevronRightIcon}\n onClick={handleNextMonthClick}\n paddingX={2}\n radius={0}\n />\n </Flex>\n )\n}\n\nfunction CalendarYearSelect(props: {\n moveFocusedDate: (by: number) => void\n onChange: (year: number) => void\n value?: number\n}) {\n const {moveFocusedDate, onChange, value} = props\n\n const handlePrevYearClick = useCallback(() => moveFocusedDate(-12), [moveFocusedDate])\n\n const handleNextYearClick = useCallback(() => moveFocusedDate(12), [moveFocusedDate])\n\n return (\n <Flex>\n <Button\n aria-label=\"Previous year\"\n onClick={handlePrevYearClick}\n mode=\"bleed\"\n icon={ChevronLeftIcon}\n paddingX={2}\n radius={0}\n />\n <YearInput value={value} onChange={onChange} radius={0} style={{width: 65}} />\n <Button\n aria-label=\"Next year\"\n onClick={handleNextYearClick}\n mode=\"bleed\"\n icon={ChevronRightIcon}\n paddingX={2}\n radius={0}\n />\n </Flex>\n )\n}\n","import {type ComponentProps, useCallback, useState, type RefAttributes} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../hooks/useTimeZone'\nimport {Calendar} from './calendar/Calendar'\n\nexport function DatePicker(\n props: Omit<ComponentProps<'div'>, 'onChange'> & {\n value?: Date\n onChange: (nextDate: Date) => void\n selectTime?: boolean\n timeStep?: number\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n } & RefAttributes<HTMLDivElement>,\n) {\n const {ref, value: _value, onChange, customValidation, timeZoneScope, ...rest} = props\n const value = _value ?? new Date()\n const {utcToCurrentZoneDate} = useTimeZone(timeZoneScope)\n const [focusedDate, setFocusedDay] = useState<Date>()\n\n const handleSelect = useCallback(\n (nextDate: Date) => {\n onChange(nextDate)\n setFocusedDay(undefined)\n },\n [onChange],\n )\n\n return (\n <Calendar\n {...rest}\n ref={ref}\n selectedDate={utcToCurrentZoneDate(value)}\n onSelect={handleSelect}\n focusedDate={utcToCurrentZoneDate(focusedDate || value)}\n onFocusedDateChange={setFocusedDay}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n )\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button,\n LayerProvider,\n useClickOutsideEvent,\n usePortal,\n} from '@sanity/ui'\nimport {\n type FocusEvent,\n type KeyboardEvent,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\nimport FocusLock from 'react-focus-lock'\n\nimport {Popover} from '../../../../../ui-components/popover/Popover'\nimport {LazyTextInput} from '../../../../components/inputs/DateInputs/LazyTextInput'\nimport {type TimeZoneScope} from '../../../../hooks/useTimeZone'\nimport {DatePicker} from './DatePicker'\n\ntype Props = {\n value?: Date\n id?: string\n readOnly?: boolean\n selectTime?: boolean\n timeStep?: number\n customValidity?: string\n placeholder?: string\n onInputChange?: (event: FocusEvent<HTMLInputElement>) => void\n inputValue?: string\n onChange: (date: Date | null) => void\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function DateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {\n ref: forwardedRef,\n value,\n inputValue,\n customValidation,\n onInputChange,\n onChange,\n selectTime,\n timeStep,\n timeZoneScope,\n ...rest\n } = props\n\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const buttonRef = useRef(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputRef.current,\n )\n\n const [isPickerOpen, setPickerOpen] = useState(false)\n\n const portal = usePortal()\n\n useClickOutsideEvent(\n () => setPickerOpen(false),\n () => [popoverRef.current],\n )\n\n const handleDeactivation = useCallback(() => {\n inputRef.current?.focus()\n inputRef.current?.select()\n }, [inputRef])\n\n const handleKeyUp = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setPickerOpen(false)\n }\n }, [])\n\n const handleClick = useCallback(() => setPickerOpen(true), [])\n\n const suffix = (\n <Box style={{padding: '5px'}}>\n <Button\n ref={buttonRef}\n icon={CalendarIcon}\n mode=\"bleed\"\n padding={2}\n onClick={handleClick}\n style={{display: 'block'}}\n data-testid=\"select-date-button\"\n />\n </Box>\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n ref={inputRef}\n {...rest}\n value={inputValue}\n onChange={onInputChange}\n suffix={\n isPickerOpen ? (\n // Note: we're conditionally inserting the popover here due to an\n // issue with popovers rendering incorrectly on subsequent renders\n // see https://github.com/sanity-io/design/issues/519\n <LayerProvider zOffset={1000}>\n <Popover\n constrainSize\n content={\n <Box overflow=\"auto\">\n <FocusLock onDeactivation={handleDeactivation}>\n <DatePicker\n selectTime={selectTime}\n timeStep={timeStep}\n onKeyUp={handleKeyUp}\n value={value}\n onChange={onChange}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n </FocusLock>\n </Box>\n }\n data-testid=\"date-input-dialog\"\n fallbackPlacements={['bottom', 'bottom-start', 'top-end', 'top', 'top-start']}\n floatingBoundary={portal.element}\n open\n placement=\"bottom-end\"\n portal\n radius={2}\n ref={popoverRef}\n >\n {suffix}\n </Popover>\n </LayerProvider>\n ) : (\n suffix\n )\n }\n />\n )\n}\n","import {TextInput} from '@sanity/ui'\nimport {\n type FocusEvent,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\n\nimport {FormField} from '../../../form/components/formField/FormField'\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {DateTimeInput} from './base/DateTimeInput'\nimport {type CommonProps, type ParseResult} from './types'\n\ntype Props = CommonProps & {\n title: string\n description?: string\n parseInputValue: (inputValue: string) => ParseResult\n formatInputValue: (date: Date) => string\n deserialize: (value: string) => ParseResult\n serialize: (date: Date) => string\n onChange: (nextDate: string | null) => void\n selectTime?: boolean\n placeholder?: string\n timeStep?: number\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function CommonDateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {\n ref: forwardedRef,\n value,\n markers,\n title,\n description,\n placeholder,\n parseInputValue,\n formatInputValue,\n deserialize,\n serialize,\n selectTime,\n timeStep,\n readOnly,\n level,\n onChange,\n customValidation,\n timeZoneScope,\n ...rest\n } = props\n\n const [localValue, setLocalValue] = useState<string | null>(null)\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setLocalValue(null)\n }, [value])\n\n const {zoneDateToUtc} = useTimeZone(timeZoneScope)\n const undefinedValue = typeof value === 'undefined'\n // Text input changes ('wall time')\n const handleDatePickerInputChange = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const nextInputValue = event.currentTarget.value\n const result = nextInputValue === '' ? null : parseInputValue(nextInputValue)\n\n if (result === null) {\n onChange(null)\n\n // If the field value is undefined, and we are clearing the invalid value\n // the above useEffect won't trigger, so we do some extra clean up here\n if (undefinedValue && localValue) {\n setLocalValue(null)\n }\n } else if (result.isValid) {\n // Convert zone time to UTC\n onChange(serialize(zoneDateToUtc(result.date)))\n } else {\n setLocalValue(nextInputValue)\n }\n },\n [undefinedValue, zoneDateToUtc, localValue, serialize, onChange, parseInputValue],\n )\n\n // Calendar changes (UTC)\n const handleDatePickerChange = useCallback(\n (nextDate: Date | null) => {\n onChange(nextDate ? serialize(nextDate) : null)\n },\n [serialize, onChange],\n )\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputRef.current,\n )\n\n const id = useId()\n\n const parseResult = localValue ? parseInputValue(localValue) : value ? deserialize(value) : null\n\n const inputValue = localValue\n ? localValue\n : parseResult?.isValid\n ? formatInputValue(parseResult.date)\n : value\n\n const nodeValidations = useMemo(\n () =>\n markers.map((m) => ({\n level: m.level,\n path: m.path,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n message: m.message ?? m.item?.message,\n })),\n [markers],\n )\n return (\n <FormField\n validation={\n parseResult?.error\n ? [\n ...nodeValidations,\n {\n level: 'error',\n message: parseResult.error,\n path: [],\n }, // casting to marker to avoid having to implement cloneWithMessage on item\n ]\n : nodeValidations\n }\n title={title}\n level={level}\n description={description}\n inputId={id}\n path={[]}\n >\n {readOnly ? (\n <TextInput value={inputValue} readOnly />\n ) : (\n <DateTimeInput\n {...rest}\n id={id}\n selectTime={selectTime}\n timeStep={timeStep}\n placeholder={placeholder || `e.g. ${formatInputValue(new Date())}`}\n ref={inputRef}\n value={parseResult?.date}\n inputValue={inputValue || ''}\n readOnly={Boolean(readOnly)}\n onInputChange={handleDatePickerInputChange}\n onChange={handleDatePickerChange}\n customValidity={parseResult?.error}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n )}\n </FormField>\n )\n}\n","export function isValidDate(date: Date): boolean {\n return date instanceof Date && !isNaN(date.valueOf())\n}\n","import {tz as tzHelper} from '@date-fns/tz'\nimport {format} from 'date-fns/format'\nimport {getMinutes} from 'date-fns/getMinutes'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {parseISO} from 'date-fns/parseISO'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {useCallback, type RefAttributes} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {type CommonProps, type ParseResult} from './types'\nimport {isValidDate} from './utils'\n\ntype ParsedOptions = {\n calendarTodayLabel: string\n customValidation: (selectedDate: Date) => boolean\n customValidationMessage?: string\n timeStep: number\n}\ntype SchemaOptions = {\n calendarTodayLabel?: string\n customValidation?: (selectedDate: Date) => boolean\n customValidationMessage?: string\n timeStep?: number\n}\nexport type Props = CommonProps & {\n onChange: (date: string | null) => void\n timeZoneScope: TimeZoneScope\n type: {\n name: string\n title: string\n description?: string\n options?: SchemaOptions\n placeholder?: string\n }\n}\n\nfunction parseOptions(options: SchemaOptions = {}): ParsedOptions {\n return {\n customValidation:\n options.customValidation ||\n function () {\n return true\n },\n customValidationMessage: options.customValidationMessage || 'Invalid date.',\n calendarTodayLabel: options.calendarTodayLabel || 'Today',\n timeStep: ('timeStep' in options && Number(options.timeStep)) || 1,\n }\n}\n\nfunction serialize(date: Date) {\n return date.toISOString()\n}\nfunction deserialize(isoString: string): ParseResult {\n const deserialized = new Date(isoString)\n if (isValidDate(deserialized)) {\n return {isValid: true, date: deserialized}\n }\n return {isValid: false, error: `Invalid date value: \"${isoString}\"`}\n}\n\n// enforceTimeStep takes a dateString and datetime schema options and enforces the time\n// to be within the configured timeStep\nfunction enforceTimeStep(dateString: string, timeStep: number) {\n if (!timeStep || timeStep === 1) {\n return dateString\n }\n\n const date = parseISO(dateString)\n const minutes = getMinutes(date)\n const leftOver = minutes % timeStep\n if (leftOver !== 0) {\n return serialize(setMinutes(date, minutes - leftOver))\n }\n\n return serialize(date)\n}\n\nexport function DateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {ref: forwardedRef, type, onChange, timeZoneScope, ...rest} = props\n const {title, description, placeholder} = type\n\n const {scheduledPublishing} = useWorkspace()\n const inputDateTimeFormat = scheduledPublishing.inputDateTimeFormat\n\n const {getCurrentZoneDate, timeZone} = useTimeZone(timeZoneScope)\n\n const {customValidation, customValidationMessage, timeStep} = parseOptions(type.options)\n\n // Returns date in UTC string\n const handleChange = useCallback(\n (nextDate: string | null) => {\n let date = nextDate\n if (date !== null && timeStep > 1) {\n date = enforceTimeStep(date, timeStep)\n }\n\n onChange(date)\n },\n [onChange, timeStep],\n )\n\n const formatInputValue = useCallback(\n (date: Date) => format(date, `${inputDateTimeFormat}`, {in: tzHelper(timeZone.name)}),\n [inputDateTimeFormat, timeZone.name],\n )\n\n const parseInputValue = useCallback(\n (inputValue: string) => {\n const parsed = parse(inputValue, `${inputDateTimeFormat}`, getCurrentZoneDate())\n\n // Check is value is a valid date\n if (!isValid(parsed)) {\n return {\n isValid: false,\n error: `Invalid date. Must be in the format \"${inputDateTimeFormat}\"`,\n } as ParseResult\n }\n\n // Check if value adheres to custom validation rules\n if (!customValidation(parsed)) {\n return {\n isValid: false,\n error: customValidationMessage,\n } as ParseResult\n }\n\n return {\n isValid: true,\n date: parsed,\n } as ParseResult\n },\n [customValidation, customValidationMessage, getCurrentZoneDate, inputDateTimeFormat],\n )\n\n return (\n <CommonDateTimeInput\n {...rest}\n onChange={handleChange}\n ref={forwardedRef}\n selectTime\n timeStep={timeStep}\n title={title}\n description={description}\n placeholder={placeholder}\n serialize={serialize}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n customValidation={customValidation}\n parseInputValue={parseInputValue}\n timeZoneScope={timeZoneScope}\n />\n )\n}\n","import {Card, Stack} from '@sanity/ui'\nimport {useState} from 'react'\n\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport {type ScheduleFormData} from '../../types'\nimport {DateTimeInput} from '../dateInputs'\n\ninterface Props {\n onChange?: (formData: ScheduleFormData) => void\n value?: ScheduleFormData | null\n}\n\nconst ScheduleForm = (props: Props) => {\n const {onChange, value} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n const {getCurrentZoneDate} = useTimeZone(timeZoneScope)\n\n // Date input is stored locally to handle behaviour of the studio's `<LazyTextInput />` component.\n // If we don't keep this local state (and only rely on the canonical value of `ScheduleFormData`),\n // you'll see an unsightly flash when text inputs are blurred / lose focus, as `<LazyTextInput />`\n // clears its internal value before it's had a chance to re-render as a result of its own props changing.\n const [inputValue, setInputValue] = useState<string>()\n\n const handleChange = (date: string | null) => {\n if (date && onChange) {\n onChange({date})\n setInputValue(date)\n }\n }\n\n // Only allow dates in the future (`selectedDate` is UTC)\n const handleCustomValidation = (selectedDate: Date): boolean => {\n return selectedDate > getCurrentZoneDate()\n }\n\n return (\n <Stack gap={4}>\n <Card>\n <DateTimeInput\n level={0}\n markers={[]}\n onChange={handleChange}\n type={{\n name: 'date',\n options: {\n customValidation: handleCustomValidation,\n customValidationMessage: 'Date cannot be in the past.',\n },\n title: 'Date and time',\n }}\n value={inputValue === undefined ? value?.date : inputValue}\n timeZoneScope={timeZoneScope}\n />\n </Card>\n </Stack>\n )\n}\n\nexport default ScheduleForm\n","import {Stack} from '@sanity/ui'\nimport {type PropsWithChildren} from 'react'\n\nimport {type ScheduleFormData} from '../../types'\nimport ScheduleForm from './ScheduleForm'\n\ninterface Props {\n onChange?: (formData: ScheduleFormData) => void\n value?: ScheduleFormData | null\n}\n\n/**\n * Form for editing a schedule for a document when scheduled publishing is enabled.\n * @deprecated we will be dropping support for scheduled publishing on a future major version\n * @internal\n */\nexport function EditScheduleForm(props: PropsWithChildren<Props>) {\n const {onChange, value} = props\n\n return (\n <Stack gap={4}>\n {props.children}\n <ScheduleForm onChange={onChange} value={value} />\n </Stack>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Card, Flex, Inline, Text} from '@sanity/ui'\n\ninterface Props {\n description?: string\n title: string\n}\n\nconst ErrorCallout = (props: Props) => {\n const {description, title} = props\n\n return (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={4}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1} weight=\"semibold\">\n {title}\n </Text>\n {description && <Text size={1}>{description}</Text>}\n </Inline>\n </Flex>\n </Card>\n )\n}\n\nexport default ErrorCallout\n","import {type ReactNode, useContext} from 'react'\nimport {DocumentActionPropsContext} from 'sanity/_singletons'\n\nimport {type DocumentActionProps} from '../../config/document/actions'\n\nfunction DocumentActionPropsProvider({\n children,\n value,\n}: {\n children: ReactNode\n value: DocumentActionProps\n}) {\n return (\n <DocumentActionPropsContext.Provider value={value}>\n {children}\n </DocumentActionPropsContext.Provider>\n )\n}\n\nfunction useDocumentActionProps(): DocumentActionProps {\n const context = useContext(DocumentActionPropsContext)\n if (context === undefined) {\n throw new Error('useDocumentActionProps must be used within a DocumentActionPropsProvider')\n }\n return context\n}\n\nexport {DocumentActionPropsProvider, useDocumentActionProps}\n","import {useState} from 'react'\n\nimport {type Schedule, type ScheduleFormData} from '../types'\n\nexport default function useScheduleForm(schedule?: Schedule) {\n const [isDirty, setIsDirty] = useState(false)\n const [formData, setFormData] = useState<ScheduleFormData | null>(\n schedule && schedule?.executeAt\n ? {\n date: schedule.executeAt,\n }\n : null,\n )\n\n const handleFormChange = (form: ScheduleFormData) => {\n const equalDates =\n schedule?.executeAt &&\n new Date(schedule.executeAt).getTime() === new Date(form?.date).getTime()\n\n setFormData(form)\n setIsDirty(!equalDates)\n }\n\n return {\n formData,\n isDirty,\n onFormChange: handleFormChange,\n }\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {type Path, type ValidationMarker} from '@sanity/types'\nimport {Box, type ButtonTone, Flex, Stack, Text} from '@sanity/ui'\n// oxlint-disable-next-line no-restricted-imports\nimport {MenuItem} from '@sanity/ui/menu'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nconst StyledText = styled(Text)`\n white-space: initial;\n`\n\nconst MENU_ITEM_TONES: Record<'error' | 'warning' | 'info', ButtonTone> = {\n error: 'critical',\n warning: 'caution',\n info: 'primary',\n}\n\n/**\n * @internal\n */\nexport interface ValidationListItemProps {\n marker: ValidationMarker\n onClick?: (path?: Path) => void\n path: string\n truncate?: boolean\n}\n\n/**\n * @internal\n */\nexport function ValidationListItem(props: ValidationListItemProps) {\n const {marker, onClick, path, truncate} = props\n\n const handleClick = useCallback(() => {\n if (onClick) {\n onClick(marker.path)\n }\n }, [marker.path, onClick])\n\n const menuItemTone = MENU_ITEM_TONES[marker?.level] || undefined\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const message = marker.message ?? marker.item?.message\n const children = (\n <Flex>\n <Box>\n <Text size={1}>\n {marker.level === 'error' && <ErrorOutlineIcon />}\n {marker.level === 'warning' && <WarningOutlineIcon />}\n {marker.level === 'info' && <InfoOutlineIcon />}\n </Text>\n </Box>\n\n <Stack gap={2} flex={1} paddingLeft={3}>\n {path && (\n <StyledText size={1} weight=\"semibold\">\n {path}\n </StyledText>\n )}\n {message && (\n <StyledText muted size={1} textOverflow={truncate ? 'ellipsis' : undefined}>\n {message}\n </StyledText>\n )}\n </Stack>\n </Flex>\n )\n return (\n <MenuItem padding={1} onClick={handleClick} radius={2} tone={menuItemTone}>\n <Box padding={2}>{children}</Box>\n </MenuItem>\n )\n}\n","import {\n isValidationErrorMarker,\n isValidationInfoMarker,\n isValidationWarningMarker,\n type ObjectSchemaType,\n type Path,\n type ValidationMarker,\n} from '@sanity/types'\nimport {Container} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {ValidationListItem} from './ValidationListItem'\n\n/** @internal */\nexport interface ValidationListProps {\n documentType?: ObjectSchemaType\n kind?: 'simple'\n validation: ValidationMarker[]\n onFocus?: (path: Path) => void\n onClose?: () => void\n truncate?: boolean\n}\n\n/** @internal */\nexport function ValidationList(props: ValidationListProps) {\n const {documentType, kind, validation, onFocus, onClose, truncate} = props\n const errors = validation.filter(isValidationErrorMarker)\n const warnings = validation.filter(isValidationWarningMarker)\n const info = validation.filter(isValidationInfoMarker)\n\n const handleClick = useCallback(\n (path: Path = []) => {\n if (onFocus) onFocus(path)\n if (onClose) onClose()\n },\n [onFocus, onClose],\n )\n\n const resolvePathTitle = (path: Path) => {\n const fields = documentType && documentType.fields\n const field = fields && fields.find((curr) => curr.name === path[0])\n\n return (field && field.type.title) || ''\n }\n\n const hasErrors = errors.length > 0\n const hasWarnings = warnings.length > 0\n const hasInfo = info.length > 0\n\n if (!hasErrors && !hasWarnings && !hasInfo) {\n return null\n }\n\n return (\n <Container width={0} data-kind={kind} data-testid=\"validation-list\">\n {hasErrors &&\n errors.map((_error, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_error.path)}\n marker={_error}\n onClick={handleClick}\n />\n ))}\n {hasWarnings &&\n warnings.map((_warning, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_warning.path)}\n marker={_warning}\n onClick={handleClick}\n />\n ))}\n {hasInfo &&\n info.map((_info, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_info.path)}\n marker={_info}\n onClick={handleClick}\n />\n ))}\n </Container>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {\n type ObjectSchemaType,\n type Path,\n type SchemaType,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type CardTone, Container, Stack} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ReactNode, useCallback, useId} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {useValidationState} from '../../utils/validationUtils'\nimport {ValidationList} from './ValidationList'\n\ninterface ValidationProps {\n documentId?: string\n markers: ValidationMarker[]\n type?: SchemaType\n menuHeader?: ReactNode\n}\n\nconst POPOVER_PROPS = {\n portal: true,\n constrainSize: true,\n preventOverflow: true,\n tone: 'default' as CardTone,\n width: 0,\n placement: 'bottom-end',\n} as const\n\nexport function ValidationInfo(props: ValidationProps) {\n const {type, markers, menuHeader, documentId} = props\n const router = useRouter()\n const {hasError, hasWarning} = useValidationState(markers)\n // use visibility so we can occupy the space equally for all states\n const visibility = hasError || hasWarning ? 'visible' : 'hidden'\n const id = useId() || ''\n const publishId = usePublishedId(documentId)\n\n const onFocus = useCallback(\n (path: Path) => {\n if (!publishId) {\n return\n }\n router.navigateIntent('edit', {\n id: publishId,\n path: encodeURIComponent(PathUtils.toString(path)),\n })\n },\n [router, publishId],\n )\n\n return (\n <MenuButton\n id={id || ''}\n button={\n <Button\n tooltipProps={{content: 'Show validation issues'}}\n mode=\"bleed\"\n data-testid=\"schedule-validation-list-button\"\n icon={hasError ? ErrorOutlineIcon : WarningOutlineIcon}\n style={{visibility}}\n tone={hasError ? 'critical' : 'default'}\n />\n }\n menu={\n <Menu padding={1}>\n <Container width={0}>\n <Stack gap={1}>\n {menuHeader ?? null}\n <ValidationList\n documentType={type as ObjectSchemaType}\n validation={markers}\n onFocus={onFocus}\n />\n </Stack>\n </Container>\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n","// Based off: https://github.com/sanity-io/sanity/blob/next/packages/@sanity/desk-tool/src/components/paneItem/helpers.tsx\nimport {type SanityDocument} from '@sanity/client'\nimport {type SchemaType} from '@sanity/types'\nimport {type ReactNode} from 'react'\nimport {combineLatest, type Observable, of} from 'rxjs'\nimport {map, startWith} from 'rxjs/operators'\n\nimport {type DocumentPreviewStore} from '../../preview/documentPreviewStore'\nimport {getDraftId, getPublishedId} from '../../util/draftUtils'\nimport {type Schedule} from '../types'\n\nexport interface PaneItemPreviewState {\n isLoading?: boolean\n draft?: SanityDocument | null\n published?: SanityDocument | null\n}\n\nconst isLiveEditEnabled = (schemaType: any) => schemaType.liveEdit === true\n\nexport function getPreviewStateObservable(\n documentPreviewStore: DocumentPreviewStore,\n schemaType: SchemaType,\n documentId: string,\n title: ReactNode,\n): Observable<PaneItemPreviewState> {\n const draft$ = isLiveEditEnabled(schemaType)\n ? of({snapshot: null})\n : documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getDraftId(documentId)},\n schemaType,\n )\n\n const published$ = documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getPublishedId(documentId)},\n schemaType,\n )\n\n return combineLatest([draft$, published$]).pipe(\n map(([draft, published]: any) => ({\n draft: draft.snapshot ? {title, ...draft.snapshot} : null,\n isLoading: false,\n published: published.snapshot ? {title, ...published.snapshot} : null,\n })),\n startWith({draft: null, isLoading: true, published: null}),\n )\n}\n\n/**\n * Whilst schedules can contain multiple documents, this plugin specifically limits schedules to one document only\n */\nexport function getScheduledDocument(schedule: Schedule) {\n return schedule.documents?.[0]\n}\n\n/**\n * Whilst schedules can contain multiple documents, this plugin specifically limits schedules to one document only\n */\nexport function getScheduledDocumentId(schedule: Schedule): string | undefined {\n return getScheduledDocument(schedule)?.documentId.replaceAll('drafts.', '')\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {useSchema} from '../../hooks/useSchema'\nimport {type Schedule} from '../types'\nimport {getScheduledDocument} from '../utils/paneItemHelpers'\n\nexport function useScheduleSchemaType(schedule: Schedule): SchemaType | undefined {\n const firstDocument = getScheduledDocument(schedule)\n const schema = useSchema()\n const schemaName = firstDocument.documentType\n\n return useMemo(() => {\n if (!schemaName) {\n return undefined\n }\n return schema.get(schemaName) as SchemaType\n }, [schemaName, schema])\n}\n\nexport function useSchemaType(schemaName: string): SchemaType {\n const schema = useSchema()\n return useMemo(() => schema.get(schemaName) as SchemaType, [schemaName, schema])\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\n\nimport {useDocumentPreviewStore} from '../../store/datastores'\nimport {getPreviewStateObservable, type PaneItemPreviewState} from '../utils/paneItemHelpers'\n\nconst EMPTY_STATE: PaneItemPreviewState = {}\n\nexport default function usePreviewState(\n documentId: string,\n schemaType?: SchemaType,\n): PaneItemPreviewState {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const preview$ = useMemo(\n () =>\n schemaType\n ? getPreviewStateObservable(documentPreviewStore, schemaType, documentId, '')\n : of(EMPTY_STATE),\n [documentPreviewStore, schemaType, documentId],\n )\n\n // Deferred: react-rx v5's deferral is identity-coherent, so on a document\n // id change the live snapshot wins and the previous document's preview\n // never renders under the new id.\n return useObservable(preview$, EMPTY_STATE)\n}\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst DateWithTooltipElementQuery: typeof ElementQuery = styled(ElementQuery)`\n .date-small {\n display: inline;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: none;\n }\n\n &[data-eq-min~='1'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: inline;\n }\n .date-large {\n display: none;\n }\n }\n\n &[data-eq-min~='2'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: inline;\n }\n }\n`\n\nexport default DateWithTooltipElementQuery\n","import {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport useScheduleForm from '../../hooks/useScheduleForm'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\nimport {EditScheduleForm} from '../editScheduleForm/EditScheduleForm'\nimport DialogHeader from './DialogHeader'\n\nexport interface DialogScheduleEditProps {\n onClose: () => void\n schedule: Schedule\n}\n\nconst DialogScheduleEdit = (props: DialogScheduleEditProps) => {\n const {onClose, schedule} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const {updateSchedule} = useScheduleOperation()\n const {formData, isDirty, onFormChange} = useScheduleForm(schedule)\n\n // Callbacks\n const handleScheduleUpdate = async () => {\n if (!formData?.date) {\n return\n }\n // Update schedule then close self\n await updateSchedule({\n date: formData.date,\n scheduleId: schedule.id,\n })\n onClose()\n }\n\n return (\n <Dialog\n footer={{\n confirmButton: {\n text: 'Update',\n disabled: !isDirty,\n onClick: handleScheduleUpdate,\n },\n }}\n header={<DialogHeader timeZoneScope={timeZoneScope} title=\"Edit schedule\" />}\n id=\"time-zone\"\n onClose={onClose}\n width={1}\n >\n {/* oxlint-disable-next-line no-deprecated -- will fix in follow up PR */}\n <EditScheduleForm onChange={onFormChange} value={formData} />\n </Dialog>\n )\n}\n\nexport default DialogScheduleEdit\n","import {useCallback, useState} from 'react'\n\nimport {type TimeZoneScope} from '../../hooks/useTimeZone'\n\ninterface DialogControls {\n show: () => void\n hide: () => void\n timeZoneScope: TimeZoneScope\n visible: boolean\n}\n\nexport function useDialogVisible(timeZoneScope: TimeZoneScope): DialogControls {\n const [dialogVisible, setDialogVisible] = useState(false)\n\n const hide = useCallback(() => {\n setDialogVisible(false)\n }, [])\n const show = useCallback(() => {\n setDialogVisible(true)\n }, [])\n\n return {\n visible: dialogVisible,\n show,\n timeZoneScope,\n hide,\n }\n}\n","import {type TimeZoneScope} from '../../hooks/useTimeZone'\nimport DialogScheduleEdit from '../components/dialogs/DialogScheduleEdit'\nimport {type Schedule} from '../types'\nimport {useDialogVisible} from './useDialogVisibile'\n\nfunction useDialogScheduleEdit(schedule: Schedule, tzScope: TimeZoneScope) {\n const {visible, show, hide, timeZoneScope} = useDialogVisible(tzScope)\n\n const dialogProps = {\n onClose: hide,\n schedule,\n visible,\n }\n\n return {\n DialogScheduleEdit: visible ? DialogScheduleEdit : null,\n dialogProps,\n timeZoneScope,\n dialogScheduleEditShow: show,\n hide,\n }\n}\n\nexport default useDialogScheduleEdit\n","import {type CurrentUser} from '@sanity/types'\nimport {Box, type SelectableTone} from '@sanity/ui'\nimport {type ComponentType, type ReactNode} from 'react'\n\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {\n InsufficientPermissionsMessage,\n type InsufficientPermissionsMessageProps,\n} from '../../../components/InsufficientPermissionsMessage'\n\ninterface Props {\n currentUser?: CurrentUser\n hasPermission?: boolean\n icon: ComponentType | ReactNode\n onClick: () => void\n permissionsOperationLabel: InsufficientPermissionsMessageProps['context']\n title: string\n tone?: SelectableTone\n disabled?: boolean\n}\n\nconst MenuItemWithPermissionsTooltip = (props: Props) => {\n const {\n currentUser,\n hasPermission,\n icon,\n onClick,\n permissionsOperationLabel,\n title,\n tone,\n disabled,\n } = props\n return (\n <Tooltip\n content={\n <Box paddingX={2} paddingY={1}>\n <InsufficientPermissionsMessage\n currentUser={currentUser}\n context={permissionsOperationLabel}\n />\n </Box>\n }\n disabled={hasPermission}\n placement=\"left\"\n portal\n >\n {/* Wrapper element to allow disabled menu items to trigger tooltips */}\n <div>\n <MenuItem\n disabled={!hasPermission || disabled}\n icon={icon}\n onClick={onClick}\n text={title}\n tone={tone}\n />\n </div>\n </Tooltip>\n )\n}\n\nexport default MenuItemWithPermissionsTooltip\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type SchemaType} from '@sanity/types'\n\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useCurrentUser} from '../../../store/user/hooks'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocument} from '../../utils/paneItemHelpers'\nimport MenuItemWithPermissionsTooltip from './MenuItemWithPermissionsTooltip'\n\ninterface Props {\n actions?: {\n clear?: boolean\n delete?: boolean\n edit?: boolean\n execute?: boolean\n }\n onDelete?: () => void\n onEdit?: () => void\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst ContextMenuItems = (props: Props) => {\n const {actions, onDelete, onEdit, schedule, schemaType} = props\n const {mode} = useScheduledPublishingEnabled()\n const firstDocument = getScheduledDocument(schedule)\n\n const currentUser = useCurrentUser()\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: firstDocument.documentId,\n type: schemaType?.name,\n permission: 'publish',\n })\n const {deleteSchedule, publishSchedule} = useScheduleOperation()\n\n const insufficientPermissions = !isPermissionsLoading && !permissions?.granted\n\n // Callbacks\n const handleEdit = () => {\n onEdit?.()\n }\n\n const handleDelete = () => {\n void deleteSchedule({schedule}).then(() => onDelete?.())\n }\n\n const handleExecute = () => {\n void publishSchedule({schedule})\n }\n\n if (!currentUser) {\n return null\n }\n\n return (\n <>\n {actions?.edit && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={CalendarIcon}\n onClick={handleEdit}\n permissionsOperationLabel=\"edit-schedules\"\n title=\"Edit schedule\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.execute && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={PublishIcon}\n onClick={handleExecute}\n permissionsOperationLabel=\"execute-schedules\"\n title=\"Publish now\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.delete && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={TrashIcon}\n onClick={handleDelete}\n permissionsOperationLabel=\"delete-schedules\"\n title=\"Delete schedule\"\n tone=\"critical\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.clear && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={CheckmarkCircleIcon}\n onClick={handleDelete}\n permissionsOperationLabel=\"delete-schedules\"\n title=\"Clear completed schedule\"\n disabled={mode === 'upsell'}\n />\n )}\n </>\n )\n}\n\nexport default ContextMenuItems\n","import {type SchemaType} from '@sanity/types'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {type Schedule} from '../../types'\nimport ContextMenuItems from './ContextMenuItems'\n\ninterface Props {\n actions?: {\n clear?: boolean\n delete?: boolean\n edit?: boolean\n execute?: boolean\n }\n onDelete?: () => void\n onEdit?: () => void\n schedule: Schedule\n schemaType: SchemaType\n}\n\nexport const ScheduleContextMenu = (props: Props) => {\n const {actions, onDelete, onEdit, schedule, schemaType} = props\n\n return (\n <MenuButton\n button={<ContextMenuButton />}\n id=\"contextMenu\"\n menu={\n <Menu>\n <ContextMenuItems\n actions={actions}\n onDelete={onDelete}\n onEdit={onEdit}\n schedule={schedule}\n schemaType={schemaType}\n />\n </Menu>\n }\n popover={{placement: 'left', portal: true, tone: 'default'}}\n />\n )\n}\n","import {useEffect, useState} from 'react'\n\nimport {useValidationStatus} from '../../../hooks/useValidationStatus'\nimport {getDraftId} from '../../../util/draftUtils'\nimport {useScheduleSchemaType} from '../../hooks/useSchemaType'\nimport {type Schedule, type ValidationStatus} from '../../types'\nimport {getScheduledDocumentId} from '../../utils/paneItemHelpers'\n\ninterface Props {\n schedule: Schedule\n updateValidation: (status: ValidationStatus) => void\n}\n\n// Duration to wait before validating (after this component has mounted)\nconst VALIDATION_DELAY_MS = 1500\n\n/**\n * useValidationStatus requires a published id, and we dont always have that\n *\n * This a boilerplate wrapper component around it,\n * so we conditionally call back with updated status whenver it is possible.\n * */\nexport function ValidateScheduleDoc({schedule, updateValidation}: Props) {\n const schemaType = useScheduleSchemaType(schedule)\n const id = getScheduledDocumentId(schedule)\n\n if (!id || !schemaType?.name) {\n return null\n }\n return (\n <DelayedValidationRunner\n id={id}\n schemaName={schemaType.name}\n updateValidation={updateValidation}\n />\n )\n}\n\ninterface ValidationRunnerProps {\n id: string\n schemaName: string\n updateValidation: (status: ValidationStatus) => void\n}\n\nfunction DelayedValidationRunner({id, schemaName, updateValidation}: ValidationRunnerProps) {\n const [ready, setReady] = useState(false)\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setReady(true)\n }, VALIDATION_DELAY_MS)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [])\n\n if (!ready) {\n return null\n }\n\n return <ValidationRunner id={id} schemaName={schemaName} updateValidation={updateValidation} />\n}\n\nfunction ValidationRunner({id, schemaName, updateValidation}: ValidationRunnerProps) {\n const draftId = getDraftId(id)\n // No `getTargetScopeId(useTargetDocumentState())` here: scheduled publishing deliberately validates the\n // explicit draft of the scheduled document, independent of the selected perspective.\n // TODO: this will be supported in the future, look for SAPP-3986 and SAPP-3987.\n const validationStatus = useValidationStatus(draftId, schemaName, true)\n\n useEffect(() => {\n if (!validationStatus.isValidating) {\n updateValidation(validationStatus)\n }\n }, [updateValidation, validationStatus])\n\n return null\n}\n","import {Text} from '@sanity/ui'\nimport {formatDistance} from 'date-fns/formatDistance'\n\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTimeZone} from '../../../../hooks/useTimeZone'\nimport {DATE_FORMAT} from '../../../../studio/timezones/constants'\n\ninterface Props {\n date: Date // local date in UTC\n useElementQueries?: boolean\n}\n\n/**\n * If `useElementQueries` is enabled, dates will be conditionally toggled at different element\n * breakpoints, provided this `<DateWithTooltip>` is wrapped in a `<DateElementQuery>` component.\n */\nconst DateWithTooltip = (props: Props) => {\n const {date, useElementQueries} = props\n\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n\n // Get distance between both dates\n const distance = formatDistance(date, new Date(), {\n addSuffix: true,\n })\n\n const dateTimeLarge = formatDateTz({date, format: DATE_FORMAT.LARGE})\n const dateTimeMedium = formatDateTz({date, format: DATE_FORMAT.MEDIUM})\n const dateTimeSmall = formatDateTz({date, format: DATE_FORMAT.SMALL})\n\n return (\n <Text size={1} textOverflow=\"ellipsis\">\n <Tooltip content={distance} portal>\n <span>\n {useElementQueries ? (\n <>\n <span className=\"date-small\">{dateTimeSmall}</span>\n <span className=\"date-medium\">{dateTimeMedium}</span>\n <span className=\"date-large\">{dateTimeLarge}</span>\n </>\n ) : (\n dateTimeLarge\n )}\n </span>\n </Tooltip>\n </Text>\n )\n}\n\nexport default DateWithTooltip\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {type CardTone, Container, Flex, Text} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {SCHEDULE_FAILED_TEXT} from '../../constants'\n\ninterface Props {\n stateReason: string\n}\n\nconst POPOVER_PROPS = {\n portal: true,\n constrainSize: true,\n preventOverflow: true,\n tone: 'default' as CardTone,\n width: 0,\n}\n\nconst StateReasonFailedInfo = (props: Props) => {\n const {stateReason} = props\n\n return (\n <MenuButton\n id=\"stateReason\"\n button={\n <Button\n tooltipProps={{content: 'Schedule failed'}}\n mode=\"bleed\"\n data-testid=\"schedule-validation-list-button\"\n icon={ErrorOutlineIcon}\n tone=\"critical\"\n />\n }\n menu={\n <Menu padding={1}>\n <Container padding={2} width={0}>\n <Text size={1}>{SCHEDULE_FAILED_TEXT}</Text>\n <Flex gap={3} marginTop={4} padding={1}>\n <Text size={1} style={{color: red[700].hex}}>\n <ErrorOutlineIcon />\n </Text>\n <Text size={1} style={{color: red[700].hex}} weight=\"medium\">\n {stateReason}\n </Text>\n </Flex>\n </Container>\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n\nexport default StateReasonFailedInfo\n","import {UserAvatar} from '../../../components/userAvatar/UserAvatar'\n\ninterface Props {\n id: string\n}\n\nconst User = (props: Props) => {\n const {id} = props\n return <UserAvatar user={id} withTooltip />\n}\n\nexport default User\n","import {type SchemaType} from '@sanity/types'\nimport {Badge, Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {type ElementType, type ReactNode, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {DocumentStatus} from '../../../components/documentStatus/DocumentStatus'\nimport {DocumentStatusIndicator} from '../../../components/documentStatusIndicator/DocumentStatusIndicator'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {useDocumentVersions} from '../../../releases/hooks/useDocumentVersions'\nimport {getDocumentVersionInfoFromVersions} from '../../../releases/util/getDocumentVersionInfoFromVersions'\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {\n DOCUMENT_HAS_ERRORS_TEXT,\n DOCUMENT_HAS_WARNINGS_TEXT,\n SCHEDULE_ACTION_DICTIONARY,\n} from '../../constants'\nimport {type Schedule} from '../../types'\nimport {type PaneItemPreviewState} from '../../utils/paneItemHelpers'\nimport {getLastExecuteDate} from '../../utils/scheduleUtils'\nimport {EMPTY_VALIDATION_STATUS, useValidationState} from '../../utils/validationUtils'\nimport {ValidateScheduleDoc} from '../validation/SchedulesValidation'\nimport {ValidationInfo} from '../validation/ValidationInfo'\nimport DateWithTooltip from './dateWithTooltip/DateWithTooltip'\nimport StateReasonFailedInfo from './StateReasonFailedInfo'\nimport User from './User'\n\nconst StatusDotPlaceholder = styled(Box)`\n width: 9px;\n`\ninterface Props {\n children?: ReactNode\n contextMenu?: ReactNode\n linkComponent?: ElementType | keyof React.JSX.IntrinsicElements\n onClick?: () => void\n previewState?: PaneItemPreviewState\n publishedDocumentId?: string\n schedule: Schedule\n schemaType?: SchemaType\n useElementQueries?: boolean\n}\n\nconst PreviewWrapper = (props: Props) => {\n const {\n children,\n contextMenu,\n linkComponent,\n onClick,\n previewState,\n publishedDocumentId,\n schedule,\n schemaType,\n useElementQueries,\n } = props\n const {mode} = useScheduledPublishingEnabled()\n const [validationStatus, setValidationStatus] = useState(EMPTY_VALIDATION_STATUS)\n const {validation} = validationStatus\n const {hasError, validationTone} = useValidationState(validation)\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n\n const executeDate = getLastExecuteDate(schedule)\n const scheduleDate = executeDate ? new Date(executeDate) : null\n\n return (\n <Card\n padding={1}\n radius={2}\n shadow={1}\n tone={validationTone}\n style={mode === 'upsell' && schedule.state === 'scheduled' ? {opacity: 0.7} : undefined}\n >\n <Flex align=\"center\" gap={1} justify=\"space-between\">\n <Tooltip\n delay={{open: 400}}\n placement=\"bottom-end\"\n content={\n <DocumentStatus draft={previewState?.draft} published={previewState?.published} />\n }\n disabled={!previewState?.draft && !previewState?.published}\n >\n <Card\n __unstable_focusRing\n as={linkComponent ? linkComponent : undefined}\n data-as={onClick || linkComponent ? 'a' : undefined}\n flex={1}\n onClick={onClick}\n padding={1}\n radius={2}\n tabIndex={0}\n tone={validationTone}\n >\n <Flex align=\"center\" gap={3} justify=\"flex-start\" paddingLeft={children ? 0 : [1, 2]}>\n {children && <Box style={{flexBasis: 'auto', flexGrow: 1}}>{children}</Box>}\n\n {/* Badge */}\n {schedule.action === 'unpublish' && (\n <Flex style={{flexShrink: 0}}>\n <Badge fontSize={0} tone={SCHEDULE_ACTION_DICTIONARY[schedule.action].badgeTone}>\n {schedule.action}\n </Badge>\n </Flex>\n )}\n\n {/* Schedule date */}\n <Box display={['block', 'none']} style={{flexShrink: 0, width: '90px'}}>\n <Stack gap={2}>\n {scheduleDate ? (\n <>\n <Text size={1}>\n {formatDateTz({date: scheduleDate, format: 'dd/MM/yyyy'})}\n </Text>\n <Text size={1}>{formatDateTz({date: scheduleDate, format: 'p'})}</Text>\n </>\n ) : (\n <Text muted size={1}>\n <em>No date specified</em>\n </Text>\n )}\n </Stack>\n </Box>\n <Box\n display={['none', 'block']}\n style={{flexShrink: 0, maxWidth: '250px', width: children ? '35%' : 'auto'}}\n >\n {scheduleDate ? (\n <DateWithTooltip date={scheduleDate} useElementQueries={useElementQueries} />\n ) : (\n <Text muted size={1}>\n <em>No date specified</em>\n </Text>\n )}\n </Box>\n\n {/* HACK: render invisible preview wrapper when no children are provided to ensure consistent height */}\n {!children && (\n <Box style={{visibility: 'hidden'}}>\n <SanityDefaultPreview isPlaceholder />\n </Box>\n )}\n\n <Flex align=\"center\" style={{flexShrink: 0, marginLeft: 'auto'}}>\n {/* Avatar */}\n <Box display={['none', 'none', 'block']} marginX={3} style={{flexShrink: 0}}>\n <User id={schedule?.author} />\n </Box>\n\n {/* Document status */}\n <Box display={['none', 'block']} marginX={[2, 2, 3]} style={{flexShrink: 0}}>\n {publishedDocumentId ? (\n <DocumentVersionsStatus publishedDocumentId={publishedDocumentId} />\n ) : (\n <StatusDotPlaceholder />\n )}\n </Box>\n </Flex>\n </Flex>\n </Card>\n </Tooltip>\n\n <Flex justify=\"center\" style={{width: '38px'}}>\n {/* Validation status (only displayed on upcoming schedules) */}\n {schedule.state === 'scheduled' && (\n <Box>\n <ValidateScheduleDoc schedule={schedule} updateValidation={setValidationStatus} />\n <ValidationInfo\n markers={validation}\n type={schemaType}\n documentId={publishedDocumentId}\n menuHeader={\n <Box padding={2}>\n <Text size={1}>\n {hasError ? DOCUMENT_HAS_ERRORS_TEXT : DOCUMENT_HAS_WARNINGS_TEXT}\n </Text>\n </Box>\n }\n />\n </Box>\n )}\n\n {/* Failed state reason (only displayed on cancelled schedules) */}\n {schedule.state === 'cancelled' && (\n <StateReasonFailedInfo stateReason={schedule.stateReason} />\n )}\n </Flex>\n\n {/* Failed state reason (only displayed on cancelled schedules) */}\n {schedule.state === 'cancelled' && (\n <StateReasonFailedInfo stateReason={schedule.stateReason} />\n )}\n\n {/* Context menu */}\n {contextMenu && (\n <Box style={{flexShrink: 0}} paddingRight={2}>\n {contextMenu}\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n\nexport default PreviewWrapper\n\nfunction DocumentVersionsStatus({publishedDocumentId}: {publishedDocumentId: string}) {\n const {versions} = useDocumentVersions({documentId: publishedDocumentId})\n const versionsInfo = useMemo(() => getDocumentVersionInfoFromVersions(versions), [versions])\n return <DocumentStatusIndicator draft={versionsInfo.draft} published={versionsInfo.published} />\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport {useDocumentActionProps} from '../../contexts/documentActionProps'\nimport useDialogScheduleEdit from '../../hooks/useDialogScheduleEdit'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocumentId} from '../../utils/paneItemHelpers'\nimport {ScheduleContextMenu} from '../scheduleContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\ninterface Props {\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst DocumentPreview = (props: Props) => {\n const {schedule, schemaType} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const {DialogScheduleEdit, dialogProps, dialogScheduleEditShow} = useDialogScheduleEdit(\n schedule,\n timeZoneScope,\n )\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {onComplete} = useDocumentActionProps()\n const publishedId = useMemo(() => getScheduledDocumentId(schedule), [schedule])\n\n return (\n <>\n {/* Dialogs (rendered outside of cards so they don't infer card colors) */}\n {DialogScheduleEdit && <DialogScheduleEdit {...dialogProps} />}\n\n <PreviewWrapper\n contextMenu={\n <ScheduleContextMenu\n actions={{\n delete: true,\n edit: true,\n }}\n onDelete={onComplete}\n onEdit={dialogScheduleEditShow}\n schedule={schedule}\n schemaType={schemaType}\n />\n }\n onClick={dialogScheduleEditShow}\n publishedDocumentId={publishedId}\n schedule={schedule}\n schemaType={schemaType}\n />\n </>\n )\n}\n\nexport default DocumentPreview\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\n\ninterface Props {\n onDelete?: () => void\n schedule: Schedule\n}\n\n/**\n * 'Fallback' context menu used with schedules that don't have any valid associated documentType.\n * Currently, all users can delete schedules that don't have any associated documents, so we don't need to check for permissions here.\n */\nexport const FallbackContextMenu = (props: Props) => {\n const {onDelete, schedule} = props\n const {deleteSchedule} = useScheduleOperation()\n\n const handleDelete = () => {\n void deleteSchedule({schedule}).then(() => onDelete?.())\n }\n\n return (\n <MenuButton\n button={<ContextMenuButton />}\n id=\"contextMenu\"\n menu={\n <Menu>\n <MenuItem\n icon={TrashIcon}\n onClick={handleDelete}\n text=\"Delete schedule\"\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'left', portal: true, tone: 'default'}}\n />\n )\n}\n","import {red} from '@sanity/color'\nimport {UnknownIcon} from '@sanity/icons/Unknown'\n\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {type Schedule} from '../../types'\nimport {FallbackContextMenu} from '../scheduleContextMenu/FallbackContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\nconst NoSchemaItem = ({schedule}: {schedule: Schedule}) => {\n return (\n <PreviewWrapper\n contextMenu={<FallbackContextMenu schedule={schedule} />}\n schedule={schedule}\n useElementQueries\n >\n <SanityDefaultPreview\n icon={UnknownIcon}\n layout=\"default\"\n subtitle={<em>It may have been deleted</em>}\n title={<em style={{color: red[600].hex}}>Document not found</em>}\n />\n </PreviewWrapper>\n )\n}\n\nexport default NoSchemaItem\n","import {type SchemaType} from '@sanity/types'\nimport {type ComponentType, type ReactNode, type Ref, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Preview} from '../../../preview/components/Preview'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport useDialogScheduleEdit from '../../hooks/useDialogScheduleEdit'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {type Schedule} from '../../types'\nimport {type PaneItemPreviewState} from '../../utils/paneItemHelpers'\nimport {ScheduleContextMenu} from '../scheduleContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\ninterface Props {\n previewState: PaneItemPreviewState\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst ToolPreview = (props: Props) => {\n const {previewState, schedule, schemaType} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const visibleDocument = previewState.draft || previewState.published\n const isCompleted = schedule.state === 'succeeded'\n const isScheduled = schedule.state === 'scheduled'\n\n const {DialogScheduleEdit, dialogProps, dialogScheduleEditShow} = useDialogScheduleEdit(\n schedule,\n timeZoneScope,\n )\n\n const publishedId = usePublishedId(visibleDocument?._id)\n\n const LinkComponent = useMemo(() => {\n function Component(linkProps: {children?: ReactNode; ref?: Ref<HTMLAnchorElement>}) {\n const {ref, ...rest} = linkProps\n const publishedDocId = visibleDocument ? getPublishedId(visibleDocument._id) : undefined\n return (\n <IntentLink\n {...rest}\n intent=\"edit\"\n params={{\n type: schemaType.name,\n ...(publishedDocId ? {id: publishedDocId} : {}),\n }}\n ref={ref}\n />\n )\n }\n // oxlint-disable-next-line react/react-compiler -- displayName assignment on render-local component\n Component.displayName = 'LinkComponent'\n return Component\n }, [schemaType, visibleDocument])\n\n return (\n <>\n {/* Dialogs (rendered outside of cards so they don't infer card colors) */}\n {DialogScheduleEdit && <DialogScheduleEdit {...dialogProps} />}\n <PreviewWrapper\n contextMenu={\n <ScheduleContextMenu\n actions={{\n clear: isCompleted,\n delete: !isCompleted,\n edit: isScheduled,\n execute: isScheduled,\n }}\n onEdit={dialogScheduleEditShow}\n schedule={schedule}\n schemaType={schemaType}\n />\n }\n linkComponent={LinkComponent}\n previewState={previewState}\n publishedDocumentId={publishedId}\n schedule={schedule}\n schemaType={schemaType}\n useElementQueries\n >\n {previewState.isLoading ? (\n <SanityDefaultPreview\n icon={schemaType?.icon as ComponentType}\n isPlaceholder={previewState.isLoading}\n layout=\"default\"\n />\n ) : (\n <Preview layout=\"default\" schemaType={schemaType} value={visibleDocument} />\n )}\n </PreviewWrapper>\n </>\n )\n}\n\nexport default ToolPreview\n","import {useMemo} from 'react'\n\nimport usePreviewState from '../../hooks/usePreviewState'\nimport {useScheduleSchemaType} from '../../hooks/useSchemaType'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocument} from '../../utils/paneItemHelpers'\nimport DateWithTooltipElementQuery from './dateWithTooltip/DateWithTooltipElementQuery'\nimport DocumentPreview from './DocumentPreview'\nimport NoSchemaItem from './NoSchemaItem'\nimport ToolPreview from './ToolPreview'\n\ninterface Props {\n schedule: Schedule\n type: 'document' | 'tool'\n}\n\nexport const ScheduleItem = (props: Props) => {\n const {schedule, type} = props\n\n const firstDocument = getScheduledDocument(schedule)\n\n const schemaType = useScheduleSchemaType(schedule)\n const previewState = usePreviewState(firstDocument?.documentId, schemaType)\n\n const visibleDocument = previewState.draft || previewState.published\n const invalidDocument = !visibleDocument && !previewState.isLoading\n\n const preview = useMemo(() => {\n if (!schemaType || invalidDocument) {\n return <NoSchemaItem schedule={schedule} />\n }\n\n if (type === 'document') {\n return <DocumentPreview schedule={schedule} schemaType={schemaType} />\n }\n\n if (type === 'tool') {\n return <ToolPreview previewState={previewState} schedule={schedule} schemaType={schemaType} />\n }\n\n return null\n }, [invalidDocument, type, previewState, schedule, schemaType])\n\n return <DateWithTooltipElementQuery>{preview}</DateWithTooltipElementQuery>\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scheduleItem-9PFIH7_h.js","names":["useContext","ZIndexContext","ZIndexContextValue","useZIndex","LayerProvider","ReactNode","ZIndexContextValue","useZIndex","ZIndexContextValueKey","LegacyLayerProvider","t0","$","_c","children","zOffset","zOffsetKey","zIndex","t1","UnitFormatter","getSizeDiff","prev","next","increase","pct","Math","round","getHumanFriendlyBytes","bytes","format","useCurrentLocale","intlCache","UseUnitFormatterOptions","Pick","Intl","NumberFormatOptions","FormattableMeasurementUnit","UnitFormatter","value","unit","useUnitFormatter","t0","$","_c","t1","undefined","options","currentLocale","id","t2","unitDisplay","style","defaultOptions","t3","format","formatter","numberFormat","getPrintableType","value","nativeType","Array","isArray","Object","constructor","name","isEqual","useState","useUnique","value","previous","setPrevious","Path","toString","pathToAnchorIdent","type","path","replaceAll","toLocaleLowerCase","join","EditIcon","Path","motion","ComponentType","styled","Button","pathToAnchorIdent","useTranslation","TargetPerspective","DivergenceNavigator","ReachableDivergence","DivergenceIndicatorProps","divergence","divergenceNavigator","path","upstreamBundle","DivergenceIndicator","t0","$","_c","t","t1","t2","t3","Symbol","for","opacity","t4","metadata","title","t5","count","versionName","t6","state","focusedDivergence","blurFocusedDivergence","focusDivergence","t7","t8","t9","t10","content","placement","t11","t12","t13","Container","div","$path","undefined","DiffComponentResolver","diffResolvers","isIndexSegment","isIndexTuple","isKeySegment","KeyedSegment","Path","UserColor","UserColorManager","pathToString","stringToPath","Annotation","ArrayDiff","Diff","ItemDiff","ObjectDiff","StringDiff","StringDiffSegment","getAnnotationColor","colorManager","annotation","get","author","getAnnotationAtPath","diff","diffPath","path","Array","isArray","getAnnotationAt","getDiffAtPath","getDiffAt","diffAt","undefined","action","parentPath","length","segment","tail","slice","Error","location","_key","type","warn","itemDiff","items","find","item","toIndex","itemMatchesKey","concat","fieldDiff","fields","_msg","key","toValue","DiffVisitor","visitDiff","visitor","visitArrayDiff","visitObjectDiff","visitStringDiff","forEach","getItemDiffIndex","Object","keys","fieldName","segments","fromIndex","Path","useMemo","useUserColorManager","UserColor","Annotation","Diff","getAnnotationAtPath","getAnnotationColor","useAnnotationColor","annotation","$","_c","userColorManager","t0","useDiffAnnotationColor","diff","t1","undefined","path","t2","t3","BadgeTone","FC","PropsWithChildren","css","styled","TargetPerspective","LATEST","getReleaseTone","StyledVersionInlineBadge","span","$tone","props","VersionInlineBadge","t0","$","_c","children","t1","getVersionInlineBadge","release","tone","ReturnComponent","ReleaseDocument","SanityDocument","Observable","ObjectDiff","DocumentVariantType","DocumentGroupEvent","CreateDocumentVersionEvent","DeleteDocumentVersionEvent","PublishDocumentVersionEvent","UnpublishDocumentEvent","ScheduleDocumentVersionEvent","UnscheduleDocumentVersionEvent","DeleteDocumentGroupEvent","CreateLiveDocumentEvent","UpdateLiveDocumentEvent","EditDocumentVersionEvent","HistoryClearedEvent","isCreateDocumentVersionEvent","event","Partial","type","isDeleteDocumentVersionEvent","isPublishDocumentVersionEvent","isUnpublishDocumentEvent","isScheduleDocumentVersionEvent","isUnscheduleDocumentVersionEvent","isDeleteDocumentGroupEvent","isCreateLiveDocumentEvent","isUpdateLiveDocumentEvent","isEditDocumentVersionEvent","BaseEvent","id","timestamp","author","documentVariantType","documentId","releaseId","versionId","versionRevisionId","revisionId","parentId","creationEvent","publishCause","contributors","release","_id","metadata","state","publishAt","transactions","EventsStoreRevision","loading","document","EventsStore","events","nextCursor","error","Error","revision","sinceRevision","findRangeForRevision","nextRev","findRangeForSince","nextSince","loadMoreEvents","getChangesList","diff","expandEvent","Promise","lastNonDeletedRevId","getDocumentAtRevision","DocumentVersionEventType","IconComponent","AddCircleIcon","CalendarIcon","CircleIcon","CloseIcon","EditIcon","PublishIcon","TimelineIcon","TrashIcon","UnpublishIcon","ThemeColorAvatarColorKey","StudioLocaleResourceKeys","DocumentVersionEventType","DocumentVariantType","TIMELINE_ICON_COMPONENTS","Record","historyCleared","createDocumentVersion","createLiveDocument","deleteDocumentGroup","deleteDocumentVersion","editDocumentVersion","updateLiveDocument","publishDocumentVersion","unpublishDocument","scheduleDocumentVersion","unscheduleDocumentVersion","TIMELINE_ITEM_EVENT_TONE","TIMELINE_ITEM_I18N_KEY_MAPPING","published","draft","version","AvatarSize","AvatarStack","Box","Flex","Skeleton","Stack","Text","getTheme_v2","ThemeColorAvatarColorKey","useMemo","css","styled","Tooltip","UserAvatar","useDateTimeFormat","RelativeTimeOptions","useRelativeTime","useTranslation","ReleaseTitle","VersionInlineBadge","isReleaseDocument","getReleaseTone","DocumentGroupEvent","isEditDocumentVersionEvent","isPublishDocumentVersionEvent","useUser","TIMELINE_ICON_COMPONENTS","TIMELINE_ITEM_EVENT_TONE","TIMELINE_ITEM_I18N_KEY_MAPPING","UserAvatarStackProps","maxLength","userIds","size","withTooltip","UserAvatarStack","t0","$","_c","t1","undefined","t2","t3","userId","map","IconBox","$color","props","theme","color","avatar","fg","bg","sizes","RELATIVE_TIME_OPTIONS","minimal","useTemporalPhrase","AvatarSkeleton","NameSkeleton","font","text","lineHeight","UserLine","user","loading","displayName","ChangesBy","collaborators","t","_temp","t4","TimelineItemProps","event","showChangesBy","Event","type","timestamp","documentVariantType","IconComponent","contributors","Symbol","for","dateStyle","timeStyle","dateFormat","Date","date","updatedTimeAgo","t5","parsedDate","format","formattedDate","formattedTimestamp","t6","author","t7","position","t8","filter","Boolean","t9","t10","t11","t12","t13","t14","t15","t16","t17","release","metadata","title","t18","displayTitle","t19","t20","t21","length","t22","t23","t24","Path","Card","Flex","Inline","Stack","Text","ReactNode","Tooltip","TooltipProps","LegacyLayerProvider","UserAvatar","useRelativeTime","useTranslation","useUser","AnnotationDetails","Diff","getAnnotationAtPath","useAnnotationColor","Event","DiffTooltipProps","children","React","JSX","Element","description","diff","path","DiffTooltipWithAnnotationsProps","annotations","DiffTooltip","props","$","_c","t0","restProps","t1","undefined","t2","annotation","t3","t4","DiffTooltipWithAnnotation","t","Symbol","for","minWidth","map","_temp","t5","content","t6","idx","AnnotationItem","author","timestamp","user","color","minimal","timeAgo","event","backgroundColor","background","text","borderRadius","displayName","ArrowDownIcon","ArrowRightIcon","Text","TextProps","HTMLProps","FromToArrowDirection","arrowComponents","down","right","FromToArrow","props","$","_c","restProps","t0","direction","undefined","ArrowComponent","t1","t2","useContext","DocumentChangeContext","DocumentChangeContextInstance","useDocumentChange","documentChange","Error","UserColor","FieldPreviewComponent","BooleanProps","checked","color","BooleanPreview","t0","$","_c","value","schemaType","Preview","options","layout","Checkbox","Switch","t1","background","t2","Symbol","for","t3","text","t4","t5","border","t6","Box","Flex","Text","useDiffAnnotationColor","DiffTooltip","FromToArrow","useDocumentChange","BooleanDiff","DiffComponent","Checkbox","Switch","BooleanFieldDiff","t0","$","_c","diff","schemaType","fromValue","toValue","title","options","Preview","layout","t1","Symbol","for","userColor","showFromValue","showToValue","undefined","t2","t3","t4","t5","t6","t7","useTranslation","Diff","useChangeVerb","diff","$","_c","t","hadPrevValue","hasValue","fromValue","hasNextValue","toValue","t0","value","Path","Card","rem","ElementType","HTMLProps","ReactNode","useMemo","styled","Annotation","Diff","getAnnotationAtPath","useAnnotationColor","DiffTooltip","DiffCardProps","annotation","as","React","JSX","IntrinsicElements","diff","disableHoverEffect","path","tooltip","description","StyledCardProps","$annotationColor","backgroundColor","color","StyledCard","theme","sanity","radius","card","enabled","bg","EMPTY_PATH","DiffCard","props","$","_c","annotationProp","children","className","ref","restProps","t0","t1","t2","style","undefined","t3","t4","t5","t6","background","text","t7","element","t8","t9","t10","Flex","Grid","GridProps","rem","useTheme","HTMLProps","ReactNode","useMemo","RefAttributes","FromToArrow","FromToProps","align","layout","from","to","Omit","HTMLDivElement","INLINE_COLUMN_STYLES","flexShrink","BLOCK_COLUMN_STYLES","alignItems","FLEX_ALIGN","Record","top","center","bottom","default","FromTo","props","$","_c","ref","restProps","style","t0","t1","undefined","theme","t2","maxWidth","display","gridTemplateColumns","sanity","space","t3","layoutStyles","columnStyles","t4","t5","t6","t7","children","t8","t9","Path","SchemaType","CSSProperties","FieldPreviewComponent","Diff","useChangeVerb","DiffCard","DiffTooltip","FromTo","DiffFromToProps","align","cardClassName","diff","layout","path","previewComponent","schemaType","cardStyles","flex","minWidth","display","whiteSpace","DiffFromTo","props","$","_c","PreviewComponent","action","changeVerb","t0","toValue","t1","fromValue","undefined","from","to","t2","t3","StringSchemaType","Box","legacyDateFormat","styled","FieldPreviewComponent","DatetimeWrapper","div","DatetimePreview","t0","$","_c","value","schemaType","t1","formatDateTime","t2","options","name","dateFormat","DEFAULT_DATE_FORMAT","timeFormat","DEFAULT_TIME_FORMAT","format","Date","DiffFromTo","DiffComponent","StringDiff","DatetimePreview","DatetimeFieldDiff","t0","$","_c","diff","schemaType","t1","ConditionalProperty","ConditionalPropertyCallbackContext","useMemo","isRecord","isThenable","value","Promise","then","useCheckCondition","checkProperty","checkPropertyName","context","$","_c","currentUser","document","parent","path","t0","bb0","isTrueIsh","undefined","t1","err","console","error","message","warn","ConditionalProperty","Path","SanityDocument","useCurrentUser","useUnique","useCheckCondition","ConditionalPropertyProps","parent","value","document","checkProperty","checkPropertyKey","path","useConditionalProperty","props","$","_c","t0","valueProp","undefined","currentUser","t1","isPropertyTruthy","ArraySchemaType","isTypedObject","SchemaType","Diff","resolveTypeName","value","_type","resolveJSType","getArrayDiffItemType","diff","schemaType","fromType","toType","action","resolveArrayMemberType","toValue","fromValue","typeName","declared","of","find","candidate","name","length","undefined","val","Array","isArray","ANNOTATION_SYMBOLS","CHILD_SYMBOL","DECORATOR_SYMBOLS","EMPTY_BLOCK_SYMBOL","INLINE_SYMBOLS","TRAILING_SPACE_SYMBOL","SEGMENT_START_SYMBOL","cleanupEfficiency","DIFF_DELETE","DIFF_EQUAL","DIFF_INSERT","makeDiff","ArraySchemaType","isPortableTextSpan","isPortableTextTextBlock","ObjectField","ObjectSchemaType","PortableTextBlock","PortableTextChild","PortableTextObject","PortableTextTextBlock","SchemaType","SpanSchemaType","flatten","isEqual","orderBy","ArrayDiff","DiffComponent","DiffComponentOptions","ObjectDiff","StringDiffSegment","TextSymbols","InlineSymbolMap","MarkSymbolMap","PortableTextDiff","UNKNOWN_TYPE_NAME","hasPTMemberType","schemaType","of","some","isPTSchemaType","startMarkSymbols","DECORATOR_SYMBOLS","map","set","concat","ANNOTATION_SYMBOLS","endMarkSymbols","allSymbols","INLINE_SYMBOLS","CHILD_SYMBOL","SEGMENT_START_SYMBOL","symbolRegex","RegExp","join","segmentRegex","BlockSchemaType","diffComponent","jsonType","name","isHeader","node","style","includes","findChildDiff","diff","child","childrenDiff","fields","children","items","filter","item","isChanged","toValue","fromValue","childDiff","getChildSchemaType","childrenField","find","f","cSchemaType","type","_type","undefined","getDecorators","spanSchemaType","title","value","decorators","getAnnotations","annotations","isDecorator","dec","blockToSymbolizedText","block","decoratorMap","annotationMap","inlineMap","returned","text","replace","spanDiff","findSpanDiffFromChild","textDiff","action","segments","seg","marks","forEach","mark","_isDecorator","_key","createPortableTextDiff","displayValue","_diff","origin","index","allMarkDefs","getAllMarkDefs","markDef","inlines","getInlineObjects","inline","fromText","toText","toPseudoValue","fromPseudoValue","pseudoDiff","buildSegments","annotation","fromIndex","toIndex","hasMoved","Error","fromInput","toInput","dmpDiffs","fromIdx","toIdx","op","push","length","slice","newSegments","markMatches","matchAll","lastIndex","match","Math","max","allChildren","cld","previousChildren","oCld","candidate","findAnnotationDiff","markDefKey","markDefs","isEmptyObject","object","Object","keys","escapeRegExp","allDefs","oldDefs","oDef","def","ObjectSchemaType","SchemaType","StudioLocaleResourceKeys","getPrintableType","FieldValueError","messageKey","expectedType","actualType","value","getValueError","schemaType","jsonType","valueType","Array","isArray","undefined","isObjectType","isObjectValue","field","fields","fieldError","name","type","Record","Card","Stack","Text","Code","CSSProperties","styled","useTranslation","DiffComponent","useChangeVerb","DiffCard","DiffTooltip","FromToArrow","CodeWrapper","div","cardStyles","flex","minWidth","display","whiteSpace","jsonify","value","JSON","stringify","JsonFieldDiff","t0","$","_c","diff","t","changeVerb","t1","fromValue","undefined","from","t2","toValue","to","t3","content","t4","t5","t6","SchemaType","ChangeNode","Diff","FieldChangeNode","GroupChangeNode","ItemDiff","noop","isFieldChange","change","type","isGroupChange","isAddedItemDiff","item","diff","action","isRemovedItemDiff","isUnchangedDiff","emptyValuesByType","string","number","boolean","array","object","Record","ObjectSchemaType","JsonFieldDiff","UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE","name","fields","jsonType","components","diff","ObjectSchemaType","ObjectDiff","SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES","Set","collectObjectSchemaFieldNames","schemaType","names","fieldSets","fieldsets","fields","map","field","single","fieldSet","add","name","getSortedUnknownChangedObjectFieldNames","diff","fieldFilter","schemaFieldNames","unknown","Object","keys","filter","has","sort","fieldName","fieldDiff","isChanged","includes","ArraySchemaType","MultiFieldSet","ObjectField","ObjectSchemaType","Path","SchemaType","getItemKeySegment","pathsAreEqual","pathToString","getArrayDiffItemType","ArrayDiff","ChangeNode","ChangeTitlePath","Diff","DiffComponent","FieldChangeNode","ItemDiff","ObjectDiff","hasPTMemberType","getValueError","JsonFieldDiff","isFieldChange","resolveDiffComponent","UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE","getSortedUnknownChangedObjectFieldNames","DiffContext","itemDiff","parentDiff","parentSchema","fieldFilter","buildChangeList","schemaType","diff","path","titlePath","context","diffComponent","jsonType","type","buildObjectChangeList","buildArrayChangeList","getFieldChange","buildUnknownFieldChangeNodes","fieldDiff","fieldPath","fieldTitlePath","fromValue","toValue","isEmpty","showHeader","showIndex","key","diffContext","changes","childContext","fieldSets","fieldsets","fields","map","field","single","fieldSet","push","buildFieldChange","buildFieldsetChangeList","unknownFieldNames","fieldName","concat","length","reduceTitlePaths","name","isChanged","includes","title","readOnly","hidden","fieldSetHidden","fieldsetReadOnly","fieldSetTitlePath","fieldsetName","changedOrMoved","items","filter","item","hasMoved","fromIndex","toIndex","action","isPortableText","list","reduce","acc","memberTypes","memberType","toType","fromType","console","warn","segment","indexOf","itemPath","itemContext","itemTitlePath","annotation","attachItemDiff","change","children","forEach","index","siblings","error","component","undefined","byLength","slice","Array","isArray","Path","PathSegment","getItemKey","ChangeNode","FieldChangeNode","isAddedAction","change","type","diff","action","flattenChangeNode","changeNode","newSubChanges","changes","forEach","cChange","push","isSubpathOf","subPath","parentPath","length","i","pathSegmentOfCorrectType","item","Record","child","nextItem","key","_key","isArray","Array","parseInt","diffItem","DiffOptions","InsertAfterPatch","SetPatch","UnsetPatch","isIndexSegment","isKeyedObject","isKeySegment","isTypedObject","PatchOperations","Path","isRecord","findIndex","getItemKeySegment","getValueAtPath","isEmptyObject","pathToString","ArrayDiff","ChangeNode","Diff","FieldOperationsAPI","ItemDiff","ObjectDiff","flattenChangeNode","isAddedAction","isSubpathOf","pathSegmentOfCorrectType","diffOptions","diffMatchPatch","enabled","lengthThresholdAbsolute","lengthThresholdRelative","undoChange","change","rootDiff","documentOperations","stubbed","Set","patches","stubbedPaths","type","allChanges","unsetChanges","filter","child","forEach","push","buildUnsetPatches","map","unsetChange","path","reverse","diff","action","itemDiff","parentDiff","hasMoved","buildMovePatches","buildUndoPatches","patch","execute","buildUnsetPatch","concurrentUnsetPaths","previousValue","toValue","Record","furthestEmptyAncestor","paths","i","length","unsetByEarlierPatch","some","unset","currentPath","ignorePaths","initialPath","Error","ancestorPath","slice","ancestorValue","updatedIgnorePaths","isStub","basePath","parentValue","fromIndex","fromValue","getFromItem","insertLocation","before","prevIndex","prevItemKey","prevSegment","after","insert","items","inserts","op","unsets","reduce","acc","concat","stubs","hasSets","sets","getParentStubs","value","set","nextValue","subPath","pathStr","has","nextSegment","nextIsArrayElement","itemValue","stub","getStubValue","Array","isArray","indexAtPrev","nextItem","itemPath","add","prevItem","prevSeg","_key","setIfMissing","onlyContainsStubs","item","Object","prototype","hasOwnProperty","call","nextPath","isIgnoredPath","ignorePath","isEmptyArray","undefined","props","_type","styled","ChangeListWrapper","div","Box","rem","Text","styled","useTranslation","Annotation","FieldChangeNode","FromToIndex","getAnnotationAtPath","DiffCard","RoundedCard","div","theme","sanity","radius","space","AnnotationText","ChangeTitleSegment","props","$","_c","change","segment","t0","hasMoved","fromIndex","toIndex","annotation","created","deleted","readableIndex","CreatedTitleSegment","annotationProp","undefined","t","t1","position","description","t2","content","t3","diff","diffAnnotation","t4","t5","Symbol","for","textDecoration","t6","t7","DeletedTitleSegment","MovedTitleSegment","indexDiff","indexSymbol","positions","Math","abs","direction","count","context","ChevronRightIcon","Text","Breadcrumbs","ChangeTitlePath","FieldChangeNode","ChangeTitleSegment","ChangeBreadcrumb","props","$","_c","change","titlePath","t0","Symbol","for","t1","t2","titleSegment","idx","showSegment","showIndex","map","ErrorOutlineIcon","Box","Card","Flex","Text","Component","ReactNode","isDev","TFunction","DiffErrorBoundaryProps","children","t","DiffErrorBoundaryState","error","Error","DiffErrorBoundary","getDerivedStateFromError","state","componentDidCatch","console","render","props","Box","BoxProps","Card","Stack","Text","Code","ReactNode","useCallback","useEffect","useRef","useState","ExecutionProps","styled","useTranslation","pathToString","FieldChangeNode","FromToArrow","DiffInspectWrapperProps","children","change","as","CodeWrapper","pre","Meta","div","DiffInspectWrapper","props","$","_c","restProps","isHovering","isInspecting","setIsInspecting","t0","Symbol","for","_temp","toggleInspect","t1","current","handleMouseEnter","t2","handleMouseLeave","t3","t4","onKeyDown","evt","metaKey","key","window","addEventListener","removeEventListener","t5","t6","state","MetaLabel","title","DiffInspector","t","diff","action","isChanged","itemDiff","fromIndex","hasMoved","toIndex","path","printMeta","t7","t8","fromValue","jsonify","t9","t10","t11","t12","t13","t14","toValue","t15","t16","t17","value","JSON","stringify","keys","Record","lines","Object","entries","forEach","push","join","Box","ReactNode","Preview","FieldPreviewComponent","Diff","DiffComponent","DiffFromTo","FallbackPreview","t0","$","_c","value","schemaType","t1","t2","FallbackDiff","Record","props","diff","rem","styled","FieldChangeContainer","div","theme","sanity","color","solid","critical","enabled","bg","DiffBorder","space","RevertIcon","HTMLProps","RefAttributes","styled","Button","ButtonProps","useTranslation","Root","theme","sanity","color","solid","critical","enabled","bg","RevertChangesButton","props","$","_c","changeCount","ref","restProps","selected","t","t0","count","t1","ConfirmPopover","useTranslation","RevertChangesConfirmDialogProps","open","onConfirm","onCancel","changeCount","referenceElement","HTMLElement","RevertChangesConfirmDialog","t0","$","_c","t","t1","t2","count","t3","t4","Symbol","for","t5","ErrorOutlineIcon","Box","Card","Flex","Text","useTranslation","FieldValueError","ValueError","t0","$","_c","error","t","t1","Symbol","for","t2","actualType","expectedType","messageKey","t3","ObjectSchemaType","Path","Stack","Fragment","HTMLAttributes","startTransition","useCallback","useMemo","useState","DiffContext","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useTranslation","useDocumentPairPermissions","FieldChangeNode","undoChange","useDocumentChange","ChangeBreadcrumb","DiffErrorBoundary","DiffInspectWrapper","FallbackDiff","DiffBorder","FieldChangeContainer","RevertChangesButton","RevertChangesConfirmDialog","ValueError","ParentWrapper","t0","$","_c","children","path","hasRevertHover","wrap","FieldWrapper","t1","undefined","lastArrayIndex","i","length","t2","slice","t3","FieldChange","props","addParentWrapper","change","hidden","readOnly","restProps","DiffComponent","diffComponent","documentId","schemaType","rootDiff","isComparingCurrent","targetDocumentState","isTargetReady","status","scopeId","name","ops","confirmRevertOpen","setConfirmRevertOpen","revertHovered","setRevertHovered","buttonElement","_setButtonElement","t4","Symbol","for","element","setButtonElement","t","t5","id","type","version","permission","permissions","isPermissionsLoading","t6","handleRevertChanges","t7","handleRevertChangesConfirm","t8","closeRevertChangesConfirmDialog","t9","handleRevertButtonMouseEnter","t10","handleRevertButtonMouseLeave","t11","parentSchema","jsonType","of","some","_temp","isArray","t12","fieldPath","t13","value","t14","showHeader","titlePath","t15","Boolean","t16","t17","error","t18","diff","t19","key","granted","t20","t21","t22","t23","t24","t25","ofType","rem","styled","ChangeListWrapper","div","GroupChangeContainer","theme","sanity","color","solid","critical","enabled","bg","space","ConditionalProperty","SanityDocument","Box","Stack","Text","Fragment","HTMLAttributes","startTransition","useCallback","useContext","useEffect","useMemo","useState","DiffContext","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useDocumentPairPermissions","useConditionalProperty","pathsAreEqual","ChangeNode","GroupChangeNode","isPTSchemaType","undoChange","isFieldChange","useDocumentChange","ChangeBreadcrumb","FieldChange","ChangeListWrapper","GroupChangeContainer","RevertChangesButton","RevertChangesConfirmDialog","ChangeResolverProps","change","readOnly","hidden","addParentWrapper","ChangeResolver","props","$","_c","value","t0","undefined","t1","t2","schemaType","t3","type","diff","toValue","t4","path","document","checkProperty","checkPropertyKey","isHidden","t5","t6","t7","t8","isReadOnly","t9","fieldsetName","t10","GroupChange","group","restProps","titlePath","changes","groupPath","diffPath","documentId","FieldWrapper","rootDiff","isComparingCurrent","every","_temp","isPortableText","isNestedInDiff","revertButtonElement","_setRevertButtonElement","Symbol","for","element","setRevertButtonElement","isRevertButtonHovered","useHover","targetDocumentState","isTargetReady","status","scopeId","name","docOperations","confirmRevertOpen","setConfirmRevertOpen","id","version","permission","permissions","isPermissionsLoading","handleRevertChanges","handleRevertChangesConfirm","closeRevertChangesConfirmDialog","granted","t11","key","length","map","change_0","content","t12","jsonType","of","some","_temp2","isPortableTextGroupArray","t13","ofType","node","setValue","handleMouseOver","handleMouseOut","addEventListener","removeEventListener","Stack","Text","useTranslation","NoChanges","$","_c","t","t0","t1","t2","t3","t4","SanityDocument","RevertIcon","ObjectSchemaType","Card","Stack","startTransition","useCallback","useContext","useMemo","useState","DiffContext","Button","useDocumentOperation","getPairTarget","getTargetScopeId","useTargetDocumentState","useTranslation","useDocumentPairPermissions","useConditionalProperty","ChangeNode","ObjectDiff","buildObjectChangeList","undoChange","useDocumentChange","ChangeListWrapper","ChangeResolver","NoChanges","RevertChangesConfirmDialog","ChangeListProps","schemaType","diff","fields","ChangeList","t0","$","_c","documentId","isComparingCurrent","value","targetDocumentState","isTargetReady","status","t1","scopeId","t2","name","t3","docOperations","path","isRoot","length","confirmRevertAllOpen","setConfirmRevertAllOpen","confirmRevertAllHover","setConfirmRevertAllHover","buttonElement","_setButtonElement","t4","Symbol","for","element","setButtonElement","t","t5","t6","readOnly","document","undefined","checkProperty","checkPropertyKey","isReadOnly","jsonType","Error","t7","id","type","version","permission","permissions","isPermissionsLoading","t8","fieldFilter","allChanges","t9","maybeFlatten","changes","rootChange","t10","revertAllChanges","t11","handleRevertAllChangesClick","t12","handleRevertAllChangesMouseEnter","t13","handleRevertAllChangesMouseLeave","t14","closeRevertAllChangesConfirmDialog","t15","showFooter","t16","change","key","hidden","map","t17","granted","t18","t19","t20","Box","Flex","Stack","Text","ComponentType","ReactNode","styled","MetaInfoProps","title","action","icon","children","markRemoved","MetaText","MetaInfo","props","$","_c","Icon","t0","t1","t2","t3","t4","t5","t6","useMemo","useSyncObservable","EMPTY","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useRefValue","refId","$","_c","client","t0","observable","getDocument","document$","value","undefined","DocumentIcon","Box","Card","Flex","Text","useMemo","styled","useUnitFormatter","useTranslation","ChangeList","DiffCard","DiffTooltip","FromTo","MetaInfo","useRefValue","DiffComponent","ObjectDiff","getHumanFriendlyBytes","getSizeDiff","File","FileAsset","SizeDiff","div","theme","sanity","color","solid","positive","enabled","bg","critical","FileFieldDiff","t0","$","_c","diff","schemaType","fromValue","toValue","fields","fromAsset","asset","toAsset","t","prev","_ref","next","t1","Symbol","for","unitDisplay","maximumFractionDigits","formatUnit","t2","ignoredFields","t3","Object","entries","filter","t4","name","field","isChanged","includes","map","_temp","changedFields","didAssetChange","t5","field_0","_temp2","nestedFields","pctDiff","size","prevSize","t6","nextSize","t7","display","flex","cardStyles","t8","originalFilename","from","t9","to","t10","t11","t12","t13","FileAssetChange","t14","t15","length","t16","name_0","field_1","useMemo","useObservable","Observable","of","OperatorFunction","catchError","map","LoadableState","LoadingState","LoadedState","T","ErrorState","value","error","isLoading","Error","LOADING_STATE","undefined","useLoadable","value$","initialValue","$","_c","t0","initial","t1","pipe","asLoadable","loadableObservable","const","useMemo","Observable","of","LoadableState","useLoadable","useDocumentPreviewStore","useDocumentValues","documentId","paths","$","_c","documentPreviewStore","t0","observePaths","_type","_ref","T","undefined","documentValues$","hexToRgba","hex","opacity","rgba","exec","slice","map","num","parseInt","concat","join","simpleHash","str","hash","length","toString","i","char","charCodeAt","getDeviceDpr","base","Math","ceil","window","devicePixelRatio","min","max","Image","ImageCrop","ImageHotspot","SVGProps","useTranslation","useDiffAnnotationColor","DiffTooltip","ObjectDiff","hexToRgba","HotspotCropSVGProps","crop","diff","hash","hotspot","width","height","HotspotCropSVG","props","$","_c","restProps","t0","t1","undefined","t","cropColor","hotspotColor","t2","t3","t4","t5","border","t6","t7","CropSVG","left","top","right","bottom","x","y","rectProps","Symbol","for","vectorEffect","HotspotSVG","offset","cx","cy","rx","ry","ellipseProps","t8","getImageDimensions","isDefaultCrop","isDefaultHotspot","hues","ImageIcon","createImageUrlBuilder","Box","Card","Flex","Text","SyntheticEvent","useMemo","useState","styled","useClient","useTranslation","useDocumentValues","DEFAULT_STUDIO_CLIENT_OPTIONS","MetaInfo","getDeviceDpr","simpleHash","HotspotCropSVG","ImagePreviewProps","MinimalAsset","ASSET_FIELDS","NoImagePreview","$","_c","t","t0","t1","ImageWrapper","div","gray","hex","Image","img","HotspotDiff","ImagePreview","props","id","action","diff","hotspot","crop","is","client","imageError","setImageError","value","asset","dimensions","imageBuilder","assetIsDeleted","title","originalFilename","T0","T1","T2","T3","T4","assetChanged","printAction","t10","t11","t12","t13","t14","t15","t16","t17","t2","t3","t4","t5","t6","t7","t8","t9","height","width","imageSource","image","dpr","fit","fromValue","_ref","toValue","t18","t19","metaAction","undefined","toString","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","Image","Box","Card","Text","useTranslation","TFunction","getAnnotationAtPath","ChangeList","DiffCard","DiffTooltip","FromTo","useDocumentChange","DiffComponent","ObjectDiff","ImagePreview","NoImagePreview","IMAGE_META_FIELDS","BASE_IMAGE_FIELDS","CARD_STYLES","flex","ImageFieldDiff","t0","$","_c","diff","schemaType","t","showFromValue","fromValue","toValue","fields","isChanged","fromRef","asset","_ref","toRef","t1","assetAnnotation","t2","Object","keys","t3","filter","name","changedFields","t4","t5","field","includes","map","_temp","nestedFields","assetAction","didAssetChange","didCropChange","didHotspotChange","didMetaChange","showImageDiff","showMetaChange","hotspot","undefined","crop","from","t6","to","t7","t8","imageDiff","t9","getChangeDescription","t10","length","t11","action","field_0","Box","styled","FieldPreviewComponent","NumberWrapper","div","NumberPreview","props","$","_c","value","t0","DiffFromTo","DiffComponent","NumberDiff","NumberPreview","NumberFieldDiff","t0","$","_c","diff","schemaType","t1","Box","Text","styled","InlineBox","InlineText","PreviewContainer","PopoverContainer","ChevronDownIcon","isKeySegment","ObjectSchemaType","Path","PortableTextChild","Flex","Text","useClickOutsideEvent","toString","MouseEvent","ReactNode","useCallback","useContext","useEffect","useMemo","useRef","useState","DiffContext","ReviewChangesContext","styled","Popover","useChangeIndicatorsReportedValues","useTranslation","useDiffAnnotationColor","ChangeList","DiffTooltip","ObjectDiff","isEmptyObject","InlineBox","InlineText","PopoverContainer","PreviewContainer","AnnotationProps","diff","object","schemaType","path","children","AnnotationWrapper","div","Annotation","t0","$","_c","restProps","t","t1","t2","action","AnnnotationWithDiffProps","AnnnotationWithDiff","onSetFocus","fullPath","popoverRef","Symbol","for","color","background","text","style","isRemoved","open","setOpen","t3","emptyObject","t4","t5","_key","t6","concat","markDefPath","t7","seg","slice","findIndex","prefix","annotationPath","t8","myPath","t9","myValue","values","t10","t11","t12","p","startsWith","filter","isEditing","length","t13","event","stopPropagation","preventDefault","setTimeout","handleOpenPopup","t14","t15","current","annotation","t16","annotations","t17","value","t18","annotationType","title","name","t19","t20","t21","popoverContent","t22","undefined","t23","context","t24","display","t25","t26","t27","t28","t29","t30","ReactNode","styled","Quote","blockquote","Blockquote","t0","$","_c","children","t1","Heading","ReactNode","styled","headingSizes","Record","h1","h2","h3","h4","h5","h6","StyledHeading","Header","t0","$","_c","style","children","t1","t2","ReactNode","styled","StyledParagraph","div","Paragraph","t0","$","_c","children","t1","Path","PortableTextTextBlock","Box","Card","Stack","Text","MouseEvent","useCallback","useContext","DiffContext","ReviewChangesContext","useTranslation","useDiffAnnotationColor","DiffTooltip","isHeader","PortableTextDiff","Blockquote","Header","Paragraph","EMPTY_PATH","Block","props","$","_c","diff","block","children","color","path","fullPath","onSetFocus","t","isRemoved","action","returned","t0","event","stopPropagation","handleClick","style","t1","fromStyle","origin","fields","annotation","fromValue","background","text","t2","Symbol","for","borderStyle","t3","t4","t5","t6","t7","t8","toStyle","t9","t10","t11","t12","t13","styled","DecoratorWrapper","span","decoration","theme","sanity","fonts","code","family","color","muted","default","enabled","bg","Decorator","t0","$","_c","mark","children","t1","ChevronDownIcon","isKeySegment","ObjectSchemaType","Path","PortableTextChild","PortableTextObject","Card","Flex","Text","useClickOutsideEvent","FOCUS_TERMINATOR","toString","MouseEvent","useCallback","useContext","useEffect","useMemo","useRef","useState","DiffContext","ReviewChangesContext","styled","Popover","useChangeIndicatorsReportedValues","useTranslation","Preview","useDiffAnnotationColor","ChangeList","DiffTooltip","ObjectDiff","isEmptyObject","InlineBox","InlineText","PopoverContainer","PreviewContainer","InlineObjectProps","diff","object","path","schemaType","InlineObjectWrapper","InlineObject","t0","$","_c","restProps","t","t1","_type","t2","InlineObjectWithDiffProps","InlineObjectWithDiff","fullPath","onSetFocus","Symbol","for","color","background","text","style","open","setOpen","t3","emptyObject","isRemoved","action","myPath","t4","t5","seg","_key","prefix","slice","findIndex","concat","myValue","values","t6","t7","p","startsWith","filter","isEditing","length","focusPath","t8","t9","event","stopPropagation","preventDefault","handleOpenPopup","t10","handleClose","t11","value","t12","t13","popoverContent","annotation","t14","annotations","t15","undefined","t16","context","t17","t18","t19","t20","t21","t22","PopoverContent","onClose","popoverRef","current","inlineObjectType","title","name","isKeySegment","Path","HTMLProps","SyntheticEvent","useCallback","useContext","useMemo","DiffContext","ReviewChangesContext","useTranslation","DiffCard","ObjectDiff","StringDiff","StringDiffSegment","InlineBox","TextProps","diff","childDiff","children","React","JSX","Element","path","segment","Text","t0","$","_c","restProps","diffWithFallback","hasChanged","action","t1","TextWithDiff","onSetFocus","fullPath","slice","spanSegment","t","isRemoved","t2","t3","seg","_key","prefix","findIndex","concat","focusPath","event","stopPropagation","preventDefault","handleClick","t4","segments","find","rSeg","text","realSeg","annotation","t5","description","context","diffCard","t6","t7","t8","isPortableTextSpan","ObjectSchemaType","PortableTextChild","PortableTextTextBlock","SpanSchemaType","uniq","xor","ReactNode","useMemo","useTranslation","TFunction","DiffCard","ArrayDiff","ObjectDiff","StringDiff","StringDiffSegment","escapeRegExp","findAnnotationDiff","findChildDiff","findSpanDiffFromChild","getAllMarkDefs","getChildSchemaType","getDecorators","getInlineObjects","isDecorator","TextSymbols","PortableTextDiff","Annotation","Block","Decorator","InlineObject","Text","decoratorSymbolsStart","DECORATOR_SYMBOLS","map","set","decoratorSymbolsEnd","annotationSymbolsStart","ANNOTATION_SYMBOLS","annotationSymbolsEnd","allSymbolsStart","concat","allSymbolsEnd","allDecoratorSymbols","markRegex","RegExp","join","Props","diff","schemaType","PortableText","props","$","_c","block","origin","toValue","fromValue","t","t0","inlineObjects","t1","defineRenderChild","renderChild","t2","displayValue","t3","children","t4","t5","child","t6","renderTextSegment","decoratorTypes","seg","segIndex","spanSchemaType","title","value","React","JSX","Element","text","replace","TRAILING_SPACE_SYMBOL","spanDiff","activeMarks","marks","renderDecorators","length","forEach","mark","_key","returned","fromPtDiffText","indirectMarksAnnotation","action","annotation","undefined","marksDiff","fields","marksAnnotation","marksChanged","ptDiffChildren","split","CHILD_SYMBOL","filter","ptDiffMatchString","controlString","slice","Math","max","indexOf","toTest","matches","matchAll","match","sym","find","aSet","isMarkStart","notClosed","lastIndexOf","push","some","m","description","isEmptyTextChange","_type","ptDiffChild","childrenDiff","segments","items","type","returnedChildren","annotationSegments","Record","textDiff","context","EMPTY_BLOCK_SYMBOL","childToIndex","activeAnnotations","object","symbols","endedAnnotation","allMarkDefs","isInline","INLINE_SYMBOLS","includes","isMarkEnd","isChildStart","isRemoved","pop","indexOfSymbol","findIndex","key","originChild","objectSchemaType","objectDiff","getChildFromFromValue","cld","childDiff","Error","active","lastChild","annotationDiff","annotations","name","useMemo","DiffComponent","ObjectDiff","PortableText","createPortableTextDiff","PTDiff","props","$","_c","diff","schemaType","t0","ptDiff","t1","t2","action","Reference","Box","styled","Preview","FieldPreviewComponent","ReferenceWrapper","div","ReferencePreview","t0","$","_c","value","schemaType","t1","DiffFromTo","DiffComponent","ReferenceDiff","ReferencePreview","ReferenceFieldDiff","t0","$","_c","diff","schemaType","t1","Slug","Box","styled","FieldPreviewComponent","SlugWrapper","div","SlugPreview","props","$","_c","value","t0","current","DiffFromTo","DiffComponent","ObjectDiff","SlugPreview","Slug","current","SlugFieldDiff","t0","$","_c","diff","schemaType","t1","Card","rem","Text","styled","useTranslation","StringDiff","StringDiffSegment","DiffCard","RoundedCard","span","theme","sanity","radius","ChangeSegment","DiffStringSegment","props","$","_c","segment","text","t","action","t0","annotation","t1","t2","description","t3","Symbol","for","textDecoration","t4","t5","display","DiffString","diff","segments","map","_temp","segmentIndex","Box","styled","FieldPreviewComponent","StringWrapper","div","StringPreview","props","$","_c","value","t0","styled","DiffFromTo","DiffString","DiffComponent","StringDiff","StringPreview","StringWrapper","div","StringFieldDiff","t0","$","_c","diff","schemaType","options","list","t1","DiffComponent","DiffComponentOptions","BooleanFieldDiff","DatetimeFieldDiff","FileFieldDiff","ImageFieldDiff","NumberFieldDiff","PTDiff","ReferenceFieldDiff","SlugFieldDiff","StringFieldDiff","defaultComponents","Record","block","boolean","component","showHeader","date","datetime","file","image","number","reference","crossDatasetReference","slug","string","ArraySchemaType","ObjectSchemaType","SchemaType","ComponentType","diffResolvers","Diff","DiffComponent","DiffComponentOptions","defaultComponents","resolveDiffComponent","type","parentSchemaType","D","itType","resolved","components","diff","tryResolve","name","isDateType","includes","defaultComponentKey","jsonType","schemaType","resolvers","resolver","console","error","undefined","isArraySchemaType","SchemaType","get","getOption","type","optionName","options","PSEUDO_OBJECTS","HIDDEN_FIELDS","NO_LEVEL_LAYOUTS","NO_LEVEL_TYPES","getTypeChain","visited","Set","has","add","next","getFieldLevel","schemaType","currentLevel","getArrayFieldLevel","getObjectFieldLevel","typeIfRelevant","asType","fields","jsonType","undefined","typeName","name","includes","isPseudoObject","hasVisibleFields","filter","f","length","hasListOptions","list","isNoLevelLayout","layout","asOneOfTypes","isKeyedObject","KeyedObject","Path","PathSegment","toString","isRecord","PathSegmentWithType","segment","type","PathWithTypes","FlattenOptions","compact","FlattenedPair","flatPath","value","context","flatPathArray","flatPathArrayWithTypes","flattenObject","object","Record","path","pathWithTypes","Generator","length","key","Object","entries","currentPath","concat","currentPathWithTypes","readType","Array","isArray","flattenArray","array","index","_key","_type","normalizePathSegment","isArraySchemaType","isObjectSchemaType","PathSegment","SchemaType","getTypeChain","normalizePathSegment","PathSegmentWithType","introspectSchema","schemaType","path","cache","WeakMap","Record","fullyQualifiedPath","Generator","head","tail","nextFullyQualifiedPath","concat","cacheKey","JSON","stringify","cachedSchemaType","get","set","cachedPath","segment","headSegment","type","headType","headSchemaType","fields","find","field","name","of","length","Error","typeChain","Set","some","isArrayOfObjectsSchemaType","isArrayOfPrimitivesSchemaType","isObjectSchemaType","ArrayOfPrimitivesFormNode","ArrayOfObjectsFormNode","BaseFormNode","ObjectFormNode","isObjectFormNode","formNode","schemaType","isArrayOfObjectsFormNode","isArrayOfPrimitivesFormNode","Path","Observable","concatWith","filter","from","map","merge","mergeMap","of","switchMap","isArrayOfObjectsFormNode","isArrayOfPrimitivesFormNode","isObjectFormNode","ArrayOfObjectsItemMember","ArrayOfObjectsMember","ArrayOfPrimitivesItemMember","ArrayOfPrimitivesMember","FieldMember","BaseFormNode","ObjectArrayFormNode","FormState","Member","MemberAtPath","path","member","Context","groups","members","readOrderedFormMembers","hasGroups","grouplessMembers","pipe","isFieldMember","memberGroups","some","group","memberGroup","name","source","includes","isFieldOrArrayMember","subject","selectSubject","memberAtPath","_allMembers","kind","field","item","isFieldMemberLike","maybeFieldMemberLike","maybeFieldMember","maybeFieldOrArrayMember","ObjectSchemaType","PathSegment","SchemaType","isArrayOfPrimitivesSchemaType","isArrayOfStringsSchemaType","isArraySchemaType","isObjectSchemaType","fromString","toString","Observable","catchError","combineLatest","filter","from","map","mergeMap","of","reduce","switchMap","toArray","resolveDiffComponent","DiffComponent","DiffComponentOptions","FormState","DivergenceNavigatorState","ReachableDivergence","ReachableDivergenceAtPath","Divergence","introspectSchema","readOrderedFormMembers","transposeSchema","divergences","Record","schemaType","formState","Pick","divergencesByNode","groups","members","_allMembers","pipe","path","pathString","divergenceAtPath","divergence","status","pathSchemaTypes","snapshots","subjectHead","pathWithTypes","upstreamHead","error","console","warn","isSupportedNode","transposed","pathSegments","divergenceSchemaType","at","compositeNodePath","compositeNodeDiffComponent","compositeNodeSchemaType","index","length","currentPathSegments","slice","currentSchemaType","parentSchemaType","diffComponent","undefined","isComposite","push","Object","entries","reachableDivergences","state","currentPath","isArrayListOption","Array","isArray","options","list","isArrayTag","layout","ObjectSchemaType","Path","SchemaType","fromString","startsWith","toString","pick","useCallback","useEffect","useMemo","useSyncObservable","BehaviorSubject","combineLatest","distinctUntilChanged","EMPTY","filter","map","merge","Observable","of","shareReplay","Subject","switchScan","DiffComponent","DiffComponentOptions","FormState","useWorkspace","CollatedDocumentDivergencesState","Divergence","DivergenceAtPath","transposeSchema","ReachableDivergence","isComposite","divergences","diffComponent","schemaType","ReachableDivergenceAtPath","path","divergence","DivergenceNavigatorState","focusedDivergence","previousDivergence","nextDivergence","state","upstreamId","allDivergences","divergencesByNode","Record","DivergenceNavigator","focusDivergence","blurDivergence","blurFocusedDivergence","Action","type","context","formState","Pick","DivergenceNavigatorContext","StateContext","useDivergenceNavigator","t0","$","_c","advancedVersionControl","t1","enabled","advancedVersionControlEnabled","t2","Symbol","for","dispatch","t3","undefined","schemaTypeContext","t4","t5","next","t6","formStateContext","t7","t8","t9","bb0","t10","pipe","_temp","_temp2","_temp3","_temp4","createStateReducer","readState","t11","t12","path_0","t13","t14","state_0","t15","previous","current","value","_id","value_0","withAddressablePaths","focusedDivergenceIndex","findIndex","at","length","shouldFocusNextDivergence","find","shouldFocusNext","status","nextContext","action","Object","entries","selectDivergenceCount","selectDivergence","divergencePath","selectFirstDescendantDivergence","useSyncObservable","TargetPerspective","ReleasesReducerState","useReleasesStore","getReleaseDocumentIdFromReleaseId","getVersionFromId","isDraftId","Result","Pick","release","useVersionRelease","documentId","$","_c","state$","readReleasesState","t0","Symbol","for","releases","Map","state","releasesState","t1","undefined","t2","t3","bb0","versionId","t4","t5","get","fromString","DivergenceEffect","SelectEffectContext","fromValue","toValue","upstreamParent","path","selectEffect","Exclude","at","Array","isArray","fromString","DivergenceEffect","SelectEffectFromHashContext","fromHash","toHash","upstreamParentIsArray","path","UNDEFINED_SHA1","selectEffectFromHash","Exclude","at","ResolutionMarker","Revision","Signature","ResolutionMarkerAtPath","path","resolutionMarker","isDivergenceResolutionMarker","maybeDivergenceResolutionMarker","Array","isArray","length","at","delayWhen","from","MonoTypeOperatorFunction","pipe","delayTask","Type","window","scheduler","yield","requestIdleCallback","idleCallback","Promise","resolve","lcs_dp","lcsDp","KeyedObject","intersection","EMPTY","filter","from","map","Observable","of","shareReplay","switchMap","toArray","createMultiKeyWeakMap","MultiKeyWeakMap","cache","MovesByKey","Record","findMovesInArrayOfObjects","a","b","cached","get","intersectingKeys","aIntersectingKeys","bIntersectingKeys","findIntersectingKeys","readMoves","pipe","aIntersecting","bIntersecting","length","x","y","lcs","aIndex","lcsKeys","size","_key","includes","indexOf","positionDelta","Object","fromEntries","set","FindIntersectingKeys","Set","prototype","findIntersectingKeysUsingSet","findIntersectingKeysUsingArray","aKeys","bKeys","subject","has","stringify","textEncoder","TextEncoder","hashData","data","Promise","hash","encode","String","Uint8Array","ArrayBuffer","digest","globalThis","crypto","subtle","hex","Array","from","map","i","toString","padStart","join","isKeyedObject","isKeySegment","KeyedObject","Path","SanityDocument","fromString","startsWith","toString","get","combineLatest","EMPTY","filter","first","from","map","merge","mergeMap","Observable","of","OperatorFunction","pipe","reduce","switchMap","takeWhile","tap","toArray","zipWith","isRecord","selectEffect","selectEffectFromHash","isDivergenceResolutionMarker","ResolutionMarker","delayTask","findMovesInArrayOfObjects","FlattenedPair","flattenObject","PathWithTypes","hashData","DivergenceResolution","_key","resolutionMarker","FindDivergencesContext","upstreamHead","subjectHead","upstreamAtFork","resolutions","DivergenceStatus","SnapshotType","SnapshotsByType","Record","value","parentArray","parentObjectType","pathWithTypes","DivergenceDetectionStrategy","DivergenceEffect","BaseDivergence","snapshots","documentType","isAddressable","effect","documentId","subjectId","sinceRevisionId","status","path","Divergence","Exclude","Extract","upstreamPosition","delta","position","DivergenceAtPath","context","skipFields","State","readDocumentDivergences","markName","_id","join","performance","mark","instance","entry","snapshotType","match","aggregateArrays","aggregateObjects","state","arrays","objects","undefined","parentPathArray","flatPathArray","slice","parentObject","flatPathArrayWithTypes","measure","start","detail","devtools","dataType","track","trackGroup","color","Object","entries","hasObjectSnapshot","some","hasKeyedObjectSnapshot","strategy","isRevisionIdEqual","_type","isPositionedNode","upstreamBaseIndex","upstreamHeadIndex","getPositionedNodeIndexes","moveInUpstream","isObjectArray","movesInUpstream","movesInSubject","key","moves","moveInSubject","positionDelta","createDocumentRevisionMarker","_rev","sinceForkMarkName","properties","hashes","fromValue","toValue","upstreamParent","parentPathSegment","at","find","item","isArray","Array","hasArraySnapshot","hasNullSnapshot","divergence","findPositionedNodeIndexByKey","Error","sinceResolutionMarkName","fromHash","toHash","upstreamParentIsArray","coalesceChangedObjectTypes","UpstreamBaseIndex","UpstreamHeadIndex","Input","SanityObjectLike","isSanityObjectLike","changedObjectPaths","divergences","sort","pathA","pathB","pathArrayA","pathArrayB","descendsChangedTypeObject","changedObjectPath","pathArray","parentObjectPath","isSubjectObjectTypeCompatible","isChangedObjectType","isFirstDescendantOfChangedObject","push","array","findIndex","upstreamId","upstreamRevisionId","split","maybeObjectArray","maybeSanityObjectLike","documentRevision","revisionId","isDivergenceResolutions","maybeDivergenceResolutions","every","isDivergenceResolution","maybeDivergenceResolution","isEqual","QuickLRU","debounceTime","distinctUntilChanged","EMPTY","filter","map","mergeMap","Observable","of","shareReplay","startWith","Subject","switchMap","switchScan","tap","toArray","Divergence","DivergenceAtPath","FindDivergencesContext","readDocumentDivergences","delayTask","CollatedDocumentDivergencesState","state","upstreamId","divergences","Record","CollatedDocumentDivergencesInstance","observable","context","CollatedDocumentDivergencesContext","subjectId","DEBOUNCE_DURATION","CACHE_MAX_SIZE","cacheWriteChannel","cache","collateDocumentDivergencesInitialState","undefined","collateDocumentDivergences","initialiseCache","cacheKey","getCacheKey","cachedInstance","get","markName","join","pipe","performance","mark","isContextEqual","nextContext","measure","start","detail","devtools","dataType","track","trackGroup","color","Object","fromEntries","instance","set","next","peekCollatedDocumentDivergences","writtenCacheKey","a","b","upstreamHead","_rev","subjectHead","upstreamAtFork","resolutions","maxSize","Pick","SanityClient","TransactionLogEventWithEffects","TransactionLogEventWithMutations","isCreateIfNotExistsMutation","isCreateMutation","isCreateOrReplaceMutation","applyPatch","QuickLRU","Observable","catchError","concat","concatMap","EMPTY","first","from","map","merge","of","scan","switchMap","getTransactionsLogs","defaultGetTransactionsLogs","SourceTransaction","source","transaction","TransactionAccumulation","a","Set","b","currentTransaction","PartialTransactionAccumulation","Omit","PAGE_LENGTH","cache","readMostRecentSharedTransaction","client","maxSize","cacheKey","join","cachedReader","get","reader","readTransactionsFollowingLineage","documentId","pipe","visited","add","id","undefined","accumulation","transactionIdsA","transactionIdsB","partner","has","error","delete","set","lineageCache","baseRevisionId","cursor","Error","request","limit","excludeContent","effectFormat","reverse","includeIdentifiedDocumentsOnly","toTransaction","tag","transactions","index","isCursor","isPageEnd","maybeReadNextPage","isVersionCreateTransaction","effects","createdDocument","apply","_system","base","rev","isCreateTransaction","mutations","some","mutation","revert","length","SanityDocument","EditStateFor","selectUpstreamVersion","upstreamEditState","version","published","SanityClient","TransactionLogEventWithMutations","TransactionLogEventWithEffects","getTransactionsLogs","TRANSLOG_ENTRY_LIMIT","documentTransactionsCache","Record","Object","create","getDocumentTransactions","documentId","client","toTransaction","fromTransaction","Promise","cacheKey","skipFromTransaction","transactions","tag","effectFormat","excludeContent","includeIdentifiedDocumentsOnly","limit","filter","transaction","id","length","nextTransactions","concat","MendozaPatch","TransactionLogEventWithEffects","ReleasesReducerState","getReleaseDocumentIdFromReleaseId","getVersionFromId","DocumentVariantType","DocumentRemoteMutationEvent","DocumentGroupEvent","EditDocumentVersionEvent","isCreateDocumentVersionEvent","isCreateLiveDocumentEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","isEditDocumentVersionEvent","isPublishDocumentVersionEvent","isScheduleDocumentVersionEvent","isUnpublishDocumentEvent","isUnscheduleDocumentVersionEvent","isUpdateLiveDocumentEvent","UpdateLiveDocumentEvent","removeDupes","events","newEvents","noDupes","reduce","acc","event","has","id","existingEvent","get","set","type","Map","Array","from","values","addEventId","Omit","documentVariantType","revisionId","timestamp","versionRevisionId","addParentToEvents","eventsWithParent","JSON","parse","stringify","forEach","index","documentId","versionId","i","length","nextEvent","parentId","creationEvent","transactions","MERGE_WINDOW","isWithinMergeWindow","a","b","Math","abs","Date","squashLiveEditEvents","previousEvent","author","push","remoteMutationToTransaction","documentIDs","transactionId","toISOString","effects","head","_id","apply","revert","updateVersionEvents","map","updatePublishedEvents","releases","releaseId","releaseDocumentId","release","sortEvents","remoteEdits","expandedEvents","eventsWithRemoteEdits","sort","MendozaEffectPair","MendozaPatch","TransactionLogEventWithEffects","getVersionFromId","getDocumentVariantType","EditDocumentVersionEvent","isEditDocumentVersionEvent","UpdateLiveDocumentEvent","isWithinMergeWindow","getEffectState","effect","modified","Boolean","deleted","isDeletePatch","apply","created","revert","patch","getEditTransaction","transaction","type","author","timestamp","revisionId","id","getEditEvents","transactions","documentId","liveEdit","editTransactions","filter","tx","effectState","effects","sort","a","b","Date","parse","result","event","documentVariantType","contributors","releaseId","length","push","lastEvent","includes","SanityClient","BehaviorSubject","from","of","catchError","map","scan","shareReplay","startWith","switchMap","tap","getDocumentVariantType","getDocumentTransactions","getEditEvents","DocumentGroupEvent","EditDocumentVersionEvent","HistoryClearedEvent","isCreateDocumentVersionEvent","isDeleteDocumentGroupEvent","isDeleteDocumentVersionEvent","addEventId","removeDupes","HISTORY_CLEARED_EVENT_ID","EventsObservableValue","events","nextCursor","loading","error","Error","INITIAL_VALUE","InitialFetchEventsOptions","client","documentId","getInitialFetchEvents","documentVariantType","refetchEventsTrigger$","cursor","origin","fetchEvents","limit","params","URLSearchParams","toString","append","observable","request","Record","Omit","url","config","dataset","tag","pipe","response","ev","fetchEditEvents","eventWithRevision","find","event","versionRevisionId","revisionId","fromTransaction","toTransaction","undefined","transactions","editEvents","needsHistoryClearedEvent","length","clearedEventTimestamp","Date","timestamp","getTime","unshift","type","id","toISOString","author","events$","console","prev","next","reloadEvents","loadMore","lastCursorUsed","getValue","SanityClient","SanityDocument","Observable","of","catchError","map","shareReplay","startWith","HISTORY_CLEARED_EVENT_ID","EventsStoreRevision","documentRevisionCache","Record","Object","create","Result","InputContext","revisionId","Omit","Partial","Pick","Context","client","documentId","time","getDocumentAtRevision","document","loading","cacheKey","join","dataset","config","searchParams","URLSearchParams","revision","observable","request","documents","url","tag","pipe","response","_rev","error","Error","console","styled","css","Props","$enabled","FormGutterCustomProperties","div","SanityClient","ObjectSchemaType","SanityDocument","uuid","get","ComponentType","PropsWithChildren","useContext","useEffect","useMemo","useState","useSyncObservable","BehaviorSubject","combineLatest","EMPTY","filter","map","of","Subject","tap","DocumentDivergencesContextValue","DocumentDivergencesContext","collateDocumentDivergences","collateDocumentDivergencesInitialState","useDivergenceNavigator","isDivergenceResolutions","DivergenceResolution","FindDivergencesContext","readMostRecentSharedTransaction","ResolutionMarker","useClient","EditStateFor","selectUpstreamVersion","getDocumentAtRevision","DEFAULT_STUDIO_CLIENT_OPTIONS","isPublishedId","FormGutterCustomProperties","FormState","PropsEnabled","enabled","formState","upstreamEditState","editState","subjectId","schemaType","PropsDisabled","Props","DivergencesProvider","props","$","_c","t0","DivergencesProviderEnabled","children","client","hasUpstreamVersion","subject","t1","upstreamHead","draft","published","version","upstreamId","_id","t2","context","observable","collatedDivergences","_systemDivergences","resolutions","t3","subjectHead","useCollateDivergencesContext","t4","divergences","divergenceNavigator","sessionId","_temp","t5","value","t6","t7","disabledContextValue","DivergencesProviderDisabled","useDocumentDivergences","shouldFindForkPoint","_rev","baseIsForkPoint","a","b","mostRecentSharedTransaction","Symbol","for","listenUpstreamHead","next","listenSubjectHead","t8","t9","listenResolutions","t10","t11","t12","bb0","t13","documentId","revisionId","documentIDs","id","readUpstreamAtFork","t14","nextContext","pipe","_temp2","_temp3","_temp4","upstreamAtFork","_temp5","_temp6","_temp7","listenContext","document_2","document","document_1","revision","nextResolutions","document_0","Path","AnimatePresence","ComponentType","DivergenceIndicator","DivergenceNavigator","selectDivergence","useVersionRelease","useDocumentDivergences","Props","path","FormDivergenceIndicator","props","$","_c","divergenceNavigator","enabled","t0","FormDivergenceIndicatorEnabled","t1","state","divergence","release","upstreamBundle","upstreamId","t2","divergences","status","t3","defineEvent","InspectedDivergenceInfo","sessionId","divergenceCount","InspectedDivergence","name","version","description","ActedOnDivergenceInfo","action","ActedOnDivergence","append","at","NodePatch","Path","set","setIfMissing","unset","SanityPath","SanityDocument","fromString","isEqual","startsWith","EMPTY","first","from","map","mergeMap","Observable","of","DivergenceAtPath","ResolutionMarkerAtPath","flattenObject","SYSTEM_PATH","DIVERGENCE_RESOLUTION_PATH","const","DEFAULT_VALUES","createUpsertResolutionMarkerPatches","resolutionMarkers","upsertSystem","segment","index","array","slice","concat","path","setResolutionMarkers","flatMap","resolutionMarker","_key","createTakeFromUpstreamPatches","source","allDivergences","paths","pipe","divergencePath","divergence","divergencePathSegments","effect","isAncestorOrSibling","some","acceptedPath","length","nodeFlatPath","value","find","Error","SanityEncoder","useTelemetry","SanityDocument","fromString","get","useContext","useEffect","useState","useSyncObservable","Observable","EMPTY","filter","find","firstValueFrom","from","map","mergeMap","of","startWith","switchMap","toArray","zip","DocumentDivergencesContext","useEffectEvent","useClient","useDocumentOperation","useDocumentStore","selectUpstreamVersion","getDocumentAtRevision","DEFAULT_STUDIO_CLIENT_OPTIONS","getPublishedId","getVersionFromId","ActedOnDivergence","InspectedDivergence","ReachableDivergence","createTakeFromUpstreamPatches","createUpsertResolutionMarkerPatches","createDocumentRevisionMarker","DivergenceAtPath","ResolutionMarkerAtPath","hashData","HydratedSnapshot","isLoading","value","document","DivergenceController","markResolved","Promise","takeUpstreamValue","isReadOnly","isActionPending","upstreamBase","upstreamHead","useDivergenceController","divergence","allDivergences","contextReadOnly","$","_c","subjectId","documentId","documentType","sinceRevisionId","path","client","documentStore","telemetry","setIsActionPending","divergencesContext","sessionId","divergenceCount","enabled","state","divergences","length","t0","log","logInspectedDivergence","t1","t2","upstreamId","upstreamRevisionId","split","t3","loading","pipe","_temp","_temp2","document_0","undefined","_temp3","revisionId","readUpstreamBase","pair","t4","state_0","ready","_temp4","document_2","value_1","_temp5","editState","readUpstreamHead","Symbol","for","t5","t6","t7","patch","t8","action","markers","createResolutionMarkers","patches","execute","encodePatch","t9","patches_0","_temp6","t10","divergencePath","value_2","document_1","value_0","revision","reachableDivergence","effect","Error","_id","_rev","Path","LayerContextValue","Card","getTheme_v2","css","styled","pathToAnchorIdent","Props","$path","$layer","DivergenceOverlay","props","theme","space","zIndex","diffInput","wrap","ArrowLeftIcon","ArrowRightIcon","CloseIcon","Box","Card","Flex","Skeleton","Spinner","Text","useLayer","fromString","RefObject","ComponentType","Fragment","DocumentChangeContext","Button","DiffComponent","DiffComponentOptions","useVersionRelease","useTranslation","DivergenceNavigator","ReachableDivergence","useDivergenceController","DivergenceOverlay","DivergenceDetailProps","divergence","divergenceNavigator","title","containerElement","HTMLDivElement","readOnly","sectionPadding","DivergenceDetail","t0","$","_c","contextReadOnly","upstreamBase","upstreamHead","markResolved","takeUpstreamValue","isReadOnly","isActionPending","isLoading","state","allDivergences","release","upstreamRelease","upstreamReleaseState","documentId","t1","value","undefined","diff","t2","diffComponent","normalizeDiffComponent","t3","path","t4","divergenceIndex","divergences","findIndex","t","layer","document","t5","schemaType","isComparingCurrent","FieldWrapper","rootDiff","showFromValue","t6","t7","effect","versionName","metadata","t8","t9","t10","blurFocusedDivergence","t11","t12","content","portal","t13","t14","t15","width","aspectRatio","t16","t17","t18","t19","t20","t21","t22","t23","Symbol","for","justifyContent","t24","t25","length","position","count","t26","t27","t28","t29","t30","t31","previousDivergence","focusDivergence","t32","t33","t34","t35","t36","t37","nextDivergence","t38","t39","t40","t41","t42","t43","component","Path","useClickOutsideEvent","LayerProvider","Portal","AnimatePresence","motion","ComponentType","PropsWithChildren","Fragment","useEffect","useRef","DivergenceDetail","DivergenceNavigator","selectDivergence","useWorkspace","useDocumentDivergences","canUseAnchorPositioning","globalThis","CSS","supports","FormNodeDivergenceDetailProps","path","readOnly","FormNodeDivergenceDetail","props","$","_c","divergenceNavigator","enabled","children","t0","FormNodeDivergenceDetailEnabled","containerElement","divergenceDetailContainerElement","t1","state","divergence","t2","focusedDivergence","current","parentElement","scrollIntoView","block","t3","t4","t5","blurDivergence","t6","Symbol","for","MaybePortal","t7","status","opacity","duration","t8","t9","styled","FormArea","Props","$area","FormCell","div","ComponentType","PropsWithChildren","ReactNode","styled","FormCell","areas","const","FormArea","FormRowProps","gutterStartCell","FormRow","t0","$","_c","children","t1","t2","t3","FormRowContainer","div","join","Path","DeprecatedProperty","FormNodeValidation","Stack","HTMLProps","memo","ReactNode","DocumentFieldActionNode","FormNodePresence","useFieldActions","FieldCommentsProps","FormDivergenceIndicator","FormNodeDivergenceDetail","FormRow","FormFieldBaseHeader","FormFieldHeaderText","EMPTY_ARRAY","FormFieldProps","__unstable_headerActions","__unstable_presence","__internal_comments","__internal_slot","children","description","inputId","level","title","validation","deprecated","path","FormField","props","$","_c","comments","readOnly","restProps","t0","t1","t2","actions","undefined","presence","slot","focused","hovered","onMouseEnter","onMouseLeave","t3","t4","Boolean","t5","t6","t7","t8","ElementQuery","styled","TimeZoneButtonElementQuery","Box","Flex","TimeZoneButton","TimeZoneScope","useTimeZone","useTranslation","TimeZoneButtonElementQuery","Props","title","timeZoneScope","DialogHeader","props","$","_c","timeZone","t","t0","Symbol","for","opacity","position","width","t1","marginTop","marginBottom","t2","alternativeName","offset","t3","t4","Card","Text","endOfDay","useCallback","useMemo","CalendarDayProps","date","Date","focused","onSelect","isCurrentMonth","isToday","customValidation","selectedDate","selected","CalendarDay","props","$","_c","t0","bb0","t1","isValid","handleClick","t2","toDateString","t3","t4","t5","t6","t7","Symbol","for","textAlign","t8","t9","getDate","t10","t11","t12","range","MONTH_NAMES","WEEK_DAY_NAMES","HOURS_24","ARROW_KEYS","DEFAULT_TIME_PRESETS","TAIL_WEEKDAYS","addDays","eachWeekOfInterval","getWeek","lastDayOfMonth","startOfMonth","TAIL_WEEKDAYS","getWeekStartsOfMonth","date","Date","firstDay","start","end","getWeekDaysFromWeekStarts","weekStarts","map","weekStart","d","Week","number","days","getWeeksOfMonth","formatTime","hours","minutes","padStart","Box","Grid","Text","isSameDay","isSameMonth","TimeZoneScope","useTimeZone","CalendarDay","WEEK_DAY_NAMES","getWeeksOfMonth","CalendarMonthProps","date","Date","focused","selected","onSelect","hidden","customValidation","selectedDate","timeZoneScope","CalendarMonth","props","$","_c","getCurrentZoneDate","t0","t1","t2","Symbol","for","gridTemplateColumns","map","_temp","t3","t4","week","weekIdx","days","dayIdx","isToday","isCurrentMonth","t5","weekday","textAlign","ChangeEvent","ComponentProps","FocusEvent","useCallback","LazyTextInput","Props","Omit","value","onChange","year","YearInput","t0","$","_c","props","t1","event","numericValue","parseInt","currentTarget","isNaN","handleChange","t2","ChevronLeftIcon","ChevronRightIcon","Box","Button","Flex","Select","Text","addDays","addMonths","setDate","setHours","setMinutes","setMonth","setYear","range","ComponentProps","FormEvent","KeyboardEvent","useCallback","useEffect","useImperativeHandle","useRef","RefAttributes","TimeZoneScope","useTimeZone","CalendarMonth","ARROW_KEYS","DEFAULT_TIME_PRESETS","HOURS_24","MONTH_NAMES","features","formatTime","YearInput","CalendarProps","Omit","selectTime","selectedDate","Date","timeStep","onSelect","date","focusedDate","onFocusedDateChange","index","customValidation","timeZoneScope","PRESERVE_FOCUS_ELEMENT","overflow","position","outline","Calendar","props","$","_c","getCurrentZoneDate","zoneDateToUtc","forwardedRef","restProps","t0","t1","t2","ref","t3","undefined","t4","setFocusedDate","t5","month","setFocusedDateMonth","t6","e","Number","currentTarget","value","handleFocusedMonthChange","t7","by","moveFocusedDate","t8","year","setFocusedDateYear","t9","date_0","getHours","getMinutes","handleDateChange","t10","event","m","handleMinutesChange","t11","event_0","m_0","handleHoursChange","t12","hours","mins","handleTimeChange","t13","Symbol","for","current","t14","querySelector","focus","focusCurrentWeekDay","t15","event_1","includes","key","preventDefault","hasAttribute","handleKeyDown","t16","t17","t18","currentFocusInCalendarGrid","document","activeElement","matches","t19","t20","handleNowClick","t21","getMonth","t22","t23","getFullYear","t24","t25","t26","t27","t28","t29","borderTop","map","_temp","_temp2","timePresets","marginTop","t30","hours_0","minutes","m_1","padStart","h","CalendarTimePresetButton","onTimeChange","formatted","handleClick","toDateString","CalendarMonthSelect","onChange","handlePrevMonthClick","handleNextMonthClick","_temp3","i","CalendarYearSelect","handlePrevYearClick","handleNextYearClick","width","ComponentProps","useCallback","useState","RefAttributes","TimeZoneScope","useTimeZone","Calendar","DatePicker","props","$","_c","_value","customValidation","onChange","ref","rest","timeZoneScope","value","t0","Date","utcToCurrentZoneDate","focusedDate","setFocusedDay","t1","nextDate","undefined","handleSelect","t2","t3","t4","t5","CalendarIcon","Box","Button","LayerProvider","useClickOutsideEvent","usePortal","FocusEvent","KeyboardEvent","useCallback","useImperativeHandle","useRef","useState","RefAttributes","FocusLock","Popover","LazyTextInput","TimeZoneScope","DatePicker","Props","value","Date","id","readOnly","selectTime","timeStep","customValidity","placeholder","onInputChange","event","HTMLInputElement","inputValue","onChange","date","customValidation","selectedDate","timeZoneScope","DateTimeInput","props","$","_c","forwardedRef","rest","ref","popoverRef","inputRef","buttonRef","t0","Symbol","for","current","isPickerOpen","setPickerOpen","portal","t1","t2","t3","focus","select","handleDeactivation","t4","e","key","handleKeyUp","t5","handleClick","t6","padding","t7","display","suffix","t8","element","t9","TextInput","FocusEvent","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","RefAttributes","FormField","TimeZoneScope","useTimeZone","DateTimeInput","CommonProps","ParseResult","Props","title","description","parseInputValue","inputValue","formatInputValue","date","Date","deserialize","value","serialize","onChange","nextDate","selectTime","placeholder","timeStep","customValidation","selectedDate","timeZoneScope","CommonDateTimeInput","props","$","_c","forwardedRef","level","markers","readOnly","rest","ref","localValue","setLocalValue","t0","Symbol","for","t1","zoneDateToUtc","undefinedValue","t2","event","nextInputValue","currentTarget","result","isValid","handleDatePickerInputChange","t3","handleDatePickerChange","inputRef","t4","current","id","parseResult","t5","t6","map","_temp","nodeValidations","t7","error","message","path","t8","t9","Boolean","t10","m","item","isValidDate","date","Date","isNaN","valueOf","tz","tzHelper","format","getMinutes","isValid","parse","parseISO","setMinutes","useCallback","RefAttributes","TimeZoneScope","useTimeZone","useWorkspace","CommonDateTimeInput","CommonProps","ParseResult","isValidDate","ParsedOptions","calendarTodayLabel","customValidation","selectedDate","Date","customValidationMessage","timeStep","SchemaOptions","Props","onChange","date","timeZoneScope","type","name","title","description","options","placeholder","parseOptions","Number","serialize","toISOString","deserialize","isoString","deserialized","error","enforceTimeStep","dateString","minutes","leftOver","DateTimeInput","props","$","_c","forwardedRef","rest","ref","scheduledPublishing","inputDateTimeFormat","getCurrentZoneDate","timeZone","t0","t1","nextDate","handleChange","t2","date_0","in","formatInputValue","t3","inputValue","parsed","parseInputValue","t4","Card","Stack","useState","useTimeZone","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","ScheduleFormData","DateTimeInput","Props","onChange","formData","value","ScheduleForm","props","$","_c","getCurrentZoneDate","inputValue","setInputValue","t0","date","handleChange","t1","selectedDate","handleCustomValidation","t2","Symbol","for","t3","name","options","customValidation","customValidationMessage","title","t4","undefined","t5","timeZoneScope","Stack","PropsWithChildren","ScheduleFormData","ScheduleForm","Props","onChange","formData","value","EditScheduleForm","props","$","_c","t0","t1","children","ErrorOutlineIcon","Card","Flex","Inline","Text","Props","description","title","ErrorCallout","props","$","_c","t0","Symbol","for","t1","t2","t3","ReactNode","useContext","DocumentActionPropsContext","DocumentActionProps","DocumentActionPropsProvider","t0","$","_c","children","value","t1","useDocumentActionProps","context","undefined","Error","useState","Schedule","ScheduleFormData","useScheduleForm","schedule","$","_c","isDirty","setIsDirty","t0","executeAt","date","formData","setFormData","t1","form","equalDates","Date","getTime","handleFormChange","t2","onFormChange","ErrorOutlineIcon","InfoOutlineIcon","WarningOutlineIcon","Path","ValidationMarker","Box","ButtonTone","Flex","Stack","Text","MenuItem","useCallback","styled","StyledText","MENU_ITEM_TONES","Record","error","warning","info","ValidationListItemProps","marker","onClick","path","truncate","ValidationListItem","props","$","_c","t0","handleClick","menuItemTone","level","undefined","message","item","t1","t2","t3","t4","t5","t6","t7","t8","children","t9","t10","isValidationErrorMarker","isValidationInfoMarker","isValidationWarningMarker","ObjectSchemaType","Path","ValidationMarker","Container","useCallback","ValidationListItem","ValidationListProps","documentType","kind","validation","onFocus","path","onClose","truncate","ValidationList","props","$","_c","T0","t0","t1","t2","t3","t4","t5","t6","Symbol","for","bb0","errors","filter","warnings","info","t7","t8","undefined","handleClick","path_0","fields","field","find","curr","name","type","title","resolvePathTitle","hasErrors","length","hasWarnings","hasInfo","map","_error","i","_warning","i_0","_info","i_1","ErrorOutlineIcon","WarningOutlineIcon","ObjectSchemaType","Path","SchemaType","ValidationMarker","CardTone","Container","Stack","Menu","PathUtils","ReactNode","useCallback","useId","useRouter","Button","MenuButton","usePublishedId","useValidationState","ValidationList","ValidationProps","documentId","markers","type","menuHeader","POPOVER_PROPS","portal","constrainSize","preventOverflow","tone","width","placement","const","ValidationInfo","props","$","_c","router","hasError","hasWarning","visibility","id","publishId","t0","path","navigateIntent","encodeURIComponent","toString","onFocus","t1","t2","Symbol","for","content","t3","t4","t5","t6","t7","t8","t9","t10","t11","SanityDocument","SchemaType","ReactNode","combineLatest","Observable","of","map","startWith","DocumentPreviewStore","getDraftId","getPublishedId","Schedule","PaneItemPreviewState","isLoading","draft","published","isLiveEditEnabled","schemaType","liveEdit","getPreviewStateObservable","documentPreviewStore","documentId","title","draft$","snapshot","observeForPreview","_type","_ref","published$","pipe","getScheduledDocument","schedule","documents","getScheduledDocumentId","replaceAll","SchemaType","useMemo","useSchema","Schedule","getScheduledDocument","useScheduleSchemaType","schedule","$","_c","t0","firstDocument","schema","schemaName","documentType","t1","bb0","undefined","t2","get","useSchemaType","SchemaType","useMemo","useObservable","of","useDocumentPreviewStore","getPreviewStateObservable","PaneItemPreviewState","EMPTY_STATE","usePreviewState","documentId","schemaType","$","_c","documentPreviewStore","t0","preview$","ElementQuery","styled","DateWithTooltipElementQuery","Dialog","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useScheduleForm","useScheduleOperation","Schedule","EditScheduleForm","DialogHeader","DialogScheduleEditProps","onClose","schedule","DialogScheduleEdit","props","$","_c","updateSchedule","formData","isDirty","onFormChange","t0","date","scheduleId","id","handleScheduleUpdate","t1","t2","confirmButton","text","disabled","onClick","t3","Symbol","for","timeZoneScope","t4","t5","useCallback","useState","TimeZoneScope","DialogControls","show","hide","timeZoneScope","visible","useDialogVisible","$","_c","dialogVisible","setDialogVisible","t0","Symbol","for","t1","t2","TimeZoneScope","DialogScheduleEdit","Schedule","useDialogVisible","useDialogScheduleEdit","schedule","tzScope","$","_c","visible","show","hide","timeZoneScope","t0","onClose","dialogProps","t1","t2","dialogScheduleEditShow","CurrentUser","Box","SelectableTone","ComponentType","ReactNode","MenuItem","Tooltip","InsufficientPermissionsMessage","InsufficientPermissionsMessageProps","Props","currentUser","hasPermission","icon","onClick","permissionsOperationLabel","title","tone","disabled","MenuItemWithPermissionsTooltip","props","$","_c","t0","t1","t2","t3","CalendarIcon","CheckmarkCircleIcon","PublishIcon","TrashIcon","SchemaType","useScheduledPublishingEnabled","useDocumentPairPermissions","useCurrentUser","useScheduleOperation","Schedule","getScheduledDocument","MenuItemWithPermissionsTooltip","Props","actions","clear","delete","edit","execute","onDelete","onEdit","schedule","schemaType","ContextMenuItems","props","$","_c","mode","t0","firstDocument","currentUser","t1","name","t2","documentId","id","type","permission","permissions","isPermissionsLoading","deleteSchedule","publishSchedule","insufficientPermissions","granted","t3","handleEdit","t4","then","handleDelete","t5","handleExecute","t6","t7","t8","t9","t10","SchemaType","Menu","MenuButton","ContextMenuButton","Schedule","ContextMenuItems","Props","actions","clear","delete","edit","execute","onDelete","onEdit","schedule","schemaType","ScheduleContextMenu","props","$","_c","t0","Symbol","for","t1","t2","placement","portal","tone","t3","useEffect","useState","useValidationStatus","getDraftId","useScheduleSchemaType","Schedule","ValidationStatus","getScheduledDocumentId","Props","schedule","updateValidation","status","VALIDATION_DELAY_MS","ValidateScheduleDoc","t0","$","_c","schemaType","t1","id","name","t2","ValidationRunnerProps","schemaName","DelayedValidationRunner","ready","setReady","Symbol","for","timeout","setTimeout","clearTimeout","t3","ValidationRunner","draftId","validationStatus","isValidating","Text","formatDistance","Tooltip","useTimeZone","DATE_FORMAT","Props","date","Date","useElementQueries","DateWithTooltip","props","$","_c","t0","Symbol","for","type","formatDateTz","t1","addSuffix","distance","t2","format","LARGE","dateTimeLarge","t3","MEDIUM","dateTimeMedium","t4","SMALL","dateTimeSmall","t5","t6","t7","red","ErrorOutlineIcon","CardTone","Container","Flex","Text","Menu","Button","MenuButton","SCHEDULE_FAILED_TEXT","Props","stateReason","POPOVER_PROPS","portal","constrainSize","preventOverflow","tone","width","StateReasonFailedInfo","props","$","_c","t0","Symbol","for","content","t1","t2","color","hex","t3","t4","UserAvatar","Props","id","User","props","$","_c","t0","SchemaType","Badge","Box","Card","Flex","Stack","Text","ElementType","ReactNode","useMemo","useState","styled","Tooltip","DocumentStatus","DocumentStatusIndicator","useTimeZone","SanityDefaultPreview","useDocumentVersions","getDocumentVersionInfoFromVersions","useScheduledPublishingEnabled","DOCUMENT_HAS_ERRORS_TEXT","DOCUMENT_HAS_WARNINGS_TEXT","SCHEDULE_ACTION_DICTIONARY","Schedule","PaneItemPreviewState","getLastExecuteDate","EMPTY_VALIDATION_STATUS","useValidationState","ValidateScheduleDoc","ValidationInfo","DateWithTooltip","StateReasonFailedInfo","User","StatusDotPlaceholder","Props","children","contextMenu","linkComponent","React","JSX","IntrinsicElements","onClick","previewState","publishedDocumentId","schedule","schemaType","useElementQueries","PreviewWrapper","props","$","_c","mode","validationStatus","setValidationStatus","validation","hasError","validationTone","t0","Symbol","for","type","formatDateTz","T0","T1","T2","T3","T4","T5","T6","scheduleDate","t1","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t2","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t3","t30","t31","t4","t5","t6","t7","t8","t9","draft","published","executeDate","Date","state","opacity","undefined","open","t32","t33","flexBasis","flexGrow","action","flexShrink","badgeTone","width","date","format","t34","t35","t36","maxWidth","t37","t38","t39","visibility","t40","marginLeft","t41","t42","t43","author","t44","t45","t46","t47","t48","t49","t50","t51","t52","t53","t54","t55","stateReason","t56","t57","t58","t59","t60","DocumentVersionsStatus","documentId","versions","versionsInfo","SchemaType","useMemo","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useDocumentActionProps","useDialogScheduleEdit","Schedule","getScheduledDocumentId","ScheduleContextMenu","PreviewWrapper","Props","schedule","schemaType","DocumentPreview","props","$","_c","DialogScheduleEdit","dialogProps","dialogScheduleEditShow","onComplete","t0","publishedId","t1","t2","Symbol","for","delete","edit","t3","t4","t5","TrashIcon","Menu","MenuButton","MenuItem","ContextMenuButton","useScheduleOperation","Schedule","Props","onDelete","schedule","FallbackContextMenu","props","$","_c","deleteSchedule","t0","then","handleDelete","t1","Symbol","for","t2","t3","placement","portal","tone","t4","red","UnknownIcon","SanityDefaultPreview","Schedule","FallbackContextMenu","PreviewWrapper","NoSchemaItem","t0","$","_c","schedule","t1","t2","Symbol","for","color","hex","t3","SchemaType","ComponentType","ReactNode","Ref","useMemo","IntentLink","Preview","SanityDefaultPreview","getPublishedId","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","useDialogScheduleEdit","usePublishedId","Schedule","PaneItemPreviewState","ScheduleContextMenu","PreviewWrapper","Props","previewState","schedule","schemaType","ToolPreview","props","timeZoneScope","visibleDocument","draft","published","isCompleted","state","isScheduled","DialogScheduleEdit","dialogProps","dialogScheduleEditShow","publishedId","_id","LinkComponent","Component","linkProps","children","ref","HTMLAnchorElement","rest","publishedDocId","undefined","type","name","id","displayName","clear","delete","edit","execute","isLoading","icon","useMemo","usePreviewState","useScheduleSchemaType","Schedule","getScheduledDocument","DateWithTooltipElementQuery","DocumentPreview","NoSchemaItem","ToolPreview","Props","schedule","type","ScheduleItem","props","$","_c","t0","firstDocument","schemaType","previewState","documentId","visibleDocument","draft","published","invalidDocument","isLoading","t1","bb0","t2","preview"],"sources":["../src/core/components/zOffsets/useZIndex.ts","../src/core/components/transitional/LegacyLayerProvider.tsx","../src/core/field/types/file/diff/helpers.ts","../src/core/hooks/useUnitFormatter.ts","../src/core/util/getPrintableType.ts","../src/core/util/useUnique.ts","../src/core/form/utils/pathToAnchorIdent.ts","../src/core/divergence/components/DivergenceIndicator.tsx","../src/core/field/TODO.ts","../src/core/field/diff/annotations/helpers.ts","../src/core/field/diff/annotations/hooks.ts","../src/core/releases/components/VersionInlineBadge.tsx","../src/core/store/events/types.ts","../src/core/field/diff/components/constants.ts","../src/core/field/diff/components/Event.tsx","../src/core/field/diff/components/DiffTooltip.tsx","../src/core/field/diff/components/FromToArrow.tsx","../src/core/field/diff/hooks/useDocumentChange.ts","../src/core/field/types/boolean/preview/BooleanPreview.tsx","../src/core/field/types/boolean/diff/BooleanFieldDiff.tsx","../src/core/field/diff/hooks/useChangeVerb.ts","../src/core/field/diff/components/DiffCard.tsx","../src/core/field/diff/components/FromTo.tsx","../src/core/field/diff/components/DiffFromTo.tsx","../src/core/field/types/datetime/preview/DatetimePreview.tsx","../src/core/field/types/datetime/diff/DatetimeFieldDiff.tsx","../src/core/field/conditional-property/utils.tsx","../src/core/field/conditional-property/useConditionalProperty.tsx","../src/core/field/schema/helpers.ts","../src/core/field/types/portableText/diff/symbols.ts","../src/core/field/types/portableText/diff/helpers.ts","../src/core/field/validation/index.ts","../src/core/field/diff/components/JsonFieldDiff.tsx","../src/core/field/diff/helpers.ts","../src/core/field/diff/changes/unknownDocumentFieldSchema.ts","../src/core/field/diff/changes/unknownObjectDiffFields.ts","../src/core/field/diff/changes/buildChangeList.ts","../src/core/field/diff/changes/helpers.ts","../src/core/field/diff/changes/undoChange.ts","../src/core/field/diff/components/ChangeList.styled.tsx","../src/core/field/diff/components/ChangeTitleSegment.tsx","../src/core/field/diff/components/ChangeBreadcrumb.tsx","../src/core/field/diff/components/DiffErrorBoundary.tsx","../src/core/field/diff/components/DiffInspectWrapper.tsx","../src/core/field/diff/components/FallbackDiff.tsx","../src/core/field/diff/components/FieldChange.styled.tsx","../src/core/field/diff/components/RevertChangesButton.tsx","../src/core/field/diff/components/RevertChangesConfirmDialog.tsx","../src/core/field/diff/components/ValueError.tsx","../src/core/field/diff/components/FieldChange.tsx","../src/core/field/diff/components/GroupChange.styled.tsx","../src/core/field/diff/components/ChangeResolver.tsx","../src/core/field/diff/components/NoChanges.tsx","../src/core/field/diff/components/ChangeList.tsx","../src/core/field/diff/components/MetaInfo.tsx","../src/core/field/diff/hooks/useRefValue.ts","../src/core/field/types/file/diff/FileFieldDiff.tsx","../src/core/util/useLoadable.ts","../src/core/store/document/hooks/useDocumentValues.ts","../src/core/field/types/image/diff/helpers.ts","../src/core/field/types/image/diff/HotspotCropSVG.tsx","../src/core/field/types/image/diff/ImagePreview.tsx","../src/core/field/types/image/diff/ImageFieldDiff.tsx","../src/core/field/types/number/preview/NumberPreview.tsx","../src/core/field/types/number/diff/NumberFieldDiff.tsx","../src/core/field/types/portableText/diff/components/styledComponents.tsx","../src/core/field/types/portableText/diff/components/Annotation.tsx","../src/core/field/types/portableText/diff/components/Blockquote.tsx","../src/core/field/types/portableText/diff/components/Header.tsx","../src/core/field/types/portableText/diff/components/Paragraph.tsx","../src/core/field/types/portableText/diff/components/Block.tsx","../src/core/field/types/portableText/diff/components/Decorator.tsx","../src/core/field/types/portableText/diff/components/InlineObject.tsx","../src/core/field/types/portableText/diff/components/Text.tsx","../src/core/field/types/portableText/diff/components/PortableText.tsx","../src/core/field/types/portableText/diff/PTDiff.tsx","../src/core/field/types/reference/preview/ReferencePreview.tsx","../src/core/field/types/reference/diff/ReferenceFieldDiff.tsx","../src/core/field/types/slug/preview/SlugPreview.tsx","../src/core/field/types/slug/diff/SlugFieldDiff.tsx","../src/core/field/diff/components/DiffString.tsx","../src/core/field/types/string/preview/StringPreview.tsx","../src/core/field/types/string/diff/StringFieldDiff.tsx","../src/core/field/diff/resolve/defaultComponents.ts","../src/core/field/diff/resolve/resolveDiffComponent.ts","../src/core/form/studio/inputResolver/helpers.ts","../src/core/divergence/utils/flatten.ts","../src/core/divergence/utils/introspectSchema.ts","../src/core/form/store/types/asserters.ts","../src/core/divergence/utils/readOrderedFormMembers.ts","../src/core/divergence/transposeSchema.ts","../src/core/divergence/divergenceNavigator.ts","../src/core/hooks/useVersionRelease.ts","../src/core/divergence/selectEffect.ts","../src/core/divergence/selectEffectFromHash.ts","../src/core/divergence/types/ResolutionMarker.ts","../src/core/divergence/utils/delayTask.ts","../src/core/divergence/utils/findMovesInArrayOfObjects.ts","../src/core/divergence/utils/hashData.ts","../src/core/divergence/readDocumentDivergences.ts","../src/core/divergence/collateDocumentDivergences.ts","../src/core/divergence/readMostRecentSharedTransaction.ts","../src/core/store/document/selectUpstreamVersion.ts","../src/core/store/events/getDocumentTransactions.ts","../src/core/store/events/utils.ts","../src/core/store/events/getEditEvents.ts","../src/core/store/events/getInitialFetchEvents.ts","../src/core/store/events/getDocumentAtRevision.ts","../src/core/form/components/FormGutterCustomProperties.ts","../src/core/form/contexts/DivergencesProvider.tsx","../src/core/form/components/FormDivergenceIndicator.tsx","../src/core/divergence/__telemetry__/divergence.telemetry.ts","../src/core/divergence/patches.ts","../src/core/divergence/hooks/useDivergenceController.ts","../src/core/divergence/components/DivergenceOverlay.tsx","../src/core/divergence/components/DivergenceDetail.tsx","../src/core/form/components/FormNodeDivergenceDetail.tsx","../src/core/form/components/layout/FormCell.tsx","../src/core/form/components/layout/FormRow.tsx","../src/core/form/components/formField/FormField.tsx","../src/core/scheduled-publishing/components/dialogs/TimeZoneButtonElementQuery.tsx","../src/core/scheduled-publishing/components/dialogs/DialogHeader.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/CalendarDay.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/constants.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/utils.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/CalendarMonth.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/features.ts","../src/core/scheduled-publishing/components/dateInputs/base/calendar/YearInput.tsx","../src/core/scheduled-publishing/components/dateInputs/base/calendar/Calendar.tsx","../src/core/scheduled-publishing/components/dateInputs/base/DatePicker.tsx","../src/core/scheduled-publishing/components/dateInputs/base/DateTimeInput.tsx","../src/core/scheduled-publishing/components/dateInputs/CommonDateTimeInput.tsx","../src/core/scheduled-publishing/components/dateInputs/utils.ts","../src/core/scheduled-publishing/components/dateInputs/DateTimeInput.tsx","../src/core/scheduled-publishing/components/editScheduleForm/ScheduleForm.tsx","../src/core/scheduled-publishing/components/editScheduleForm/EditScheduleForm.tsx","../src/core/scheduled-publishing/components/errorCallout/ErrorCallout.tsx","../src/core/scheduled-publishing/contexts/documentActionProps.tsx","../src/core/scheduled-publishing/hooks/useScheduleForm.ts","../src/core/scheduled-publishing/components/validation/ValidationListItem.tsx","../src/core/scheduled-publishing/components/validation/ValidationList.tsx","../src/core/scheduled-publishing/components/validation/ValidationInfo.tsx","../src/core/scheduled-publishing/utils/paneItemHelpers.tsx","../src/core/scheduled-publishing/hooks/useSchemaType.ts","../src/core/scheduled-publishing/hooks/usePreviewState.ts","../src/core/scheduled-publishing/components/scheduleItem/dateWithTooltip/DateWithTooltipElementQuery.tsx","../src/core/scheduled-publishing/components/dialogs/DialogScheduleEdit.tsx","../src/core/scheduled-publishing/hooks/useDialogVisibile.ts","../src/core/scheduled-publishing/hooks/useDialogScheduleEdit.ts","../src/core/scheduled-publishing/components/scheduleContextMenu/MenuItemWithPermissionsTooltip.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/ContextMenuItems.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/ScheduleContextMenu.tsx","../src/core/scheduled-publishing/components/validation/SchedulesValidation.tsx","../src/core/scheduled-publishing/components/scheduleItem/dateWithTooltip/DateWithTooltip.tsx","../src/core/scheduled-publishing/components/scheduleItem/StateReasonFailedInfo.tsx","../src/core/scheduled-publishing/components/scheduleItem/User.tsx","../src/core/scheduled-publishing/components/scheduleItem/PreviewWrapper.tsx","../src/core/scheduled-publishing/components/scheduleItem/DocumentPreview.tsx","../src/core/scheduled-publishing/components/scheduleContextMenu/FallbackContextMenu.tsx","../src/core/scheduled-publishing/components/scheduleItem/NoSchemaItem.tsx","../src/core/scheduled-publishing/components/scheduleItem/ToolPreview.tsx","../src/core/scheduled-publishing/components/scheduleItem/ScheduleItem.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {ZIndexContext} from 'sanity/_singletons'\n\nimport {type ZIndexContextValue} from './types'\n\n/**\n * TODO: Rename to `useZOffsets`\n *\n * @internal\n */\nexport function useZIndex(): ZIndexContextValue {\n return useContext(ZIndexContext)\n}\n","import {LayerProvider} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {type ZIndexContextValue} from '../zOffsets/types'\nimport {useZIndex} from '../zOffsets/useZIndex'\n\n/** @internal */\nexport type ZIndexContextValueKey = keyof ZIndexContextValue\n\n/**\n * This component should only be used by core Sanity packages.\n * @internal\n */\nexport function LegacyLayerProvider({\n children,\n zOffset: zOffsetKey,\n}: {\n children: ReactNode\n zOffset: ZIndexContextValueKey\n}) {\n const zIndex = useZIndex()\n const zOffset = zIndex[zOffsetKey]\n\n return <LayerProvider zOffset={zOffset}>{children}</LayerProvider>\n}\n","import {type UnitFormatter} from '../../../../hooks/useUnitFormatter'\n\n/**\n * Calculates the size difference between two numbers, in percent\n *\n * @param prev - Previous size\n * @param next - Next size\n * @returns The size difference in percent\n * @internal\n */\nexport function getSizeDiff(prev: number | undefined, next: number | undefined): number {\n if (!prev || !next) {\n return 0\n }\n\n const increase = next - prev\n const pct = Math.round((increase / prev) * 100)\n\n return pct\n}\n\n/**\n * Get a \"human friendly\" representation of a number of bytes, using base10 units\n *\n * @param bytes - Number of bytes\n * @param format - The unit formatter to use (from `useUnitFormatter`)\n * @returns A human friendly representation of the number of bytes\n * @internal\n */\nexport function getHumanFriendlyBytes(bytes: number, format: UnitFormatter): string {\n if (bytes < 1000) {\n return format(bytes, 'byte')\n }\n\n if (bytes < 1000 * 1000) {\n return format(bytes / 1000, 'kilobyte')\n }\n\n if (bytes < 1000 * 1000 * 1000) {\n return format(bytes / (1000 * 1000), 'megabyte')\n }\n\n if (bytes < 1000 * 1000 * 1000 * 1000) {\n return format(bytes / (1000 * 1000 * 1000), 'gigabyte')\n }\n\n return format(bytes / (1000 * 1000 * 1000 * 1000), 'terabyte')\n}\n","import {useCurrentLocale} from '../i18n/hooks/useLocale'\nimport {intlCache} from '../i18n/intlCache'\n\n/**\n * Options for the `useUnitFormatter` hook\n *\n * @public\n */\nexport type UseUnitFormatterOptions = Pick<\n Intl.NumberFormatOptions,\n 'notation' | 'signDisplay' | 'unitDisplay' | 'maximumFractionDigits' | 'minimumFractionDigits'\n>\n\n/**\n * Available measurement units\n *\n * @public\n */\nexport type FormattableMeasurementUnit =\n | 'acre'\n | 'bit'\n | 'byte'\n | 'celsius'\n | 'centimeter'\n | 'day'\n | 'degree'\n | 'fahrenheit'\n | 'fluid-ounce'\n | 'foot'\n | 'gallon'\n | 'gigabit'\n | 'gigabyte'\n | 'gram'\n | 'hectare'\n | 'hour'\n | 'inch'\n | 'kilobit'\n | 'kilobyte'\n | 'kilogram'\n | 'kilometer'\n | 'liter'\n | 'megabit'\n | 'megabyte'\n | 'meter'\n | 'mile'\n | 'mile-scandinavian'\n | 'milliliter'\n | 'millimeter'\n | 'millisecond'\n | 'minute'\n | 'month'\n | 'ounce'\n | 'percent'\n | 'petabyte'\n | 'pound'\n | 'second'\n | 'stone'\n | 'terabit'\n | 'terabyte'\n | 'week'\n | 'yard'\n | 'year'\n\n/**\n * Formats a number using the specified unit, using the currently active locale.\n *\n * @param value - The number to format\n * @param unit - The unit to format the number as\n * @returns The formatted number\n * @public\n */\nexport type UnitFormatter = (value: number, unit: FormattableMeasurementUnit) => string\n\n/**\n * Returns a formatter with the given options. Function takes a number and the unit to format as\n * the second argument. The formatter will yield localized output, based on the users' selected\n * locale.\n *\n * This differs from regular `Intl.NumberFormat` in two ways:\n * 1. You do not need to instantiate a new formatter for each unit you want to format\n * (still happens behind the scenes, but is memoized)\n * 2. The default unit display style (`unitDisplay`) is `long`\n *\n * @example\n * ```ts\n * function MyComponent() {\n * const format = useUnitFormatter()\n * return <div>{format(2313, 'meter')}</div>\n * // en-US -> 2,313 meters\n * // fr-FR -> 2 313 mètres\n * }\n * ```\n *\n * @param options - Optional options for the unit formatter\n * @returns Formatter function\n * @public\n */\nexport function useUnitFormatter(options: UseUnitFormatterOptions = {}): UnitFormatter {\n const currentLocale = useCurrentLocale().id\n const defaultOptions: Intl.NumberFormatOptions = {\n unitDisplay: 'long',\n ...options,\n style: 'unit',\n }\n\n return function format(value: number, unit: FormattableMeasurementUnit) {\n const formatter = intlCache.numberFormat(currentLocale, {...defaultOptions, unit})\n return formatter.format(value)\n }\n}\n","/**\n * Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do. Can be extended to\n * account for other types, such as React components, fragments, elements etc, and should thus\n * not be counted as \"exhaustive\", as the list is both dynamic and will grow over time.\n *\n * @param value - The value to get the type name for\n * @returns A \"human friendly\" type name\n * @internal\n */\nexport function getPrintableType(value: unknown): string {\n const nativeType = typeof value\n\n if (nativeType === 'object') {\n if (value === null) return 'null'\n if (Array.isArray(value)) return 'array'\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name\n }\n }\n\n return nativeType\n}\n","import isEqual from 'lodash-es/isEqual.js'\nimport {useState} from 'react'\n\n/**\n * This React hook should be considered an escape hatch – to make sure that a value is the same\n * on every render. SHOULD NOT BE USED IN MOST CASES.\n * @deprecated please use `useMemo` and `useCallback` strategies instead to make deps stable, this hook runs comparisons on every single render and while each comparison can be fast, it quickly adds up\n *\n * @internal\n */\nexport function useUnique<ValueType>(value: ValueType): ValueType {\n const [previous, setPrevious] = useState(value)\n\n if (!isEqual(previous, value)) {\n setPrevious(value)\n return value\n }\n\n return previous\n}\n","import {type Path} from '@sanity/types'\nimport {toString} from '@sanity/util/paths'\n\n/**\n * Convert a field or input path to an anchor ident that can be used in CSS.\n *\n * @internal\n */\nexport function pathToAnchorIdent(type: 'input' | 'field', path: Path): string {\n return [\n `--${type}`,\n toString(path)\n .replaceAll(/[^a-z|0-9]+/gi, '_')\n .toLocaleLowerCase(),\n ].join('_')\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {type Path} from '@sanity/types'\nimport {motion} from 'motion/react'\nimport {type ComponentType} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {pathToAnchorIdent} from '../../form/utils/pathToAnchorIdent'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type TargetPerspective} from '../../perspective/types'\nimport {type DivergenceNavigator, type ReachableDivergence} from '../divergenceNavigator'\n\n/**\n * @internal\n */\nexport interface DivergenceIndicatorProps {\n divergence: ReachableDivergence\n divergenceNavigator: DivergenceNavigator\n path: Path\n upstreamBundle?: TargetPerspective\n}\n\n/**\n * @internal\n */\nexport const DivergenceIndicator: ComponentType<DivergenceIndicatorProps> = ({\n divergence,\n divergenceNavigator,\n path,\n upstreamBundle,\n}) => {\n const {t} = useTranslation()\n\n return (\n <Container $path={path} initial={{opacity: 0}} exit={{opacity: 0}} animate={{opacity: 1}}>\n <Button\n aria-label={t('divergence.unresolved-divergence', {\n count: 1,\n versionName:\n typeof upstreamBundle === 'string' ? upstreamBundle : upstreamBundle?.metadata.title,\n })}\n onClick={() =>\n divergenceNavigator.state.focusedDivergence === divergence.path\n ? divergenceNavigator.blurFocusedDivergence()\n : divergenceNavigator.focusDivergence(divergence.path)\n }\n selected={divergenceNavigator.state.focusedDivergence === divergence.path}\n mode=\"bleed\"\n icon={EditIcon}\n tooltipProps={{\n content: t('divergence.unresolved-divergence', {\n count: 1,\n versionName:\n typeof upstreamBundle === 'string' ? upstreamBundle : upstreamBundle?.metadata.title,\n }),\n placement: 'left',\n }}\n radius=\"full\"\n tone={upstreamBundle === 'published' ? 'positive' : 'suggest'}\n />\n </Container>\n )\n}\n\nconst Container = styled(motion.div)<{$path: Path}>`\n @supports (position-anchor: --anchor) {\n position: absolute;\n ${({$path}) => ($path ? `position-anchor: ${pathToAnchorIdent('input', $path)};` : undefined)}\n inset-block-start: anchor(center);\n transform: translateY(-50%);\n line-height: 0;\n }\n`\n","import {type DiffComponentResolver} from './types'\n\n// import diffResolvers from 'all:part:@sanity/base/diff-resolver'\nexport const diffResolvers: DiffComponentResolver[] = []\n","import {\n isIndexSegment,\n isIndexTuple,\n isKeySegment,\n type KeyedSegment,\n type Path,\n} from '@sanity/types'\n\nimport {type UserColor, type UserColorManager} from '../../../user-color/types'\nimport {pathToString, stringToPath} from '../../paths/helpers'\nimport {\n type Annotation,\n type ArrayDiff,\n type Diff,\n type ItemDiff,\n type ObjectDiff,\n type StringDiff,\n type StringDiffSegment,\n} from '../../types'\n\n/** @internal */\nexport function getAnnotationColor(\n colorManager: UserColorManager,\n annotation?: Annotation | null,\n): UserColor {\n return colorManager.get(annotation?.author || null)\n}\n\n/** @internal */\nexport function getAnnotationAtPath(diff: Diff, diffPath: string | Path): Annotation | undefined {\n const path: Path = Array.isArray(diffPath) ? diffPath : stringToPath(diffPath)\n\n return getAnnotationAt(diff, path)\n}\n\n/** @internal */\nexport function getDiffAtPath(diff: Diff, diffPath: string | Path): Diff | undefined {\n const path: Path = Array.isArray(diffPath) ? diffPath : stringToPath(diffPath)\n return getDiffAt(diff, path)\n}\n\nfunction getAnnotationAt(diff: Diff, path: Path): Annotation | undefined {\n const diffAt = getDiffAt(diff, path)\n if (!diffAt) {\n return undefined\n }\n\n if (diffAt.action === 'unchanged') {\n return undefined\n }\n\n return diffAt.annotation || undefined\n}\n\nfunction getDiffAt(diff: Diff, path: Path, parentPath: Path = []): Diff | undefined {\n if (path.length === 0) {\n return diff\n }\n\n const segment = path[0]\n const tail = path.slice(1)\n\n if (isIndexTuple(segment)) {\n throw new Error('Index tuples are not supported in diff paths')\n }\n\n if (isIndexSegment(segment) || isKeySegment(segment)) {\n const location = isIndexSegment(segment) ? `at index ${segment}` : `with key ${segment._key}`\n if (diff.type !== 'array') {\n warn(`Failed to get item ${location} at path ${pathToString(parentPath)} (not an array)`)\n return undefined\n }\n\n const itemDiff = diff.items.find(\n isIndexSegment(segment)\n ? (item) => item.toIndex === segment\n : (item) => itemMatchesKey(item, segment),\n )\n\n if (!itemDiff) {\n warn(`Failed to get item ${location} at path ${pathToString(parentPath)} (item missing)`)\n return undefined\n }\n\n return getDiffAt(itemDiff.diff, tail, parentPath.concat(segment))\n }\n\n if (diff.type !== 'object') {\n warn(`Failed to get property ${segment} at path ${pathToString(parentPath)} (not an object)`)\n return undefined\n }\n\n const fieldDiff = diff.fields[segment]\n if (typeof fieldDiff === 'undefined') {\n warn(\n `Failed to get property ${segment} at path ${pathToString(parentPath)} (field did not exist)`,\n )\n return undefined\n }\n\n return getDiffAt(fieldDiff, tail, parentPath.concat(segment))\n}\n\nfunction warn(_msg: string) {\n //console.warn(_msg)\n}\n\nfunction itemMatchesKey(item: ItemDiff, key: KeyedSegment) {\n const itemDiff = item.diff\n return itemDiff.type !== 'object' || !itemDiff.toValue ? false : itemDiff.toValue._key === key\n}\n\n/** @internal */\nexport type DiffVisitor = (diff: Diff | StringDiffSegment, path: Path) => boolean\n\n/**\n * Visit all diffs in tree, until visitor returns false\n *\n * @param diff - Diff to visit\n * @param visitor - Visitor function, return false to stop from going deeper\n *\n * @internal\n */\nexport function visitDiff(\n diff: Diff | StringDiffSegment,\n visitor: DiffVisitor,\n path: Path = [],\n): void {\n if (!visitor(diff, path)) {\n return\n }\n\n if (diff.type === 'array') {\n visitArrayDiff(diff, visitor, path)\n return\n }\n\n if (diff.type === 'object') {\n visitObjectDiff(diff, visitor, path)\n return\n }\n\n if (diff.type === 'string') {\n visitStringDiff(diff, visitor, path)\n }\n}\n\nfunction visitArrayDiff(diff: ArrayDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n diff.items.forEach((itemDiff) => {\n const _key = itemDiff.diff.type === 'object' && (itemDiff.diff.toValue?._key as string)\n const segment = _key ? {_key} : getItemDiffIndex(itemDiff)\n visitDiff(itemDiff.diff, visitor, path.concat(segment))\n })\n}\n\nfunction visitObjectDiff(diff: ObjectDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n Object.keys(diff.fields).forEach((fieldName) => {\n const fieldDiff = diff.fields[fieldName]\n visitDiff(fieldDiff, visitor, path.concat(fieldName))\n })\n}\n\nfunction visitStringDiff(diff: StringDiff, visitor: DiffVisitor, path: Path) {\n if (diff.action === 'unchanged') {\n return\n }\n\n diff.segments.forEach((segment) => {\n visitDiff(segment, visitor, path)\n })\n}\n\nfunction getItemDiffIndex(itemDiff: ItemDiff): number {\n return typeof itemDiff.toIndex === 'undefined' ? itemDiff.fromIndex || 0 : itemDiff.toIndex\n}\n","import {type Path} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {useUserColorManager} from '../../../user-color/hooks'\nimport {type UserColor} from '../../../user-color/types'\nimport {type Annotation, type Diff} from '../../types'\nimport {getAnnotationAtPath, getAnnotationColor} from './helpers'\n\n/** @internal */\nexport function useAnnotationColor(annotation?: Annotation | null): UserColor {\n const userColorManager = useUserColorManager()\n\n return getAnnotationColor(userColorManager, annotation)\n}\n\n/** @internal */\nexport function useDiffAnnotationColor(diff: Diff, path: string | Path = []): UserColor {\n const userColorManager = useUserColorManager()\n const annotation = useMemo(() => getAnnotationAtPath(diff, path), [diff, path])\n\n return useMemo(\n () => getAnnotationColor(userColorManager, annotation),\n [annotation, userColorManager],\n )\n}\n","import {type BadgeTone} from '@sanity/ui'\nimport {type FC, type PropsWithChildren} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type TargetPerspective} from '../../perspective/types'\nimport {LATEST} from '../util/const'\nimport {getReleaseTone} from '../util/getReleaseTone'\n\nconst StyledVersionInlineBadge = styled.span<{$tone?: BadgeTone}>((props) => {\n const {$tone} = props\n return css`\n color: var(--card-badge-${$tone ?? 'default'}-fg-color);\n background-color: var(--card-badge-${$tone ?? 'default'}-bg-color);\n border-radius: 3px;\n text-decoration: none;\n padding: 0px 2px;\n font-weight: 500;\n `\n})\n\n/**\n * @internal\n */\nexport const VersionInlineBadge = ({\n children,\n $tone,\n}: PropsWithChildren<{\n $tone?: BadgeTone\n}>) => <StyledVersionInlineBadge $tone={$tone}>{children}</StyledVersionInlineBadge>\n\n/**\n * @internal\n */\nexport const getVersionInlineBadge = (release?: TargetPerspective) => {\n const tone = getReleaseTone(release ?? LATEST)\n\n const ReturnComponent: FC<PropsWithChildren> = ({children}) => (\n <VersionInlineBadge $tone={tone}>{children}</VersionInlineBadge>\n )\n\n return ReturnComponent\n}\n","/**\n * # Draft model\n *\n * The following describes the semantics of the draft model in Content Releases.\n *\n * ## Terminology\n *\n * In this world we have the following terms:\n *\n * - \"Document\" is unfortunately an overloaded term. It _may_ refer to the\n * user's perspective of a document in Studio It _may_ refer to a specific\n * document as observed through the API, or it _may_ refer to user's\n * perspective of a document in Studio (which is a single \"document group\"\n * represented by multiple documents).\n * - \"Document version\" is a document with the ID of `drafts.` or `versions.{bundleId}.`\n * - \"Document group\" is an explicit way of referring to the published\n * document and all of its versions.\n * - \"Event\" (either on \"a document\" or on \"a release\") represents a change in the\n * state. They are often caused by actions, but they are not 1-to-1. The\n * \"publish release\" action causes a `ScheduleDocumentVersionEvent` for each\n * of the document versions inside the release.\n *\n * These are higher level events and you can not assume that they are being\n * caused by a single document actions. For instance, scheduling/publishing a\n * _release_ causes a `ScheduleDocumentEvent` to appear in the document's event\n * list.\n *\n * ## Document group event\n *\n * The completely lifecycle of a document group can be described with a series\n * of _events_. These are the higher level changes such as \"document was\n * published\", \"version was created\", \"document was scheduled\", and so forth.\n * Every event has a single timestamp.\n *\n * We're also using the following conventions:\n *\n * - `documentId` always refers to the published document ID (which is also what\n * we consider the ID for the whole group).\n * - `revisionId` refers to a revision on the published document.\n * - `versionId` refers to a document version ID.\n * - `releaseId` refers to the release of the document version.\n * This will be not present if `versionId` starts with`drafts.`.\n * - `versionRevisionId` refers to a revision on a document version.\n *\n * See {@link DocumentGroupEvent} for the full list of events.\n *\n * ## Document changes\n *\n * Interestingly, there's no document group events about the _contents_ of a\n * document. Instead we have a separate concept of _document changes_ which are\n * the actual changes of the attributes to a document.\n *\n * Document changes are constructed from edits (i.e. through the Edit action),\n * but are distinct objects. They have a time_span_, instead of a time_stamp_,\n * and can have multiple authors and/or fields modified in a single \"change\".\n * The change could be represented by \"these fields have been modifed in some\n * way\" or \"here's a detailed attribution of every new character that appeared\n * in this Portable Text\".\n *\n * ## Release events\n *\n * There's a separate set of events for releases which deals with changes done\n * at the whole release level (e.g. schedule/publish) that are _critical_ for\n * its behavior. These events intentionally do not include changes to\n * non-critical metadata (e.g. title). This is currently not defined here.\n *\n * ## Release activity\n *\n * When looking at the complete activity of a release it should be composed of\n * three different sources:\n *\n * 1. Release events (schedule/unschedule/publish etc).\n * 2. Release metadata changes.\n * 2. Document group events related to release – with the exclusion of events\n * which are caused by release-level actions.\n *\n * ## Relation to Content Lake APIs\n *\n * \"Document group events\", \"document changes\" and \"release events\" are\n * currently not exposed by the REST API in Content Lake. Some of these data\n * _might_ however already be inferred through using the History Transactions\n * API.\n *\n * The intention is for Studio to internally refer to these concepts using an\n * implementation which uses the _current_ Content Lake APIs. Over time we\n * aspire to extend the API to provide access to this data natively and\n * efficiently.\n *\n * ## Overall document lifecycle\n *\n * The overall document's existence is defined by the existence of either the\n * published document or a draft (either the main draft or a version in a\n * release).\n *\n * This means that there are two ways a document can be _created_:\n *\n * 1. `CreateDocumentVersionEvent`: This is what Studio does through an Edit action.\n * 2. `CreateLiveDocumentEvent`: A raw Create mutation sent outside of the Studio.\n *\n * The whole document is considered _deleted_ through a single event:\n *\n * 1. `DeleteDocumentGroupEvent`: This is caused either by the Delete action,\n * or when discarding the last draft.\n *\n * ## Version lifecycle\n *\n * A document version has the following lifecycle:\n *\n * 1. \"Version doesn't exist\".\n * - `CreateDocumentVersionEvent`: Edit action - \"Version exists\"\n * - `UnpublishDocumentEvent`: Unpublish action - \"Version exists\"\n * 2. \"Version exists\".\n * - `DeleteDocumentVersionEvent`: DiscardDraft action - \"Version doesn't\n * exist\"\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Version doesn't exist\"\n * - `ScheduleDocumentVersionEvent`: Schedule release action - \"Version is scheduled\"\n * - `DeleteDocumentGroupEvent`: Delete action _OR_ DiscardDraft [the last one] - \"Version doesn't exist\"\n * 3. \"Version is scheduled\".\n * - `PublishDocumentVersionEvent`: Automatically, on schedule - \"Version doesn't exist\"\n * - `UnscheduleDocumentVersionEvent`: Unschedule release action - \"Version exists\"\n *\n * ## Published lifecycle\n *\n * The published document has the following lifecycle:\n *\n * 1. \"Published document doesn't exist\".\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Published document exists\".\n * - `CreateLiveDocumentEvent`: Raw Create mutation - \"Published document exists\"\n * 2. \"Published document exists\"\n * - `PublishDocumentVersionEvent`: Publish document/release action - \"Published document exists\"\n * - `UnpublishDocumentEvent`: Unpublish action - \"Published document doesn't exist\"\n * - `DeleteDocumentGroupEvent`: Delete action - \"Published document doesn't exist\"\n * - `UpdateLiveDocumentEvent`: Raw Update mutation - \"Published document exists\"\n */\n\nimport {type ReleaseDocument} from '@sanity/client'\nimport {type SanityDocument} from '@sanity/types'\nimport {type Observable} from 'rxjs'\n\nimport {type ObjectDiff} from '../../field/types'\nimport {type DocumentVariantType} from '../../util/getDocumentVariantType'\n\n/**\n * Events relevant for the whole document group.\n * @hidden\n * @beta\n */\nexport type DocumentGroupEvent =\n | CreateDocumentVersionEvent\n | DeleteDocumentVersionEvent\n | PublishDocumentVersionEvent\n | UnpublishDocumentEvent\n | ScheduleDocumentVersionEvent\n | UnscheduleDocumentVersionEvent\n | DeleteDocumentGroupEvent\n | CreateLiveDocumentEvent\n | UpdateLiveDocumentEvent\n | EditDocumentVersionEvent\n | HistoryClearedEvent\n\n/**\n * @hidden\n * @beta\n */\nexport const isCreateDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is CreateDocumentVersionEvent => event.type === 'createDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isDeleteDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is DeleteDocumentVersionEvent => event.type === 'deleteDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isPublishDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is PublishDocumentVersionEvent => event.type === 'publishDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUnpublishDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UnpublishDocumentEvent => event.type === 'unpublishDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isScheduleDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is ScheduleDocumentVersionEvent => event.type === 'scheduleDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUnscheduleDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UnscheduleDocumentVersionEvent => event.type === 'unscheduleDocumentVersion'\n\n/**\n * @hidden\n * @beta\n */\nexport const isDeleteDocumentGroupEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is DeleteDocumentGroupEvent => event.type === 'deleteDocumentGroup'\n\n/**\n * @hidden\n * @beta\n */\nexport const isCreateLiveDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is CreateLiveDocumentEvent => event.type === 'createLiveDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isUpdateLiveDocumentEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is UpdateLiveDocumentEvent => event.type === 'updateLiveDocument'\n\n/**\n * @hidden\n * @beta\n */\nexport const isEditDocumentVersionEvent = (\n event: Partial<DocumentGroupEvent>,\n): event is EditDocumentVersionEvent => event.type === 'editDocumentVersion'\n\n/**\n * A generic event with a type and a timestamp.\n * @hidden\n * @beta\n */\nexport interface BaseEvent {\n id: string\n timestamp: string\n author: string\n /**\n * This is added client side to enhance the UI.\n */\n documentVariantType: DocumentVariantType\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface CreateDocumentVersionEvent extends BaseEvent {\n type: 'createDocumentVersion'\n documentId: string\n\n releaseId?: string\n versionId: string\n versionRevisionId: string\n\n /**\n * This is undefined for versions and drafts. (will be present only in publish document?)\n */\n revisionId?: string\n\n /**\n * This is present when this creation event is already published.\n */\n parentId?: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface HistoryClearedEvent extends BaseEvent {\n type: 'historyCleared'\n documentId: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface DeleteDocumentVersionEvent extends BaseEvent {\n type: 'deleteDocumentVersion'\n documentId: string\n\n releaseId?: string\n versionId: string\n versionRevisionId: string\n /**\n * This is added client side to enhance the UI.\n * For draft documents, it indicates the event that created this document that was later published\n * It will be used to expand the publish view.\n */\n creationEvent?: CreateDocumentVersionEvent\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface PublishDocumentVersionEvent extends BaseEvent {\n type: 'publishDocumentVersion'\n documentId: string\n revisionId: string\n\n versionId: string\n releaseId?: string\n\n /** This is only available when it was triggered by Publish action. */\n versionRevisionId?: string\n\n publishCause: 'document.publish' | 'release.publish' | 'release.schedule'\n\n contributors?: string[]\n\n /**\n * This is added client side to enhance the UI.\n */\n release?: ReleaseDocument | {_id: string; metadata?: undefined}\n\n /**\n * This is added client side to enhance the UI.\n * For draft documents, it indicates the event that created this document that was later published\n * It will be used to expand the publish view.\n */\n creationEvent?: CreateDocumentVersionEvent\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UnpublishDocumentEvent extends BaseEvent {\n type: 'unpublishDocument'\n documentId: string\n\n /** The version that was created based on it */\n versionId: string\n versionRevisionId: string\n releaseId?: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface ScheduleDocumentVersionEvent extends BaseEvent {\n type: 'scheduleDocumentVersion'\n documentId: string\n\n releaseId: string\n versionId: string\n versionRevisionId: string\n\n /** The _current_ state of this schedule. */\n state: 'pending' | 'unscheduled' | 'published'\n\n author: string\n publishAt: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UnscheduleDocumentVersionEvent extends BaseEvent {\n type: 'unscheduleDocumentVersion'\n documentId: string\n\n releaseId: string\n versionId: string\n versionRevisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface DeleteDocumentGroupEvent extends BaseEvent {\n type: 'deleteDocumentGroup'\n documentId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface CreateLiveDocumentEvent extends BaseEvent {\n type: 'createLiveDocument'\n documentId: string\n revisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface UpdateLiveDocumentEvent extends BaseEvent {\n type: 'updateLiveDocument'\n documentId: string\n revisionId: string\n\n author: string\n}\n\n/**\n * @hidden\n * @beta\n * This event won't be exposed by the API, it needs to be generated by validating the\n * transactions that occurred between two events. Usually, between two PublishDocumentEvents.\n * Or a create event and a publish event.\n */\nexport interface EditDocumentVersionEvent extends BaseEvent {\n type: 'editDocumentVersion'\n documentId: string\n // Given this event could be a result of multiple edits, we could have more than one author.\n contributors: string[]\n releaseId?: string\n /**\n * One edit event could contain multiple transactions that are merged together.\n * This represents the newest transaction in the merged events.\n */\n revisionId: string\n transactions: {\n type: 'editTransaction'\n author: string\n timestamp: string\n revisionId: string\n }[]\n /**\n * Present when an edit was already published, then the user decided to expand the event.\n */\n parentId?: string\n}\n\n/**\n * @hidden\n * @beta\n */\nexport interface EventsStoreRevision {\n revisionId: string\n loading: boolean\n document?: SanityDocument | null\n}\n\n/**\n * @internal\n * */\nexport interface EventsStore {\n events: DocumentGroupEvent[]\n nextCursor: string | null\n loading: boolean\n error: Error | null\n revision: EventsStoreRevision | null\n sinceRevision: EventsStoreRevision | null\n findRangeForRevision: (nextRev: string) => [string | null, string | null]\n findRangeForSince: (nextSince: string) => [string | null, string | null]\n loadMoreEvents: () => void\n getChangesList: () => Observable<{\n diff: ObjectDiff | null\n loading: boolean\n error: Error | null\n }>\n expandEvent: (event: DocumentGroupEvent) => Promise<void>\n lastNonDeletedRevId: string | null\n getDocumentAtRevision: (revision: string) => Observable<EventsStoreRevision | null>\n}\n\n/**\n * @internal\n **/\nexport type DocumentVersionEventType = DocumentGroupEvent['type']\n","import {type IconComponent} from '@sanity/icons'\nimport {AddCircleIcon} from '@sanity/icons/AddCircle'\nimport {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CircleIcon} from '@sanity/icons/Circle'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {TimelineIcon} from '@sanity/icons/Timeline'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UnpublishIcon} from '@sanity/icons/Unpublish'\nimport {type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\n\nimport {type StudioLocaleResourceKeys} from '../../../i18n/bundles/studio'\nimport {type DocumentVersionEventType} from '../../../store/events/types'\nimport {type DocumentVariantType} from '../../../util/getDocumentVariantType'\n\nexport const TIMELINE_ICON_COMPONENTS: Record<DocumentVersionEventType, IconComponent> = {\n historyCleared: TimelineIcon,\n createDocumentVersion: AddCircleIcon,\n createLiveDocument: AddCircleIcon,\n deleteDocumentGroup: TrashIcon,\n deleteDocumentVersion: CloseIcon,\n editDocumentVersion: EditIcon,\n updateLiveDocument: EditIcon,\n publishDocumentVersion: PublishIcon,\n unpublishDocument: UnpublishIcon,\n scheduleDocumentVersion: CalendarIcon,\n unscheduleDocumentVersion: CircleIcon,\n}\n\nexport const TIMELINE_ITEM_EVENT_TONE: Record<DocumentVersionEventType, ThemeColorAvatarColorKey> =\n {\n historyCleared: 'orange',\n createDocumentVersion: 'green',\n createLiveDocument: 'blue',\n updateLiveDocument: 'green',\n editDocumentVersion: 'yellow',\n unpublishDocument: 'orange',\n deleteDocumentVersion: 'orange',\n deleteDocumentGroup: 'orange',\n scheduleDocumentVersion: 'cyan',\n unscheduleDocumentVersion: 'cyan',\n publishDocumentVersion: 'green',\n }\n\n/**\n * @internal\n * mapping of events types with a readable key for translation\n */\nexport const TIMELINE_ITEM_I18N_KEY_MAPPING: Record<\n DocumentVariantType,\n Record<DocumentVersionEventType, StudioLocaleResourceKeys>\n> = {\n published: {\n createDocumentVersion: 'timeline.operation.created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.draft-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n draft: {\n createDocumentVersion: 'timeline.operation.draft-created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.draft-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n version: {\n createDocumentVersion: 'timeline.operation.version-created',\n historyCleared: 'timeline.operation.history-cleared',\n publishDocumentVersion: 'timeline.operation.published',\n updateLiveDocument: 'timeline.operation.edited-live',\n editDocumentVersion: 'timeline.operation.edited-draft',\n unpublishDocument: 'timeline.operation.unpublished',\n deleteDocumentVersion: 'timeline.operation.version-discarded',\n deleteDocumentGroup: 'timeline.operation.deleted',\n scheduleDocumentVersion: 'timeline.operation.published',\n unscheduleDocumentVersion: 'timeline.operation.published',\n createLiveDocument: 'timeline.operation.created',\n },\n}\n","import {type AvatarSize, AvatarStack, Box, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {getTheme_v2, type ThemeColorAvatarColorKey} from '@sanity/ui/theme'\nimport {useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {type RelativeTimeOptions, useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {ReleaseTitle} from '../../../releases/components/ReleaseTitle'\nimport {VersionInlineBadge} from '../../../releases/components/VersionInlineBadge'\nimport {isReleaseDocument} from '../../../releases/store/types'\nimport {getReleaseTone} from '../../../releases/util/getReleaseTone'\nimport {\n type DocumentGroupEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n} from '../../../store/events/types'\nimport {useUser} from '../../../store/user/hooks'\nimport {\n TIMELINE_ICON_COMPONENTS,\n TIMELINE_ITEM_EVENT_TONE,\n TIMELINE_ITEM_I18N_KEY_MAPPING,\n} from './constants'\n\ninterface UserAvatarStackProps {\n maxLength?: number\n userIds: string[]\n size?: AvatarSize\n withTooltip?: boolean\n}\n\nfunction UserAvatarStack({maxLength, userIds, size, withTooltip = true}: 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\nconst IconBox = styled(Flex)<{$color: ThemeColorAvatarColorKey}>((props) => {\n const theme = getTheme_v2(props.theme)\n const color = props.$color\n\n return css`\n --card-icon-color: ${theme.color.avatar[color].fg};\n background-color: ${theme.color.avatar[color].bg};\n box-shadow: 0 0 0 1px var(--card-bg-color);\n\n position: absolute;\n width: ${theme.avatar.sizes[0].size}px;\n height: ${theme.avatar.sizes[0].size}px;\n right: -3px;\n bottom: -3px;\n border-radius: 50%;\n `\n})\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {\n minimal: true,\n useTemporalPhrase: true,\n}\n\nconst AvatarSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n border-radius: 50%;\n width: ${theme.avatar.sizes[1].size}px;\n height: ${theme.avatar.sizes[1].size}px;\n `\n})\n\nconst NameSkeleton = styled(Skeleton)((props) => {\n const theme = getTheme_v2(props.theme)\n return css`\n width: 6ch;\n height: ${theme.font.text.sizes[0].lineHeight}px;\n `\n})\n\nconst UserLine = ({userId}: {userId: string}) => {\n const [user, loading] = useUser(userId)\n\n return (\n <Flex key={userId} align=\"center\" gap={2} padding={1}>\n <Box>{loading || !user ? <AvatarSkeleton animated /> : <UserAvatar user={user} />}</Box>\n <Box>\n {loading || !user?.displayName ? (\n <Text size={1}>\n <NameSkeleton animated />\n </Text>\n ) : (\n <Text muted size={1}>\n {user.displayName}\n </Text>\n )}\n </Box>\n </Flex>\n )\n}\nconst ChangesBy = ({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}\n\ninterface TimelineItemProps {\n event: DocumentGroupEvent\n showChangesBy: 'tooltip' | 'inline' | 'hidden'\n}\n/**\n * @internal\n */\nexport function Event({event, showChangesBy = 'tooltip'}: TimelineItemProps) {\n const {t} = useTranslation('studio')\n const {type, timestamp, documentVariantType} = event\n\n const IconComponent = TIMELINE_ICON_COMPONENTS[type]\n const contributors = 'contributors' in event ? event.contributors || [] : []\n\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 userIds = isEditDocumentVersionEvent(event) ? event.contributors : [event.author]\n\n return (\n <>\n <Flex align=\"center\" gap={3}>\n <div style={{position: 'relative'}}>\n <UserAvatarStack maxLength={3} userIds={userIds.filter(Boolean)} 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 gap={2}>\n <Text size={1} weight=\"medium\">\n {t(TIMELINE_ITEM_I18N_KEY_MAPPING[documentVariantType][type])}\n {isPublishDocumentVersionEvent(event) && documentVariantType === 'published' && (\n <>\n {' '}\n {event.release ? (\n <ReleaseTitle\n title={event.release.metadata?.title}\n fallback={t('release.placeholder-untitled-release')}\n >\n {({displayTitle}) => (\n <VersionInlineBadge\n $tone={\n isReleaseDocument(event.release!)\n ? getReleaseTone(event.release)\n : 'default'\n }\n >\n {displayTitle}\n </VersionInlineBadge>\n )}\n </ReleaseTitle>\n ) : (\n <VersionInlineBadge $tone=\"caution\">\n {t('changes.versions.draft')}\n </VersionInlineBadge>\n )}\n </>\n )}\n </Text>\n\n <Text as=\"time\" size={1} muted dateTime={timestamp} title={formattedTimestamp}>\n {updatedTimeAgo}\n </Text>\n </Stack>\n\n {contributors.length > 0 && showChangesBy == 'tooltip' && (\n <Flex flex={1} justify=\"flex-end\" align=\"center\">\n <Tooltip placement=\"top\" content={<ChangesBy collaborators={contributors} />} portal>\n <Box paddingLeft={2} paddingY={2}>\n <UserAvatarStack\n maxLength={3}\n userIds={contributors}\n size={0}\n withTooltip={false}\n />\n </Box>\n </Tooltip>\n </Flex>\n )}\n </Flex>\n {contributors.length > 0 && showChangesBy === 'inline' && (\n <Box paddingTop={2}>\n <ChangesBy collaborators={contributors} />\n </Box>\n )}\n </>\n )\n}\n","import {type Path} from '@sanity/types'\nimport {Card, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {Tooltip, type TooltipProps} from '../../../../ui-components/tooltip/Tooltip'\nimport {LegacyLayerProvider} from '../../../components/transitional/LegacyLayerProvider'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useUser} from '../../../store/user/hooks'\nimport {type AnnotationDetails, type Diff} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {useAnnotationColor} from '../annotations/hooks'\nimport {Event} from '../components/Event'\n\n/** @internal */\nexport interface DiffTooltipProps extends TooltipProps {\n children: React.JSX.Element\n description?: ReactNode\n diff: Diff\n path?: Path | string\n}\n\n/** @internal */\nexport interface DiffTooltipWithAnnotationsProps extends TooltipProps {\n annotations: AnnotationDetails[]\n children: React.JSX.Element\n description?: ReactNode\n}\n\n/** @internal */\nexport function DiffTooltip(props: DiffTooltipProps | DiffTooltipWithAnnotationsProps) {\n if (!('diff' in props)) {\n return <DiffTooltipWithAnnotation {...props} />\n }\n\n const {diff, path = [], ...restProps} = props\n const annotation = getAnnotationAtPath(diff, path)\n\n return <DiffTooltipWithAnnotation {...restProps} annotations={annotation ? [annotation] : []} />\n}\n\nfunction DiffTooltipWithAnnotation(props: DiffTooltipWithAnnotationsProps) {\n const {annotations, children, description, ...restProps} = props\n const {t} = useTranslation()\n\n if (!annotations) {\n return children\n }\n\n const content = (\n <Stack gap={2} style={{minWidth: '240px'}} paddingTop={1}>\n <Text muted size={1} weight=\"medium\">\n {description || t('changes.changed-label')}\n </Text>\n <Stack gap={2}>\n {annotations.map((annotation, idx) => (\n // oxlint-disable-next-line no-array-index-key\n <AnnotationItem key={idx} annotation={annotation} />\n ))}\n </Stack>\n </Stack>\n )\n\n return (\n <LegacyLayerProvider zOffset=\"paneFooter\">\n <Tooltip content={content} portal {...restProps}>\n {children}\n </Tooltip>\n </LegacyLayerProvider>\n )\n}\n\nfunction AnnotationItem({annotation}: {annotation: AnnotationDetails}) {\n const {author, timestamp} = annotation\n const [user] = useUser(author)\n const color = useAnnotationColor(annotation)\n const timeAgo = useRelativeTime(timestamp, {minimal: true})\n const {t} = useTranslation()\n\n return (\n <>\n {annotation.event ? (\n <>\n <Card borderBottom marginBottom={2} />\n <Event event={annotation.event} showChangesBy=\"inline\" />\n </>\n ) : (\n <Inline gap={2}>\n <Flex\n align=\"center\"\n paddingRight={3}\n style={{\n backgroundColor: color.background,\n color: color.text,\n borderRadius: 'calc(23px / 2)',\n }}\n >\n {author && (\n <>\n <UserAvatar user={author} />\n <Inline paddingLeft={2}>\n <Text muted size={1} style={{color: color.text}}>\n {user ? user.displayName : t('changes.loading-author')}\n </Text>\n </Inline>\n </>\n )}\n </Flex>\n <Text as=\"time\" muted size={1} dateTime={timestamp}>\n {timeAgo}\n </Text>\n </Inline>\n )}\n </>\n )\n}\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {Text, type TextProps} from '@sanity/ui'\nimport {type HTMLProps} from 'react'\n\n/** @internal */\nexport type FromToArrowDirection = 'down' | 'right'\n\nconst arrowComponents = {\n down: ArrowDownIcon,\n right: ArrowRightIcon,\n}\n\n/** @internal */\nexport function FromToArrow(\n props: {direction?: FromToArrowDirection} & TextProps &\n Omit<HTMLProps<HTMLDivElement>, 'children' | 'ref'>,\n) {\n const {direction = 'right', ...restProps} = props\n const ArrowComponent = arrowComponents[direction]\n\n return (\n <Text muted size={1} {...restProps}>\n <ArrowComponent />\n </Text>\n )\n}\n","import {useContext} from 'react'\nimport {DocumentChangeContext} from 'sanity/_singletons'\n\nimport {type DocumentChangeContextInstance} from '../contexts/DocumentChangeContext'\n\n/** @internal */\nexport function useDocumentChange(): DocumentChangeContextInstance {\n const documentChange = useContext(DocumentChangeContext)\n\n if (!documentChange) {\n throw new Error('DocumentChange: missing context value')\n }\n\n return documentChange\n}\n","import {type UserColor} from '../../../../user-color/types'\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\ntype BooleanProps = {\n checked: boolean | undefined | null\n color?: UserColor\n}\n\nconst BooleanPreview: FieldPreviewComponent<boolean> = function BooleanPreview({\n value,\n schemaType,\n color,\n}) {\n const Preview = schemaType.options?.layout === 'checkbox' ? Checkbox : Switch\n return <Preview checked={value} color={color} />\n}\n\nexport function Checkbox({checked, color}: BooleanProps) {\n return (\n <svg\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill={color?.background}\n >\n <rect x=\"0\" y=\"0\" width=\"17\" height=\"17\" rx=\"2.5\" />\n {typeof checked === 'undefined' && (\n <path d=\"M4.07996 8.5H12.92\" stroke={color?.text} strokeWidth=\"2\" />\n )}\n {checked && <path d=\"M3.5 8L7 11.5L13.5 5\" stroke={color?.text} strokeWidth=\"2\" />}\n </svg>\n )\n}\n\nexport function Switch({checked, color}: BooleanProps) {\n return (\n <svg width=\"38\" height=\"22\" viewBox=\"0 0 38 22\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"38\" height=\"22\" rx=\"11\" fill={checked ? color?.border : color?.background} />\n {typeof checked === 'undefined' && (\n <rect x=\"11\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />\n )}\n {checked && <rect x=\"18\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />}\n {typeof checked === 'boolean' && !checked && (\n <rect x=\"4\" y=\"3\" width=\"16\" height=\"16\" rx=\"8\" fill=\"white\" />\n )}\n </svg>\n )\n}\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport {useDiffAnnotationColor} from '../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromToArrow} from '../../../diff/components/FromToArrow'\nimport {useDocumentChange} from '../../../diff/hooks/useDocumentChange'\nimport {type BooleanDiff, type DiffComponent} from '../../../types'\nimport {Checkbox, Switch} from '../preview/BooleanPreview'\n\nexport const BooleanFieldDiff: DiffComponent<BooleanDiff> = ({diff, schemaType}) => {\n const {fromValue, toValue} = diff\n const {title, options} = schemaType\n const Preview = options?.layout === 'checkbox' ? Checkbox : Switch\n const userColor = useDiffAnnotationColor(diff, [])\n const {showFromValue} = useDocumentChange()\n const showToValue = toValue !== undefined && toValue !== null\n\n return (\n <Flex align=\"center\">\n <DiffTooltip diff={diff}>\n <Flex align=\"center\">\n {showFromValue && <Preview checked={fromValue} color={userColor} />}\n\n {showToValue && (\n <>\n {showFromValue && (\n <Box marginX={2}>\n <FromToArrow />\n </Box>\n )}\n <Preview checked={toValue} color={userColor} />\n </>\n )}\n </Flex>\n </DiffTooltip>\n\n {showToValue && title && (\n <Box marginLeft={2}>\n <Text size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n )}\n </Flex>\n )\n}\n","import {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type Diff} from '../../types'\n\n/** @internal */\nexport function useChangeVerb(diff: Diff): string {\n const {t} = useTranslation()\n const hadPrevValue = hasValue(diff.fromValue)\n const hasNextValue = hasValue(diff.toValue)\n if (!hadPrevValue && hasNextValue) {\n return t('changes.added-label')\n }\n\n if (!hasNextValue && hadPrevValue) {\n return t('changes.removed-label')\n }\n\n return t('changes.changed-label')\n}\n\n/** @internal */\nfunction hasValue(value: unknown) {\n return value !== null && typeof value !== 'undefined' && value !== ''\n}\n","import {type Path} from '@sanity/types'\nimport {Card, rem} from '@sanity/ui'\nimport {type ElementType, type HTMLProps, type ReactNode, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {type Annotation, type Diff} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {useAnnotationColor} from '../annotations/hooks'\nimport {DiffTooltip} from './DiffTooltip'\n\n/** @internal */\nexport interface DiffCardProps {\n annotation?: Annotation\n as?: ElementType | keyof React.JSX.IntrinsicElements\n diff?: Diff\n disableHoverEffect?: boolean\n path?: Path | string\n tooltip?: {description?: ReactNode} | boolean\n}\n\ninterface StyledCardProps {\n $annotationColor: {backgroundColor: string; color: string}\n}\n\nconst StyledCard = styled(Card)<StyledCardProps>`\n --diff-card-radius: ${({theme}) => rem(theme.sanity.radius[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-card-bg-color: ${({theme}) => theme.sanity.color.card.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n max-width: 100%;\n position: relative;\n border-radius: var(--diff-card-radius);\n background-color: ${({$annotationColor}) => $annotationColor.backgroundColor};\n color: ${({$annotationColor}) => $annotationColor.color};\n z-index: 1;\n\n &:not(del) {\n text-decoration: none;\n }\n\n &[data-hover] {\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n &:hover {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n &::after {\n bottom: -3px;\n border-top: 1px solid var(---diff-card-bg-color);\n border-bottom: 2px solid currentColor;\n border-bottom-left-radius: var(--diff-card-radius);\n border-bottom-right-radius: var(--diff-card-radius);\n }\n }\n\n [data-from-to-layout]:hover & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n\n &::after {\n bottom: -3px;\n border-top: 1px solid var(---diff-card-bg-color);\n border-bottom: 2px solid currentColor;\n border-bottom-left-radius: var(--diff-card-radius);\n border-bottom-right-radius: var(--diff-card-radius);\n }\n }\n }\n`\n\nconst EMPTY_PATH: Path = []\n\n/** @internal */\nexport function DiffCard(props: DiffCardProps & Omit<HTMLProps<HTMLElement>, 'as' | 'height'>) {\n const {\n ref,\n annotation: annotationProp,\n as = 'div',\n children,\n className,\n diff,\n disableHoverEffect,\n path = EMPTY_PATH,\n style = {},\n tooltip,\n ...restProps\n } = props\n\n const annotation = useMemo(\n () => annotationProp || getAnnotationAtPath(diff!, path),\n [annotationProp, diff, path],\n )\n\n const color = useAnnotationColor(annotation)\n\n const element = (\n <StyledCard\n {...restProps}\n as={as}\n className={className}\n data-hover={disableHoverEffect || !annotation ? undefined : ''}\n data-ui=\"diff-card\"\n ref={ref}\n radius={1}\n // Added annotation color to the card using css to make it possible to override by the ReleaseReview\n $annotationColor={{backgroundColor: color.background, color: color.text}}\n style={style}\n >\n {children}\n </StyledCard>\n )\n\n if (tooltip && annotation) {\n return (\n <DiffTooltip\n annotations={[annotation]}\n description={tooltip && typeof tooltip === 'object' && tooltip.description}\n >\n {element}\n </DiffTooltip>\n )\n }\n\n return element\n}\n","import {Flex, Grid, type GridProps, rem, useTheme} from '@sanity/ui'\nimport {type HTMLProps, type ReactNode, useMemo, type RefAttributes} from 'react'\n\nimport {FromToArrow} from './FromToArrow'\n\n/** @internal */\nexport type FromToProps = {\n align?: 'top' | 'center' | 'bottom'\n layout?: 'grid' | 'inline'\n from?: ReactNode\n to?: ReactNode\n} & Omit<HTMLProps<HTMLDivElement>, 'children' | 'as' | 'height' | 'wrap'>\n\nconst INLINE_COLUMN_STYLES = {flexShrink: 0}\nconst BLOCK_COLUMN_STYLES = {alignItems: 'stretch'}\n\nconst FLEX_ALIGN: Record<string, 'flex-start' | 'center' | 'flex-end'> = {\n top: 'flex-start',\n center: 'center',\n bottom: 'flex-end',\n default: 'flex-start',\n}\n\n/** @internal */\nexport function FromTo(props: FromToProps & RefAttributes<HTMLDivElement>) {\n const {ref, align = 'top', layout = 'inline', from, to, style, ...restProps} = props\n const theme = useTheme()\n\n const layoutStyles = useMemo(\n () => ({\n ...style,\n ...(layout === 'inline'\n ? {maxWidth: '100%', display: 'inline-flex'}\n : // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n {gridTemplateColumns: `minmax(0, 1fr) ${rem(theme.sanity.space[5])} minmax(0, 1fr)`}),\n }),\n [layout, style, theme],\n )\n\n const columnStyles = layout === 'inline' ? INLINE_COLUMN_STYLES : BLOCK_COLUMN_STYLES\n\n const children = (\n <>\n {from && (\n <>\n <Flex align={FLEX_ALIGN[align]} style={columnStyles}>\n {from}\n </Flex>\n <Flex align=\"center\" justify=\"center\" padding={2}>\n <FromToArrow />\n </Flex>\n </>\n )}\n <Flex align={FLEX_ALIGN[align]} style={columnStyles}>\n {to}\n </Flex>\n </>\n )\n\n if (layout === 'inline') {\n return (\n <Flex {...restProps} ref={ref} style={layoutStyles} data-from-to-layout>\n {children}\n </Flex>\n )\n }\n\n // Cast: HTMLProps is not assignable to GridProps because Grid marks legacy\n // `columns`/`rows` as `never` under @sanity/ui v4.\n return (\n <Grid {...(restProps as GridProps)} ref={ref} style={layoutStyles} data-from-to-layout>\n {children}\n </Grid>\n )\n}\n","import {type Path, type SchemaType} from '@sanity/types'\nimport {type CSSProperties} from 'react'\n\nimport {type FieldPreviewComponent} from '../../preview/types'\nimport {type Diff} from '../../types'\nimport {useChangeVerb} from '../hooks/useChangeVerb'\nimport {DiffCard} from './DiffCard'\nimport {DiffTooltip} from './DiffTooltip'\nimport {FromTo} from './FromTo'\n\n/** @internal */\nexport interface DiffFromToProps {\n align?: 'top' | 'center' | 'bottom'\n cardClassName?: string\n diff: Diff\n layout?: 'grid' | 'inline'\n path?: Path | string\n previewComponent: FieldPreviewComponent\n schemaType: SchemaType\n}\n\nconst cardStyles: CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: 'block',\n whiteSpace: 'break-spaces',\n}\n\n/** @internal */\nexport function DiffFromTo(props: DiffFromToProps) {\n const {\n align,\n cardClassName,\n diff,\n layout,\n path,\n previewComponent: PreviewComponent,\n schemaType,\n } = props\n const {action} = diff\n const changeVerb = useChangeVerb(diff)\n\n if (action === 'unchanged') {\n return (\n <DiffCard className={cardClassName} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.toValue} />\n </DiffCard>\n )\n }\n\n const from = diff.fromValue !== undefined && diff.fromValue !== null && (\n <DiffCard as=\"del\" className={cardClassName} diff={diff} path={path} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.fromValue} />\n </DiffCard>\n )\n\n const to = diff.toValue !== undefined && diff.toValue !== null && (\n <DiffCard as=\"ins\" className={cardClassName} diff={diff} path={path} style={cardStyles}>\n <PreviewComponent schemaType={schemaType} value={diff.toValue} />\n </DiffCard>\n )\n\n if (from && !to) {\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n {from}\n </DiffTooltip>\n )\n }\n\n if (!from && to) {\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n {to}\n </DiffTooltip>\n )\n }\n\n return (\n <DiffTooltip description={changeVerb} diff={diff} path={path}>\n <FromTo align={align} from={from} layout={layout} to={to} />\n </DiffTooltip>\n )\n}\n","import {type StringSchemaType} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport * as legacyDateFormat from '@sanity/util/legacyDateFormat'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst DatetimeWrapper = styled.div`\n display: inline-block;\n word-wrap: break-word;\n`\n\nexport const DatetimePreview: FieldPreviewComponent<string> = function DatetimePreview({\n value,\n schemaType,\n}) {\n return (\n <Box as={DatetimeWrapper} paddingX={2} paddingY={1}>\n {formatDateTime(value, schemaType)}\n </Box>\n )\n}\n\nfunction formatDateTime(value: string, schemaType: StringSchemaType): string {\n const {options, name} = schemaType\n const dateFormat = options?.dateFormat || legacyDateFormat.DEFAULT_DATE_FORMAT\n const timeFormat = options?.timeFormat || legacyDateFormat.DEFAULT_TIME_FORMAT\n\n return legacyDateFormat.format(\n new Date(value),\n name === 'date' ? dateFormat : `${dateFormat} ${timeFormat}`,\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type StringDiff} from '../../../types'\nimport {DatetimePreview} from '../preview/DatetimePreview'\n\nexport const DatetimeFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n align=\"center\"\n diff={diff}\n layout=\"grid\"\n previewComponent={DatetimePreview}\n schemaType={schemaType}\n />\n )\n}\n","import {type ConditionalProperty, type ConditionalPropertyCallbackContext} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {isRecord} from '../../util/isRecord'\n\nfunction isThenable(value: unknown): value is Promise<unknown> {\n return isRecord(value) && typeof value?.then === 'function'\n}\n\nexport function useCheckCondition(\n checkProperty: ConditionalProperty,\n checkPropertyName: string,\n context: ConditionalPropertyCallbackContext,\n): boolean {\n const {currentUser, document, parent, value, path} = context\n\n return useMemo(() => {\n let isTrueIsh = false\n\n if (typeof checkProperty === 'boolean' || checkProperty === undefined) {\n return checkProperty || false\n }\n\n try {\n isTrueIsh = checkProperty({\n document,\n parent,\n value,\n currentUser,\n path,\n })\n } catch (err) {\n console.error(\n `An error occurred while running the callback from \\`${checkPropertyName}\\`: ${err.message}`,\n )\n return false\n }\n\n if (isThenable(isTrueIsh)) {\n console.warn(\n `The \\`${checkPropertyName}\\` option is either a promise or a promise returning function. Async callbacks for \\`${checkPropertyName}\\` option is not currently supported.`,\n )\n return false\n }\n\n if (typeof isTrueIsh === 'undefined') {\n console.warn(\n `The \\`${checkPropertyName}\\` option is or returned \\`undefined\\`. \\`${checkPropertyName}\\` should return a boolean.`,\n )\n }\n\n return isTrueIsh\n }, [checkProperty, document, parent, value, currentUser, checkPropertyName, path])\n}\n","import {type ConditionalProperty, type Path, type SanityDocument} from '@sanity/types'\n\nimport {useCurrentUser} from '../../store/user/hooks'\nimport {useUnique} from '../../util/useUnique'\nimport {useCheckCondition} from './utils'\n\n/**\n * @internal Not yet a stable API\n */\nexport interface ConditionalPropertyProps {\n parent?: unknown\n value: unknown\n document?: SanityDocument\n checkProperty: ConditionalProperty\n checkPropertyKey: string\n path: Path\n}\n\n/**\n * Resolve a callback function to a boolean using the passed arguments\n *\n * @internal Not yet a stable API\n */\nexport const useConditionalProperty = (props: ConditionalPropertyProps): boolean => {\n const {checkProperty = false, checkPropertyKey, document, parent, value: valueProp, path} = props\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const value = useUnique(valueProp)\n const currentUser = useCurrentUser()\n\n const isPropertyTruthy = useCheckCondition(checkProperty, checkPropertyKey, {\n currentUser,\n document,\n parent,\n value,\n path,\n })\n\n return isPropertyTruthy\n}\n","import {type ArraySchemaType, isTypedObject, type SchemaType} from '@sanity/types'\n\nimport {type Diff} from '../types'\n\nfunction resolveTypeName(value: unknown): string {\n return isTypedObject(value) ? value._type : resolveJSType(value)\n}\n\nexport function getArrayDiffItemType(\n diff: Diff,\n schemaType: ArraySchemaType,\n): {fromType?: SchemaType; toType?: SchemaType} {\n if (diff.action === 'added') {\n return {\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n }\n\n if (diff.action === 'changed') {\n return {\n fromType: resolveArrayMemberType(schemaType, diff.fromValue),\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n }\n\n if (diff.action === 'removed') {\n return {\n fromType: resolveArrayMemberType(schemaType, diff.fromValue),\n }\n }\n\n // unchanged\n return {\n toType: resolveArrayMemberType(schemaType, diff.toValue),\n }\n}\n\nfunction resolveArrayMemberType(\n schemaType: ArraySchemaType,\n value: unknown,\n): SchemaType | undefined {\n const typeName = resolveTypeName(value)\n const declared = schemaType.of.find((candidate) => candidate.name === typeName)\n if (declared) {\n return declared as any\n }\n\n return (schemaType.of.length === 1 ? schemaType.of[0] : undefined) as any\n}\n\nfunction resolveJSType(val: unknown) {\n if (Array.isArray(val)) {\n return 'array'\n }\n\n if (val === null) {\n return 'null'\n }\n\n return typeof val\n}\n","export const ANNOTATION_SYMBOLS = [\n // [startTag, endTag]\n ['\\uF050', '\\uF051'],\n ['\\uF052', '\\uF053'],\n ['\\uF054', '\\uF055'],\n ['\\uF056', '\\uF057'],\n ['\\uF058', '\\uF059'],\n ['\\uF05A', '\\uF05B'],\n ['\\uF05C', '\\uF05D'],\n ['\\uF05F', '\\uF060'],\n ['\\uF061', '\\uF062'],\n ['\\uF063', '\\uF064'],\n ['\\uF065', '\\uF066'],\n ['\\uF067', '\\uF068'],\n ['\\uF069', '\\uF06A'],\n ['\\uF06B', '\\uF06C'],\n ['\\uF06E', '\\uF06F'],\n ['\\uF070', '\\uF071'],\n ['\\uF072', '\\uF073'],\n ['\\uF074', '\\uF075'],\n ['\\uF076', '\\uF077'],\n ['\\uF078', '\\uF079'],\n ['\\uF07A', '\\uF07B'],\n ['\\uF07C', '\\uF07D'],\n ['\\uF07E', '\\uF07F'],\n ['\\uF080', '\\uF081'],\n ['\\uF082', '\\uF083'],\n ['\\uF084', '\\uF085'],\n ['\\uF086', '\\uF087'],\n ['\\uF088', '\\uF089'],\n ['\\uF08A', '\\uF08B'],\n ['\\uF08C', '\\uF08D'],\n ['\\uF08E', '\\uF08F'],\n]\n\nexport const CHILD_SYMBOL = '\\uF0D0'\n\nexport const DECORATOR_SYMBOLS = [\n // [startTag, endTag]\n ['\\uF000', '\\uF001'],\n ['\\uF002', '\\uF003'],\n ['\\uF004', '\\uF005'],\n ['\\uF006', '\\uF007'],\n ['\\uF008', '\\uF009'],\n ['\\uF00A', '\\uF00B'],\n ['\\uF00C', '\\uF00D'],\n ['\\uF00F', '\\uF010'],\n ['\\uF011', '\\uF012'],\n ['\\uF013', '\\uF014'],\n ['\\uF015', '\\uF016'],\n ['\\uF017', '\\uF018'],\n ['\\uF019', '\\uF01A'],\n ['\\uF01B', '\\uF01C'],\n ['\\uF01E', '\\uF01F'],\n ['\\uF020', '\\uF021'],\n]\n\nexport const EMPTY_BLOCK_SYMBOL = '\\u21B2'\n\nexport const INLINE_SYMBOLS = [\n '\\uF090',\n '\\uF091',\n '\\uF092',\n '\\uF093',\n '\\uF094',\n '\\uF095',\n '\\uF096',\n '\\uF097',\n '\\uF098',\n '\\uF099',\n '\\uF09A',\n '\\uF09B',\n '\\uF09C',\n '\\uF09D',\n '\\uF09E',\n '\\uF09F',\n '\\uF0A0',\n '\\uF0A1',\n '\\uF0A2',\n '\\uF0A3',\n '\\uF0A4',\n '\\uF0A5',\n '\\uF0A6',\n '\\uF0A7',\n '\\uF0A8',\n '\\uF0A9',\n '\\uF0AA',\n '\\uF0AB',\n '\\uF0AC',\n '\\uF0AD',\n '\\uF0AE',\n '\\uF0AF',\n '\\uF0B0',\n '\\uF0B1',\n '\\uF0B2',\n '\\uF0B3',\n '\\uF0B4',\n '\\uF0B5',\n '\\uF0B6',\n '\\uF0B7',\n '\\uF0B8',\n '\\uF0B9',\n '\\uF0BA',\n '\\uF0BB',\n '\\uF0BC',\n '\\uF0BD',\n '\\uF0BE',\n '\\uF0BF',\n]\n\nexport const TRAILING_SPACE_SYMBOL = '\\u205F'\n\nexport const SEGMENT_START_SYMBOL = '\\u2060'\n","import {\n cleanupEfficiency,\n DIFF_DELETE,\n DIFF_EQUAL,\n DIFF_INSERT,\n makeDiff,\n} from '@sanity/diff-match-patch'\nimport {\n type ArraySchemaType,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type ObjectField,\n type ObjectSchemaType,\n type PortableTextBlock,\n type PortableTextChild,\n type PortableTextObject,\n type PortableTextTextBlock,\n type SchemaType,\n type SpanSchemaType,\n} from '@sanity/types'\nimport flatten from 'lodash-es/flatten.js'\nimport isEqual from 'lodash-es/isEqual.js'\nimport orderBy from 'lodash-es/orderBy.js'\n\nimport {\n type ArrayDiff,\n type DiffComponent,\n type DiffComponentOptions,\n type ObjectDiff,\n type StringDiffSegment,\n} from '../../../types'\nimport * as TextSymbols from './symbols'\nimport {type InlineSymbolMap, type MarkSymbolMap, type PortableTextDiff} from './types'\n\nconst UNKNOWN_TYPE_NAME = '_UNKOWN_TYPE_'\n\nexport function hasPTMemberType(schemaType: ArraySchemaType): boolean {\n return schemaType.of.some(isPTSchemaType)\n}\n\nconst startMarkSymbols = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[0]).concat(\n TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[0]),\n)\nconst endMarkSymbols = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[1]).concat(\n TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[1]),\n)\nconst allSymbols = startMarkSymbols\n .concat(endMarkSymbols)\n .concat(TextSymbols.INLINE_SYMBOLS)\n .concat(TextSymbols.CHILD_SYMBOL)\n .concat(TextSymbols.SEGMENT_START_SYMBOL)\nconst symbolRegex = new RegExp(`${allSymbols.join('|')}`, 'g')\nconst segmentRegex = new RegExp(`${allSymbols.join('|')}|\\n`, 'g')\n\ninterface BlockSchemaType extends ObjectSchemaType {\n diffComponent:\n | DiffComponent<ObjectDiff<PortableTextBlock>>\n | DiffComponentOptions<ObjectDiff<PortableTextBlock>>\n}\n\nexport function isPTSchemaType(schemaType: SchemaType): schemaType is BlockSchemaType {\n return schemaType.jsonType === 'object' && schemaType.name === 'block'\n}\n\nexport function isHeader(node: PortableTextBlock): boolean {\n return (\n isPortableTextTextBlock(node) &&\n !!node.style &&\n ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(node.style)\n )\n}\n\nexport function findChildDiff(diff: ObjectDiff, child: PortableTextChild): ObjectDiff {\n const childrenDiff = diff.fields.children as ArrayDiff\n return childrenDiff.items\n .filter(\n (item: any) =>\n item.diff.isChanged && (item.diff.toValue === child || item.diff.fromValue === child),\n )\n .map((item: any) => item.diff)\n .map((childDiff: any) => childDiff as ObjectDiff)[0]\n}\n\nexport function getChildSchemaType(\n fields: ObjectField[],\n child: PortableTextChild,\n): ObjectSchemaType | undefined {\n const childrenField = fields.find((f) => f.name === 'children')\n const cSchemaType =\n (childrenField &&\n childrenField.type &&\n childrenField.type.jsonType === 'array' &&\n (childrenField.type.of.find((type) => type.name === child._type) as ObjectSchemaType)) ||\n undefined\n return cSchemaType\n}\n\nexport function getDecorators(spanSchemaType: SpanSchemaType): {title: string; value: string}[] {\n if (spanSchemaType.decorators) {\n return orderBy(spanSchemaType.decorators, ['value'], ['asc'])\n }\n return []\n}\n\nfunction getAnnotations(spanSchemaType: SpanSchemaType): ObjectSchemaType[] {\n if (spanSchemaType.annotations) {\n return orderBy(spanSchemaType.annotations, ['name'], ['asc'])\n }\n return []\n}\n\nexport function isDecorator(name: string, schemaType: SpanSchemaType): boolean {\n return getDecorators(schemaType).some((dec) => dec.value === name)\n}\n\nfunction blockToSymbolizedText(\n diff: ObjectDiff,\n block: PortableTextTextBlock | undefined,\n decoratorMap: MarkSymbolMap,\n annotationMap: MarkSymbolMap,\n inlineMap: InlineSymbolMap,\n): string {\n if (!block) {\n return ''\n }\n return block.children\n .map((child) => {\n let returned = isPortableTextSpan(child) ? child.text?.replace(symbolRegex, '') : '' // Make sure symbols aren't in the text already\n if (isPortableTextSpan(child)) {\n // Attatch stringdiff segments\n const spanDiff = findSpanDiffFromChild(diff, child)\n const textDiff = spanDiff?.fields.text\n if (\n textDiff &&\n textDiff.toValue === child.text &&\n textDiff.type === 'string' &&\n textDiff.action !== 'unchanged'\n ) {\n returned = textDiff.segments\n .filter((seg) => seg.action !== 'removed')\n .map((seg) => seg.text.replace(symbolRegex, ''))\n .join('')\n }\n if (child.marks) {\n child.marks.forEach((mark) => {\n const _isDecorator = !!decoratorMap[mark]\n if (_isDecorator) {\n returned = `${decoratorMap[mark][0]}${returned}${decoratorMap[mark][1]}`\n } else if (annotationMap[mark]) {\n returned = `${annotationMap[mark][0]}${returned}${annotationMap[mark][1]}`\n }\n })\n }\n } else {\n returned = inlineMap[child._key]\n }\n return `${TextSymbols.CHILD_SYMBOL}${returned}`\n })\n .join('')\n}\n\nexport function createPortableTextDiff(\n diff: ObjectDiff,\n schemaType: ObjectSchemaType,\n): PortableTextDiff {\n const displayValue =\n diff.action === 'removed'\n ? (diff.fromValue as PortableTextTextBlock)\n : (diff.toValue as PortableTextTextBlock)\n const _diff: PortableTextDiff = {\n ...diff,\n origin: diff,\n displayValue,\n }\n\n if (displayValue) {\n const annotationMap: MarkSymbolMap = {}\n const decoratorMap: MarkSymbolMap = {}\n const inlineMap: InlineSymbolMap = {}\n const spanSchemaType = getChildSchemaType(schemaType.fields, {\n _key: 'bogus',\n _type: 'span',\n }) as SpanSchemaType\n if (spanSchemaType) {\n getDecorators(spanSchemaType).forEach((dec, index) => {\n decoratorMap[dec.value] = TextSymbols.DECORATOR_SYMBOLS[index]\n })\n }\n const allMarkDefs = getAllMarkDefs(_diff.origin)\n allMarkDefs.forEach((markDef, index) => {\n annotationMap[markDef._key] = TextSymbols.ANNOTATION_SYMBOLS[index]\n })\n const inlines = getInlineObjects(_diff.origin)\n inlines.forEach((inline, index) => {\n inlineMap[inline._key] = TextSymbols.INLINE_SYMBOLS[index]\n })\n const fromText = blockToSymbolizedText(\n _diff.origin,\n _diff.fromValue as PortableTextTextBlock,\n decoratorMap,\n annotationMap,\n inlineMap,\n )\n const toText = blockToSymbolizedText(\n _diff.origin,\n _diff.toValue as PortableTextTextBlock,\n decoratorMap,\n annotationMap,\n inlineMap,\n )\n const toPseudoValue = {\n ...displayValue,\n children: [\n {\n _type: 'span',\n _key: 'pseudoSpanKey',\n text: toText,\n marks: [],\n },\n ],\n }\n const fromPseudoValue = {\n displayValue,\n children: [\n {\n _type: 'span',\n _key: 'pseudoSpanKey',\n text: fromText,\n marks: [],\n },\n ],\n }\n const pseudoDiff = {\n origin: diff,\n action: 'changed',\n type: 'object',\n displayValue: toPseudoValue,\n fromValue: fromPseudoValue,\n toValue: toPseudoValue,\n isChanged: true,\n fields: {\n children: {\n action: 'changed',\n type: 'array',\n isChanged: true,\n items: [\n {\n diff: {\n action: 'changed',\n type: 'object',\n isChanged: true,\n fields: {\n text: {\n type: 'string',\n action: 'changed',\n isChanged: true,\n fromValue: fromText,\n toValue: toText,\n segments: buildSegments(fromText, toText).map((seg) => ({\n ...seg,\n ...(_diff.action !== 'unchanged' && _diff.annotation\n ? {annotation: _diff.annotation} // Fallback if we can't find a spesific original diff\n : {}),\n })),\n },\n },\n fromValue: fromPseudoValue.children[0],\n toValue: toPseudoValue.children[0],\n },\n annotation: null,\n fromIndex: 0,\n toIndex: 0,\n hasMoved: false,\n },\n ],\n fromValue: fromPseudoValue.children,\n toValue: toPseudoValue.children,\n },\n },\n }\n return pseudoDiff as PortableTextDiff\n }\n throw new Error('Can not display this diff')\n}\n\n/** @internal Exported for testing */\nexport function buildSegments(fromInput: string, toInput: string): StringDiffSegment[] {\n const segments: StringDiffSegment[] = []\n const dmpDiffs = cleanupEfficiency(makeDiff(fromInput, toInput))\n\n let fromIdx = 0\n let toIdx = 0\n for (const [op, text] of dmpDiffs) {\n switch (op) {\n case DIFF_EQUAL:\n segments.push({\n type: 'stringSegment',\n action: 'unchanged',\n text,\n })\n fromIdx += text.length\n toIdx += text.length\n break\n case DIFF_DELETE:\n segments.push({\n type: 'stringSegment',\n action: 'removed',\n text: fromInput.slice(fromIdx, fromIdx + text.length),\n annotation: null,\n })\n fromIdx += text.length\n break\n case DIFF_INSERT:\n segments.push({\n type: 'stringSegment',\n action: 'added',\n text: toInput.slice(toIdx, toIdx + text.length),\n annotation: null,\n })\n toIdx += text.length\n break\n default:\n // Do nothing\n }\n }\n // Clean up so that marks / symbols are treated as an own segment\n return flatten(\n segments.map((seg) => {\n const newSegments: StringDiffSegment[] = []\n if (seg.text.length > 1) {\n const markMatches = [...seg.text.matchAll(segmentRegex)]\n let lastIndex = -1\n markMatches.forEach((match) => {\n const index = match.index || 0\n if (index > lastIndex) {\n newSegments.push({...seg, text: seg.text.slice(lastIndex + 1, index)})\n newSegments.push({...seg, text: match[0]})\n }\n if (match === markMatches[markMatches.length - 1]) {\n newSegments.push({...seg, text: seg.text.slice(Math.max(0, index + 1))})\n }\n lastIndex = index\n })\n if (markMatches.length === 0) {\n newSegments.push(seg)\n }\n } else {\n newSegments.push(seg)\n }\n return newSegments\n }),\n ).filter((seg) => seg.text !== '')\n}\n\nexport function getInlineObjects(diff: ObjectDiff): PortableTextObject[] {\n const allChildren = diff.toValue\n ? diff.toValue.children.filter((cld: any) => cld._type !== 'span')\n : []\n const previousChildren = diff.fromValue\n ? diff.fromValue.children.filter((cld: any) => cld._type !== 'span')\n : []\n previousChildren.forEach((oCld: any) => {\n if (!allChildren.some((cld: any) => oCld._key === cld._key)) {\n allChildren.push(oCld)\n }\n })\n return orderBy(allChildren, ['_key'], ['asc']) as PortableTextObject[]\n}\n\nexport function findSpanDiffFromChild(\n diff: ObjectDiff,\n child: PortableTextChild,\n): ObjectDiff | undefined {\n // Find span in original diff which has a string segment similar to the one from the input\n const candidate =\n diff.fields.children &&\n diff.fields.children.action !== 'unchanged' &&\n diff.fields.children.type === 'array' &&\n diff.fields.children.items.find(\n (item: any) =>\n item.diff &&\n item.diff.type === 'object' &&\n (item.diff.action === 'removed'\n ? item.diff.fromValue && item.diff.fromValue._key === child._key\n : (item.diff.toValue && item.diff.toValue._key) === child._key),\n )\n if (candidate) {\n return candidate.diff as ObjectDiff\n }\n return undefined\n}\n\nexport function findAnnotationDiff(diff: ObjectDiff, markDefKey: string): ObjectDiff | undefined {\n return (\n ((diff.fields.markDefs &&\n diff.fields.markDefs.isChanged &&\n diff.fields.markDefs.type === 'array' &&\n diff.fields.markDefs.items.find(\n (item: any) =>\n item.diff &&\n item.diff.type === 'object' &&\n ((item.diff.toValue && item.diff.toValue._key && item.diff.toValue._key === markDefKey) ||\n (item.diff.fromValue &&\n item.diff.fromValue._key &&\n item.diff.fromValue._key === markDefKey)),\n )?.diff) as ObjectDiff) || undefined\n )\n}\n\nexport function isEmptyObject(object: PortableTextChild): boolean {\n return (object && isEqual(Object.keys(object), ['_key', '_type'])) || false\n}\n\nexport function escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n\nexport function getAllMarkDefs(diff: ObjectDiff): PortableTextChild[] {\n const allDefs: PortableTextChild[] = [\n ...(diff.toValue && diff.toValue.markDefs ? diff.toValue.markDefs : []),\n ]\n const oldDefs: PortableTextChild[] =\n diff.fromValue && diff.fromValue.markDefs ? diff.fromValue.markDefs : []\n oldDefs.forEach((oDef) => {\n if (!allDefs.some((def) => oDef._key === def._key)) {\n allDefs.push(oDef)\n }\n })\n return orderBy(allDefs, ['_key'], ['asc'])\n}\n","import {type ObjectSchemaType, type SchemaType} from '@sanity/types'\n\nimport {type StudioLocaleResourceKeys} from '../../i18n/bundles/studio'\nimport {getPrintableType} from '../../util/getPrintableType'\n\n/** @internal */\nexport interface FieldValueError {\n /**\n * i18n key for the error message\n */\n messageKey: StudioLocaleResourceKeys\n\n /**\n * The expected type of the value\n */\n expectedType: string\n\n /**\n * The actual type of the value\n */\n actualType: string\n\n /**\n * The actual value of the field\n */\n value: unknown\n}\n\n/** @internal */\nexport function getValueError(value: unknown, schemaType: SchemaType): FieldValueError | undefined {\n const {jsonType} = schemaType\n const valueType = Array.isArray(value) ? 'array' : typeof value\n\n if (value === null || valueType === 'undefined') {\n return undefined\n }\n\n if (valueType !== jsonType) {\n return {\n messageKey: 'changes.error.incorrect-type-message',\n value,\n expectedType: jsonType,\n actualType: getPrintableType(value),\n }\n }\n\n if (isObjectType(schemaType) && isObjectValue(value)) {\n for (const field of schemaType.fields) {\n const fieldError = getValueError(value[field.name], field.type as SchemaType)\n if (fieldError) {\n return fieldError\n }\n }\n }\n\n return undefined\n}\n\nfunction isObjectType(schemaType: SchemaType): schemaType is ObjectSchemaType {\n return schemaType.jsonType === 'object'\n}\n\nfunction isObjectValue(value: unknown): value is Record<string, unknown> {\n return value !== null && !Array.isArray(value) && typeof value === 'object'\n}\n","import {Card, Stack, Text} from '@sanity/ui'\nimport {Code} from '@sanity/ui/code'\nimport {type CSSProperties} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type DiffComponent} from '../../types'\nimport {useChangeVerb} from '../hooks/useChangeVerb'\nimport {DiffCard} from './DiffCard'\nimport {DiffTooltip} from './DiffTooltip'\nimport {FromToArrow} from './FromToArrow'\n\n/**\n * Horizontal scroll only. Avoid `overflow-x: auto` on `pre`: CSS pairs it with\n * `overflow-y: auto`, which spuriously shows a vertical scrollbar in flex layouts.\n */\nconst CodeWrapper = styled.div`\n max-width: 100%;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n`\n\nconst cardStyles: CSSProperties = {\n flex: 1,\n minWidth: 0,\n display: 'block',\n whiteSpace: 'break-spaces',\n}\n\nfunction jsonify(value: unknown): string {\n if (typeof value === 'undefined') {\n return 'undefined'\n }\n return JSON.stringify(value, null, 2)\n}\n\n/** @internal */\nexport const JsonFieldDiff: DiffComponent = ({diff}) => {\n const {t} = useTranslation()\n const changeVerb = useChangeVerb(diff)\n\n const from = diff.fromValue !== undefined && diff.fromValue !== null && (\n <DiffCard as=\"del\" diff={diff} style={cardStyles}>\n <CodeWrapper>\n <Code language=\"json\" size={1}>\n {jsonify(diff.fromValue)}\n </Code>\n </CodeWrapper>\n </DiffCard>\n )\n\n const to = diff.toValue !== undefined && diff.toValue !== null && (\n <DiffCard as=\"ins\" diff={diff} style={cardStyles}>\n <CodeWrapper>\n <Code language=\"json\" size={1}>\n {jsonify(diff.toValue)}\n </Code>\n </CodeWrapper>\n </DiffCard>\n )\n\n const content =\n from && to ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n <Stack gap={3}>\n {from}\n <FromToArrow direction=\"down\" align=\"center\" />\n {to}\n </Stack>\n </DiffTooltip>\n ) : from ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n {from}\n </DiffTooltip>\n ) : to ? (\n <DiffTooltip description={changeVerb} diff={diff}>\n {to}\n </DiffTooltip>\n ) : null\n\n return (\n <Stack gap={4} paddingY={1}>\n <Card border padding={3} radius={2} tone=\"caution\">\n <Text size={1}>{t('changes.unknown-schema-field.description')}</Text>\n </Card>\n {content}\n </Stack>\n )\n}\n","import {type SchemaType} from '@sanity/types'\n\nimport {\n type ChangeNode,\n type Diff,\n type FieldChangeNode,\n type GroupChangeNode,\n type ItemDiff,\n} from '../types'\n\n/** @internal */\nexport function noop(): void {}\n\n/** @internal */\nexport function isFieldChange(change: ChangeNode): change is FieldChangeNode {\n return change.type === 'field'\n}\n\n/** @internal */\nexport function isGroupChange(change: ChangeNode): change is GroupChangeNode {\n return change.type === 'group'\n}\n\n/** @internal */\nexport function isAddedItemDiff(\n item: ItemDiff,\n): item is ItemDiff & {diff: Diff & {action: 'added'}} {\n return item.diff.action === 'added'\n}\n\n/** @internal */\nexport function isRemovedItemDiff(\n item: ItemDiff,\n): item is ItemDiff & {diff: Diff & {action: 'removed'}} {\n return item.diff.action === 'removed'\n}\n\n/** @internal */\nexport function isUnchangedDiff(diff: Diff): diff is Diff & {action: 'unchanged'} {\n return diff.action === 'unchanged'\n}\n\n/**\n * A map of supported JSON types to valid empty values that may be used for diffing purposes when\n * the node has no underlying value to be compared with.\n *\n * @internal\n */\nexport const emptyValuesByType = {\n string: '',\n number: 0,\n boolean: false,\n array: [],\n object: {},\n} satisfies Record<SchemaType['jsonType'], unknown>\n","import {type ObjectSchemaType} from '@sanity/types'\n\nimport {JsonFieldDiff} from '../components/JsonFieldDiff'\n\nexport const UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE: ObjectSchemaType = {\n name: '__sanity.unknownDocumentField',\n fields: [],\n jsonType: 'object',\n components: {diff: JsonFieldDiff},\n}\n","import {type ObjectSchemaType} from '@sanity/types'\n\nimport {type ObjectDiff} from '../../types'\n\n/**\n * Keys we never surface as “unknown schema” JSON diffs — standard document\n * metadata (`_createdAt`, `_updatedAt`, `_rev`, `_type`), portable object\n * identity (`_key`), and internal blobs (`_system`) that would only add noise\n * or churn to Review changes.\n *\n * @internal\n */\nconst SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES = new Set<string>([\n '_createdAt',\n '_key',\n '_rev',\n '_system',\n '_type',\n '_updatedAt',\n])\n\n/**\n * Field names declared on an object schema type (including multi-fieldsets).\n *\n * @internal\n */\nexport function collectObjectSchemaFieldNames(schemaType: ObjectSchemaType): Set<string> {\n const names = new Set<string>()\n const fieldSets =\n schemaType.fieldsets || schemaType.fields.map((field) => ({single: true, field}))\n for (const fieldSet of fieldSets) {\n if (fieldSet.single) {\n names.add(fieldSet.field.name)\n } else {\n for (const field of fieldSet.fields) {\n names.add(field.name)\n }\n }\n }\n return names\n}\n\n/**\n * Keys present in `diff.fields` that are not declared on `schemaType`, have\n * `isChanged`, and pass optional `fieldFilter` (when set, the name must be\n * included). Skips standard metadata / internal keys in\n * `SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES` (see set above).\n * Sorted lexicographically for stable UI ordering.\n *\n * @internal\n */\nexport function getSortedUnknownChangedObjectFieldNames(\n schemaType: ObjectSchemaType,\n diff: ObjectDiff,\n fieldFilter?: string[],\n): string[] {\n const schemaFieldNames = collectObjectSchemaFieldNames(schemaType)\n const unknown = Object.keys(diff.fields).filter(\n (name) => !schemaFieldNames.has(name) && !SKIP_UNKNOWN_JSON_DIFF_FIELD_NAMES.has(name),\n )\n unknown.sort()\n return unknown.filter((fieldName) => {\n const fieldDiff = diff.fields[fieldName]\n if (!fieldDiff?.isChanged) {\n return false\n }\n if (fieldFilter && !fieldFilter.includes(fieldName)) {\n return false\n }\n return true\n })\n}\n","import {\n type ArraySchemaType,\n type MultiFieldSet,\n type ObjectField,\n type ObjectSchemaType,\n type Path,\n type SchemaType,\n} from '@sanity/types'\n\nimport {getItemKeySegment, pathsAreEqual, pathToString} from '../../paths/helpers'\nimport {getArrayDiffItemType} from '../../schema/helpers'\nimport {\n type ArrayDiff,\n type ChangeNode,\n type ChangeTitlePath,\n type Diff,\n type DiffComponent,\n type FieldChangeNode,\n type ItemDiff,\n type ObjectDiff,\n} from '../../types'\nimport {hasPTMemberType} from '../../types/portableText/diff/helpers'\nimport {getValueError} from '../../validation'\nimport {JsonFieldDiff} from '../components/JsonFieldDiff'\nimport {isFieldChange} from '../helpers'\nimport {resolveDiffComponent} from '../resolve/resolveDiffComponent'\nimport {UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE} from './unknownDocumentFieldSchema'\nimport {getSortedUnknownChangedObjectFieldNames} from './unknownObjectDiffFields'\n\ninterface DiffContext {\n itemDiff?: ItemDiff\n parentDiff?: ArrayDiff | ObjectDiff\n parentSchema?: ArraySchemaType | ObjectSchemaType\n fieldFilter?: string[]\n}\n\nfunction buildChangeList(\n schemaType: SchemaType,\n diff: Diff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n context: DiffContext = {},\n): ChangeNode[] {\n const diffComponent = resolveDiffComponent(schemaType, context.parentSchema)\n\n if (!diffComponent) {\n if (schemaType.jsonType === 'object' && diff.type === 'object') {\n return buildObjectChangeList(schemaType as ObjectSchemaType, diff, path, titlePath, context)\n }\n\n if (schemaType.jsonType === 'array' && diff.type === 'array') {\n return buildArrayChangeList(schemaType, diff, path, titlePath)\n }\n }\n\n return getFieldChange(schemaType, diff, path, titlePath, context)\n}\n\nfunction buildUnknownFieldChangeNodes(\n fieldDiff: Diff,\n fieldPath: Path,\n fieldTitlePath: ChangeTitlePath,\n {itemDiff, parentDiff, parentSchema}: DiffContext,\n): FieldChangeNode[] {\n const {fromValue, toValue, type} = fieldDiff\n\n if (type === 'array' && isEmpty(fromValue) && isEmpty(toValue)) {\n return []\n }\n\n return [\n {\n type: 'field',\n diff: fieldDiff,\n path: fieldPath,\n itemDiff,\n parentDiff,\n titlePath: fieldTitlePath,\n schemaType: UNKNOWN_DOCUMENT_FIELD_SCHEMA_TYPE,\n showHeader: true,\n showIndex: true,\n key: pathToString(fieldPath) || 'root',\n diffComponent: JsonFieldDiff,\n parentSchema,\n },\n ]\n}\n\nexport function buildObjectChangeList(\n schemaType: ObjectSchemaType,\n diff: ObjectDiff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n diffContext: DiffContext = {},\n): ChangeNode[] {\n const changes: ChangeNode[] = []\n const {fieldFilter} = diffContext\n\n const childContext: DiffContext = {...diffContext, parentSchema: schemaType}\n const fieldSets =\n schemaType.fieldsets || schemaType.fields.map((field) => ({single: true, field}))\n for (const fieldSet of fieldSets) {\n if (fieldSet.single) {\n changes.push(...buildFieldChange(fieldSet.field, diff, path, titlePath, childContext))\n } else {\n changes.push(...buildFieldsetChangeList(fieldSet, diff, path, titlePath, childContext))\n }\n }\n\n const unknownFieldNames = getSortedUnknownChangedObjectFieldNames(schemaType, diff, fieldFilter)\n for (const fieldName of unknownFieldNames) {\n const fieldDiff = diff.fields[fieldName]\n const fieldPath = path.concat([fieldName])\n const fieldTitlePath = titlePath.concat([fieldName])\n changes.push(\n ...buildUnknownFieldChangeNodes(fieldDiff, fieldPath, fieldTitlePath, childContext),\n )\n }\n\n if (changes.length < 2) {\n return changes\n }\n\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n path,\n titlePath,\n changes: reduceTitlePaths(changes, titlePath.length),\n schemaType,\n },\n ]\n}\n\nfunction buildFieldChange(\n field: ObjectField,\n diff: ObjectDiff,\n path: Path,\n titlePath: ChangeTitlePath,\n diffContext: DiffContext & {fieldFilter?: string[]} = {},\n): ChangeNode[] {\n const {fieldFilter, ...context} = diffContext\n const fieldDiff = diff.fields[field.name]\n if (!fieldDiff || !fieldDiff.isChanged || (fieldFilter && !fieldFilter.includes(field.name))) {\n return []\n }\n\n const fieldPath = path.concat([field.name])\n const fieldTitlePath = titlePath.concat([field.type.title || field.name])\n return buildChangeList(field.type as any, fieldDiff, fieldPath, fieldTitlePath, context)\n}\n\nfunction buildFieldsetChangeList(\n fieldSet: MultiFieldSet,\n diff: ObjectDiff,\n path: Path,\n titlePath: ChangeTitlePath,\n diffContext: DiffContext & {fieldFilter?: string[]} = {},\n): ChangeNode[] {\n const {fields, name, title, readOnly, hidden} = fieldSet\n const {fieldFilter, ...context} = diffContext\n\n const fieldSetHidden = hidden\n const fieldsetReadOnly = readOnly\n\n const fieldSetTitlePath = titlePath.concat([title || name])\n const changes: ChangeNode[] = []\n\n for (const field of fields) {\n const fieldDiff = diff.fields[field.name]\n if (!fieldDiff || !fieldDiff.isChanged || (fieldFilter && !fieldFilter.includes(field.name))) {\n continue\n }\n\n const fieldPath = path.concat([field.name])\n const fieldTitlePath = fieldSetTitlePath.concat([field.type.title || field.name])\n changes.push(\n ...buildChangeList(\n {\n readOnly: fieldsetReadOnly,\n hidden: fieldSetHidden,\n ...field.type,\n } as any,\n fieldDiff,\n fieldPath,\n fieldTitlePath,\n context,\n ),\n )\n }\n\n if (changes.length < 2) {\n return changes\n }\n\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n fieldsetName: name,\n path,\n titlePath: fieldSetTitlePath,\n changes: reduceTitlePaths(changes, fieldSetTitlePath.length),\n readOnly: fieldsetReadOnly,\n hidden: fieldSetHidden,\n },\n ]\n}\n\nfunction buildArrayChangeList(\n schemaType: ArraySchemaType,\n diff: ArrayDiff,\n path: Path = [],\n titlePath: ChangeTitlePath = [],\n): ChangeNode[] {\n const changedOrMoved = diff.items.filter(\n (item) =>\n (item.hasMoved && item.fromIndex !== item.toIndex) || item.diff.action !== 'unchanged',\n )\n\n if (changedOrMoved.length === 0) {\n return []\n }\n\n const isPortableText = hasPTMemberType(schemaType)\n const list: ChangeNode[] = []\n const changes = changedOrMoved.reduce((acc, itemDiff) => {\n const memberTypes = getArrayDiffItemType(itemDiff.diff, schemaType)\n const memberType = memberTypes.toType || memberTypes.fromType\n if (!memberType) {\n console.warn('Could not determine schema type for item at %s', pathToString(path))\n return acc\n }\n\n const segment =\n getItemKeySegment(itemDiff.diff.fromValue) ||\n getItemKeySegment(itemDiff.diff.toValue) ||\n diff.items.indexOf(itemDiff)\n\n const itemPath = path.concat(segment)\n const itemContext: DiffContext = {itemDiff, parentDiff: diff, parentSchema: schemaType}\n const itemTitlePath = titlePath.concat({\n hasMoved: itemDiff.hasMoved,\n toIndex: itemDiff.toIndex,\n fromIndex: itemDiff.fromIndex,\n annotation:\n itemDiff.diff.action === 'unchanged' ? itemDiff.annotation : itemDiff.diff.annotation,\n })\n\n const attachItemDiff = (change: ChangeNode): ChangeNode => {\n if (change.type === 'field' && pathsAreEqual(itemPath, change.path)) {\n change.itemDiff = itemDiff\n }\n\n return change\n }\n\n const children = buildChangeList(\n memberType,\n itemDiff.diff,\n itemPath,\n itemTitlePath,\n itemContext,\n ).map(attachItemDiff)\n\n if (isPortableText) {\n children.filter(isFieldChange).forEach((field, index, siblings) => {\n field.showHeader = siblings.length === 1\n field.showIndex = itemDiff.fromIndex !== itemDiff.toIndex && itemDiff.hasMoved\n })\n }\n\n if (children.length === 0) {\n // This can happen when there are no changes to the actual element, it's just been moved\n acc.push(...getFieldChange(memberType, itemDiff.diff, itemPath, itemTitlePath, itemContext))\n } else {\n acc.push(...children)\n }\n\n return acc\n }, list)\n\n if (changes.length > 1) {\n return [\n {\n type: 'group',\n key: pathToString(path) || 'root',\n path,\n titlePath,\n changes: reduceTitlePaths(changes, titlePath.length),\n schemaType,\n },\n ]\n }\n\n return changes\n}\n\nfunction getFieldChange(\n schemaType: SchemaType,\n diff: Diff,\n path: Path,\n titlePath: ChangeTitlePath,\n {itemDiff, parentDiff, parentSchema}: DiffContext = {},\n): FieldChangeNode[] {\n const {fromValue, toValue, type} = diff\n\n // Treat undefined => [] as no change\n if (type === 'array' && isEmpty(fromValue) && isEmpty(toValue)) {\n return []\n }\n\n let error\n if (typeof fromValue !== 'undefined') {\n error = getValueError(fromValue, schemaType)\n }\n\n if (!error && typeof toValue !== 'undefined') {\n error = getValueError(toValue, schemaType)\n }\n\n let showHeader = true\n let component: DiffComponent | undefined\n\n const diffComponent = resolveDiffComponent(schemaType, parentSchema)\n if (diffComponent && typeof diffComponent === 'function') {\n // Just a diff component with default options\n component = diffComponent\n } else if (diffComponent) {\n // Diff component with options\n component = (diffComponent as any).component\n showHeader =\n typeof (diffComponent as any).showHeader === 'undefined'\n ? showHeader\n : (diffComponent as any).showHeader\n }\n\n return [\n {\n type: 'field',\n diff,\n path,\n error,\n itemDiff,\n parentDiff,\n titlePath,\n schemaType,\n showHeader,\n showIndex: true,\n key: pathToString(path) || 'root',\n diffComponent: error ? undefined : component,\n parentSchema,\n },\n ]\n}\n\nfunction reduceTitlePaths(changes: ChangeNode[], byLength = 1): ChangeNode[] {\n return changes.map((change) => {\n change.titlePath = change.titlePath.slice(byLength)\n return change\n })\n}\n\nfunction isEmpty(item: unknown): boolean {\n return (Array.isArray(item) && item.length === 0) || item === null || typeof item === 'undefined'\n}\n","import {type Path, type PathSegment} from '@sanity/types'\n\nimport {getItemKey} from '../../paths/helpers'\nimport {type ChangeNode, type FieldChangeNode} from '../../types'\n\nconst isAddedAction = (change: ChangeNode): boolean => {\n return change.type === 'field' && change.diff.action === 'added'\n}\n\nconst flattenChangeNode = (changeNode: ChangeNode): FieldChangeNode[] => {\n if (changeNode.type !== 'group') {\n return [changeNode]\n }\n\n const newSubChanges: FieldChangeNode[] = []\n\n changeNode.changes.forEach((cChange) => {\n newSubChanges.push(...flattenChangeNode(cChange))\n })\n\n return newSubChanges\n}\n\n/**\n * Checks whether a path is under another path within the tree.\n */\nconst isSubpathOf = (subPath: Path, parentPath: Path): boolean => {\n if (parentPath.length >= subPath.length) {\n return false\n }\n\n for (let i = 0; i < parentPath.length; i++) {\n if (parentPath[i] !== subPath[i]) {\n return false\n }\n }\n\n return true\n}\n\nconst pathSegmentOfCorrectType = (item: Record<string, unknown>, child: string): PathSegment => {\n const nextItem = item[child]\n\n const key = getItemKey(nextItem)\n\n if (key) {\n return {_key: key}\n }\n\n const isArray = Array.isArray(item)\n\n if (isArray) {\n return parseInt(child, 10)\n }\n\n return child\n}\n\nexport {flattenChangeNode, isAddedAction, isSubpathOf, pathSegmentOfCorrectType}\n","import {\n diffItem,\n type DiffOptions,\n type InsertAfterPatch,\n type SetPatch,\n type UnsetPatch,\n} from '@sanity/diff-patch'\nimport {\n isIndexSegment,\n isKeyedObject,\n isKeySegment,\n isTypedObject,\n type PatchOperations,\n type Path,\n} from '@sanity/types'\n\nimport {isRecord} from '../../../util/isRecord'\nimport {\n findIndex,\n getItemKeySegment,\n getValueAtPath,\n isEmptyObject,\n pathToString,\n} from '../../paths/helpers'\nimport {\n type ArrayDiff,\n type ChangeNode,\n type Diff,\n type FieldOperationsAPI,\n type ItemDiff,\n type ObjectDiff,\n} from '../../types'\nimport {flattenChangeNode, isAddedAction, isSubpathOf, pathSegmentOfCorrectType} from './helpers'\n\nconst diffOptions: DiffOptions = {\n diffMatchPatch: {enabled: false, lengthThresholdAbsolute: 30, lengthThresholdRelative: 1.2},\n}\n\nexport function undoChange(\n change: ChangeNode,\n rootDiff: ObjectDiff | null,\n documentOperations: FieldOperationsAPI,\n stubbed?: Set<string>,\n): void {\n if (!rootDiff) {\n return\n }\n\n const patches: PatchOperations[] = []\n // Track stubbed paths to prevent duplicates when reverting group changes\n const stubbedPaths = stubbed ?? new Set<string>()\n\n if (change.type === 'group') {\n const allChanges = flattenChangeNode(change)\n\n const unsetChanges = allChanges.filter(isAddedAction)\n\n allChanges\n .filter((child) => !isAddedAction(child))\n .forEach((child) => {\n undoChange(child, rootDiff, documentOperations, stubbedPaths)\n })\n patches.push(\n ...buildUnsetPatches(rootDiff, unsetChanges.map((unsetChange) => unsetChange.path).reverse()),\n )\n } else if (change.diff.action === 'added') {\n // The reverse of an add operation is an unset -\n // so we don't need to worry about moved items in this case\n patches.push(...buildUnsetPatches(rootDiff, [change.path]))\n } else if (\n change.type === 'field' &&\n change.itemDiff &&\n change.parentDiff &&\n change.parentDiff.type === 'array' &&\n change.itemDiff.hasMoved\n ) {\n // If an array item has moved, we need to unset + insert it again\n // (we lack a \"move\" patch currently)\n patches.push(...buildMovePatches(change.itemDiff, change.parentDiff, change.path))\n } else {\n // For all other operations, try to find the most optimal case\n patches.push(...buildUndoPatches(change.diff, rootDiff, change.path, stubbedPaths))\n }\n\n documentOperations.patch.execute(patches)\n}\n\nfunction buildUnsetPatch(rootDiff: ObjectDiff, path: Path, concurrentUnsetPaths: Path[]): Path {\n const previousValue = rootDiff.toValue as Record<string, unknown>\n\n return furthestEmptyAncestor(previousValue, path, concurrentUnsetPaths)\n}\n\nfunction buildUnsetPatches(rootDiff: ObjectDiff, paths: Path[]): PatchOperations[] {\n const patches: Path[] = []\n\n for (let i = 0; i < paths.length; i++) {\n const unsetByEarlierPatch = patches.some((patch) => isSubpathOf(paths[i], patch))\n\n if (unsetByEarlierPatch) {\n continue\n }\n\n patches.push(buildUnsetPatch(rootDiff, paths[i], paths))\n }\n\n return [{unset: [...new Set(patches.map(pathToString))]}]\n}\n\n/**\n * Find the path to the furthest empty ancestor that's also a stub.\n *\n * Used for removing all stubs when unsetting a nested value.\n */\nfunction furthestEmptyAncestor(\n /**\n * The state of the tree before the change was made.\n */\n previousValue: Record<string, unknown>,\n /**\n * Path of the value to unset. Used for recursing.\n */\n currentPath: Path,\n /**\n * An optional list of path to forcefully mark as a stub regardless of what it actually is.\n */\n ignorePaths: Path[] = [],\n /**\n * Same as the first value of currentPath.\n */\n initialPath?: Path,\n): Path {\n if (currentPath.length <= 0) {\n /*\n * This means we are at root and no ancestors are stubs. We\n * can therefore safely unset only the actual value.\n */\n if (!initialPath) {\n /*\n * Will happen if the function is started with `currentPath = []`.\n */\n throw new Error('Root has no ancestor')\n }\n\n return initialPath\n }\n\n const ancestorPath = currentPath.slice(0, -1)\n const ancestorValue = getValueAtPath(previousValue, ancestorPath)\n\n /*\n * If the ancestor also is a stub we can add it to the ignore-list\n * so it'll be \"remembered\" as a stub without us having to scan\n * the whole tree again.\n */\n const updatedIgnorePaths = [\n ancestorPath,\n\n /*\n * We can filter out all the subpaths from under this ancestor\n * because since we ignore it higher up in the tree it doesn't\n * matter anymore what the values of subpaths are.\n */\n ...ignorePaths.filter((path) => !isSubpathOf(path, ancestorPath)),\n ]\n\n return isStub(ancestorValue, ancestorPath, ignorePaths)\n ? furthestEmptyAncestor(previousValue, ancestorPath, updatedIgnorePaths, initialPath)\n : currentPath\n}\n\nfunction buildMovePatches(\n itemDiff: ItemDiff,\n parentDiff: ArrayDiff,\n path: Path,\n): PatchOperations[] {\n const basePath = path.slice(0, -1)\n const {parentValue, fromIndex, fromValue} = getFromItem(parentDiff, itemDiff)\n\n let insertLocation\n if (fromIndex === 0) {\n // If it was moved from the beginning, we can use a simple prepend\n insertLocation = {before: pathToString([...basePath, 0])}\n } else {\n // Try to use item key segments where possible, falling back to array indexes\n const prevIndex = fromIndex - 1\n const prevItemKey = getItemKeySegment(parentValue[prevIndex])\n const prevSegment = prevItemKey || prevIndex\n insertLocation = {after: pathToString([...basePath, prevSegment])}\n }\n\n return [\n {\n unset: [pathToString(path)],\n },\n {\n insert: {...insertLocation, items: [fromValue]} as any,\n },\n ]\n}\n\nfunction buildUndoPatches(\n diff: Diff,\n rootDiff: ObjectDiff,\n path: Path,\n stubbedPaths: Set<string>,\n): PatchOperations[] {\n const patches = diffItem(diff.toValue, diff.fromValue, diffOptions, path)\n\n const inserts = patches\n .filter((patch): patch is InsertAfterPatch => patch.op === 'insert')\n .map(({after, items}) => ({insert: {after: pathToString(after), items}}) as any)\n\n const unsets = patches\n .filter((patch): patch is UnsetPatch => patch.op === 'unset')\n .reduce((acc, patch) => acc.concat(pathToString(patch.path)), [] as string[])\n\n const stubs: PatchOperations[] = []\n\n let hasSets = false\n const sets = patches\n .filter((patch): patch is SetPatch => patch.op === 'set')\n .reduce(\n (acc, patch) => {\n hasSets = true\n stubs.push(...getParentStubs(patch.path, rootDiff, stubbedPaths))\n acc[pathToString(patch.path)] = patch.value\n return acc\n },\n {} as Record<string, unknown>,\n )\n\n return [\n ...stubs,\n ...inserts,\n ...(unsets.length > 0 ? [{unset: unsets}] : []),\n ...(hasSets ? [{set: sets}] : []),\n ]\n}\n\nfunction getParentStubs(path: Path, rootDiff: ObjectDiff, stubbed: Set<string>): PatchOperations[] {\n const value = rootDiff.fromValue as Record<string, unknown>\n const nextValue = rootDiff.toValue as Record<string, unknown>\n const stubs: PatchOperations[] = []\n\n for (let i = 1; i <= path.length; i++) {\n const subPath = path.slice(0, i)\n const pathStr = pathToString(subPath)\n if (stubbed.has(pathStr)) {\n continue\n }\n\n const nextSegment = path[i]\n const nextIsArrayElement = isKeySegment(nextSegment) || isIndexSegment(nextSegment)\n const itemValue = getValueAtPath(value, subPath)\n const stub = getStubValue(itemValue)\n\n // If the next array element does not exist, we need to inject an insert stub here\n if (\n nextIsArrayElement &&\n Array.isArray(itemValue) &&\n !getValueAtPath(nextValue, path.slice(0, i + 1))\n ) {\n const indexAtPrev = findIndex(itemValue, nextSegment)\n const nextItem = getValueAtPath(value, subPath.concat(nextSegment))\n\n // Skip if already stubbed (prevents duplicate keys when reverting group changes)\n const itemPath = pathToString(subPath.concat(nextSegment))\n if (stubbed.has(itemPath)) {\n i++\n continue\n }\n stubbed.add(itemPath)\n\n const prevItem = itemValue[indexAtPrev - 1]\n const prevSeg = isKeyedObject(prevItem) ? {_key: prevItem._key} : indexAtPrev - 1\n const after = pathToString(subPath.concat(indexAtPrev < 1 ? 0 : prevSeg))\n stubs.push({setIfMissing: {[pathStr]: []}})\n stubs.push({insert: {after, items: [getStubValue(nextItem)]} as any})\n\n i++\n continue\n }\n\n if (typeof stub === 'undefined') {\n continue\n }\n\n stubbed.add(pathStr)\n stubs.push({setIfMissing: {[pathStr]: stub as Record<string, unknown>}})\n }\n return stubs\n}\n\n/**\n * Check if all items in an object or an array are stubs.\n */\nfunction onlyContainsStubs(\n /**\n * The item to check whether is a stub.\n */\n item: unknown,\n /**\n * The path to the item we're checking.\n */\n path: Path,\n /**\n * An optional list of path to forcefully mark as a stub regardless of what it actually is.\n */\n ignorePaths?: Path[],\n): boolean {\n /*\n * If we're trying to check for stubs inside something which isn't an object\n * or an array we're checking a string for example and it they cannot\n * contain stubs.\n */\n if (!isRecord(item) || !Array.isArray(item)) {\n return false\n }\n\n // oxlint-disable-next-line no-for-in-array - a bit risky to refactor this to no longer use for-in, do it later\n for (const child in item) {\n if (!Object.prototype.hasOwnProperty.call(item, child)) {\n continue\n }\n\n /*\n * _type or _key field alone doesn't affect whether the field is a stub or\n * not.\n */\n if (child === '_type' || child === '_key') {\n continue\n }\n\n const nextPath = [...path, pathSegmentOfCorrectType(item as Record<string, unknown>, child)]\n\n if (!isStub(item[child], nextPath, ignorePaths)) {\n return false\n }\n }\n\n return true\n}\n\nfunction isStub(item: unknown, path: Path, ignorePaths?: Path[]): boolean {\n const isIgnoredPath = ignorePaths?.some(\n (ignorePath) => pathToString(ignorePath) === pathToString(path),\n )\n\n const isEmptyArray = Array.isArray(item) && item.length <= 0\n\n return (\n isIgnoredPath ||\n item === undefined ||\n item === null ||\n isEmptyArray ||\n isEmptyObject(item) ||\n onlyContainsStubs(item, path, ignorePaths)\n )\n}\n\nfunction getStubValue(item: unknown): unknown {\n if (Array.isArray(item)) {\n return []\n }\n\n if (typeof item !== 'object' || item === null) {\n return undefined\n }\n\n const props: Record<string, unknown> = {}\n\n if (isKeyedObject(item)) {\n props._key = item._key\n }\n\n if (isTypedObject(item)) {\n props._type = item._type\n }\n\n return props\n}\n\nfunction getFromItem(parentDiff: ArrayDiff, itemDiff: ItemDiff) {\n if (parentDiff.fromValue && typeof itemDiff.fromIndex === 'number') {\n const fromValue = parentDiff.fromValue[itemDiff.fromIndex]\n return {\n parentValue: parentDiff.fromValue,\n fromIndex: itemDiff.fromIndex,\n fromValue,\n }\n }\n\n // Shouldn't ever happen\n throw new Error(`Failed to find item at index ${itemDiff.fromIndex}`)\n}\n","import {styled} from 'styled-components'\n\nexport const ChangeListWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n`\n","import {Box, rem, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type Annotation, type FieldChangeNode, type FromToIndex} from '../../types'\nimport {getAnnotationAtPath} from '../annotations/helpers'\nimport {DiffCard} from './DiffCard'\n\nconst RoundedCard = styled.div`\n border-radius: ${({theme}) => rem(theme.sanity.radius[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n padding: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n`\n\nconst AnnotationText = styled(Text)`\n &:not([hidden]) {\n color: inherit;\n }\n`\n\n/** @internal */\nexport function ChangeTitleSegment(props: {\n change?: FieldChangeNode\n segment: string | FromToIndex\n}) {\n const {change, segment} = props\n\n if (typeof segment === 'string') {\n return (\n <Box>\n <Text title={segment} size={1} weight=\"medium\" textOverflow=\"ellipsis\">\n {segment}\n </Text>\n </Box>\n )\n }\n\n const {hasMoved, fromIndex, toIndex, annotation} = segment\n const created = typeof fromIndex === 'undefined'\n const deleted = typeof toIndex === 'undefined'\n if (created) {\n // Item was created\n return <CreatedTitleSegment annotation={annotation} change={change} toIndex={toIndex} />\n }\n\n if (deleted) {\n // Item was deleted\n return <DeletedTitleSegment annotation={annotation} fromIndex={fromIndex} />\n }\n\n if (hasMoved && typeof toIndex !== 'undefined' && typeof fromIndex !== 'undefined') {\n // Item was moved\n return <MovedTitleSegment annotation={annotation} fromIndex={fromIndex} toIndex={toIndex} />\n }\n\n // Changed/unchanged\n const readableIndex = (toIndex || 0) + 1\n return (\n <Box padding={1}>\n <Text size={1} weight=\"medium\">\n #{readableIndex}\n </Text>\n </Box>\n )\n}\n\nfunction CreatedTitleSegment(props: {\n annotation: Annotation | undefined\n change?: FieldChangeNode\n toIndex?: number\n}) {\n const {annotation: annotationProp, change, toIndex = 0} = props\n const {t} = useTranslation()\n const readableIndex = toIndex + 1\n const description = t('changes.array.item-added-in-position', {position: readableIndex})\n const content = <>#{readableIndex}</>\n const diffAnnotation = change?.diff ? getAnnotationAtPath(change.diff, []) : undefined\n const annotation = diffAnnotation || annotationProp\n\n if (annotation) {\n return (\n <DiffCard annotation={annotation} tooltip={{description}} as={RoundedCard}>\n <AnnotationText size={1} weight=\"medium\" forwardedAs=\"ins\" style={{textDecoration: 'none'}}>\n {content}\n </AnnotationText>\n </DiffCard>\n )\n }\n\n return (\n <Text size={1} weight=\"medium\">\n {content}\n </Text>\n )\n}\n\nfunction DeletedTitleSegment(props: {annotation: Annotation | undefined; fromIndex?: number}) {\n const {annotation, fromIndex = 0} = props\n const {t} = useTranslation()\n const readableIndex = fromIndex + 1\n const description = t('changes.array.item-removed-from-position', {position: readableIndex})\n return (\n <DiffCard annotation={annotation || null} as={RoundedCard} tooltip={{description}}>\n <AnnotationText size={1} weight=\"medium\" forwardedAs=\"del\">\n #{readableIndex}\n </AnnotationText>\n </DiffCard>\n )\n}\n\nfunction MovedTitleSegment(props: {\n annotation: Annotation | undefined\n fromIndex: number\n toIndex: number\n}) {\n const {annotation, fromIndex, toIndex} = props\n const {t} = useTranslation()\n const indexDiff = toIndex - fromIndex\n const indexSymbol = indexDiff < 0 ? '↑' : '↓'\n const positions = Math.abs(indexDiff)\n const direction = indexDiff < 0 ? 'up' : 'down'\n const description = t('changes.array.item-moved', {\n count: positions,\n context: direction,\n })\n\n return (\n <>\n <Box padding={1}>\n <AnnotationText size={1} weight=\"medium\">\n #{toIndex + 1}\n </AnnotationText>\n </Box>\n <DiffCard annotation={annotation} as={RoundedCard} tooltip={{description}}>\n <AnnotationText size={1} weight=\"medium\">\n {indexSymbol}\n {Math.abs(indexDiff)}\n </AnnotationText>\n </DiffCard>\n </>\n )\n}\n","import {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {Text} from '@sanity/ui'\nimport {Breadcrumbs} from '@sanity/ui/breadcrumbs'\n\nimport {type ChangeTitlePath, type FieldChangeNode} from '../../types'\nimport {ChangeTitleSegment} from './ChangeTitleSegment'\n\n/** @internal */\nexport function ChangeBreadcrumb(props: {change?: FieldChangeNode; titlePath: ChangeTitlePath}) {\n const {change, titlePath} = props\n\n return (\n <Breadcrumbs\n maxLength={4}\n separator={\n <Text muted size={1}>\n <ChevronRightIcon />\n </Text>\n }\n >\n {titlePath.map((titleSegment, idx) => {\n const showSegment = typeof titleSegment === 'string' || !change || change.showIndex\n\n if (!showSegment) {\n return null\n }\n\n // oxlint-disable-next-line no-array-index-key\n return <ChangeTitleSegment key={idx} change={change} segment={titleSegment} />\n })}\n </Breadcrumbs>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {Component, type ReactNode} from 'react'\n\nimport {isDev} from '../../../environment'\nimport {type TFunction} from '../../../i18n/types'\n\n/** @internal */\nexport interface DiffErrorBoundaryProps {\n children: ReactNode\n t: TFunction\n}\n\n/** @internal */\nexport interface DiffErrorBoundaryState {\n error?: Error\n}\n\n/** @internal */\nexport class DiffErrorBoundary extends Component<DiffErrorBoundaryProps, DiffErrorBoundaryState> {\n static getDerivedStateFromError(error: Error) {\n return {error}\n }\n\n state: DiffErrorBoundaryState = {}\n\n componentDidCatch(error: Error) {\n console.error('Error rendering diff component: ')\n console.error(error)\n }\n\n render() {\n const {t} = this.props\n const {error} = this.state\n\n if (!error) {\n return this.props.children\n }\n\n return (\n <Card padding={3} radius={2} tone=\"critical\">\n <Flex>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n\n <Box paddingLeft={3}>\n <Text as=\"h3\" size={1} weight=\"medium\">\n {t('changes.error-boundary.title')}\n </Text>\n\n {isDev && (\n <Box marginTop={2}>\n <Text as=\"p\" size={1}>\n {t('changes.error-boundary.developer-info')}\n </Text>\n </Box>\n )}\n </Box>\n </Flex>\n </Card>\n )\n }\n}\n","import {Box, type BoxProps, Card, Stack, Text} from '@sanity/ui'\nimport {Code} from '@sanity/ui/code'\nimport {type ReactNode, useCallback, useEffect, useRef, useState} from 'react'\nimport {type ExecutionProps, styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {pathToString} from '../../paths/helpers'\nimport {type FieldChangeNode} from '../../types'\nimport {FromToArrow} from './FromToArrow'\n\n/** @internal */\nexport interface DiffInspectWrapperProps {\n children: ReactNode\n change: FieldChangeNode\n as?: ExecutionProps['as']\n}\n\nconst CodeWrapper = styled.pre`\n overflow-x: auto;\n position: relative;\n`\n\nconst Meta = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n`\n\n/** @internal */\nexport function DiffInspectWrapper(\n props: DiffInspectWrapperProps & Omit<BoxProps, 'as'>,\n): React.JSX.Element {\n const {children, as, change, ...restProps} = props\n const isHovering = useRef(false)\n const [isInspecting, setIsInspecting] = useState(false)\n\n const toggleInspect = useCallback(() => setIsInspecting((state) => !state), [setIsInspecting])\n const handleMouseEnter = useCallback(() => (isHovering.current = true), [])\n const handleMouseLeave = useCallback(() => (isHovering.current = false), [isHovering])\n\n useEffect(() => {\n function onKeyDown(evt: KeyboardEvent) {\n const {metaKey, key} = evt\n if (metaKey && key === 'i' && isHovering.current) {\n toggleInspect()\n }\n }\n\n window.addEventListener('keydown', onKeyDown, false)\n return () => window.removeEventListener('keydown', onKeyDown, false)\n }, [toggleInspect])\n\n return (\n <Box as={as} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} {...restProps}>\n {isInspecting ? <DiffInspector change={change} /> : children}\n </Box>\n )\n}\n\nconst MetaLabel = ({title}: {title: string}) => (\n <Box padding={3} display=\"inline-block\" as={Meta}>\n <Text muted size={1} weight=\"medium\">\n {title}\n </Text>\n </Box>\n)\n\nfunction DiffInspector({change}: {change: FieldChangeNode}): React.JSX.Element | null {\n const {t} = useTranslation()\n return (\n <Stack gap={3}>\n <Card padding={3} tone=\"transparent\" as={CodeWrapper} radius={1}>\n <MetaLabel title={t('changes.inspector.meta-label')} />\n <Code language=\"json\" size={1}>\n {printMeta({\n path: pathToString(change.path),\n fromIndex: change.itemDiff?.fromIndex,\n toIndex: change.itemDiff?.toIndex,\n hasMoved: change.itemDiff?.hasMoved,\n action: change.diff.action,\n isChanged: change.diff.isChanged,\n })}\n </Code>\n </Card>\n <Card as={CodeWrapper} tone=\"critical\" padding={3} radius={1}>\n <MetaLabel title={t('changes.inspector.from-label')} />\n <Code language=\"json\" size={1}>\n {jsonify(change.diff.fromValue)}\n </Code>\n </Card>\n <Card>\n <FromToArrow direction=\"down\" align=\"center\" />\n </Card>\n <Card as={CodeWrapper} tone=\"positive\" padding={3} radius={1}>\n <MetaLabel title={t('changes.inspector.to-label')} />\n <Code language=\"json\" size={1}>\n {jsonify(change.diff.toValue)}\n </Code>\n </Card>\n </Stack>\n )\n}\n\nfunction jsonify(value: unknown) {\n if (typeof value === 'undefined') {\n return 'undefined'\n }\n\n return JSON.stringify(value, null, 2)\n}\n\nfunction printMeta(keys: Record<string, unknown>) {\n const lines: string[] = []\n\n Object.entries(keys).forEach(([key, value]) => {\n if (typeof value !== 'undefined' && value !== null) {\n lines.push(`${key}: ${value}`)\n }\n })\n\n return lines.join('\\n')\n}\n","import {Box} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nimport {Preview} from '../../../preview/components/Preview'\nimport {type FieldPreviewComponent} from '../../preview/types'\nimport {type Diff, type DiffComponent} from '../../types'\nimport {DiffFromTo} from './DiffFromTo'\n\nconst FallbackPreview: FieldPreviewComponent<ReactNode> = ({value, schemaType}) => {\n return (\n <Box padding={2}>\n <Preview schemaType={schemaType} value={value as any} layout=\"default\" />\n </Box>\n )\n}\n\n/** @internal */\nexport const FallbackDiff: DiffComponent<Diff<unknown, Record<string, unknown>>> = (props) => {\n const {diff, schemaType} = props\n\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={FallbackPreview}\n layout=\"grid\"\n />\n )\n}\n","import {rem} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const FieldChangeContainer = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n &[data-revert-all-changes-hover] [data-revert-all-hover]::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n\nexport const DiffBorder = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-xsmall: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-small: ${({theme}) => rem(theme.sanity.space[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n position: relative;\n padding: var(--diff-inspect-padding-xsmall) 0 var(--diff-inspect-padding-xsmall)\n var(--diff-inspect-padding-small);\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n border-left: 1px solid var(--card-border-color);\n }\n\n &[data-error]:hover::before,\n &[data-revert-field-hover]:hover::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n","import {RevertIcon} from '@sanity/icons/Revert'\nimport {type HTMLProps, type RefAttributes} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button, type ButtonProps} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\nconst Root = styled(Button)`\n [data-ui='Text'] {\n font-weight: normal;\n }\n\n div[data-ui='Box'] {\n display: none;\n }\n\n &:not([data-disabled='true']):hover,\n &:not([data-disabled='true']):focus {\n --card-fg-color: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --card-bg-color: transparent;\n --card-border-color: transparent;\n\n div[data-ui='Box'] {\n display: block;\n }\n }\n`\n\n/** @internal */\nexport function RevertChangesButton(\n props: Omit<ButtonProps, 'tooltipProps'> &\n Omit<HTMLProps<HTMLButtonElement>, 'ref'> & {\n changeCount: number\n } & RefAttributes<HTMLButtonElement>,\n) {\n const {ref, selected, changeCount, ...restProps} = props\n const {t} = useTranslation()\n\n return (\n <Root\n icon={RevertIcon}\n selected={selected}\n text={t('changes.action.revert-changes-confirm-change', {count: changeCount})}\n mode=\"bleed\"\n ref={ref}\n tooltipProps={null}\n {...restProps}\n />\n )\n}\n","import {ConfirmPopover} from '../../../../ui-components/confirmPopover/ConfirmPopover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\ninterface RevertChangesConfirmDialogProps {\n open: boolean\n onConfirm: () => void\n onCancel: () => void\n changeCount: number\n referenceElement: HTMLElement | null\n}\n\n/**\n * @internal\n */\nexport function RevertChangesConfirmDialog({\n open,\n onConfirm,\n onCancel,\n changeCount,\n referenceElement,\n}: RevertChangesConfirmDialogProps) {\n const {t} = useTranslation()\n\n return (\n <ConfirmPopover\n cancelButtonText={t('changes.action.revert-all-cancel')}\n confirmButtonText={\n changeCount > 1\n ? t('changes.action.revert-all-confirm')\n : t('changes.action.revert-changes-confirm-change', {count: 1})\n }\n message={\n changeCount > 1\n ? t('changes.action.revert-all-description', {count: changeCount})\n : t('changes.action.revert-changes-description', {count: changeCount})\n }\n onCancel={onCancel}\n onConfirm={onConfirm}\n open={open}\n referenceElement={referenceElement}\n tone=\"critical\"\n placement=\"bottom\"\n fallbackPlacements={['bottom-start', 'bottom-end', 'top', 'top-start', 'top-end']}\n />\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type FieldValueError} from '../../validation'\n\n/** @internal */\nexport function ValueError({error}: {error: FieldValueError}) {\n const {t} = useTranslation()\n return (\n <Card tone=\"critical\" padding={3}>\n <Flex align=\"flex-start\">\n <Box>\n <Text>\n <ErrorOutlineIcon />\n </Text>\n </Box>\n <Box flex={1} paddingLeft={3}>\n <Text size={1} as=\"p\">\n {t(error.messageKey, {\n expectedType: error.expectedType,\n actualType: error.actualType,\n })}\n </Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {type ObjectSchemaType, type Path} from '@sanity/types'\nimport {Stack} from '@sanity/ui'\nimport {Fragment, type HTMLAttributes, startTransition, useCallback, useMemo, useState} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {type FieldChangeNode} from '../../types'\nimport {undoChange} from '../changes/undoChange'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeBreadcrumb} from './ChangeBreadcrumb'\nimport {DiffErrorBoundary} from './DiffErrorBoundary'\nimport {DiffInspectWrapper} from './DiffInspectWrapper'\nimport {FallbackDiff} from './FallbackDiff'\nimport {DiffBorder, FieldChangeContainer} from './FieldChange.styled'\nimport {RevertChangesButton} from './RevertChangesButton'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\nimport {ValueError} from './ValueError'\n\nconst ParentWrapper = ({\n children,\n path,\n hasRevertHover,\n wrap,\n}: {\n children: React.ReactNode\n path: Path\n hasRevertHover: boolean\n wrap: boolean\n}) => {\n const {FieldWrapper = Fragment} = useDocumentChange()\n\n if (wrap) {\n let lastArrayIndex = 0\n for (let i = 0; i < path.length; i++) {\n if (typeof path[i] !== 'string') {\n lastArrayIndex = i\n }\n }\n\n return (\n <FieldWrapper path={path.slice(0, lastArrayIndex + 1)} hasRevertHover={hasRevertHover}>\n {children}\n </FieldWrapper>\n )\n }\n return children\n}\n\n/** @internal */\nexport function FieldChange(\n props: {\n change: FieldChangeNode\n readOnly?: boolean\n hidden?: boolean\n addParentWrapper?: boolean\n } & HTMLAttributes<HTMLDivElement>,\n) {\n const {change, hidden, readOnly, addParentWrapper, ...restProps} = props\n const DiffComponent = change.diffComponent || FallbackDiff\n const {\n documentId,\n schemaType,\n rootDiff,\n isComparingCurrent,\n FieldWrapper = Fragment,\n } = useDocumentChange()\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const ops = useDocumentOperation(documentId, schemaType.name, getPairTarget(targetDocumentState))\n const [confirmRevertOpen, setConfirmRevertOpen] = useState(false)\n const [revertHovered, setRevertHovered] = useState(false)\n const [buttonElement, _setButtonElement] = useState<HTMLButtonElement | null>(null)\n const setButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setButtonElement(element))\n }\n const {t} = useTranslation()\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const handleRevertChanges = useCallback(() => {\n undoChange(change, rootDiff, ops)\n setConfirmRevertOpen(false)\n }, [change, rootDiff, ops])\n\n const handleRevertChangesConfirm = useCallback(() => {\n setConfirmRevertOpen(true)\n }, [])\n\n const closeRevertChangesConfirmDialog = useCallback(() => {\n setConfirmRevertOpen(false)\n }, [])\n\n const handleRevertButtonMouseEnter = useCallback(() => {\n setRevertHovered(true)\n }, [])\n\n const handleRevertButtonMouseLeave = useCallback(() => {\n setRevertHovered(false)\n }, [])\n\n const isArray =\n change.parentSchema?.jsonType === 'array' &&\n // And it's not a PortableText array\n !change.parentSchema.of.some((ofType) => ofType.type?.name === 'block')\n\n /* this condition is required in order to avoid situations where an array change has happened\n * but not necessarily an array item change. E.g. when adding one new item to an array, the changes pane\n * would be able to identify that a new item was added but not what array it belonged to (because the change path\n * is only related to the item itself, not the array)\n */\n const fieldPath = isArray ? change.path.slice(0, -1) : change.path\n\n const value = useMemo(() => ({path: change.path}), [change.path])\n\n if (hidden) {\n return null\n }\n\n return (\n <>\n <Stack gap={1} as={FieldChangeContainer} {...restProps}>\n {change.showHeader && <ChangeBreadcrumb change={change} titlePath={change.titlePath} />}\n <ParentWrapper\n path={fieldPath}\n hasRevertHover={revertHovered}\n wrap={Boolean(addParentWrapper)}\n >\n <FieldWrapper path={fieldPath} hasRevertHover={revertHovered}>\n <DiffInspectWrapper\n change={change}\n as={DiffBorder}\n data-revert-field-hover={revertHovered ? '' : undefined}\n data-error={change.error ? '' : undefined}\n data-revert-all-hover\n data-ui=\"field-diff-inspect-wrapper\"\n >\n {change.error ? (\n <ValueError error={change.error} />\n ) : (\n <DiffErrorBoundary t={t}>\n <DiffContext.Provider value={value}>\n <DiffComponent\n diff={change.diff}\n schemaType={change.schemaType as ObjectSchemaType}\n />\n </DiffContext.Provider>\n </DiffErrorBoundary>\n )}\n\n {isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <RevertChangesButton\n changeCount={1}\n onClick={handleRevertChangesConfirm}\n onMouseEnter={handleRevertButtonMouseEnter}\n onMouseLeave={handleRevertButtonMouseLeave}\n selected={confirmRevertOpen}\n disabled={readOnly || !isTargetReady}\n ref={setButtonElement}\n data-testid={`single-change-revert-button-${change?.key}`}\n />\n )}\n </DiffInspectWrapper>\n </FieldWrapper>\n </ParentWrapper>\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertOpen}\n onConfirm={handleRevertChanges}\n onCancel={closeRevertChangesConfirmDialog}\n changeCount={1}\n referenceElement={buttonElement}\n />\n </>\n )\n}\n","import {rem} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const ChangeListWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n`\n\nexport const GroupChangeContainer = styled.div`\n --field-change-error: ${({theme}) => theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-xsmall: ${({theme}) => rem(theme.sanity.space[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --diff-inspect-padding-small: ${({theme}) => rem(theme.sanity.space[2]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n\n position: relative;\n padding: var(--diff-inspect-padding-xsmall) var(--diff-inspect-padding-small);\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n border-left: 1px solid var(--card-border-color);\n }\n\n &[data-error]:hover::before,\n &[data-revert-group-hover]:hover::before,\n &[data-revert-all-groups-hover]::before {\n border-left: 2px solid var(--field-change-error);\n }\n`\n","import {type ConditionalProperty, type SanityDocument} from '@sanity/types'\nimport {Box, Stack, Text} from '@sanity/ui'\nimport {\n Fragment,\n type HTMLAttributes,\n startTransition,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useConditionalProperty} from '../../conditional-property/useConditionalProperty'\nimport {pathsAreEqual} from '../../paths/helpers'\nimport {type ChangeNode, type GroupChangeNode} from '../../types'\nimport {isPTSchemaType} from '../../types/portableText/diff/helpers'\nimport {undoChange} from '../changes/undoChange'\nimport {isFieldChange} from '../helpers'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeBreadcrumb} from './ChangeBreadcrumb'\nimport {FieldChange} from './FieldChange'\nimport {ChangeListWrapper, GroupChangeContainer} from './GroupChange.styled'\nimport {RevertChangesButton} from './RevertChangesButton'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\n\n// `ChangeResolver` and `GroupChange` are mutually recursive (groups render their nested changes\n// through the resolver), so they live in the same module to avoid circular imports.\n\n/** @internal */\nexport interface ChangeResolverProps {\n change: ChangeNode\n readOnly?: ConditionalProperty\n hidden?: ConditionalProperty\n addParentWrapper?: boolean\n}\n\n/** @internal */\nexport function ChangeResolver(props: ChangeResolverProps) {\n const {change, hidden, readOnly} = props\n const {value = Fragment} = useDocumentChange()\n\n const isHidden = useConditionalProperty({\n // @todo: is parent missing here?\n document: value as SanityDocument,\n checkProperty: hidden || change.schemaType?.hidden,\n checkPropertyKey: 'hidden',\n value: change.type === 'field' ? change.diff.toValue : undefined,\n path: change.path,\n })\n\n const isReadOnly = useConditionalProperty({\n // @todo: is parent missing here?\n document: value as SanityDocument,\n checkProperty: readOnly || change.schemaType?.readOnly,\n checkPropertyKey: 'readOnly',\n value: change.type === 'field' ? change.diff.toValue : undefined,\n path: change.path,\n })\n\n if (isHidden) return null\n\n if (change.type === 'field') {\n return (\n <FieldChange\n change={change}\n readOnly={isReadOnly}\n addParentWrapper={props.addParentWrapper}\n />\n )\n }\n\n if (change.type === 'group') {\n return (\n <GroupChange\n change={change}\n data-testid={`group-change-${change.fieldsetName}`}\n readOnly={isReadOnly}\n />\n )\n }\n\n return (\n <Text>\n Unknown change type: <code>{(change as any).type || 'undefined'}</code>\n </Text>\n )\n}\n\n/** @internal */\nexport function GroupChange(\n props: {\n change: GroupChangeNode\n readOnly?: boolean\n hidden?: boolean\n } & HTMLAttributes<HTMLDivElement>,\n): React.JSX.Element | null {\n const {change: group, readOnly, hidden, ...restProps} = props\n const {titlePath, changes, path: groupPath} = group\n const {path: diffPath} = useContext(DiffContext)\n const {\n documentId,\n schemaType,\n FieldWrapper = Fragment,\n rootDiff,\n isComparingCurrent,\n } = useDocumentChange()\n\n const isPortableText = changes.every(\n (change) => isFieldChange(change) && isPTSchemaType(change.schemaType),\n )\n\n const isNestedInDiff = pathsAreEqual(diffPath, groupPath)\n const [revertButtonElement, _setRevertButtonElement] = useState<HTMLButtonElement | null>(null)\n const setRevertButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setRevertButtonElement(element))\n }\n const isRevertButtonHovered = useHover<HTMLButtonElement>(revertButtonElement)\n\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const docOperations = useDocumentOperation(\n documentId,\n schemaType.name,\n getPairTarget(targetDocumentState),\n )\n const [confirmRevertOpen, setConfirmRevertOpen] = useState(false)\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const handleRevertChanges = useCallback(() => {\n undoChange(group, rootDiff, docOperations)\n setConfirmRevertOpen(false)\n }, [group, rootDiff, docOperations])\n\n const handleRevertChangesConfirm = useCallback(() => {\n setConfirmRevertOpen(true)\n }, [])\n\n const closeRevertChangesConfirmDialog = useCallback(() => {\n setConfirmRevertOpen(false)\n }, [])\n\n const content = useMemo(\n () =>\n hidden ? null : (\n <>\n <Stack\n gap={1}\n as={GroupChangeContainer}\n data-ui=\"group-change-content\"\n data-revert-group-hover={isRevertButtonHovered ? '' : undefined}\n data-portable-text={isPortableText ? '' : undefined}\n >\n <Stack as={ChangeListWrapper} gap={5} data-ui=\"group-change-list\">\n {changes.map((change) => (\n <ChangeResolver\n key={change.key}\n change={change}\n readOnly={readOnly}\n hidden={hidden}\n // If the path of the nested change is more than two levels deep, we want to add a wrapper\n // with the parent path, for the change indicator to be shown.\n addParentWrapper={change.path.length - group.path.length > 1}\n />\n ))}\n </Stack>\n {isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <Box>\n <RevertChangesButton\n changeCount={changes.length}\n onClick={handleRevertChangesConfirm}\n // oxlint-disable-next-line react/react-compiler\n ref={setRevertButtonElement}\n selected={confirmRevertOpen}\n disabled={readOnly || !isTargetReady}\n data-testid={`group-change-revert-button-${group.key}`}\n />\n </Box>\n )}\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertOpen}\n onConfirm={handleRevertChanges}\n onCancel={closeRevertChangesConfirmDialog}\n changeCount={changes.length}\n referenceElement={revertButtonElement}\n />\n </>\n ),\n [\n changes,\n confirmRevertOpen,\n group.path.length,\n handleRevertChangesConfirm,\n hidden,\n isComparingCurrent,\n isPermissionsLoading,\n isPortableText,\n isRevertButtonHovered,\n isTargetReady,\n permissions?.granted,\n readOnly,\n handleRevertChanges,\n closeRevertChangesConfirmDialog,\n revertButtonElement,\n group.key,\n ],\n )\n\n const isPortableTextGroupArray =\n group.schemaType?.jsonType === 'array' &&\n group.schemaType.of.some((ofType) => ofType.name === 'block')\n\n return hidden ? null : (\n <Stack gap={1} {...restProps}>\n <ChangeBreadcrumb titlePath={titlePath} />\n {isNestedInDiff || isPortableTextGroupArray ? (\n content\n ) : (\n <FieldWrapper hasRevertHover={isRevertButtonHovered} path={groupPath}>\n {content}\n </FieldWrapper>\n )}\n </Stack>\n )\n}\n\nfunction useHover<T extends HTMLElement>(node: T | null): boolean {\n const [value, setValue] = useState(false)\n\n useEffect(() => {\n if (!node) {\n return undefined\n }\n\n const handleMouseOver = () => startTransition(() => setValue(true))\n const handleMouseOut = () => startTransition(() => setValue(false))\n\n node.addEventListener('mouseover', handleMouseOver)\n node.addEventListener('mouseout', handleMouseOut)\n\n return () => {\n node.removeEventListener('mouseover', handleMouseOver)\n node.removeEventListener('mouseout', handleMouseOut)\n }\n }, [node])\n\n return value\n}\n","import {Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\n\n/** @internal */\nexport function NoChanges() {\n const {t} = useTranslation()\n return (\n <Stack gap={3} paddingTop={2}>\n <Text size={1} weight=\"medium\" as=\"h3\">\n {t('changes.no-changes-title')}\n </Text>\n <Text as=\"p\" size={1} muted>\n {t('changes.no-changes-description')}\n </Text>\n </Stack>\n )\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {RevertIcon} from '@sanity/icons/Revert'\nimport {type ObjectSchemaType} from '@sanity/types'\nimport {Card, Stack} from '@sanity/ui'\nimport {startTransition, useCallback, useContext, useMemo, useState} from 'react'\nimport {DiffContext} from 'sanity/_singletons'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useDocumentOperation} from '../../../hooks/useDocumentOperation'\nimport {\n getPairTarget,\n getTargetScopeId,\n useTargetDocumentState,\n} from '../../../hooks/useTargetDocumentState'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useConditionalProperty} from '../../conditional-property/useConditionalProperty'\nimport {type ChangeNode, type ObjectDiff} from '../../types'\nimport {buildObjectChangeList} from '../changes/buildChangeList'\nimport {undoChange} from '../changes/undoChange'\nimport {useDocumentChange} from '../hooks/useDocumentChange'\nimport {ChangeListWrapper} from './ChangeList.styled'\nimport {ChangeResolver} from './ChangeResolver'\nimport {NoChanges} from './NoChanges'\nimport {RevertChangesConfirmDialog} from './RevertChangesConfirmDialog'\n\n/** @internal */\nexport interface ChangeListProps {\n schemaType: ObjectSchemaType\n diff: ObjectDiff\n fields?: string[]\n}\n\n/** @internal */\nexport function ChangeList({diff, fields, schemaType}: ChangeListProps): React.JSX.Element | null {\n const {documentId, isComparingCurrent, value} = useDocumentChange()\n const targetDocumentState = useTargetDocumentState(documentId)\n // The scope of the document targeted by the selected perspective (undefined when the target is\n // still resolving or the draft/published pair applies). While resolving, reverting is disabled\n // below instead of silently operating on the base pair.\n const isTargetReady = targetDocumentState.status === 'ready'\n const scopeId = getTargetScopeId(targetDocumentState)\n const docOperations = useDocumentOperation(\n documentId,\n schemaType.name,\n getPairTarget(targetDocumentState),\n )\n const {path} = useContext(DiffContext)\n const isRoot = path.length === 0\n const [confirmRevertAllOpen, setConfirmRevertAllOpen] = useState(false)\n const [confirmRevertAllHover, setConfirmRevertAllHover] = useState(false)\n const [buttonElement, _setButtonElement] = useState<HTMLButtonElement | null>(null)\n const setButtonElement = (element: HTMLButtonElement | null) => {\n /**\n * The startTransition wrapper here is to avoid an issue when on React 18 where this error can happen:\n * \\>Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\n * This doesn't happen on React 19 due to automatic batching of all state updates, the startTransition wrapper here gives a type of batching for 18 users in a way that still works with 19.\n */\n startTransition(() => _setButtonElement(element))\n }\n const {t} = useTranslation()\n\n const isReadOnly = useConditionalProperty({\n document: value as SanityDocument,\n value: undefined,\n checkProperty: schemaType.readOnly,\n checkPropertyKey: 'readOnly',\n path,\n })\n\n if (schemaType.jsonType !== 'object') {\n throw new Error(`Only object schema types are allowed in ChangeList`)\n }\n\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: documentId,\n type: schemaType.name,\n version: scopeId,\n permission: 'update',\n })\n\n const allChanges = useMemo(\n () => buildObjectChangeList(schemaType, diff, path, [], {fieldFilter: fields}),\n [schemaType, fields, path, diff],\n )\n\n const changes = useMemo(\n () => (fields && fields.length === 0 ? [] : maybeFlatten(allChanges)),\n [allChanges, fields],\n )\n\n const rootChange = allChanges[0]\n\n const revertAllChanges = useCallback(() => {\n undoChange(rootChange, diff, docOperations)\n setConfirmRevertAllOpen(false)\n }, [rootChange, diff, docOperations])\n\n const handleRevertAllChangesClick = useCallback(() => {\n setConfirmRevertAllOpen(true)\n }, [])\n\n const handleRevertAllChangesMouseEnter = useCallback(() => {\n setConfirmRevertAllHover(true)\n }, [])\n\n const handleRevertAllChangesMouseLeave = useCallback(() => {\n setConfirmRevertAllHover(false)\n }, [])\n\n const closeRevertAllChangesConfirmDialog = useCallback(() => {\n setConfirmRevertAllOpen(false)\n }, [])\n\n if (changes.length === 0) {\n return isRoot ? <NoChanges /> : null\n }\n\n const showFooter = isRoot && changes.length > 1\n\n return (\n <Card>\n <Stack gap={5}>\n <Stack as={ChangeListWrapper} gap={5}>\n {changes.map((change) => (\n <div key={change.key}>\n <ChangeResolver\n key={change.key}\n change={change}\n data-revert-all-changes-hover={confirmRevertAllHover ? '' : undefined}\n readOnly={isReadOnly || change?.readOnly}\n hidden={change?.hidden}\n // If the path of the nested change is more than two levels deep, we want to add a wrapper\n // with the parent path, for the change indicator to be shown.\n addParentWrapper={change.path.length > 1}\n />\n </div>\n ))}\n </Stack>\n\n {showFooter && isComparingCurrent && !isPermissionsLoading && permissions?.granted && (\n <Stack>\n <Button\n tone=\"critical\"\n mode=\"ghost\"\n text={t('changes.action.revert-all-confirm')}\n icon={RevertIcon}\n onClick={handleRevertAllChangesClick}\n onMouseEnter={handleRevertAllChangesMouseEnter}\n onMouseLeave={handleRevertAllChangesMouseLeave}\n disabled={isReadOnly || !isTargetReady}\n size=\"large\"\n ref={setButtonElement}\n />\n </Stack>\n )}\n </Stack>\n\n <RevertChangesConfirmDialog\n open={confirmRevertAllOpen}\n onConfirm={revertAllChanges}\n onCancel={closeRevertAllChangesConfirmDialog}\n changeCount={changes.length}\n referenceElement={buttonElement}\n />\n </Card>\n )\n}\n\nfunction maybeFlatten(changes: ChangeNode[]) {\n return changes.length === 1 && changes[0].type === 'group' && changes[0].path.length === 0\n ? changes[0].changes\n : changes\n}\n","import {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {type ComponentType, type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n/** @internal */\nexport interface MetaInfoProps {\n title: string\n action?: string\n icon?: ComponentType\n children?: ReactNode\n markRemoved?: boolean\n}\n\nconst MetaText = styled(Text)`\n color: inherit;\n`\n\n/** @internal */\nexport function MetaInfo(props: MetaInfoProps) {\n const {title, action, icon: Icon, children, markRemoved} = props\n\n return (\n <Flex padding={2} align=\"center\">\n {Icon && (\n <Box padding={2}>\n <MetaText size={4} forwardedAs={markRemoved ? 'del' : 'div'}>\n <Icon />\n </MetaText>\n </Box>\n )}\n\n <Stack gap={2} paddingLeft={2}>\n <MetaText\n size={1}\n weight=\"medium\"\n forwardedAs={markRemoved ? 'del' : 'h3'}\n textOverflow=\"ellipsis\"\n >\n {title}\n </MetaText>\n\n {action && <div>{action}</div>}\n\n <MetaText size={0} textOverflow=\"ellipsis\">\n {children}\n </MetaText>\n </Stack>\n </Flex>\n )\n}\n","import {useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {EMPTY} from 'rxjs'\n\nimport {useClient} from '../../../hooks/useClient'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../studioClient'\n\nexport function useRefValue<T extends Record<string, any> = Record<string, any>>(\n refId: string | undefined | null,\n): T | undefined {\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const document$ = useMemo(\n () => (refId ? client.observable.getDocument<T>(refId) : EMPTY),\n [client, refId],\n )\n // Kept synchronous: the falsy-ref guard below reads the live `refId`, so a\n // deferred snapshot could return the previously referenced document under a\n // newly selected ref.\n const value = useSyncObservable(document$)\n\n // Always return undefined in the case of a falsey ref to prevent bug\n // when going from an ID to an undefined state\n return refId ? value : undefined\n}\n","import {DocumentIcon} from '@sanity/icons/Document'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useUnitFormatter} from '../../../../hooks/useUnitFormatter'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ChangeList} from '../../../diff/components/ChangeList'\nimport {DiffCard} from '../../../diff/components/DiffCard'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromTo} from '../../../diff/components/FromTo'\nimport {MetaInfo} from '../../../diff/components/MetaInfo'\nimport {useRefValue} from '../../../diff/hooks/useRefValue'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {getHumanFriendlyBytes, getSizeDiff} from './helpers'\nimport {type File, type FileAsset} from './types'\n\nconst SizeDiff = styled.div`\n ${({theme}) => `\n --size-diff-positive: ${theme.sanity.color.solid.positive.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n --size-diff-negative: ${theme.sanity.color.solid.critical.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n `}\n &:not([hidden]) {\n display: inline-block;\n }\n\n [data-number='positive'] {\n color: var(--size-diff-positive);\n }\n\n [data-number='negative'] {\n color: var(--size-diff-negative);\n }\n`\n\nexport const FileFieldDiff: DiffComponent<ObjectDiff<File>> = ({diff, schemaType}) => {\n const {fromValue, toValue, fields} = diff\n const fromAsset = fromValue?.asset\n const toAsset = toValue?.asset\n const {t} = useTranslation()\n const prev = useRefValue<FileAsset>(fromAsset?._ref)\n const next = useRefValue<FileAsset>(toAsset?._ref)\n const formatUnit = useUnitFormatter({unitDisplay: 'short', maximumFractionDigits: 2})\n const ignoredFields = ['_type', 'media']\n const changedFields = Object.entries(fields)\n .filter(([name, field]) => field.isChanged && !ignoredFields.includes(name))\n .map(([name]) => name)\n\n const didAssetChange = changedFields.includes('asset')\n\n const nestedFields = schemaType.fields\n .filter((field) => field.name !== 'asset' && changedFields.includes(field.name))\n .map((field) => field.name)\n\n const pctDiff = getSizeDiff(prev?.size, next?.size)\n const prevSize = prev?.size && getHumanFriendlyBytes(prev.size, formatUnit)\n const nextSize = next?.size && getHumanFriendlyBytes(next.size, formatUnit)\n\n const cardStyles = useMemo(() => ({display: 'block', flex: 1}), [])\n\n const from = prev && (\n <DiffCard as=\"del\" diff={diff} path=\"asset._ref\" style={cardStyles}>\n <MetaInfo\n title={prev.originalFilename || t('changes.file.meta-info-fallback-title')}\n icon={DocumentIcon}\n >\n <Text size={0} style={{color: 'inherit'}}>\n {prevSize}\n </Text>\n </MetaInfo>\n </DiffCard>\n )\n\n const to = next && (\n <DiffCard as=\"ins\" diff={diff} path=\"asset._ref\" style={cardStyles}>\n <MetaInfo\n title={next.originalFilename || t('changes.file.meta-info-fallback-title')}\n icon={DocumentIcon}\n >\n <Flex align=\"center\">\n <Text size={0} style={{color: 'inherit'}}>\n {nextSize}\n </Text>\n {pctDiff !== 0 && (\n <Card radius={2} padding={1} as={SizeDiff} marginLeft={2}>\n <Text size={0} data-number={pctDiff > 0 ? 'positive' : 'negative'}>\n {pctDiff > 0 ? '+' : '-'}\n {pctDiff}%\n </Text>\n </Card>\n )}\n </Flex>\n </MetaInfo>\n </DiffCard>\n )\n\n const FileAssetChange = (\n <>\n {/* Removed only */}\n {from && !to && (\n <DiffTooltip diff={diff} path=\"asset._ref\" description={t('changes.removed-label')}>\n {from}\n </DiffTooltip>\n )}\n\n {/* Removed and added */}\n {from && to && (\n <DiffTooltip diff={diff} path=\"asset._ref\">\n <FromTo from={from} layout=\"grid\" to={to} />\n </DiffTooltip>\n )}\n\n {/* Added only */}\n {!from && to && (\n <DiffTooltip diff={diff} path=\"asset._ref\" description={t('changes.added-label')}>\n {to}\n </DiffTooltip>\n )}\n </>\n )\n\n return (\n <>\n {didAssetChange && FileAssetChange}\n {nestedFields.length > 0 && (\n <Box marginTop={didAssetChange ? 4 : 3}>\n <ChangeList diff={diff} schemaType={schemaType} fields={nestedFields} />\n </Box>\n )}\n </>\n )\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of, type OperatorFunction} from 'rxjs'\nimport {catchError, map} from 'rxjs/operators'\n\n/** @internal */\nexport type LoadableState<T> = LoadingState | LoadedState<T> | ErrorState\n\n/** @internal */\nexport interface LoadingState {\n value: undefined\n error: null\n isLoading: true\n}\n\n/** @internal */\nexport interface LoadedState<T> {\n value: T\n error: null\n isLoading: false\n}\n\n/** @internal */\nexport interface ErrorState {\n value: undefined\n error: Error\n isLoading: false\n}\n\nconst LOADING_STATE: LoadingState = {\n isLoading: true,\n value: undefined,\n error: null,\n}\n\n/** @internal */\nexport function useLoadable<T>(value$: Observable<T>): LoadableState<T | undefined>\n/** @internal */\nexport function useLoadable<T>(value$: Observable<T>, initialValue: T): LoadableState<T>\n/** @internal */\nexport function useLoadable<T>(\n value$: Observable<T>,\n initialValue?: T,\n): LoadableState<T | undefined> {\n const initial: LoadableState<T> =\n typeof initialValue === 'undefined'\n ? LOADING_STATE\n : {isLoading: false, value: initialValue, error: null}\n\n const loadableObservable = useMemo(() => value$.pipe(asLoadable()), [value$])\n // Deferred: react-rx v5's deferral is identity-coherent, so when callers\n // key `value$` on identities like a document id the live loadable wins on\n // an identity change — the previous identity's loaded value never returns\n // under the new one.\n return useObservable(loadableObservable, initial)\n}\n\n/** @internal */\nexport function asLoadable<T>(): OperatorFunction<T, LoadableState<T>> {\n return (value$: Observable<T>) =>\n value$.pipe(\n map((value) => ({isLoading: false, value, error: null}) as const),\n catchError((error): Observable<ErrorState> =>\n of({isLoading: false, value: undefined, error}),\n ),\n )\n}\n","import {useMemo} from 'react'\nimport {type Observable, of} from 'rxjs'\n\nimport {type LoadableState, useLoadable} from '../../../util/useLoadable'\nimport {useDocumentPreviewStore} from '../../datastores'\n\n/** @internal */\nexport function useDocumentValues<T = Record<string, unknown>>(\n documentId: string,\n paths: string[],\n): LoadableState<T | undefined> {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const documentValues$ = useMemo(\n () =>\n documentId\n ? (documentPreviewStore.observePaths(\n {_type: 'reference', _ref: documentId},\n paths,\n ) as Observable<T>)\n : of(undefined),\n [documentId, documentPreviewStore, paths],\n )\n\n return useLoadable(documentValues$)\n}\n","// @todo: use `polished` for this?\nexport function hexToRgba(hex: string, opacity: number): string {\n const rgba = (/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex) || ([] as string[]))\n .slice(1)\n .map((num) => parseInt(num, 16))\n .concat(opacity)\n return `rgba(${rgba.join(', ')})`\n}\n\n// @todo: replace this\nexport function simpleHash(str: string): string {\n let hash = 0\n\n if (str.length == 0) {\n return hash.toString()\n }\n\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n\n hash = (hash << 5) - hash + char\n\n hash &= hash // Convert to 32bit integer\n }\n\n return hash.toString()\n}\n\nexport function getDeviceDpr(): number {\n const base = Math.ceil(window.devicePixelRatio || 1)\n return Math.min(3, Math.max(1, base))\n}\n","import {type Image, type ImageCrop, type ImageHotspot} from '@sanity/types'\nimport {type SVGProps} from 'react'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../types'\nimport {hexToRgba} from './helpers'\n\ninterface HotspotCropSVGProps {\n crop?: ImageCrop\n diff: ObjectDiff<Image>\n hash: string\n hotspot?: ImageHotspot\n width?: number\n height?: number\n}\n\nexport function HotspotCropSVG(\n props: HotspotCropSVGProps & Omit<SVGProps<SVGElement>, 'ref' | 'width' | 'height'>,\n) {\n const {crop, diff, hash, hotspot, width = 100, height = 100, ...restProps} = props\n const {t} = useTranslation()\n const cropColor = useDiffAnnotationColor(diff, 'crop')\n const hotspotColor = useDiffAnnotationColor(diff, 'hotspot')\n\n return (\n <svg\n {...restProps}\n fill=\"none\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n >\n <defs>\n {crop && hotspot && (\n <mask id={`mask-hotspot-${hash}`}>\n <rect x={0} y={0} width={width} height={height} fill=\"#fff\" />\n <HotspotSVG\n hotspot={hotspot}\n fill=\"#000\"\n offset={1}\n width={width}\n height={height}\n stroke=\"#000\"\n strokeWidth={3}\n />\n </mask>\n )}\n </defs>\n\n {crop && (\n <DiffTooltip diff={diff} path=\"crop\" description={t('changes.image.crop-changed')}>\n <g>\n <CropSVG\n crop={crop}\n fill={hexToRgba(cropColor.border, 0.25)}\n mask={hotspot ? `url(#mask-hotspot-${hash})` : undefined}\n stroke={cropColor.border}\n strokeWidth={1}\n width={width}\n height={height}\n />\n </g>\n </DiffTooltip>\n )}\n\n {hotspot && (\n <DiffTooltip diff={diff} path=\"hotspot\" description={t('changes.image.crop-changed')}>\n <g>\n <HotspotSVG\n hotspot={hotspot}\n fill={hexToRgba(hotspotColor.border, 0.25)}\n stroke={hotspotColor.border}\n strokeWidth={1}\n width={width}\n height={height}\n />\n </g>\n </DiffTooltip>\n )}\n </svg>\n )\n}\n\nfunction CropSVG({\n crop,\n width,\n height,\n ...restProps\n}: {crop: ImageCrop; width: number; height: number} & Omit<\n SVGProps<SVGRectElement>,\n 'width' | 'height'\n>) {\n const rectProps = {\n x: crop.left * width,\n y: crop.top * height,\n width: (1 - crop.right - crop.left) * width,\n height: (1 - crop.bottom - crop.top) * height,\n }\n\n return <rect {...restProps} {...rectProps} style={{vectorEffect: 'non-scaling-stroke'}} />\n}\n\nfunction HotspotSVG({\n hotspot,\n offset = 0,\n width,\n height,\n ...restProps\n}: {hotspot: ImageHotspot; offset?: number; width: number; height: number} & Omit<\n SVGProps<SVGEllipseElement>,\n 'width' | 'height'\n>) {\n const ellipseProps = {\n cx: hotspot.x * width,\n cy: hotspot.y * height,\n rx: (hotspot.width / 2) * width + offset,\n ry: (hotspot.height / 2) * height + offset,\n }\n\n return <ellipse {...restProps} {...ellipseProps} style={{vectorEffect: 'non-scaling-stroke'}} />\n}\n","import {getImageDimensions, isDefaultCrop, isDefaultHotspot} from '@sanity/asset-utils'\nimport {hues} from '@sanity/color'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {createImageUrlBuilder} from '@sanity/image-url'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type SyntheticEvent, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDocumentValues} from '../../../../store/document/hooks/useDocumentValues'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../../../studioClient'\nimport {MetaInfo} from '../../../diff/components/MetaInfo'\nimport {getDeviceDpr, simpleHash} from './helpers'\nimport {HotspotCropSVG} from './HotspotCropSVG'\nimport {type ImagePreviewProps, type MinimalAsset} from './types'\n\nconst ASSET_FIELDS = ['originalFilename']\n\n// To trigger error state, change `src` attribute to random string (\"foo\")\n// To trigger slow loading, use a throttling proxy (charles) or browser devtools\n\n// To trigger deleted state, set `id` to valid, non-existant image asset ID,\n// eg: 'image-1217bc35db5030739b7be571c79d3c401551911d-300x200-png'\n\nexport const NoImagePreview = () => {\n const {t} = useTranslation()\n return (\n <Card flex={1} tone=\"transparent\" padding={4} radius={2} height=\"stretch\">\n <Flex align=\"center\" justify=\"center\" height=\"fill\">\n <Text size={1} muted>\n {t('changes.image.no-image-placeholder')}\n </Text>\n </Flex>\n </Card>\n )\n}\n\nconst ImageWrapper = styled.div`\n height: 100%;\n max-height: 190px;\n position: relative;\n\n /* Ideally the checkerboard component currently in the form builder should be made available and used here */\n background-color: ${hues.gray[100].hex};\n background-image:\n linear-gradient(45deg, ${hues.gray[50].hex} 25%, transparent 25%),\n linear-gradient(-45deg, ${hues.gray[50].hex} 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, ${hues.gray[50].hex} 75%),\n linear-gradient(-45deg, transparent 75%, ${hues.gray[50].hex} 75%);\n background-size: 16px 16px;\n background-position:\n 0 0,\n 0 8px,\n 8px -8px,\n -8px 0;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n box-shadow: inset 0 0 0 1px var(--card-border-color);\n pointer-events: none;\n }\n\n &[data-changed] {\n opacity: 0.45;\n }\n`\n\nconst Image = styled.img`\n display: block;\n flex: 1;\n min-height: 0;\n object-fit: contain;\n width: 100%;\n height: 100%;\n\n &[data-action='removed'] {\n opacity: 0.45;\n }\n`\n\nconst HotspotDiff = styled.div`\n svg {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n`\n\nexport function ImagePreview(props: ImagePreviewProps): React.JSX.Element {\n const {id, action, diff, hotspot, crop, is} = props\n const {t} = useTranslation()\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const [imageError, setImageError] = useState<SyntheticEvent<HTMLImageElement>>()\n const {value: asset} = useDocumentValues<MinimalAsset>(id, ASSET_FIELDS)\n const dimensions = getImageDimensions(id)\n const imageBuilder = useMemo(() => createImageUrlBuilder(client), [client])\n\n // undefined = still loading, null = its gone\n const assetIsDeleted = asset === null\n\n const title = asset && asset.originalFilename\n const imageSource = imageBuilder\n .image(id)\n .height(190) // Should match container max-height\n .dpr(getDeviceDpr())\n .fit('max')\n\n const assetChanged = diff.fromValue?.asset?._ref !== diff.toValue?.asset?._ref\n\n let printAction\n if (action && action !== 'changed') {\n printAction = t(action === 'added' ? 'changes.added-label' : 'changes.removed-label')\n }\n\n const metaAction = action === 'changed' ? undefined : action\n\n return (\n <Flex direction=\"column\" height=\"fill\" flex={1}>\n <Box flex={1} padding={2} paddingBottom={0}>\n <Flex\n as={ImageWrapper}\n direction=\"column\"\n data-changed={is === 'from' && assetChanged ? '' : undefined}\n data-error={imageError ? '' : undefined}\n >\n {!assetIsDeleted && !imageError && (\n <Image\n src={imageSource.toString() || ''}\n alt={title}\n data-action={metaAction}\n onError={setImageError}\n width={dimensions.width}\n height={dimensions.height}\n />\n )}\n\n {(assetIsDeleted || imageError) && (\n <Box paddingY={5}>\n <Text size={1} muted align=\"center\">\n {t(assetIsDeleted ? 'changes.image.deleted' : 'changes.image.error-loading-image')}\n </Text>\n </Box>\n )}\n\n <HotspotDiff>\n <HotspotCropSVG\n crop={crop && !isDefaultCrop(crop) ? crop : undefined}\n diff={diff}\n hash={simpleHash(`${imageSource.toString() || ''}-${is}`)}\n hotspot={hotspot && !isDefaultHotspot(hotspot) ? hotspot : undefined}\n width={dimensions.width}\n height={dimensions.height}\n />\n </HotspotDiff>\n </Flex>\n </Box>\n\n <MetaInfo\n title={title || t('changes.image.meta-info-fallback-title')}\n icon={ImageIcon}\n markRemoved={assetChanged && is === 'from'}\n >\n {printAction ? (\n <div>{printAction}</div>\n ) : (\n <div>\n {dimensions.width} × {dimensions.height}\n </div>\n )}\n </MetaInfo>\n </Flex>\n )\n}\n","import {type Image} from '@sanity/types'\nimport {Box, Card, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../../i18n/types'\nimport {getAnnotationAtPath} from '../../../diff/annotations/helpers'\nimport {ChangeList} from '../../../diff/components/ChangeList'\nimport {DiffCard} from '../../../diff/components/DiffCard'\nimport {DiffTooltip} from '../../../diff/components/DiffTooltip'\nimport {FromTo} from '../../../diff/components/FromTo'\nimport {useDocumentChange} from '../../../diff/hooks/useDocumentChange'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {ImagePreview, NoImagePreview} from './ImagePreview'\n\nconst IMAGE_META_FIELDS = ['crop', 'hotspot']\nconst BASE_IMAGE_FIELDS = ['asset', 'media', ...IMAGE_META_FIELDS]\n\nconst CARD_STYLES = {\n flex: 1,\n}\n\nexport const ImageFieldDiff: DiffComponent<ObjectDiff<Image>> = ({diff, schemaType}) => {\n const {t} = useTranslation()\n const {showFromValue} = useDocumentChange()\n const {fromValue, toValue, fields, isChanged} = diff\n const fromRef = fromValue?.asset?._ref\n const toRef = toValue?.asset?._ref\n const assetAnnotation = getAnnotationAtPath(diff, ['asset', '_ref'])\n\n // Get all the changed fields within this image field\n const changedFields = Object.keys(fields).filter(\n (name) => fields[name].isChanged && name !== '_type',\n )\n\n const nestedFields = schemaType.fields\n .filter(\n (field) => !BASE_IMAGE_FIELDS.includes(field.name) && changedFields.includes(field.name),\n )\n .map((field) => field.name)\n\n let assetAction: 'changed' | 'added' | 'removed' = 'changed'\n if (!fromRef && toRef) {\n assetAction = 'added'\n } else if (!toRef && fromRef) {\n assetAction = 'removed'\n }\n\n const didAssetChange = changedFields.includes('asset')\n const didCropChange = changedFields.includes('crop')\n const didHotspotChange = changedFields.includes('hotspot')\n const didMetaChange = didCropChange || didHotspotChange\n const showImageDiff = didAssetChange || didMetaChange\n const showMetaChange = didMetaChange && !didAssetChange\n\n const from =\n fromValue && fromRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview\n is=\"from\"\n id={fromRef}\n diff={diff}\n action={assetAction}\n hotspot={showMetaChange && didHotspotChange ? fromValue.hotspot : undefined}\n crop={showMetaChange && didCropChange ? fromValue.crop : undefined}\n />\n </DiffCard>\n ) : (\n <NoImagePreview />\n )\n\n const to =\n toValue && toRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview\n is=\"to\"\n id={toRef}\n diff={diff}\n hotspot={showMetaChange && didHotspotChange ? toValue.hotspot : undefined}\n crop={showMetaChange && didCropChange ? toValue.crop : undefined}\n />\n </DiffCard>\n ) : (\n <NoImagePreview />\n )\n\n if (!from && !to) {\n return (\n <Card padding={4} radius={2} tone=\"transparent\">\n <Text muted size={1} align=\"center\">\n {t('changes.image.no-asset-set')}\n </Text>\n </Card>\n )\n }\n\n if (!isChanged) {\n return toRef ? (\n <DiffCard annotation={assetAnnotation} style={CARD_STYLES}>\n <ImagePreview id={toRef} is=\"to\" diff={diff} />\n </DiffCard>\n ) : null\n }\n\n const imageDiff = (\n <FromTo align=\"center\" from={showFromValue ? from : undefined} layout=\"grid\" to={to} />\n )\n\n return (\n <>\n {showImageDiff &&\n (didAssetChange ? (\n <DiffTooltip\n annotations={assetAnnotation ? [assetAnnotation] : []}\n description={getChangeDescription(assetAction, t)}\n >\n {imageDiff}\n </DiffTooltip>\n ) : (\n imageDiff\n ))}\n {nestedFields.length > 0 && (\n <Box marginTop={showImageDiff ? 4 : 3}>\n <ChangeList diff={diff} schemaType={schemaType} fields={nestedFields} />\n </Box>\n )}\n </>\n )\n}\n\nfunction getChangeDescription(action: 'changed' | 'added' | 'removed', t: TFunction): string {\n switch (action) {\n case 'changed':\n return t('changes.changed-label')\n case 'added':\n return t('changes.added-label')\n case 'removed':\n return t('changes.removed-label')\n default:\n // Should never happen, but for linters' sake\n return 'Unknown change'\n }\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst NumberWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n`\n\nexport const NumberPreview: FieldPreviewComponent<string> = (props) => {\n const {value} = props\n\n return (\n <Box as={NumberWrapper} paddingX={2} paddingY={1}>\n {value}\n </Box>\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type NumberDiff} from '../../../types'\nimport {NumberPreview} from '../preview/NumberPreview'\n\nexport const NumberFieldDiff: DiffComponent<NumberDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={NumberPreview}\n layout=\"inline\"\n />\n )\n}\n","import {Box, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const InlineBox = styled(Box)`\n &:not([hidden]) {\n display: inline;\n align-items: center;\n\n &[data-changed] {\n cursor: pointer;\n }\n }\n`\n\nexport const InlineText = styled(Text)`\n &:not([hidden]) {\n display: inline;\n color: inherit;\n }\n`\n\nexport const PreviewContainer = styled(Box)`\n &:not([hidden]) {\n display: inline-flex;\n align-items: center;\n\n ${InlineBox} [data-ui=\"Text\"] {\n opacity: 0.5;\n }\n }\n`\n\nexport const PopoverContainer = styled(Box)`\n min-width: 160px;\n max-height: 40vh;\n overflow-y: auto;\n`\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {isKeySegment, type ObjectSchemaType, type Path, type PortableTextChild} from '@sanity/types'\nimport {Flex, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {toString} from '@sanity/util/paths'\nimport {\n type MouseEvent,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../../ui-components/popover/Popover'\nimport {useChangeIndicatorsReportedValues} from '../../../../../changeIndicators/tracker'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {ChangeList} from '../../../../diff/components/ChangeList'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../../types'\nimport {isEmptyObject} from '../helpers'\nimport {InlineBox, InlineText, PopoverContainer, PreviewContainer} from './styledComponents'\n\ninterface AnnotationProps {\n diff?: ObjectDiff\n object: PortableTextChild\n schemaType?: ObjectSchemaType\n path: Path\n children: ReactNode\n}\n\nconst AnnotationWrapper = styled.div`\n text-decoration: none;\n display: inline;\n position: relative;\n border: 0;\n padding: 0;\n border-bottom: 2px dotted currentColor;\n box-shadow: inset 0 0 0 1px var(--card-border-color);\n white-space: nowrap;\n align-items: center;\n background-color: color(var(--card-fg-color) a(10%));\n\n &[data-changed] {\n cursor: pointer;\n }\n\n &[data-removed] {\n text-decoration: line-through;\n }\n\n &:hover ${PreviewContainer} {\n opacity: 1;\n }\n`\n\nexport function Annotation({\n children,\n diff,\n object,\n schemaType,\n path,\n ...restProps\n}: AnnotationProps) {\n const {t} = useTranslation()\n if (!schemaType) {\n return (\n <AnnotationWrapper {...restProps}>\n {t('changes.portable-text.unknown-annotation-schema-type')}\n </AnnotationWrapper>\n )\n }\n if (diff && diff.action !== 'unchanged') {\n return (\n <AnnnotationWithDiff\n {...restProps}\n diff={diff}\n object={object}\n schemaType={schemaType}\n path={path}\n >\n {children}\n </AnnnotationWithDiff>\n )\n }\n return <AnnotationWrapper>{children}</AnnotationWrapper>\n}\n\ninterface AnnnotationWithDiffProps {\n diff: ObjectDiff\n object: PortableTextChild\n schemaType: ObjectSchemaType\n path: Path\n children?: ReactNode\n}\n\nfunction AnnnotationWithDiff({\n diff,\n children,\n object,\n schemaType,\n path,\n ...restProps\n}: AnnnotationWithDiffProps) {\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {path: fullPath} = useContext(DiffContext)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const {t} = useTranslation()\n const color = useDiffAnnotationColor(diff, [])\n const style = useMemo(\n () => (color ? {background: color.background, color: color.text} : {}),\n [color],\n )\n const isRemoved = diff.action === 'removed'\n const [open, setOpen] = useState(false)\n const emptyObject = object && isEmptyObject(object)\n const markDefPath = useMemo(\n () => [path[0]].concat(['markDefs', {_key: object._key}]),\n [object._key, path],\n )\n const prefix = useMemo(\n () =>\n fullPath.slice(\n 0,\n fullPath.findIndex((seg) => isKeySegment(seg) && seg._key === object._key),\n ),\n [fullPath, object._key],\n )\n const annotationPath = useMemo(() => prefix.concat(path), [path, prefix])\n const myPath = useMemo(() => prefix.concat(markDefPath), [markDefPath, prefix])\n const myValue = `field-${toString(myPath)}`\n const values = useChangeIndicatorsReportedValues()\n const isEditing = useMemo(\n () => values.filter(([p]) => p.startsWith(myValue)).length > 0,\n [myValue, values],\n )\n\n useEffect(() => {\n if (!open && isEditing) {\n // oxlint-disable-next-line react/react-compiler\n setOpen(true)\n onSetFocus(myPath)\n }\n }, [isEditing, myPath, onSetFocus, open])\n\n const handleOpenPopup = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n setOpen(true)\n if (!isRemoved) {\n event.preventDefault()\n onSetFocus(annotationPath) // Go to span first\n setTimeout(() => onSetFocus(myPath), 10) // Open edit object interface\n }\n },\n [annotationPath, isRemoved, myPath, onSetFocus],\n )\n\n useClickOutsideEvent(!isEditing && (() => setOpen(false)), () => [popoverRef.current])\n\n const annotation = (diff.action !== 'unchanged' && diff.annotation) || null\n const annotations = useMemo(() => (annotation ? [annotation] : []), [annotation])\n\n const value = useMemo(() => ({path: myPath}), [myPath])\n\n const popoverContent = (\n <DiffContext.Provider value={value}>\n <PopoverContainer padding={3}>\n <div>\n {emptyObject && (\n <Text muted size={1} weight=\"medium\">\n {t('changes.portable-text.empty-object-annotation', {\n annotationType: schemaType.title || schemaType.name,\n })}\n </Text>\n )}\n {!emptyObject && <ChangeList diff={diff} schemaType={schemaType} />}\n </div>\n </PopoverContainer>\n </DiffContext.Provider>\n )\n\n return (\n <AnnotationWrapper\n {...restProps}\n onClick={handleOpenPopup}\n style={style}\n data-changed=\"\"\n data-removed={diff.action === 'removed' ? '' : undefined}\n >\n <Popover content={popoverContent} open={open} ref={popoverRef} portal>\n <PreviewContainer paddingLeft={1}>\n <DiffTooltip\n annotations={annotations}\n description={t('changes.portable-text.annotation', {context: diff.action})}\n >\n <InlineBox style={{display: 'inline-flex'}}>\n <span>{children}</span>\n <Flex align=\"center\" paddingX={1}>\n <InlineText size={0}>\n <ChevronDownIcon />\n </InlineText>\n </Flex>\n </InlineBox>\n </DiffTooltip>\n </PreviewContainer>\n </Popover>\n </AnnotationWrapper>\n )\n}\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nconst Quote = styled.blockquote`\n margin: 0;\n`\n\nexport function Blockquote({children}: {children: ReactNode}): React.JSX.Element {\n return (\n <div>\n <Quote>{children}</Quote>\n </div>\n )\n}\n","import {Heading} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nconst headingSizes: Record<string, number | undefined> = {\n h1: 2,\n h2: 1,\n h3: 0,\n h4: 0,\n h5: 0,\n h6: 0,\n}\n\nconst StyledHeading = styled(Heading)`\n &:not([hidden]) {\n display: inline;\n text-transform: none;\n margin: 0;\n\n &::before,\n &::after {\n content: unset;\n }\n }\n`\n\nexport function Header({style, children}: {style: string; children: ReactNode}): React.JSX.Element {\n return <StyledHeading size={headingSizes[style]}>{children}</StyledHeading>\n}\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n// This can contain nested <div> elements, so it's not rendered as a <p> element\nconst StyledParagraph = styled.div`\n text-transform: none;\n white-space: wrap;\n overflow-wrap: break-word;\n margin: 0;\n`\n\nexport function Paragraph({children}: {children: ReactNode}): React.JSX.Element {\n return <StyledParagraph>{children}</StyledParagraph>\n}\n","import {type Path, type PortableTextTextBlock} from '@sanity/types'\nimport {Box, Card, Stack, Text} from '@sanity/ui'\nimport {type MouseEvent, useCallback, useContext} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {isHeader} from '../helpers'\nimport {type PortableTextDiff} from '../types'\nimport {Blockquote} from './Blockquote'\nimport {Header} from './Header'\nimport {Paragraph} from './Paragraph'\n\nconst EMPTY_PATH: Path = []\n\nexport function Block(props: {\n diff: PortableTextDiff\n block: PortableTextTextBlock\n children: React.JSX.Element\n}): React.JSX.Element {\n const {diff, block, children} = props\n const color = useDiffAnnotationColor(diff, EMPTY_PATH)\n const {path: fullPath} = useContext(DiffContext)\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {t} = useTranslation()\n const isRemoved = diff.action === 'removed'\n let returned = children\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n\n if (!isRemoved) {\n onSetFocus(fullPath)\n }\n },\n [fullPath, isRemoved, onSetFocus],\n )\n\n if (block.style === 'blockquote') {\n returned = <Blockquote>{returned}</Blockquote>\n } else if (block.style && isHeader(block)) {\n returned = <Header style={block.style}>{returned}</Header>\n } else {\n returned = <Paragraph>{returned}</Paragraph>\n }\n\n let fromStyle: string | undefined\n // If style was changed, indicate that\n if (\n diff.origin.action === 'changed' &&\n diff.origin.fields.style &&\n diff.origin.fields.style.action === 'changed' &&\n diff.origin.fields.style.annotation\n ) {\n fromStyle = diff?.origin?.fromValue?.style\n\n const style = color ? {background: color.background, color: color.text} : {}\n\n returned = (\n <Card\n padding={3}\n border\n radius={2}\n style={{borderStyle: 'dotted'}}\n diff-block-action={diff.action}\n data-block-note={`changed_from_style_${fromStyle || 'undefined'}`}\n >\n <Stack gap={2}>\n <DiffTooltip\n annotations={[diff.origin.fields.style?.annotation]}\n diff={diff.origin.fields.style}\n >\n <Text size={0}>\n {t('changes.portable-text.block-style-changed', {fromStyle, toStyle: block.style})}\n </Text>\n </DiffTooltip>\n <Box style={style}>{returned}</Box>\n </Stack>\n </Card>\n )\n }\n\n return (\n <div\n onClick={handleClick}\n data-diff-block-action={diff.action}\n data-block-note={`changed_from_style_${fromStyle || 'undefined'}`}\n >\n {returned}\n </div>\n )\n}\n","import {styled} from 'styled-components'\n\nconst DecoratorWrapper = styled.span<{decoration: string}>`\n display: inline;\n ${({theme, decoration}) => {\n switch (decoration) {\n case 'strong':\n return 'font-weight: bold;'\n case 'em':\n return 'font-style: italic;'\n case 'underline':\n return 'text-decoration: underline;'\n case 'overline':\n return 'text-decoration: overline;'\n case 'strike-through':\n return 'text-decoration: line-through;'\n case 'code':\n return `\n font-family: ${theme.sanity.fonts.code.family /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n background: ${theme.sanity.color.muted.default.enabled.bg /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n `\n default:\n return ''\n }\n }}\n`\n\nexport function Decorator({mark, children}: {mark: string; children: React.JSX.Element}) {\n return <DecoratorWrapper decoration={mark}>{children}</DecoratorWrapper>\n}\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {\n isKeySegment,\n type ObjectSchemaType,\n type Path,\n type PortableTextChild,\n type PortableTextObject,\n} from '@sanity/types'\nimport {Card, Flex, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {FOCUS_TERMINATOR, toString} from '@sanity/util/paths'\nimport {type MouseEvent, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {Popover} from '../../../../../../ui-components/popover/Popover'\nimport {useChangeIndicatorsReportedValues} from '../../../../../changeIndicators/tracker'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {Preview} from '../../../../../preview/components/Preview'\nimport {useDiffAnnotationColor} from '../../../../diff/annotations/hooks'\nimport {ChangeList} from '../../../../diff/components/ChangeList'\nimport {DiffTooltip} from '../../../../diff/components/DiffTooltip'\nimport {type ObjectDiff} from '../../../../types'\nimport {isEmptyObject} from '../helpers'\nimport {InlineBox, InlineText, PopoverContainer, PreviewContainer} from './styledComponents'\n\ninterface InlineObjectProps {\n diff?: ObjectDiff\n object: PortableTextObject\n path: Path\n schemaType?: ObjectSchemaType\n}\n\nconst InlineObjectWrapper = styled(Card)`\n &:not([hidden]) {\n display: inline;\n cursor: pointer;\n white-space: nowrap;\n align-items: center;\n\n &[data-removed] {\n text-decoration: line-through;\n }\n\n ${InlineBox} {\n display: inline-flex;\n }\n }\n`\n\nexport function InlineObject({diff, object, schemaType, ...restProps}: InlineObjectProps) {\n const {t} = useTranslation()\n if (!schemaType) {\n return (\n <InlineObjectWrapper {...restProps} border radius={1}>\n {t('changes.portable-text.unknown-inline-object-schema-type', {schemaType: object._type})}\n </InlineObjectWrapper>\n )\n }\n\n if (diff) {\n return (\n <InlineObjectWithDiff {...restProps} diff={diff} object={object} schemaType={schemaType} />\n )\n }\n\n return (\n <InlineObjectWrapper>\n <Preview schemaType={schemaType} value={object} layout=\"inline\" />\n </InlineObjectWrapper>\n )\n}\n\ninterface InlineObjectWithDiffProps {\n diff: ObjectDiff\n object: PortableTextChild\n path: Path\n schemaType: ObjectSchemaType\n}\n\nfunction InlineObjectWithDiff({\n diff,\n object,\n path,\n schemaType,\n ...restProps\n}: InlineObjectWithDiffProps) {\n const {path: fullPath} = useContext(DiffContext)\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {t} = useTranslation()\n const color = useDiffAnnotationColor(diff, [])\n const style = useMemo(\n () => (color ? {background: color.background, color: color.text} : {}),\n [color],\n )\n const [open, setOpen] = useState(false)\n const emptyObject = object && isEmptyObject(object)\n const isRemoved = diff.action === 'removed'\n const prefix = fullPath.slice(\n 0,\n fullPath.findIndex((seg) => isKeySegment(seg) && seg._key === object._key),\n )\n const myPath = prefix.concat(path)\n const myValue = `field-${toString(myPath)}`\n const values = useChangeIndicatorsReportedValues()\n const isEditing = values.filter(([p]) => p.startsWith(myValue)).length > 0\n\n const focusPath = fullPath.slice(0, -1).concat(path).concat([FOCUS_TERMINATOR])\n\n useEffect(() => {\n if (isEditing) {\n // oxlint-disable-next-line react/react-compiler\n setOpen(true)\n onSetFocus(focusPath)\n }\n }, [focusPath, isEditing, onSetFocus])\n\n const handleOpenPopup = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n event.stopPropagation()\n setOpen(true)\n if (!isRemoved) {\n onSetFocus(focusPath)\n return\n }\n event.preventDefault()\n },\n [focusPath, isRemoved, onSetFocus],\n )\n\n const handleClose = useCallback(() => {\n setOpen(false)\n }, [])\n\n const value = useMemo(() => ({path: myPath}), [myPath])\n\n const popoverContent = (\n <DiffContext.Provider value={value}>\n <PopoverContent\n diff={diff}\n emptyObject={emptyObject}\n onClose={handleClose}\n schemaType={schemaType}\n />\n </DiffContext.Provider>\n )\n\n const annotation = (diff.action !== 'unchanged' && diff.annotation) || null\n const annotations = annotation ? [annotation] : []\n\n return (\n <InlineObjectWrapper\n {...restProps}\n onClick={handleOpenPopup}\n style={style}\n data-removed={diff.action === 'removed' ? '' : undefined}\n border\n radius={2}\n >\n <Popover content={popoverContent} open={open} portal>\n <PreviewContainer>\n <DiffTooltip\n annotations={annotations}\n description={t('changes.portable-text.inline-object', {context: diff.action})}\n >\n <InlineBox>\n <Preview schemaType={schemaType} value={object} layout=\"inline\" />\n <Flex align=\"center\" paddingX={1}>\n <InlineText size={0}>\n <ChevronDownIcon />\n </InlineText>\n </Flex>\n </InlineBox>\n </DiffTooltip>\n </PreviewContainer>\n </Popover>\n </InlineObjectWrapper>\n )\n}\n\nfunction PopoverContent({\n diff,\n emptyObject,\n onClose,\n schemaType,\n}: {\n diff: ObjectDiff\n emptyObject: boolean\n onClose: () => void\n schemaType: ObjectSchemaType\n}) {\n const {t} = useTranslation()\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n useClickOutsideEvent(onClose, () => [popoverRef.current])\n\n return (\n <PopoverContainer ref={popoverRef} padding={3}>\n {emptyObject && (\n <Text muted size={1} weight=\"medium\">\n {t('changes.portable-text.empty-inline-object', {\n inlineObjectType: schemaType.title || schemaType.name,\n })}\n </Text>\n )}\n {!emptyObject && <ChangeList diff={diff} schemaType={schemaType} />}\n </PopoverContainer>\n )\n}\n","import {isKeySegment, type Path} from '@sanity/types'\nimport {type HTMLProps, type SyntheticEvent, useCallback, useContext, useMemo} from 'react'\nimport {DiffContext, ReviewChangesContext} from 'sanity/_singletons'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {DiffCard} from '../../../../diff/components/DiffCard'\nimport {type ObjectDiff, type StringDiff, type StringDiffSegment} from '../../../../types'\nimport {InlineBox} from './styledComponents'\n\ninterface TextProps {\n diff?: StringDiff\n childDiff?: ObjectDiff\n children: React.JSX.Element\n path: Path\n segment: StringDiffSegment\n}\n\nexport function Text({\n diff,\n childDiff,\n children,\n path,\n segment,\n ...restProps\n}: TextProps & Omit<HTMLProps<HTMLSpanElement>, 'onClick'>) {\n const diffWithFallback = diff || childDiff\n const hasChanged =\n diffWithFallback && diffWithFallback.action !== 'unchanged' && segment.action !== 'unchanged'\n if (hasChanged) {\n return (\n <TextWithDiff {...restProps} childDiff={childDiff} diff={diff} segment={segment} path={path}>\n {children}\n </TextWithDiff>\n )\n }\n return <InlineBox>{children}</InlineBox>\n}\n\nfunction TextWithDiff({diff, childDiff, children, path, segment, ...restProps}: TextProps) {\n const {onSetFocus} = useContext(ReviewChangesContext)\n const {path: fullPath} = useContext(DiffContext)\n const spanSegment = useMemo(() => path.slice(-2, 1)[0], [path])\n const {t} = useTranslation()\n const isRemoved = diff && diff.action === 'removed'\n const prefix = fullPath.slice(\n 0,\n fullPath.findIndex(\n (seg) => isKeySegment(seg) && isKeySegment(spanSegment) && seg._key === spanSegment._key,\n ),\n )\n const focusPath = prefix.concat(path)\n\n const handleClick = useCallback(\n (event: SyntheticEvent) => {\n event.stopPropagation()\n if (!isRemoved) {\n event.preventDefault()\n onSetFocus(focusPath)\n }\n },\n [focusPath, isRemoved, onSetFocus],\n )\n const realSeg = diff && diff.segments.find((rSeg) => rSeg.text === segment.text)\n\n const diffWithFallback = realSeg || diff || childDiff\n const annotation =\n (diffWithFallback && diffWithFallback.action !== 'unchanged' && diffWithFallback.annotation) ||\n (realSeg &&\n diff &&\n diff.action !== 'unchanged' &&\n realSeg.action === 'removed' &&\n diff.annotation) ||\n null\n\n const diffCard =\n annotation && segment.action !== 'unchanged' ? (\n <DiffCard\n annotation={annotation}\n as={segment.action === 'removed' ? 'del' : 'ins'}\n tooltip={{description: t('changes.portable-text.text', {context: segment.action})}}\n >\n {children}\n </DiffCard>\n ) : null\n\n return (\n <InlineBox {...restProps} onClick={handleClick} data-changed=\"\">\n <span>\n <>{diffCard || children}</>\n </span>\n </InlineBox>\n )\n}\n","import {\n isPortableTextSpan,\n type ObjectSchemaType,\n type PortableTextChild,\n type PortableTextTextBlock,\n type SpanSchemaType,\n} from '@sanity/types'\nimport uniq from 'lodash-es/uniq.js'\nimport xor from 'lodash-es/xor.js'\nimport {type ReactNode, useMemo} from 'react'\n\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../../../i18n/types'\nimport {DiffCard} from '../../../../diff/components/DiffCard'\nimport {\n type ArrayDiff,\n type ObjectDiff,\n type StringDiff,\n type StringDiffSegment,\n} from '../../../../types'\nimport {\n escapeRegExp,\n findAnnotationDiff,\n findChildDiff,\n findSpanDiffFromChild,\n getAllMarkDefs,\n getChildSchemaType,\n getDecorators,\n getInlineObjects,\n isDecorator,\n} from '../helpers'\nimport * as TextSymbols from '../symbols'\nimport {type PortableTextDiff} from '../types'\nimport {Annotation} from './Annotation'\nimport {Block} from './Block'\nimport {Decorator} from './Decorator'\nimport {InlineObject} from './InlineObject'\nimport {Text} from './Text'\n\nconst decoratorSymbolsStart = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[0])\nconst decoratorSymbolsEnd = TextSymbols.DECORATOR_SYMBOLS.map((set) => set[1])\nconst annotationSymbolsStart = TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[0])\nconst annotationSymbolsEnd = TextSymbols.ANNOTATION_SYMBOLS.map((set) => set[1])\n\nconst allSymbolsStart = decoratorSymbolsStart.concat(annotationSymbolsStart)\nconst allSymbolsEnd = decoratorSymbolsEnd.concat(annotationSymbolsEnd)\n\nconst allDecoratorSymbols = decoratorSymbolsStart.concat(decoratorSymbolsEnd)\nconst markRegex = new RegExp(`${allDecoratorSymbols.concat(allSymbolsEnd).join('|')}`, 'g')\n\ntype Props = {\n diff: PortableTextDiff\n schemaType: ObjectSchemaType\n}\n\nexport function PortableText(props: Props): React.JSX.Element {\n const {diff, schemaType} = props\n const block = (diff.origin.toValue || diff.origin.fromValue) as PortableTextTextBlock\n const {t} = useTranslation()\n\n const inlineObjects = useMemo(\n () => (diff.origin.toValue ? getInlineObjects(diff.origin) : []),\n [diff.origin],\n )\n\n const renderChild = useMemo(\n () => defineRenderChild({block, diff, inlineObjects, schemaType, t}),\n [block, diff, inlineObjects, schemaType, t],\n )\n\n return (\n <Block block={diff.displayValue} diff={diff}>\n {<>{(diff.displayValue.children || []).map((child) => renderChild(child))}</>}\n </Block>\n )\n}\n\nfunction renderTextSegment({\n diff,\n child,\n decoratorTypes,\n seg,\n segIndex,\n spanSchemaType,\n t,\n}: {\n diff: PortableTextDiff\n child: PortableTextChild\n decoratorTypes: {title: string; value: string}[]\n seg: StringDiffSegment\n segIndex: number\n spanSchemaType: SpanSchemaType\n t: TFunction\n}): React.JSX.Element {\n // Newlines\n if (seg.text === '\\n') {\n return <br />\n }\n // Make sure we render trailing spaces correctly\n let children = (\n <span key={`text-${segIndex}`}>\n {seg.text.replace(/ /g, TextSymbols.TRAILING_SPACE_SYMBOL)}\n </span>\n )\n const spanDiff = child && findSpanDiffFromChild(diff.origin, child)\n // Render decorator diff info\n const activeMarks = isPortableTextSpan(child) ? child.marks || [] : []\n if (spanDiff) {\n children = renderDecorators({\n activeMarks,\n decoratorTypes,\n diff,\n children,\n seg,\n segIndex,\n spanDiff,\n spanSchemaType,\n t,\n })\n }\n // Render the segment with the active marks\n if (activeMarks && activeMarks.length > 0) {\n activeMarks.forEach((mark) => {\n if (isDecorator(mark, spanSchemaType)) {\n children = (\n <Decorator key={`decorator-${mark}-${child._key}-${segIndex}`} mark={mark}>\n {children}\n </Decorator>\n )\n }\n })\n }\n return children\n}\n\nfunction renderDecorators({\n activeMarks,\n decoratorTypes,\n diff,\n children,\n seg,\n segIndex,\n spanDiff,\n spanSchemaType,\n t,\n}: {\n activeMarks: string[]\n decoratorTypes: {title: string; value: string}[]\n diff: PortableTextDiff\n children: React.JSX.Element\n seg: StringDiffSegment\n segIndex: number\n spanDiff: ObjectDiff\n spanSchemaType: SpanSchemaType\n t: TFunction\n}): React.JSX.Element {\n let returned = <span key={`text-segment-${segIndex}`}>{children}</span>\n const fromPtDiffText: string =\n (diff.origin.fromValue && diff.fromValue && diff.fromValue.children[0].text) || '' // Always one child\n\n // There are cases where we have changed marks, but it's an indirect change in the diff data.\n // For example when '<>normal-text</><>bold-text</>' and 'bold' is unbolded. Then 'bold' is added to first span,\n // and 'bold' is removed from the second span: '<>normal-text-bold</><>-text</>'. No marks are changed.\n // We do however want to indicate to the user that someone removed bold from 'bold'\n // In these cases, fallback to the diff annotation information in the span itself.\n const indirectMarksAnnotation =\n (spanDiff && spanDiff.action !== 'unchanged' && spanDiff.annotation) || undefined\n\n const marksDiff = spanDiff?.fields?.marks as ArrayDiff\n const marksAnnotation =\n (marksDiff && marksDiff.action !== 'unchanged' && marksDiff.annotation) ||\n indirectMarksAnnotation\n\n let marksChanged: string[] = []\n const ptDiffChildren = fromPtDiffText\n .split(TextSymbols.CHILD_SYMBOL)\n .filter((text) => !!text)\n .join('')\n const ptDiffMatchString = ptDiffChildren\n const controlString = ptDiffMatchString.slice(\n 0,\n Math.max(0, ptDiffMatchString.indexOf(seg.text) + seg.text.length),\n )\n const toTest = controlString.slice(0, Math.max(0, controlString.indexOf(seg.text)))\n const marks: string[] = []\n const matches = [...toTest.matchAll(markRegex)]\n matches.forEach((match) => {\n const sym = match[0]\n const set = TextSymbols.DECORATOR_SYMBOLS.concat(TextSymbols.ANNOTATION_SYMBOLS).find(\n (aSet) => aSet.indexOf(sym) > -1,\n )\n if (set) {\n const isMarkStart = sym === set[0]\n const mark: string =\n decoratorTypes[\n isMarkStart ? decoratorSymbolsStart.indexOf(sym) : decoratorSymbolsEnd.indexOf(sym)\n ]?.value || sym // Annotation marks are uniqe anyway\n const notClosed = toTest.lastIndexOf(sym) > toTest.lastIndexOf(set[1])\n if (notClosed) {\n marks.push(mark)\n }\n }\n })\n marksChanged = xor(activeMarks, uniq(marks))\n // Only for decorators, annotations are taken care of elsewhere\n if (\n marksAnnotation &&\n marksChanged.length > 0 &&\n marksChanged.some((m) => isDecorator(m, spanSchemaType))\n ) {\n returned = (\n <DiffCard\n key={`diffcard-annotation-${segIndex}-${marksChanged.join('-')}`}\n annotation={marksAnnotation}\n as={'ins'}\n tooltip={{\n description: t('changes.portable-text.changed-formatting'),\n }}\n >\n {returned}\n </DiffCard>\n )\n }\n return returned\n}\n\nfunction isEmptyTextChange(block: PortableTextTextBlock, diff: PortableTextDiff) {\n return (\n block.children.length === 1 &&\n block.children[0]._type === 'span' &&\n typeof block.children[0].text === 'string' &&\n block.children[0].text === '' &&\n diff.origin.action !== 'unchanged'\n )\n}\n\nfunction defineRenderChild({\n block,\n diff,\n inlineObjects,\n schemaType,\n t,\n}: {\n block: any\n diff: any\n inlineObjects: any\n schemaType: any\n t: any\n}) {\n return (ptDiffChild: PortableTextChild) => {\n const spanSchemaType = getChildSchemaType(schemaType.fields, ptDiffChild) as SpanSchemaType\n let decoratorTypes: {title: string; value: string}[] = []\n if (spanSchemaType) {\n decoratorTypes = getDecorators(spanSchemaType)\n const childrenDiff = diff.fields.children as ArrayDiff\n const segments =\n (childrenDiff.items[0].diff &&\n childrenDiff.items[0].diff.type === 'object' &&\n childrenDiff.items[0].diff.fields.text.type === 'string' &&\n childrenDiff.items[0].diff.fields.text.segments) ||\n []\n const returnedChildren: ReactNode[] = []\n const annotationSegments: Record<string, ReactNode[]> = {}\n // Special case for new empty PT-block (single span child with empty text)\n if (\n isEmptyTextChange(block, diff) &&\n (diff.origin.action === 'added' || diff.origin.action === 'removed')\n ) {\n const textDiff = findChildDiff(diff.origin, block.children[0]) || diff.origin\n if (textDiff && textDiff.action !== 'unchanged') {\n return (\n <DiffCard\n key={`empty-block-${block._key}`}\n annotation={textDiff.annotation}\n as={textDiff.action === 'removed' ? 'del' : 'ins'}\n tooltip={{\n description: t('changes.portable-text.empty-text', {context: textDiff.action}),\n }}\n >\n <span>{TextSymbols.EMPTY_BLOCK_SYMBOL}</span>\n </DiffCard>\n )\n }\n }\n // Run through all the segments from the PortableTextDiff\n let childToIndex = -1\n let segIndex = -1\n const activeAnnotations: {mark: string; object: PortableTextChild; symbols: string[]}[] = []\n let endedAnnotation: {mark: string; object: PortableTextChild; symbols: string[]} | undefined\n const allMarkDefs = getAllMarkDefs(diff.origin)\n segments.forEach((seg) => {\n segIndex++\n const isInline = TextSymbols.INLINE_SYMBOLS.includes(seg.text)\n const isMarkStart = allSymbolsStart.includes(seg.text)\n const isMarkEnd = allSymbolsEnd.includes(seg.text)\n const isChildStart = seg.text === TextSymbols.CHILD_SYMBOL\n const isRemoved = seg.action === 'removed'\n if (isChildStart) {\n if (!isRemoved) {\n childToIndex++\n }\n // No output\n } else if (isMarkStart || isMarkEnd) {\n if (isMarkStart && annotationSymbolsStart.includes(seg.text)) {\n const object = allMarkDefs[annotationSymbolsStart.indexOf(seg.text)]\n if (object) {\n activeAnnotations.push({\n mark: object._key,\n symbols: [seg.text, annotationSymbolsEnd[annotationSymbolsStart.indexOf(seg.text)]],\n object,\n })\n }\n }\n if (isMarkEnd && annotationSymbolsEnd.includes(seg.text)) {\n endedAnnotation = activeAnnotations.pop()\n }\n // No output\n } else if (isInline) {\n // Render inline object\n const indexOfSymbol = TextSymbols.INLINE_SYMBOLS.findIndex((sym) => sym === seg.text)\n const key = inlineObjects[indexOfSymbol]?._key\n const originChild = inlineObjects[indexOfSymbol]\n if (key) {\n const objectSchemaType = getChildSchemaType(schemaType.fields, originChild)\n const objectDiff = findChildDiff(diff.origin, originChild)\n returnedChildren.push(\n <InlineObject\n key={`inline-object-${originChild._key}`}\n object={originChild}\n path={[{_key: block._key}, 'children', {_key: originChild._key}]}\n diff={objectDiff}\n schemaType={objectSchemaType}\n />,\n )\n }\n } else if (seg.text) {\n // TODO: find a better way of getting a removed child\n const getChildFromFromValue = () =>\n diff.origin.fromValue?.children.find(\n (cld: any) => cld.text && cld.text.match(escapeRegExp(seg.text)),\n ) as PortableTextChild\n const child = block.children[childToIndex] || getChildFromFromValue()\n const childDiff = child && findSpanDiffFromChild(diff.origin, child)\n if (!child) {\n throw new Error('Could not find child')\n }\n const textDiff = childDiff?.fields?.text\n ? (childDiff?.fields?.text as StringDiff)\n : undefined\n const text = (\n <Text\n key={`text-${child._key}-${segIndex}`}\n diff={textDiff}\n path={[{_key: block._key}, 'children', {_key: child._key}]}\n childDiff={childDiff}\n segment={seg}\n >\n {renderTextSegment({\n diff,\n child,\n decoratorTypes,\n seg,\n segIndex,\n spanSchemaType,\n t,\n })}\n </Text>\n )\n\n // Render annotations text changes within the annotation child\n if (activeAnnotations.length > 0) {\n activeAnnotations.forEach((active) => {\n annotationSegments[active.mark] = annotationSegments[active.mark] || []\n annotationSegments[active.mark].push(text)\n })\n }\n if (endedAnnotation) {\n const key = `annotation-${endedAnnotation.object._key}`\n const lastChild = returnedChildren[returnedChildren.length - 1] as React.JSX.Element\n if (lastChild && lastChild.key !== key) {\n const annotationDiff = findAnnotationDiff(diff.origin, endedAnnotation.mark)\n const objectSchemaType =\n endedAnnotation &&\n spanSchemaType.annotations &&\n spanSchemaType.annotations.find(\n (type) =>\n endedAnnotation &&\n endedAnnotation.object &&\n type.name === endedAnnotation.object._type,\n )\n returnedChildren.push(\n <Annotation\n key={key}\n object={endedAnnotation.object}\n diff={annotationDiff}\n path={[{_key: block._key}, 'children', {_key: child._key}]}\n schemaType={objectSchemaType}\n >\n <>{annotationSegments[endedAnnotation.mark]}</>\n </Annotation>,\n )\n }\n // delete annotationSegments[endedAnnotation.mark]\n endedAnnotation = undefined\n }\n if (activeAnnotations.length === 0) {\n returnedChildren.push(text)\n }\n } // end if seg.text\n })\n return <div key={block._key}>{returnedChildren}</div>\n }\n throw new Error(\"'span' schemaType not found\")\n }\n}\n","import {useMemo} from 'react'\n\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {PortableText} from './components/PortableText'\nimport {createPortableTextDiff} from './helpers'\n\nexport const PTDiff: DiffComponent<ObjectDiff> = (props) => {\n const {diff, schemaType} = props\n\n const ptDiff = useMemo(() => createPortableTextDiff(diff, schemaType), [diff, schemaType])\n\n return (\n <div data-diff-action={diff.action}>\n <PortableText diff={ptDiff} schemaType={schemaType} />\n </div>\n )\n}\n","import {type Reference} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {Preview} from '../../../../preview/components/Preview'\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst ReferenceWrapper = styled.div`\n word-wrap: break-word;\n`\n\nexport const ReferencePreview: FieldPreviewComponent<Reference> = ({value, schemaType}) => (\n <Box as={ReferenceWrapper} padding={2}>\n <Preview schemaType={schemaType} value={value} layout=\"default\" />\n </Box>\n)\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type ReferenceDiff} from '../../../types'\nimport {ReferencePreview} from '../preview/ReferencePreview'\n\nexport const ReferenceFieldDiff: DiffComponent<ReferenceDiff> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n align=\"center\"\n diff={diff}\n layout=\"grid\"\n path=\"_ref\"\n previewComponent={ReferencePreview}\n schemaType={schemaType}\n />\n )\n}\n","import {type Slug} from '@sanity/types'\nimport {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst SlugWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n white-space: pre-wrap;\n`\n\nexport const SlugPreview: FieldPreviewComponent<Slug> = (props) => {\n const {value} = props\n\n return (\n <Box as={SlugWrapper} paddingX={2} paddingY={1}>\n {value.current}\n </Box>\n )\n}\n","import {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {type DiffComponent, type ObjectDiff} from '../../../types'\nimport {SlugPreview} from '../preview/SlugPreview'\n\ninterface Slug {\n current?: string\n}\n\nexport const SlugFieldDiff: DiffComponent<ObjectDiff<Slug>> = ({diff, schemaType}) => {\n return (\n <DiffFromTo\n layout=\"inline\"\n diff={diff}\n schemaType={schemaType}\n previewComponent={SlugPreview}\n />\n )\n}\n","import {Card, rem, Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type StringDiff, type StringDiffSegment} from '../../types'\nimport {DiffCard} from './DiffCard'\n\nconst RoundedCard = styled.span`\n border-radius: ${({theme}) => rem(theme.sanity.radius[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n`\n\nconst ChangeSegment = styled(Text)`\n &:not([hidden]) {\n display: inline;\n line-height: calc(1.25em + 2px);\n }\n\n &:hover {\n background-color: none !important;\n background-image: linear-gradient(\n to bottom,\n var(--card-bg-color) 0,\n var(--card-bg-color) 33.333%,\n currentColor 33.333%,\n currentColor 100%\n );\n background-size: 1px 3px;\n background-repeat: repeat-x;\n background-position-y: bottom;\n padding-bottom: 3px;\n box-shadow: 0 0 0 1px var(--card-bg-color);\n z-index: 1;\n }\n`\n\n/** @internal */\nexport function DiffStringSegment(props: {segment: StringDiffSegment}): React.JSX.Element {\n const {segment} = props\n const {text} = segment\n const {t} = useTranslation()\n\n if (segment.action === 'added') {\n return (\n <DiffCard\n annotation={segment.annotation}\n disableHoverEffect\n tooltip={{description: t('changes.added-label')}}\n as={RoundedCard}\n >\n <ChangeSegment as=\"ins\" style={{textDecoration: 'none'}}>\n {text}\n </ChangeSegment>\n </DiffCard>\n )\n }\n\n if (segment.action === 'removed') {\n return (\n <DiffCard\n annotation={segment.annotation}\n as={RoundedCard}\n disableHoverEffect\n tooltip={{description: t('changes.removed-label')}}\n >\n <ChangeSegment as=\"del\">{text}</ChangeSegment>\n </DiffCard>\n )\n }\n\n return (\n <Card as=\"span\" radius={2} style={{display: 'inline'}}>\n {text}\n </Card>\n )\n}\n\n/** @internal */\nexport function DiffString(props: {diff: StringDiff}) {\n const {diff} = props\n\n return (\n <>\n {(diff.segments || []).map((segment, segmentIndex) => (\n <DiffStringSegment\n // oxlint-disable-next-line no-array-index-key\n key={segmentIndex}\n segment={segment}\n />\n ))}\n </>\n )\n}\n","import {Box} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {type FieldPreviewComponent} from '../../../preview/types'\n\nconst StringWrapper = styled.div`\n display: inline-block;\n word-break: break-all;\n white-space: pre-wrap;\n`\n\nexport const StringPreview: FieldPreviewComponent<string> = (props) => {\n const {value} = props\n\n return (\n <Box as={StringWrapper} paddingX={2} paddingY={1}>\n {value}\n </Box>\n )\n}\n","import {styled} from 'styled-components'\n\nimport {DiffFromTo} from '../../../diff/components/DiffFromTo'\nimport {DiffString} from '../../../diff/components/DiffString'\nimport {type DiffComponent, type StringDiff} from '../../../types'\nimport {StringPreview} from '../preview/StringPreview'\n\nconst StringWrapper = styled.div`\n white-space: pre-wrap;\n word-wrap: break-word;\n`\n\nexport const StringFieldDiff: DiffComponent<StringDiff> = ({diff, schemaType}) => {\n const {options} = schemaType\n\n if (options?.list) {\n // When the string is considered to be an \"enum\", don't show individual\n // string segment changes, rather treat is as a \"from -> to\" diff\n return <DiffFromTo diff={diff} previewComponent={StringPreview} schemaType={schemaType} />\n }\n\n return (\n <StringWrapper>\n <DiffString diff={diff} />\n </StringWrapper>\n )\n}\n","import {type DiffComponent, type DiffComponentOptions} from '../../types'\nimport {BooleanFieldDiff} from '../../types/boolean/diff/BooleanFieldDiff'\nimport {DatetimeFieldDiff} from '../../types/datetime/diff/DatetimeFieldDiff'\nimport {FileFieldDiff} from '../../types/file/diff/FileFieldDiff'\nimport {ImageFieldDiff} from '../../types/image/diff/ImageFieldDiff'\nimport {NumberFieldDiff} from '../../types/number/diff/NumberFieldDiff'\nimport {PTDiff} from '../../types/portableText/diff/PTDiff'\nimport {ReferenceFieldDiff} from '../../types/reference/diff/ReferenceFieldDiff'\nimport {SlugFieldDiff} from '../../types/slug/diff/SlugFieldDiff'\nimport {StringFieldDiff} from '../../types/string/diff/StringFieldDiff'\n\nexport const defaultComponents: Record<\n string,\n DiffComponent<any> | DiffComponentOptions<any> | undefined\n> = {\n block: PTDiff,\n boolean: {component: BooleanFieldDiff, showHeader: false},\n date: DatetimeFieldDiff,\n datetime: DatetimeFieldDiff,\n file: FileFieldDiff,\n image: ImageFieldDiff,\n number: NumberFieldDiff,\n reference: ReferenceFieldDiff,\n crossDatasetReference: ReferenceFieldDiff,\n slug: SlugFieldDiff,\n string: StringFieldDiff,\n}\n","import {type ArraySchemaType, type ObjectSchemaType, type SchemaType} from '@sanity/types'\nimport {type ComponentType} from 'react'\n\nimport {diffResolvers} from '../../TODO'\nimport {type Diff, type DiffComponent, type DiffComponentOptions} from '../../types'\nimport {defaultComponents} from './defaultComponents'\n\n/** @internal */\nexport function resolveDiffComponent<D extends Diff = any>(\n type: SchemaType,\n parentSchemaType?: ArraySchemaType | ObjectSchemaType,\n): DiffComponent<D> | DiffComponentOptions | undefined {\n let itType: SchemaType | undefined = type\n\n while (itType) {\n const resolved =\n itType?.components?.diff ||\n tryResolve(itType, parentSchemaType) ||\n defaultComponents[itType.name]\n\n if (resolved) {\n return resolved as DiffComponent<any>\n }\n\n itType = itType.type\n }\n\n const isDateType = ['date', 'datetime'].includes(type.name)\n\n // The date and datetime has the same jsonType as string, but we want to use\n // a different default component for them. Therefore, we use the name of the\n // type instead of the jsonType for these types.\n const defaultComponentKey = isDateType ? type.name : type.jsonType\n\n return defaultComponents[defaultComponentKey]\n}\n\nfunction tryResolve(\n schemaType: SchemaType,\n parentSchemaType?: ArraySchemaType | ObjectSchemaType,\n): DiffComponent<any> | DiffComponentOptions | undefined {\n const resolvers = diffResolvers\n\n let resolved: ComponentType | DiffComponentOptions | undefined\n\n for (const resolver of resolvers) {\n if (typeof resolver !== 'function') {\n console.error('Diff component resolver is not a function: ', resolver)\n continue\n }\n\n resolved = resolver({schemaType, parentSchemaType})\n\n if (resolved) {\n return resolved as DiffComponent\n }\n }\n return undefined\n}\n","import {isArraySchemaType, type SchemaType} from '@sanity/types'\nimport get from 'lodash-es/get.js'\n\nexport function getOption(type: SchemaType, optionName: string) {\n return get(type.options, optionName)\n}\n\nconst PSEUDO_OBJECTS = ['array', 'file', 'image', 'reference', 'slug']\nconst HIDDEN_FIELDS = ['asset', 'crop', 'hotspot', '_ref', '_weak', 'media']\nconst NO_LEVEL_LAYOUTS = ['tags']\nconst NO_LEVEL_TYPES = ['slug']\n\nexport function getTypeChain(type: SchemaType | undefined, visited: Set<SchemaType>): SchemaType[] {\n if (!type) return []\n if (visited.has(type)) return []\n\n visited.add(type)\n\n const next = type.type ? getTypeChain(type.type, visited) : []\n return [type, ...next]\n}\n\nexport function getFieldLevel(schemaType: SchemaType, currentLevel: number) {\n return isArraySchemaType(schemaType)\n ? getArrayFieldLevel(schemaType, currentLevel)\n : getObjectFieldLevel(schemaType, currentLevel)\n}\n\nfunction getObjectFieldLevel(schemaType: SchemaType, currentLevel: number): number {\n const {type, options} = schemaType\n const typeIfRelevant = asType(type, PSEUDO_OBJECTS)\n const fields = schemaType?.jsonType === 'object' ? schemaType.fields : undefined\n\n const typeName = typeIfRelevant?.name || ''\n\n if (NO_LEVEL_TYPES.includes(typeName)) {\n return 0\n }\n\n const isPseudoObject = PSEUDO_OBJECTS.includes(typeName)\n const hasVisibleFields = (fields?.filter((f) => !HIDDEN_FIELDS.includes(f.name)).length ?? 0) > 0\n const hasListOptions = (options?.list?.length ?? 0) > 0\n\n if (hasVisibleFields || hasListOptions || !isPseudoObject) {\n return currentLevel\n }\n\n return 0\n}\n\nfunction getArrayFieldLevel(schemaType: SchemaType, currentLevel: number): number {\n const {options} = schemaType\n\n const hasListOptions = (options?.list || [])?.length > 0\n const isNoLevelLayout = NO_LEVEL_LAYOUTS.includes(options?.layout || '')\n\n if (hasListOptions && !isNoLevelLayout) {\n return currentLevel\n }\n\n return 0\n}\n\nfunction asType(\n schemaType: SchemaType | undefined,\n asOneOfTypes: string[],\n): SchemaType | undefined {\n if (schemaType?.name && asOneOfTypes.includes(schemaType?.name)) {\n return schemaType\n }\n if (!schemaType) {\n return undefined\n }\n return asType(schemaType.type, asOneOfTypes)\n}\n","import {isKeyedObject, type KeyedObject, type Path, type PathSegment} from '@sanity/types'\nimport {toString} from '@sanity/util/paths'\n\nimport {isRecord} from '../../util/isRecord'\n\n/**\n * @internal\n */\nexport interface PathSegmentWithType {\n segment: number | string\n type: string\n}\n\n/**\n * @internal\n */\nexport type PathWithTypes = PathSegmentWithType[]\n\n/**\n * @internal\n */\nexport interface FlattenOptions {\n /**\n * When compact mode is switched on, object and array fields will not be yielded. They will still\n * be iterated, and their descendant nodes that are primitive types will be yielded.\n */\n compact?: boolean\n}\n\nexport type FlattenedPair = [\n flatPath: string,\n value: unknown,\n context: {\n /**\n * The node's path as an array.\n */\n flatPathArray: Path\n\n /**\n * The node's path as an array, enriched with the content type found at each segment.\n */\n flatPathArrayWithTypes: PathWithTypes\n },\n]\n\n/**\n * Flatten a Sanity object, yielding a `[flatPath: string, value: unknown]` tuple for every\n * descendant node, found at any depth.\n *\n * This is very similar to `Object.entries`, but it flattens the object and produces a JSONMatch\n * path that reflects the full path of each descendant node.\n *\n * Given the object:\n *\n * ```ts\n * {\n * x: {\n * y: 'z'\n * }\n * }\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * ['x', { y: 'z' }] // Skipped when operating in compact mode.\n * ['x.y', 'z']\n * ```\n *\n * @internal\n */\nexport function* flattenObject(\n object: Record<string, unknown>,\n {compact = false}: FlattenOptions = {},\n path: Path = [],\n pathWithTypes: PathWithTypes = [],\n): Generator<FlattenedPair> {\n if (path.length !== 0 && !compact) {\n yield [\n toString(path),\n object,\n {\n flatPathArray: path,\n flatPathArrayWithTypes: pathWithTypes,\n },\n ]\n }\n\n for (const [key, value] of Object.entries(object)) {\n const currentPath = path.concat(key)\n\n const currentPathWithTypes = pathWithTypes.concat({\n segment: key,\n type: readType(value),\n })\n\n if (Array.isArray(value)) {\n yield* flattenArray(value, {compact}, currentPath, currentPathWithTypes)\n continue\n }\n\n if (typeof value === 'object' && value !== null) {\n if (isRecord(value)) {\n yield* flattenObject(value, {compact}, currentPath, currentPathWithTypes)\n }\n continue\n }\n\n yield [\n toString(currentPath),\n value,\n {\n flatPathArray: currentPath,\n flatPathArrayWithTypes: currentPathWithTypes,\n },\n ]\n }\n}\n\n/**\n * Flatten a Sanity array, yielding a `[flatPath: string, value: unknown]` tuple for every\n * descendant node, found at any depth.\n *\n * This is very similar to `Array.prototype.entries`, but it flattens the array and produces a\n * JSONMatch path that reflects the full path of each descendant node.\n *\n * Given an array of primitives:\n *\n * ```ts\n * ['a', 'b']\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * ['[0]', 'a']\n * ['[1]', 'b']\n * ```\n *\n * Given an array of objects:\n *\n * ```ts\n * [\n * { _key: 'a' },\n * { _key: 'b' },\n * ]\n * ```\n *\n * This generator will yield:\n *\n * ```ts\n * [\n * '[_key==\"a\"]',\n * { '_key': 'a' },\n * ]\n * [\n * '[_key==\"a\"]._key',\n * 'a',\n * ]\n * [\n * '[_key==\"b\"]',\n * { '_key': 'b' },\n * ]\n * [\n * '[_key==\"b\"]._key',\n * 'b',\n * ]\n * ```\n *\n * @internal\n */\nexport function* flattenArray(\n array: (KeyedObject | string | number | boolean | null | undefined)[],\n {compact = false}: FlattenOptions = {},\n path: Path = [],\n pathWithTypes: PathWithTypes = [],\n): Generator<FlattenedPair> {\n if (path.length !== 0 && !compact) {\n yield [\n toString(path),\n array,\n {\n flatPathArray: path,\n flatPathArrayWithTypes: pathWithTypes,\n },\n ]\n }\n\n for (const [index, value] of array.entries()) {\n if (Array.isArray(value)) {\n // Arrays cannot be direct children of arrays.\n continue\n }\n\n if (typeof value === 'object' && value !== null) {\n if (isKeyedObject(value)) {\n yield* flattenObject(\n value,\n {compact},\n path.concat({_key: value._key}),\n pathWithTypes.concat({\n segment: value._key,\n type: readType(value),\n }),\n )\n }\n continue\n }\n\n const currentPath = path.concat(index)\n\n const currentPathWithTypes = pathWithTypes.concat({\n segment: index,\n type: readType(value),\n })\n\n yield [\n toString(currentPath),\n value,\n {\n flatPathArray: currentPath,\n flatPathArrayWithTypes: currentPathWithTypes,\n },\n ]\n }\n}\n\nfunction readType(value: unknown): string {\n if (isRecord(value) && '_type' in value && typeof value._type === 'string') {\n return value._type\n }\n\n if (Array.isArray(value)) {\n return 'array'\n }\n\n return typeof value\n}\n\n/**\n * @internal\n */\nexport function normalizePathSegment(\n segment: PathSegment | PathSegmentWithType,\n): PathSegmentWithType | {segment: PathSegment; type?: never} {\n if (typeof segment === 'object' && 'type' in segment) {\n return segment\n }\n\n return {\n segment,\n }\n}\n","import {\n isArraySchemaType,\n isObjectSchemaType,\n type PathSegment,\n type SchemaType,\n} from '@sanity/types'\n\nimport {getTypeChain} from '../../form/studio/inputResolver/helpers'\nimport {normalizePathSegment, type PathSegmentWithType} from './flatten'\n\n/**\n * Extract the schema types that lead to the provided path.\n *\n * For each segment of the provided path, the corresponding schema type is yielded.\n *\n * If any path segment is ambiguous (e.g. part of a polymorphic array), a `PathSegmentWithType`\n * segment must be provided instead. The introspection process will select the schema type that\n * matches the specified type.\n *\n * @internal\n */\nexport function* introspectSchema(\n schemaType: SchemaType | undefined,\n path: (PathSegment | PathSegmentWithType)[],\n cache: WeakMap<SchemaType, Record<string, SchemaType>> = new WeakMap(),\n fullyQualifiedPath: (PathSegment | PathSegmentWithType)[] = [],\n): Generator<SchemaType> {\n const [head, ...tail] = path\n\n if (typeof schemaType === 'undefined') {\n return\n }\n\n if (typeof head === 'undefined') {\n return\n }\n\n const nextFullyQualifiedPath = fullyQualifiedPath.concat(head)\n const cacheKey = JSON.stringify(nextFullyQualifiedPath)\n let cachedSchemaType = cache.get(schemaType)\n\n if (typeof cachedSchemaType === 'undefined') {\n cachedSchemaType = {}\n cache.set(schemaType, cachedSchemaType)\n }\n\n const cachedPath = cachedSchemaType?.[cacheKey]\n const {segment: headSegment, type: headType} = normalizePathSegment(head)\n\n let headSchemaType: SchemaType | undefined\n\n if (typeof cachedPath !== 'undefined') {\n headSchemaType = cachedPath\n } else {\n if (isObjectSchemaType(schemaType)) {\n headSchemaType = schemaType.fields.find((field) => field.name === headSegment)?.type\n }\n\n if (isArraySchemaType(schemaType)) {\n if (schemaType.of.length === 0) {\n throw new Error(\n `Array schema at segment \\`${JSON.stringify(headSegment)}\\` has no constituent types`,\n )\n }\n\n if (schemaType.of.length === 1) {\n headSchemaType = schemaType.of[0]\n } else {\n if (typeof headType === 'undefined') {\n throw new Error(\n `No type hint provided for polymorphic array segment: \\`${JSON.stringify(headSegment)}\\``,\n )\n }\n\n headSchemaType = schemaType.of.find((type) => {\n const typeChain = getTypeChain(type, new Set())\n return typeChain.some(({name}) => name === headType)\n })\n }\n }\n\n if (typeof headSchemaType === 'undefined') {\n throw new Error(`Could not resolve schema segment: \\`${JSON.stringify(headSegment)}\\``)\n }\n\n cachedSchemaType[cacheKey] = headSchemaType\n }\n\n yield headSchemaType\n yield* introspectSchema(headSchemaType, tail, cache, nextFullyQualifiedPath)\n}\n","import {\n isArrayOfObjectsSchemaType,\n isArrayOfPrimitivesSchemaType,\n isObjectSchemaType,\n} from '@sanity/types'\n\nimport {\n type ArrayOfPrimitivesFormNode,\n type ArrayOfObjectsFormNode,\n type BaseFormNode,\n type ObjectFormNode,\n} from './nodes'\n\n/** @internal */\nexport function isObjectFormNode(formNode: BaseFormNode): formNode is ObjectFormNode {\n return isObjectSchemaType(formNode.schemaType)\n}\n/** @internal */\nexport function isArrayOfObjectsFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfObjectsFormNode {\n return isArrayOfObjectsSchemaType(formNode.schemaType)\n}\n\n/** @internal */\nexport function isArrayOfPrimitivesFormNode(\n formNode: BaseFormNode,\n): formNode is ArrayOfPrimitivesFormNode {\n return isArrayOfPrimitivesSchemaType(formNode.schemaType)\n}\n","import {type Path} from '@sanity/types'\nimport {type Observable, concatWith, filter, from, map, merge, mergeMap, of, switchMap} from 'rxjs'\n\nimport {\n isArrayOfObjectsFormNode,\n isArrayOfPrimitivesFormNode,\n isObjectFormNode,\n} from '../../form/store/types/asserters'\nimport {\n type ArrayOfObjectsItemMember,\n type ArrayOfObjectsMember,\n type ArrayOfPrimitivesItemMember,\n type ArrayOfPrimitivesMember,\n type FieldMember,\n} from '../../form/store/types/members'\nimport {type BaseFormNode, type ObjectArrayFormNode} from '../../form/store/types/nodes'\nimport {type FormState} from '../../form/store/useFormState'\n\ntype Member = FieldMember | ArrayOfObjectsItemMember | ArrayOfPrimitivesItemMember\n\ntype MemberAtPath = [path: Path, member: Member]\n\ninterface Context {\n groups?: FormState['groups']\n members: FormState['_allMembers'] | ArrayOfObjectsMember[] | ArrayOfPrimitivesMember[]\n}\n\n/**\n * Read form members in the order they appear, accounting for groups. If a field\n * appears in multiple groups, it'll be emitted each time it appears.\n *\n * Each member is emitted as a `[path, member]` tuple.\n *\n * This can be used in operations that derive state based on the way form\n * members are presented in the document editor. For example, to create a\n * navigable outline of the form.\n *\n * @internal\n */\nexport function readOrderedFormMembers({groups, members = []}: Context): Observable<MemberAtPath> {\n const hasGroups = typeof groups !== 'undefined'\n\n const grouplessMembers = from(members).pipe(\n filter(isFieldMember),\n filter(({groups: memberGroups}) => {\n if (typeof groups === 'undefined') {\n return true\n }\n\n return !groups.some((group) => memberGroups.some((memberGroup) => memberGroup === group.name))\n }),\n )\n\n const source = hasGroups\n ? from(groups).pipe(\n switchMap((group) =>\n from(members).pipe(\n filter(isFieldMember),\n filter(({groups: memberGroups}) => memberGroups.includes(group.name)),\n ),\n ),\n )\n : from(members)\n\n return merge(grouplessMembers, source).pipe(\n filter(isFieldOrArrayMember),\n map((member) => {\n const subject = selectSubject(member)\n return [subject.path, member]\n }),\n mergeMap<MemberAtPath, Observable<MemberAtPath>>((memberAtPath) => {\n const [, member] = memberAtPath\n const subject = selectSubject(member)\n\n if (isObjectFormNode(subject)) {\n return of(memberAtPath).pipe(\n concatWith(\n readOrderedFormMembers({\n groups: subject.groups,\n members: subject._allMembers,\n }),\n ),\n )\n }\n\n if (isArrayOfObjectsFormNode(subject) || isArrayOfPrimitivesFormNode(subject)) {\n return of(memberAtPath).pipe(\n concatWith(\n readOrderedFormMembers({\n members: subject.members,\n }),\n ),\n )\n }\n\n return of(memberAtPath)\n }),\n )\n}\n\nfunction selectSubject(member: Member): BaseFormNode | ObjectArrayFormNode {\n return member.kind === 'field' ? member.field : member.item\n}\n\nfunction isFieldMemberLike(maybeFieldMemberLike: unknown): maybeFieldMemberLike is {kind: string} {\n return (\n typeof maybeFieldMemberLike === 'object' &&\n maybeFieldMemberLike !== null &&\n 'kind' in maybeFieldMemberLike &&\n typeof maybeFieldMemberLike.kind === 'string'\n )\n}\n\nfunction isFieldMember(maybeFieldMember: unknown): maybeFieldMember is FieldMember {\n return isFieldMemberLike(maybeFieldMember) && maybeFieldMember.kind === 'field'\n}\n\nfunction isFieldOrArrayMember(\n maybeFieldOrArrayMember: unknown,\n): maybeFieldOrArrayMember is FieldMember | ArrayOfObjectsItemMember | ArrayOfPrimitivesItemMember {\n return (\n isFieldMemberLike(maybeFieldOrArrayMember) &&\n ['field', 'item'].includes(maybeFieldOrArrayMember.kind)\n )\n}\n","import {\n type ObjectSchemaType,\n type PathSegment,\n type SchemaType,\n isArrayOfPrimitivesSchemaType,\n isArrayOfStringsSchemaType,\n isArraySchemaType,\n isObjectSchemaType,\n} from '@sanity/types'\nimport {fromString, toString} from '@sanity/util/paths'\nimport {\n type Observable,\n catchError,\n combineLatest,\n filter,\n from,\n map,\n mergeMap,\n of,\n reduce,\n switchMap,\n toArray,\n} from 'rxjs'\n\nimport {resolveDiffComponent} from '../field/diff/resolve/resolveDiffComponent'\nimport {type DiffComponent, type DiffComponentOptions} from '../field/types'\nimport {type FormState} from '../form/store/useFormState'\nimport {\n type DivergenceNavigatorState,\n type ReachableDivergence,\n type ReachableDivergenceAtPath,\n} from './divergenceNavigator'\nimport {type Divergence} from './readDocumentDivergences'\nimport {introspectSchema} from './utils/introspectSchema'\nimport {readOrderedFormMembers} from './utils/readOrderedFormMembers'\n\n/**\n * Transpose a collated set of divergences onto a given schema type.\n *\n * This process:\n *\n * - Omits divergences that occur at paths missing from the schema.\n * - Omits divergences that descend \"composite\" nodes:\n * - Nodes that have a dedicated diff component, such as references.\n * - Nodes whose descendants have *all* been unset.\n * - Omits unaddressable divergences, unless they affect \"composite\" nodes.\n * - Resolves each divergence's diff component.\n * - Orders divergences to match the way the form renders them.\n *\n * @internal\n */\nexport function transposeSchema(\n divergences: Record<string, Divergence>,\n schemaType: ObjectSchemaType,\n formState: Pick<FormState, 'groups' | '_allMembers'>,\n): Observable<{\n divergences: ReachableDivergenceAtPath[]\n divergencesByNode: DivergenceNavigatorState['divergencesByNode']\n}> {\n return readOrderedFormMembers({groups: formState.groups, members: formState._allMembers})\n .pipe(\n map(([path]) => {\n const pathString = toString(path)\n const divergenceAtPath = divergences[pathString]\n return [pathString, divergenceAtPath] satisfies [path: string, divergence: Divergence]\n }),\n filter(([, divergence]) => typeof divergence !== 'undefined'),\n filter(([, divergence]) => divergence.status === 'unresolved'),\n switchMap(([path, divergence]) =>\n combineLatest({\n path: of(path),\n divergence: of(divergence),\n pathSchemaTypes: from(\n introspectSchema(\n schemaType,\n divergence.snapshots.subjectHead?.pathWithTypes ??\n divergence.snapshots.upstreamHead?.pathWithTypes ??\n fromString(path),\n ),\n ).pipe(\n toArray(),\n // Divergences can affect fields that aren't present in the schema. In this scenario,\n // `introspectSchema` throws an error. This behaviour is expected, because divergences are\n // computed by comparing raw document data.\n //\n // When this occurs, the divergence is x and a warning is logged.\n catchError((error) => {\n console.warn(error)\n return of([])\n }),\n ),\n }),\n ),\n filter(isSupportedNode),\n )\n .pipe(\n reduce<\n {\n path: string\n pathSchemaTypes: SchemaType[]\n divergence: Divergence\n },\n Record<string, ReachableDivergence>\n >((transposed, {path, pathSchemaTypes, divergence}) => {\n const pathSegments = fromString(path)\n const divergenceSchemaType = pathSchemaTypes.at(-1)\n\n if (typeof divergenceSchemaType === 'undefined') {\n return transposed\n }\n\n let compositeNodePath: PathSegment[] | undefined\n let compositeNodeDiffComponent: DiffComponentOptions | DiffComponent<any> | undefined\n let compositeNodeSchemaType: SchemaType | undefined\n\n for (let index = 0; index < pathSegments.length; index++) {\n const currentPathSegments = pathSegments.slice(0, index + 1)\n const currentSchemaType = pathSchemaTypes[index]\n const parentSchemaType = pathSchemaTypes[index - 1]\n\n if (typeof currentSchemaType === 'undefined') {\n break\n }\n\n const diffComponent =\n isArraySchemaType(currentSchemaType) || isObjectSchemaType(currentSchemaType)\n ? resolveDiffComponent(\n currentSchemaType,\n isObjectSchemaType(parentSchemaType) || isArraySchemaType(parentSchemaType)\n ? parentSchemaType\n : undefined,\n )\n : undefined\n\n if (typeof diffComponent !== 'undefined') {\n compositeNodePath = currentPathSegments\n compositeNodeDiffComponent = diffComponent\n compositeNodeSchemaType = currentSchemaType\n break\n }\n }\n\n if (\n typeof compositeNodePath !== 'undefined' &&\n typeof compositeNodeSchemaType !== 'undefined' &&\n typeof compositeNodeDiffComponent !== 'undefined'\n ) {\n transposed[toString(compositeNodePath)] ??= {\n ...divergence,\n path: toString(compositeNodePath),\n isComposite: true,\n divergences: [],\n schemaType: compositeNodeSchemaType,\n diffComponent: compositeNodeDiffComponent,\n }\n\n transposed[toString(compositeNodePath)].divergences.push([divergence.path, divergence])\n return transposed\n }\n\n const parentSchemaType = pathSchemaTypes.at(-2)\n\n transposed[path] ??= {\n ...divergence,\n isComposite: false,\n divergences: [],\n schemaType: divergenceSchemaType,\n diffComponent: resolveDiffComponent(\n divergenceSchemaType,\n isObjectSchemaType(parentSchemaType) || isArraySchemaType(parentSchemaType)\n ? parentSchemaType\n : undefined,\n ),\n }\n\n transposed[path].divergences.push([divergence.path, divergence])\n return transposed\n }, {}),\n mergeMap((transposed) => from(Object.entries(transposed))),\n toArray(),\n map((reachableDivergences) => {\n const divergencesByNode = reachableDivergences.reduce<\n DivergenceNavigatorState['divergencesByNode']\n >((state, [path]) => {\n const pathSegments = fromString(path)\n\n for (let index = 0; index < pathSegments.length; index++) {\n const currentPathSegments = pathSegments.slice(0, index + 1)\n const currentPath = toString(currentPathSegments)\n\n state[currentPath] ??= 0\n state[currentPath]++\n }\n\n return state\n }, {})\n\n return {\n divergences: reachableDivergences,\n divergencesByNode,\n }\n }),\n )\n}\n\n/**\n * Check whether the UI is capable of rendering the provided divergence.\n *\n * The UI does not currently support:\n *\n * - Options inside an array list.\n * - Tags inside an array of tags.\n */\nfunction isSupportedNode({\n pathSchemaTypes,\n}: {\n path: string\n divergence: Divergence\n pathSchemaTypes: SchemaType[]\n}): boolean {\n const parentSchemaType = pathSchemaTypes.at(-2)\n\n const isArrayListOption =\n isArrayOfPrimitivesSchemaType(parentSchemaType) &&\n Array.isArray(parentSchemaType?.options?.list)\n\n const isArrayTag =\n (isArrayOfStringsSchemaType(parentSchemaType) &&\n parentSchemaType?.options &&\n parentSchemaType.options.layout === 'tags') ??\n false\n\n return !isArrayListOption && !isArrayTag\n}\n","import {type ObjectSchemaType, type Path, type SchemaType} from '@sanity/types'\nimport {fromString, startsWith, toString} from '@sanity/util/paths'\nimport pick from 'lodash-es/pick.js'\nimport {useCallback, useEffect, useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n type Observable,\n of,\n shareReplay,\n Subject,\n switchScan,\n} from 'rxjs'\n\nimport {type DiffComponent, type DiffComponentOptions} from '../field/types'\nimport {type FormState} from '../form/store/useFormState'\nimport {useWorkspace} from '../studio/workspace'\nimport {type CollatedDocumentDivergencesState} from './collateDocumentDivergences'\nimport {type Divergence, type DivergenceAtPath} from './readDocumentDivergences'\nimport {transposeSchema} from './transposeSchema'\n\n/**\n * A divergence that has been transposed onto a schema type and that can be\n * reached in the document editor.\n *\n * @internal\n */\nexport type ReachableDivergence = Divergence & {\n /**\n * A composite divergence occurs when there is a divergence in a leaf node,\n * but it does not make sense to report it directly.\n *\n * A good example is when a divergence occurs in a reference field. It's not\n * useful to report the `_ref` id change directly, nor does it integrate\n * well with the document editor. Instead, the divergence is reported on the\n * reference field itself.\n *\n * Composite divergences are identified by checking whether they descend a\n * node that has a dedicated diff component.\n */\n isComposite: boolean\n /**\n * All of the divergences this reachable divergence is composed of.\n *\n * To perform an action (e.g. ignore or copy from upstream) on a composite\n * divergence, the action must be performed on all descendant divergences.\n */\n divergences: DivergenceAtPath[]\n diffComponent?: DiffComponent | DiffComponentOptions\n schemaType: SchemaType\n}\n\n/**\n * @internal\n */\nexport type ReachableDivergenceAtPath = [path: string, divergence: ReachableDivergence]\n\n/**\n * @internal\n */\nexport interface DivergenceNavigatorState {\n focusedDivergence: string | undefined\n previousDivergence: string | undefined\n nextDivergence: string | undefined\n state: CollatedDocumentDivergencesState['state']\n upstreamId: string | undefined\n /**\n * For iterating ancestors when copying changes from upstream.\n */\n allDivergences: DivergenceAtPath[]\n /**\n * For paging through all reachable divergences in the document.\n */\n divergences: ReachableDivergenceAtPath[]\n /**\n * For showing a summary of divergences occurring node-by-node, and allowing\n * the editor to focus the first divergence inside a node.\n */\n divergencesByNode: Record<string, number>\n}\n\n/**\n * @internal\n */\nexport interface DivergenceNavigator {\n /**\n * Focus the divergence at the provided path.\n */\n focusDivergence: (path: string) => void\n /**\n * Blur the divergence at the provided path.\n */\n blurDivergence: (path: string) => void\n /**\n * Blur the current focused divergence.\n */\n blurFocusedDivergence: () => void\n /**\n * The current state.\n */\n state: DivergenceNavigatorState\n}\n\ntype Action =\n | {\n type: 'FOCUS'\n context: {\n path: string\n }\n }\n | {\n type: 'BLUR'\n context: {\n path: string\n }\n }\n | {\n type: 'BLUR_FOCUSED'\n context?: never\n }\n | {\n type: 'READ_DIVERGENCES'\n context: {\n divergences: CollatedDocumentDivergencesState\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers'>\n }\n }\n\ninterface DivergenceNavigatorContext {\n divergences: Observable<CollatedDocumentDivergencesState>\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers' | 'value'>\n}\n\ninterface StateContext {\n divergences: CollatedDocumentDivergencesState\n schemaType: ObjectSchemaType\n formState: Pick<FormState, 'groups' | '_allMembers'>\n}\n\n/**\n * Transpose a set of divergences onto the provided schema type, and create the\n * state and functions necessary to render and navigate them.\n *\n * @internal\n */\nexport function useDivergenceNavigator({\n divergences,\n schemaType,\n formState,\n}: DivergenceNavigatorContext): DivergenceNavigator {\n const {\n advancedVersionControl: {enabled: advancedVersionControlEnabled},\n } = useWorkspace()\n\n const dispatch = useMemo(() => new Subject<Action>(), [])\n\n const schemaTypeContext = useMemo(\n () => new BehaviorSubject<ObjectSchemaType | undefined>(undefined),\n [],\n )\n useEffect(() => schemaTypeContext.next(schemaType), [schemaTypeContext, schemaType])\n\n const formStateContext = useMemo(\n () =>\n new BehaviorSubject<Pick<FormState, 'groups' | '_allMembers' | 'value'> | undefined>(\n undefined,\n ),\n [],\n )\n useEffect(() => formStateContext.next(formState), [formStateContext, formState])\n\n const context = useMemo<Observable<StateContext>>(() => {\n if (!advancedVersionControlEnabled) {\n return EMPTY\n }\n\n return combineLatest({\n divergences: divergences,\n schemaType: schemaTypeContext.pipe(filter((value) => typeof value !== 'undefined')),\n formState: formStateContext.pipe(\n filter((value) => typeof value !== 'undefined'),\n // Form state is used to map divergences to fields, and order them to\n // match the order fields and groups are rendered in the document\n // editor.\n //\n // However, form state also encapsulates current value, the focused\n // path, etc. and changes with every change to the displayed document\n // and interaction with the document editor.\n //\n // It's unnecessary to remap divergences every time the displayed\n // document or state, like the focus path, changes. Therefore, the\n // form state is only emitted when the displayed document id changes\n // (e.g. when an editor first opens a document, or when they switch to\n // a different version of a document).\n distinctUntilChanged((previous, current) => previous.value?._id === current.value?._id),\n map((state) => (state ? pick(state, ['groups', '_allMembers']) : state)),\n ),\n })\n }, [advancedVersionControlEnabled, divergences, schemaTypeContext, formStateContext])\n\n const readState = useMemo(() => createStateReducer({dispatch, context}), [dispatch, context])\n\n const focusDivergence: DivergenceNavigator['focusDivergence'] = useCallback(\n (path) => {\n dispatch.next({\n type: 'FOCUS',\n context: {\n path,\n },\n })\n },\n [dispatch],\n )\n\n const blurDivergence: DivergenceNavigator['blurDivergence'] = useCallback(\n (path) => {\n dispatch.next({\n type: 'BLUR',\n context: {\n path,\n },\n })\n },\n [dispatch],\n )\n\n const blurFocusedDivergence: DivergenceNavigator['blurFocusedDivergence'] = useCallback(() => {\n dispatch.next({\n type: 'BLUR_FOCUSED',\n })\n }, [dispatch])\n\n // Kept synchronous: `previousDivergence` / `nextDivergence` are the targets\n // the prev/next buttons pass to `focusDivergence`, so a deferred snapshot\n // could re-focus a stale neighbor instead of advancing during rapid\n // navigation.\n const state = useSyncObservable(readState, {\n focusedDivergence: undefined,\n previousDivergence: undefined,\n nextDivergence: undefined,\n upstreamId: undefined,\n state: 'pending',\n divergences: [],\n allDivergences: [],\n divergencesByNode: {},\n })\n\n return {\n state,\n focusDivergence,\n blurDivergence,\n blurFocusedDivergence,\n }\n}\n\n/**\n * Ensure the `focusedDivergence` path leads to an addressable divergence, and\n * set the previous and next divergence paths.\n *\n * This implementation allows users to cycle through divergences infinitely.\n */\nfunction withAddressablePaths(state: DivergenceNavigatorState): DivergenceNavigatorState {\n const focusedDivergenceIndex = state.divergences.findIndex(\n ([path]) => path === state.focusedDivergence,\n )\n\n return {\n ...state,\n focusedDivergence: focusedDivergenceIndex === -1 ? undefined : state.focusedDivergence,\n previousDivergence:\n typeof state.focusedDivergence === 'undefined'\n ? undefined\n : state.divergences.at(\n (focusedDivergenceIndex - 1 + state.divergences.length) % state.divergences.length,\n )?.[0],\n nextDivergence:\n typeof state.focusedDivergence === 'undefined'\n ? undefined\n : state.divergences.at((focusedDivergenceIndex + 1) % state.divergences.length)?.[0],\n }\n}\n\n/**\n * Check whether the currently focused divergence has been eliminated, or has\n * become resolved. When this occurs, the next divergence will be automatically\n * focused.\n */\nfunction shouldFocusNextDivergence(\n state: DivergenceNavigatorState,\n divergences: ReachableDivergenceAtPath[],\n): boolean {\n if (\n typeof state.focusedDivergence === 'undefined' ||\n typeof state.nextDivergence === 'undefined'\n ) {\n return false\n }\n\n const focusedDivergence = divergences.find(([path]) => path === state.focusedDivergence)?.[1]\n\n const shouldFocusNext =\n typeof focusedDivergence === 'undefined' || focusedDivergence.status === 'resolved'\n\n return shouldFocusNext\n}\n\nfunction createStateReducer({\n dispatch,\n context,\n}: {\n dispatch: Subject<Action>\n context: Observable<StateContext>\n}) {\n return merge(\n dispatch,\n context.pipe(\n map(\n (nextContext) =>\n ({\n type: 'READ_DIVERGENCES',\n context: nextContext,\n }) satisfies Action,\n ),\n ),\n ).pipe(\n switchScan<Action, DivergenceNavigatorState, Observable<DivergenceNavigatorState>>(\n (state, action) => {\n switch (action.type) {\n case 'READ_DIVERGENCES': {\n return transposeSchema(\n action.context.divergences.divergences,\n action.context.schemaType,\n action.context.formState,\n ).pipe(\n map(({divergences, divergencesByNode}) => {\n return withAddressablePaths({\n ...state,\n upstreamId: action.context.divergences.upstreamId,\n state: action.context.divergences.state,\n allDivergences: Object.entries(action.context.divergences.divergences),\n divergences,\n divergencesByNode,\n focusedDivergence: shouldFocusNextDivergence(state, divergences)\n ? state.nextDivergence\n : state.focusedDivergence,\n })\n }),\n )\n }\n case 'FOCUS': {\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: action.context.path,\n }),\n )\n }\n case 'BLUR': {\n if (typeof state.focusedDivergence === 'undefined') {\n return of(state)\n }\n\n if (action.context.path !== state.focusedDivergence) {\n return of(state)\n }\n\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: undefined,\n }),\n )\n }\n case 'BLUR_FOCUSED': {\n return of(\n withAddressablePaths({\n ...state,\n focusedDivergence: undefined,\n }),\n )\n }\n default: {\n return of(state)\n }\n }\n },\n {\n focusedDivergence: undefined,\n previousDivergence: undefined,\n nextDivergence: undefined,\n upstreamId: undefined,\n state: 'pending',\n divergences: [],\n allDivergences: [],\n divergencesByNode: {},\n },\n ),\n shareReplay(1),\n )\n}\n\n/**\n * @internal\n */\nexport function selectDivergenceCount(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): number | undefined {\n return state?.divergencesByNode?.[toString(path)]\n}\n\n/**\n * Select divergence by path.\n *\n * @internal\n */\nexport function selectDivergence(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): ReachableDivergence | undefined {\n if (typeof state === 'undefined') {\n return undefined\n }\n\n return state.divergences\n .filter(([divergencePath]) => divergencePath === toString(path))\n .map(([, divergence]) => divergence)\n .at(0)\n}\n\n/**\n * Select first descendant divergence by path.\n *\n * @internal\n */\nexport function selectFirstDescendantDivergence(\n state: DivergenceNavigatorState | undefined,\n path: Path,\n): ReachableDivergence | undefined {\n return state?.divergences.find(([divergencePath]) =>\n startsWith(path, fromString(divergencePath)),\n )?.[1]\n}\n","import {useSyncObservable} from 'react-rx'\n\nimport {type TargetPerspective} from '../perspective/types'\nimport {type ReleasesReducerState} from '../releases/store/reducer'\nimport {useReleasesStore} from '../releases/store/useReleasesStore'\nimport {getReleaseDocumentIdFromReleaseId} from '../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getVersionFromId, isDraftId} from '../util/draftUtils'\n\ntype Result = Pick<ReleasesReducerState, 'error' | 'state'> & {\n release: TargetPerspective | undefined\n}\n\n/**\n * Determine the `TargetPerspective` (a release or variant name) that\n * corresponds with the provided document id by looking for its owner in the\n * known list of releases.\n *\n * @internal\n */\nexport function useVersionRelease(documentId: string | undefined): Result {\n const {state$: readReleasesState} = useReleasesStore()\n\n const releasesState = useSyncObservable(readReleasesState, {\n releases: new Map(),\n state: 'initialising',\n } satisfies ReleasesReducerState)\n\n if (typeof documentId === 'undefined') {\n return {\n release: undefined,\n state: 'initialising',\n }\n }\n\n const versionId = getVersionFromId(documentId)\n\n if (typeof versionId === 'undefined') {\n return {\n release: isDraftId(documentId) ? 'drafts' : 'published',\n state: 'loaded',\n }\n }\n\n // `release` falls back to the version id if the version is a member of an anonymous bundle.\n return {\n ...releasesState,\n release: releasesState?.releases.get(getReleaseDocumentIdFromReleaseId(versionId)) ?? versionId,\n }\n}\n","import {fromString} from '@sanity/util/paths'\n\nimport {type DivergenceEffect} from './readDocumentDivergences'\n\ninterface SelectEffectContext {\n /**\n * The value being transitioned from.\n */\n fromValue: unknown\n\n /**\n * The value being transitioned to.\n */\n toValue: unknown\n\n /**\n * The upstream node's parent value. This is used to infer whether the node is an array member.\n */\n upstreamParent: unknown\n\n /**\n * The path to the node, as a string.\n */\n path: string\n}\n\n/**\n * Infer the effect type that occurs when transitioning the value `fromValue` to the value `toValue`.\n *\n * @internal\n */\nexport function selectEffect({\n fromValue,\n toValue,\n upstreamParent,\n path,\n}: SelectEffectContext): Exclude<DivergenceEffect, 'move'> {\n if (\n fromString(path).at(-1) === '_type' &&\n typeof fromValue !== 'undefined' &&\n typeof toValue !== 'undefined' &&\n fromValue !== toValue\n ) {\n return 'changeObjectType'\n }\n\n if (typeof fromValue !== 'undefined' && typeof toValue === 'undefined') {\n return 'unset'\n }\n\n if (\n Array.isArray(upstreamParent) &&\n typeof fromValue === 'undefined' &&\n typeof toValue !== 'undefined'\n ) {\n return 'insert'\n }\n\n return 'set'\n}\n","import {fromString} from '@sanity/util/paths'\n\nimport {type DivergenceEffect} from './readDocumentDivergences'\n\ninterface SelectEffectFromHashContext {\n /**\n * The hash of the value being transitioned from.\n */\n fromHash: unknown\n\n /**\n * The hash of the value being transitioned to.\n */\n toHash: unknown\n\n /**\n * Whether the upstrean node's parent is an array. This is used to infer whether the node is an\n * array member.\n */\n upstreamParentIsArray: boolean\n\n /**\n * The path to the node, as a string.\n */\n path: string\n}\n\nconst UNDEFINED_SHA1 = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'\n\n/**\n * Infer the effect type that occurs when transitioning the value `fromValue` to the value `toValue`,\n * using the hash of the node's value.\n *\n * @internal\n */\nexport function selectEffectFromHash({\n fromHash,\n toHash,\n upstreamParentIsArray,\n path,\n}: SelectEffectFromHashContext): Exclude<DivergenceEffect, 'move'> {\n if (\n fromString(path).at(-1) === '_type' &&\n fromHash !== UNDEFINED_SHA1 &&\n toHash !== UNDEFINED_SHA1 &&\n fromHash !== toHash\n ) {\n return 'changeObjectType'\n }\n\n if (fromHash !== UNDEFINED_SHA1 && toHash === UNDEFINED_SHA1) {\n return 'unset'\n }\n\n if (upstreamParentIsArray && fromHash === UNDEFINED_SHA1 && toHash !== UNDEFINED_SHA1) {\n return 'insert'\n }\n\n return 'set'\n}\n","/**\n * @internal\n */\nexport type ResolutionMarker = [\n /**\n * The upstream revision at the time of resolution.\n *\n * This is used to determine whether any change has occurred to the upstream document since the\n * divergence was marked as resolved.\n */\n Revision: string,\n\n /**\n * The signature represents the node's value at the time of resolution.\n *\n * - For primitive nodes, it's the hash of node's upstream value at the time of resolution.\n * - For object array members, it's the position of the node in the upstream array at the time of\n * resolution.\n *\n * This is used to determine whether any change has occurred in the upstream node itself since the\n * divergence was marked as resolved.\n */\n Signature: string | number,\n]\n\n/**\n * @internal\n */\nexport type ResolutionMarkerAtPath = [path: string, resolutionMarker: ResolutionMarker]\n\n/**\n * @internal\n */\nexport function isDivergenceResolutionMarker(\n maybeDivergenceResolutionMarker: unknown,\n): maybeDivergenceResolutionMarker is ResolutionMarker {\n return (\n Array.isArray(maybeDivergenceResolutionMarker) &&\n maybeDivergenceResolutionMarker.length === 2 &&\n typeof maybeDivergenceResolutionMarker.at(0) === 'string' &&\n (typeof maybeDivergenceResolutionMarker.at(1) === 'string' ||\n typeof maybeDivergenceResolutionMarker.at(1) === 'number')\n )\n}\n","import {delayWhen, from, type MonoTypeOperatorFunction, pipe} from 'rxjs'\n\n/**\n * Delay an observable's emissions, allowing the browser to first complete other higher priority\n * work.\n *\n * @internal\n */\nexport function delayTask<Type>(): MonoTypeOperatorFunction<Type> {\n if (typeof window?.scheduler !== 'undefined') {\n const {scheduler} = window\n return delayWhen(() => from(scheduler.yield()))\n }\n\n if (typeof requestIdleCallback === 'function') {\n const idleCallback = new Promise((resolve) => requestIdleCallback(resolve))\n return delayWhen(() => from(idleCallback))\n }\n\n return pipe()\n}\n","import {lcs_dp as lcsDp} from '@algorithm.ts/lcs'\nimport {type KeyedObject} from '@sanity/types'\nimport intersection from 'lodash-es/intersection.js'\nimport {EMPTY, filter, from, map, type Observable, of, shareReplay, switchMap, toArray} from 'rxjs'\n\nimport {createMultiKeyWeakMap, type MultiKeyWeakMap} from '../../store/createMultiKeyWeakMap'\n\nlet cache: MultiKeyWeakMap | undefined\n\ntype MovesByKey = Record<string, number>\n\n/**\n * Identify objects that are present at a different postition in array B than in array A, preserving\n * the longest common subsequence shared by array A and B.\n *\n * For example, given arrays with the following keys:\n * A: a, b, c, d\n * B: b, c, d, a\n *\n * The only moved object is a, which has a position delta of 3.\n * The longest common subsequence is b, c, d. None of these objects have moved.\n */\nexport function findMovesInArrayOfObjects(\n a: KeyedObject[] | undefined,\n b: KeyedObject[] | undefined,\n): Observable<MovesByKey> {\n // If either arrays are nonexistent, there cannot be moved nodes.\n if (typeof a === 'undefined' || typeof b === 'undefined') {\n return EMPTY\n }\n\n cache ??= createMultiKeyWeakMap()\n const cached = cache.get<Observable<MovesByKey>>([a, b])\n\n if (typeof cached !== 'undefined') {\n return cached\n }\n\n const {intersectingKeys, aIntersectingKeys, bIntersectingKeys} = findIntersectingKeys(a, b)\n\n const readMoves = of([aIntersectingKeys, bIntersectingKeys]).pipe(\n map(([aIntersecting, bIntersecting]) =>\n lcsDp(\n aIntersecting.length,\n bIntersecting.length,\n (x, y) => aIntersecting[x] === bIntersecting[y],\n ),\n ),\n map((lcs) => lcs.map(([aIndex]) => aIntersectingKeys[aIndex])),\n switchMap((lcsKeys) => {\n if (intersectingKeys.size < 3) {\n return from(lcsKeys)\n }\n if (lcsKeys.length === 1) {\n return from(intersectingKeys)\n }\n return from(intersectingKeys).pipe(filter((_key) => !lcsKeys.includes(_key)))\n }),\n map((_key) => [_key, bIntersectingKeys.indexOf(_key) - aIntersectingKeys.indexOf(_key)]),\n filter(([, positionDelta]) => positionDelta !== 0),\n toArray(),\n map(Object.fromEntries),\n shareReplay(1),\n )\n\n cache.set([a, b], readMoves)\n return readMoves\n}\n\ntype FindIntersectingKeys = (\n a: KeyedObject[],\n b: KeyedObject[],\n) => {\n intersectingKeys: Set<string>\n aIntersectingKeys: string[]\n bIntersectingKeys: string[]\n}\n\nconst findIntersectingKeys: FindIntersectingKeys = (a, b) => {\n if ('intersection' in Set.prototype) {\n return findIntersectingKeysUsingSet(a, b)\n }\n\n return findIntersectingKeysUsingArray(a, b)\n}\n\nconst findIntersectingKeysUsingSet: FindIntersectingKeys = (a, b) => {\n const aKeys = new Set(a.map(({_key}) => _key))\n const bKeys = new Set(b.map(({_key}) => _key))\n\n // @ts-expect-error - `intersection()` newer than target envs, but is feature-tested (array fallback)\n const intersectingKeys = aKeys.intersection(bKeys)\n\n const [aIntersectingKeys, bIntersectingKeys] = [a, b].map((subject) =>\n subject.filter(({_key}) => intersectingKeys.has(_key)).map(({_key}) => _key),\n )\n\n return {\n intersectingKeys,\n aIntersectingKeys,\n bIntersectingKeys,\n }\n}\n\nconst findIntersectingKeysUsingArray: FindIntersectingKeys = (a, b) => {\n const aKeys = a.map(({_key}) => _key)\n const bKeys = b.map(({_key}) => _key)\n\n const intersectingKeys = intersection(aKeys, bKeys)\n\n const [aIntersectingKeys, bIntersectingKeys] = [a, b].map((subject) =>\n subject.filter(({_key}) => intersectingKeys.includes(_key)).map(({_key}) => _key),\n )\n\n return {\n intersectingKeys: new Set(intersectingKeys),\n aIntersectingKeys,\n bIntersectingKeys,\n }\n}\n","import stringify from 'json-stable-stringify'\n\nlet textEncoder: TextEncoder | undefined\n\n/**\n * Produce a stable hash of any data that can be represented in JSON.\n */\nexport function hashData(data: unknown): Promise<string> {\n textEncoder ??= new TextEncoder()\n\n if (typeof data === 'string') {\n return hash(textEncoder.encode(data))\n }\n\n if (typeof data === 'number' || typeof data === 'boolean') {\n return hash(textEncoder.encode(String(data)))\n }\n\n return hash(textEncoder.encode(stringify(data)))\n}\n\nasync function hash(data: Uint8Array<ArrayBuffer>) {\n const digest = await globalThis.crypto.subtle.digest('SHA-1', data)\n return hex(new Uint8Array(digest))\n}\n\nasync function hex(data: Uint8Array) {\n return Array.from(data)\n .map((i) => i.toString(16).padStart(2, '0'))\n .join('')\n}\n","import {\n isKeyedObject,\n isKeySegment,\n type KeyedObject,\n type Path,\n type SanityDocument,\n} from '@sanity/types'\nimport {fromString, startsWith, toString} from '@sanity/util/paths'\nimport get from 'lodash-es/get.js'\nimport {\n combineLatest,\n EMPTY,\n filter,\n first,\n from,\n map,\n merge,\n mergeMap,\n type Observable,\n of,\n type OperatorFunction,\n pipe,\n reduce,\n switchMap,\n takeWhile,\n tap,\n toArray,\n zipWith,\n} from 'rxjs'\n\nimport {isRecord} from '../util/isRecord'\nimport {selectEffect} from './selectEffect'\nimport {selectEffectFromHash} from './selectEffectFromHash'\nimport {isDivergenceResolutionMarker, type ResolutionMarker} from './types/ResolutionMarker'\nimport {delayTask} from './utils/delayTask'\nimport {findMovesInArrayOfObjects} from './utils/findMovesInArrayOfObjects'\nimport {type FlattenedPair, flattenObject, type PathWithTypes} from './utils/flatten'\nimport {hashData} from './utils/hashData'\n\n/**\n * @internal\n */\nexport interface DivergenceResolution {\n _key: string\n resolutionMarker: ResolutionMarker\n}\n\n/**\n * @internal\n */\nexport interface FindDivergencesContext {\n upstreamHead: SanityDocument\n subjectHead: SanityDocument\n upstreamAtFork: SanityDocument\n resolutions?: DivergenceResolution[]\n}\n\ntype DivergenceStatus = 'unresolved' | 'resolved'\n\ntype SnapshotType = 'subjectHead' | 'upstreamHead' | 'upstreamAtFork'\n\ntype SnapshotsByType = Record<\n SnapshotType,\n | undefined\n | {\n value: unknown\n\n /**\n * If the node is a direct descendant of an array, `parentArray` can be used to access all of\n * the parent array's descendants. This is used to determine the movement of array nodes.\n */\n parentArray?: KeyedObject[] | unknown[]\n\n /**\n * If the node is a direct descendant of an object, this can be used to determine the parent\n * object's type. This is used to determine objects whose type has changed.\n */\n parentObjectType?: string\n\n /**\n * The node's path as an array, enriched with the content type found at each segment.\n */\n pathWithTypes: PathWithTypes\n }\n>\n\ntype DivergenceDetectionStrategy = 'sinceFork' | 'sinceResolution'\n\n/**\n * @internal\n */\nexport type DivergenceEffect = 'unset' | 'set' | 'insert' | 'move' | 'changeObjectType'\n\n/**\n * @internal\n */\nexport type BaseDivergence = {\n snapshots: SnapshotsByType\n documentType: string\n\n /**\n * Whether the divergence is addressable.\n *\n * Divergences that occur at leaf primitive nodes are addressable. Addressable divergences can be\n * marked as resolved.\n */\n isAddressable: boolean\n\n /**\n * The type of operation that occurred upstream to cause the divergence.\n */\n effect?: DivergenceEffect\n\n /**\n * The upstream document id.\n */\n documentId: string\n\n /**\n * The subject document id.\n */\n subjectId: string\n\n /**\n * The upstream revision that caused the divergence.\n */\n sinceRevisionId: string\n\n /**\n * Whether the divergence has been resolved or not.\n */\n status: DivergenceStatus\n\n /**\n * The stringified path to the divergence in the document.\n *\n * TODO: It'd be more efficient to provide this as an array to avoid repeatedly converting it to\n * and from a string.\n */\n path: string\n}\n\n/**\n * @internal\n */\nexport type Divergence = BaseDivergence &\n (\n | {\n effect: Exclude<DivergenceEffect, 'move'>\n }\n | {\n effect: Extract<DivergenceEffect, 'move'>\n\n /**\n * The position of the item in the upstream array.\n */\n upstreamPosition: number\n\n /**\n * The distance the item has moved in the upstream array since the last consistent state.\n */\n delta: number\n }\n | {\n effect: Extract<DivergenceEffect, 'insert'>\n\n /**\n * The position at which the item was inserted inro the upstream array.\n */\n position: number\n }\n | {\n effect?: undefined\n delta?: never\n position?: never\n }\n )\n\nexport type DivergenceAtPath = [path: string, context: Divergence]\n\n// Fields that are never considered divergent.\nconst skipFields = /(\\.|^)_(id|rev|key|system|createdAt|updatedAt|systemDivergences)(\\.|$)/g\n\ntype State = Record<string, SnapshotsByType>\n\n/**\n * @internal\n */\nexport function readDocumentDivergences({\n upstreamAtFork,\n upstreamHead,\n subjectHead,\n resolutions = [],\n}: FindDivergencesContext): Observable<DivergenceAtPath> {\n if (\n typeof subjectHead === 'undefined' ||\n typeof upstreamHead === 'undefined' ||\n typeof upstreamAtFork === 'undefined'\n ) {\n return EMPTY\n }\n\n const markName = [subjectHead._id, upstreamHead._id, upstreamAtFork._id].join('.')\n\n performance.mark(markName)\n\n const instance: Observable<DivergenceAtPath> = merge<[SnapshotType, FlattenedPair][]>(\n from(flattenObject(subjectHead)).pipe(\n map((entry) => ['subjectHead', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n from(flattenObject(upstreamHead)).pipe(\n map((entry) => ['upstreamHead', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n from(flattenObject(upstreamAtFork)).pipe(\n map((entry) => ['upstreamAtFork', entry] satisfies [SnapshotType, FlattenedPair]),\n ),\n )\n .pipe(\n map(([snapshotType, [path, value, context]]) => ({\n snapshotType,\n path,\n value,\n context,\n })),\n filter(({path}) => !path.match(skipFields)),\n aggregateArrays(),\n aggregateObjects(),\n reduce((state, {snapshotType, path, value, arrays, objects, context}): State => {\n state[path] ??= {\n subjectHead: undefined,\n upstreamHead: undefined,\n upstreamAtFork: undefined,\n }\n\n const parentPathArray = toString(context.flatPathArray.slice(0, -1))\n const parentArray = arrays[parentPathArray]\n const parentObject = objects[parentPathArray]\n\n state[path][snapshotType] = {\n value,\n parentArray,\n parentObjectType: get(parentObject, '_type'),\n pathWithTypes: context.flatPathArrayWithTypes,\n }\n\n return state\n }, {}),\n tap(() => {\n performance.measure(markName, {\n start: markName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Iterate all versions',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n },\n },\n })\n }),\n switchMap((state) => from(Object.entries(state))),\n switchMap(([path, snapshots]) =>\n from(resolutions).pipe(\n first(({_key}) => _key === path, {resolutionMarker: undefined}),\n map(({resolutionMarker}) => resolutionMarker),\n map((resolutionMarker) => ({path, snapshots, resolutionMarker})),\n ),\n ),\n )\n .pipe(\n filter(({snapshots}) => {\n const hasObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n snapshots.subjectHead?.value,\n ].some(isRecord)\n\n const hasKeyedObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n snapshots.subjectHead?.value,\n ].some(isKeyedObject)\n\n return !hasObjectSnapshot || hasKeyedObjectSnapshot\n }),\n delayTask(),\n mergeMap<\n {\n path: string\n snapshots: SnapshotsByType\n resolutionMarker: ResolutionMarker | undefined\n },\n Observable<DivergenceAtPath>\n >(({path, snapshots, resolutionMarker}) => {\n const strategy: DivergenceDetectionStrategy =\n typeof resolutionMarker === 'undefined' ? 'sinceFork' : 'sinceResolution'\n\n if (isRevisionIdEqual({strategy, upstreamAtFork, upstreamHead, resolutionMarker})) {\n // The entire document is unchanged since resolution: the divergence remains resolved.\n if (strategy === 'sinceResolution' && typeof resolutionMarker !== 'undefined') {\n return of<DivergenceAtPath>([\n path,\n {\n status: 'resolved',\n isAddressable: false,\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n path: path,\n snapshots,\n sinceRevisionId: resolutionMarker?.[0],\n },\n ])\n }\n\n // The entire document is unchanged since fork: there are no divergences.\n return EMPTY\n }\n\n // Divergences aren't usually reported at the object level, but instead for leaf primitive\n // nodes.\n //\n // However, the position of an object in an array *can* diverge. This causes a divergence of\n // the object istelf, with the \"move\" effect.\n if (\n isPositionedNode({\n strategy,\n snapshots,\n resolutionMarker,\n })\n ) {\n const [upstreamBaseIndex, upstreamHeadIndex] = getPositionedNodeIndexes({\n strategy,\n snapshots,\n resolutionMarker,\n })\n\n return of(upstreamHeadIndex - upstreamBaseIndex).pipe(\n // Position has changed in upstream.\n filter((moveInUpstream) => moveInUpstream !== 0),\n delayTask(),\n zipWith(\n isObjectArray(snapshots.subjectHead?.parentArray) &&\n isObjectArray(snapshots.upstreamHead?.parentArray)\n ? findMovesInArrayOfObjects(\n snapshots.subjectHead.parentArray,\n snapshots.upstreamHead?.parentArray,\n )\n : of<Record<string, number>>({}),\n ),\n map(([movesInUpstream, movesInSubject]): [number, number | undefined] => {\n const key =\n get(snapshots, ['upstreamAtFork', 'value', '_key']) ??\n get(snapshots, ['upstreamHead', 'value', '_key'])\n\n return [movesInUpstream, movesInSubject[key]]\n }),\n filter((moves): moves is [number, number] => {\n const [, moveInSubject] = moves\n return typeof moveInSubject !== 'undefined'\n }),\n map(([, positionDelta]): DivergenceAtPath => [\n path,\n {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n status: 'unresolved',\n isAddressable: true,\n effect: 'move',\n delta: positionDelta,\n upstreamPosition: upstreamHeadIndex,\n sinceRevisionId: createDocumentRevisionMarker(\n upstreamAtFork._id,\n upstreamAtFork?._rev,\n ),\n path: path,\n snapshots,\n },\n ]),\n )\n }\n\n if (strategy === 'sinceFork') {\n const sinceForkMarkName = ['sinceFork', markName, path].join('.')\n performance.mark(sinceForkMarkName)\n\n return combineLatest({\n upstreamAtFork: from(hashData(snapshots.upstreamAtFork?.value)),\n upstreamHead: from(hashData(snapshots.upstreamHead?.value)),\n subjectHead: from(hashData(snapshots.subjectHead?.value)),\n }).pipe(\n tap(() => {\n performance.measure(path, {\n start: sinceForkMarkName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Hash snapshots',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n properties: [\n ['Upstream at fork', snapshots.upstreamAtFork?.value],\n ['Upstream head', snapshots.upstreamHead?.value],\n ['Subject head', snapshots.subjectHead?.value],\n ['Strategy', strategy],\n ],\n },\n },\n })\n }),\n delayTask(),\n map((hashes) => ({\n hashes,\n effect: selectEffect({\n fromValue: snapshots.upstreamAtFork?.value,\n toValue: snapshots.upstreamHead?.value,\n upstreamParent: snapshots.upstreamHead?.parentArray,\n path,\n }),\n })),\n // The upstream has changed since the fork occurred.\n takeWhile(\n ({hashes, effect}) =>\n effect === 'insert' ||\n effect === 'unset' ||\n hashes.upstreamAtFork !== hashes.upstreamHead,\n ),\n // The upstream is different to the current value in the subject document.\n takeWhile(\n ({hashes, effect}) =>\n effect === 'insert' ||\n effect === 'unset' ||\n hashes.upstreamHead !== hashes.subjectHead,\n ),\n // If the node is an inserted array item, and it already exists in\n // the subject document, skip it.\n takeWhile(({effect}) => {\n if (effect === 'insert') {\n const parentPathSegment = fromString(path).at(-1)\n\n if (parentPathSegment && isKeySegment(parentPathSegment)) {\n return (\n typeof snapshots.subjectHead?.parentArray?.find(\n (item) => isKeyedObject(item) && item._key === get(parentPathSegment, '_key'),\n ) === 'undefined'\n )\n }\n\n if (typeof parentPathSegment === 'number') {\n return (\n typeof snapshots.subjectHead?.parentArray?.[parentPathSegment] === 'undefined'\n )\n }\n }\n\n return true\n }),\n takeWhile(() => {\n const isArray = [snapshots.upstreamAtFork?.value, snapshots.upstreamHead?.value].some(\n Array.isArray,\n )\n return !isArray\n }),\n map(({effect}): DivergenceAtPath => {\n const hasObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(isRecord)\n\n const hasKeyedObjectSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(isKeyedObject)\n\n const hasArraySnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some(Array.isArray)\n\n const hasNullSnapshot = [\n snapshots.upstreamAtFork?.value,\n snapshots.upstreamHead?.value,\n ].some((value) => value === null)\n\n const isAddressable =\n (!hasObjectSnapshot && !hasArraySnapshot) ||\n hasKeyedObjectSnapshot ||\n (hasNullSnapshot && !hasObjectSnapshot && !hasArraySnapshot)\n\n const divergence = {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n status: 'unresolved',\n isAddressable,\n effect,\n sinceRevisionId: createDocumentRevisionMarker(\n upstreamAtFork._id,\n upstreamAtFork?._rev,\n ),\n path,\n snapshots,\n } satisfies BaseDivergence\n\n // Item inserted into object array.\n if (divergence.effect === 'insert') {\n return [\n path,\n {\n ...divergence,\n position:\n findPositionedNodeIndexByKey(\n snapshots.upstreamHead?.parentArray,\n get(snapshots, ['upstreamHead', 'value', '_key']),\n ) ?? 0,\n },\n ]\n }\n\n return [path, divergence]\n }),\n )\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n const sinceResolutionMarkName = ['sinceResolution', markName, path].join('.')\n performance.mark(sinceResolutionMarkName)\n\n return combineLatest({\n upstreamHead: from(hashData(snapshots.upstreamHead?.value)),\n subjectHead: from(hashData(snapshots.subjectHead?.value)),\n }).pipe(\n tap(() => {\n performance.measure(path, {\n start: sinceResolutionMarkName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Hash snapshots',\n trackGroup: 'Find divergences',\n color: 'tertiary-dark',\n properties: [\n ['Upstream at fork', snapshots.upstreamAtFork?.value],\n ['Upstream head', snapshots.upstreamHead?.value],\n ['Subject head', snapshots.subjectHead?.value],\n ['Strategy', strategy],\n ],\n },\n },\n })\n }),\n delayTask(),\n map((hashes): DivergenceAtPath => [\n path,\n {\n documentId: upstreamHead._id,\n documentType: subjectHead._type,\n subjectId: subjectHead._id,\n path: path,\n snapshots,\n status:\n // The upstream has not changed since the resolution.\n hashes.upstreamHead === resolutionMarker[1] ||\n // The upstream is not different to the current value in the subject document.\n hashes.upstreamHead === hashes.subjectHead\n ? 'resolved'\n : 'unresolved',\n // A resolution already exists for the node, so it can be assumed the divergence\n // is addressable.\n isAddressable: true,\n effect: selectEffectFromHash({\n fromHash: resolutionMarker[1],\n toHash: hashes.upstreamHead,\n upstreamParentIsArray: Array.isArray(snapshots.upstreamHead),\n path,\n }),\n sinceRevisionId: resolutionMarker[0],\n },\n ]),\n )\n }\n\n return EMPTY\n }),\n coalesceChangedObjectTypes(),\n )\n\n return instance\n}\n\nfunction isPositionedNode({\n strategy,\n snapshots,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n snapshots: SnapshotsByType\n resolutionMarker?: ResolutionMarker\n}): boolean {\n if (strategy === 'sinceFork') {\n return (\n isKeyedObject(snapshots.upstreamAtFork?.value) && isKeyedObject(snapshots.upstreamHead?.value)\n )\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n return isKeyedObject(snapshots.upstreamHead?.value)\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction getPositionedNodeIndexes({\n strategy,\n snapshots,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n snapshots: SnapshotsByType\n resolutionMarker?: ResolutionMarker\n}): [UpstreamBaseIndex: number, UpstreamHeadIndex: number] {\n const key =\n get(snapshots, ['upstreamAtFork', 'value', '_key']) ??\n get(snapshots, ['upstreamHead', 'value', '_key'])\n\n if (strategy === 'sinceFork') {\n return [\n findPositionedNodeIndexByKey(snapshots.upstreamAtFork?.parentArray, key),\n findPositionedNodeIndexByKey(snapshots.upstreamHead?.parentArray, key),\n ]\n }\n\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n if (typeof resolutionMarker[1] !== 'number') {\n throw new Error('Expected upstream position at resolution as number, but received string')\n }\n\n return [\n resolutionMarker[1],\n findPositionedNodeIndexByKey(snapshots.upstreamHead?.parentArray, key),\n ]\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction aggregateArrays<\n Input extends {\n snapshotType: SnapshotType\n path: string\n value: unknown\n },\n>(): OperatorFunction<Input, Input & {arrays: Record<string, unknown[]>}> {\n const arrays: Record<string, unknown[]> = {}\n\n return switchMap((entry) => {\n if (Array.isArray(entry.value)) {\n arrays[entry.path] = entry.value\n }\n\n return of({...entry, arrays})\n })\n}\n\nfunction aggregateObjects<\n Input extends {\n snapshotType: SnapshotType\n path: string\n value: unknown\n },\n>(): OperatorFunction<Input, Input & {objects: Record<string, SanityObjectLike>}> {\n const objects: Record<string, SanityObjectLike> = {}\n\n return switchMap((entry) => {\n if (isSanityObjectLike(entry.value)) {\n objects[entry.path] = entry.value\n }\n\n return of({...entry, objects})\n })\n}\n\n/**\n * If an object type has changed since its last consistent state, the object's descendant nodes are\n * no longer guaranteed to be compatible. This is most likely to occur in arrays of objects, because\n * they allow polymorphism.\n *\n * An object's type is unlikely to change due to an operation performed by an editor in Studio,\n * but this can occur when scripting or using an agent to update content.\n *\n * This operation:\n *\n * 1. Finds any object whose type has changed.\n * 2. Filters all divergences that affect descendants of the changed object.\n * 3. Emits a single divergence for the object itself.\n */\nfunction coalesceChangedObjectTypes(): OperatorFunction<DivergenceAtPath, DivergenceAtPath> {\n const changedObjectPaths: Path[] = []\n\n return pipe(\n toArray(),\n // Ensure the object's `_type` field is iterated first.\n switchMap((divergences) => {\n return from(\n divergences.sort(([pathA], [pathB]) => {\n const pathArrayA = fromString(pathA)\n const pathArrayB = fromString(pathB)\n\n if (pathArrayA.at(-1) === '_type' && pathArrayB.at(-1) !== '_type') {\n return -1\n }\n\n if (pathArrayA.at(-1) !== '_type' && pathArrayB.at(-1) === '_type') {\n return 1\n }\n\n return 0\n }),\n )\n }),\n mergeMap<DivergenceAtPath, Observable<DivergenceAtPath>>(([path, divergence]) => {\n const descendsChangedTypeObject = changedObjectPaths.some((changedObjectPath) =>\n startsWith(changedObjectPath, fromString(path)),\n )\n\n if (descendsChangedTypeObject) {\n return EMPTY\n }\n\n const pathArray = fromString(path)\n const parentObjectPath = pathArray.slice(0, -1)\n\n const hasKeyedObjectSnapshot = [\n divergence.snapshots.upstreamHead?.value,\n divergence.snapshots.subjectHead?.value,\n ].some(isKeyedObject)\n\n // Whether the object's current state in the upstream can be meaningfully compared with its\n // current state in the subject.\n //\n // Object type changes are only expected in arrays of objects.\n const isSubjectObjectTypeCompatible =\n !hasKeyedObjectSnapshot ||\n divergence.snapshots.upstreamHead?.parentObjectType ===\n divergence.snapshots.subjectHead?.parentObjectType\n\n // Whether the object's type has changed in the upstream. It indicates whether the last\n // consistent state of the object can be meaninfully compared with the current state of the\n // object in the upstream.\n const isChangedObjectType = divergence.effect === 'changeObjectType'\n\n const isFirstDescendantOfChangedObject = !changedObjectPaths.some(\n (changedObjectPath) => toString(changedObjectPath) === toString(parentObjectPath),\n )\n\n // When encountering the first node in an object that has changed type, emit a divergence on\n // the object itself, and suppress any other divergences affecting descendants of the object.\n if (\n isChangedObjectType ||\n (!isSubjectObjectTypeCompatible && isFirstDescendantOfChangedObject)\n ) {\n changedObjectPaths.push(parentObjectPath)\n\n return of<DivergenceAtPath>([\n toString(parentObjectPath),\n {\n // Note: `snapshots` currently reflects the `_type` node, or first descendant node\n // encountered, rather than the object itself.\n ...divergence,\n effect: 'changeObjectType',\n isAddressable: true,\n path: toString(parentObjectPath),\n },\n ])\n }\n\n return of([path, divergence])\n }),\n )\n}\n\nfunction findPositionedNodeIndexByKey(array: unknown[] = [], key: string | undefined): number {\n return array.findIndex((value) => {\n if (typeof value !== 'object' || value === null || !('_key' in value)) {\n return false\n }\n\n return value._key === key\n })\n}\n\nfunction isRevisionIdEqual({\n strategy,\n upstreamAtFork,\n upstreamHead,\n resolutionMarker,\n}: {\n strategy: DivergenceDetectionStrategy\n upstreamAtFork: SanityDocument\n upstreamHead: SanityDocument\n resolutionMarker?: ResolutionMarker\n}): boolean {\n if (strategy === 'sinceResolution') {\n if (typeof resolutionMarker === 'undefined') {\n throw new Error('Expected resolution marker')\n }\n\n const [upstreamId, upstreamRevisionId] = resolutionMarker[0].split('@')\n return upstreamId === upstreamHead._id && upstreamRevisionId === upstreamHead._rev\n }\n\n if (strategy === 'sinceFork') {\n return upstreamAtFork?._rev === upstreamHead._rev\n }\n\n throw new Error(`Unexpected strategy: \"${strategy}\"`)\n}\n\nfunction isObjectArray(maybeObjectArray: unknown): maybeObjectArray is KeyedObject[] {\n if (Array.isArray(maybeObjectArray)) {\n return maybeObjectArray.some(isKeyedObject)\n }\n return false\n}\n\ninterface SanityObjectLike {\n _type: string\n [key: string]: unknown\n}\n\nfunction isSanityObjectLike(\n maybeSanityObjectLike: unknown,\n): maybeSanityObjectLike is SanityObjectLike {\n return (\n typeof maybeSanityObjectLike === 'object' &&\n maybeSanityObjectLike !== null &&\n '_type' in maybeSanityObjectLike\n )\n}\n\n/**\n * @internal\n */\nexport function createDocumentRevisionMarker(\n ...documentRevision: [documentId: string, revisionId: string]\n): string {\n return documentRevision.join('@')\n}\n\n/**\n * @internal\n */\nexport function isDivergenceResolutions(\n maybeDivergenceResolutions: unknown,\n): maybeDivergenceResolutions is DivergenceResolution[] {\n return (\n Array.isArray(maybeDivergenceResolutions) &&\n maybeDivergenceResolutions.every(isDivergenceResolution)\n )\n}\n\n/**\n * @internal\n */\nfunction isDivergenceResolution(\n maybeDivergenceResolution: unknown,\n): maybeDivergenceResolution is DivergenceResolution {\n return (\n typeof maybeDivergenceResolution === 'object' &&\n maybeDivergenceResolution !== null &&\n '_key' in maybeDivergenceResolution &&\n typeof maybeDivergenceResolution._key === 'string' &&\n 'resolutionMarker' in maybeDivergenceResolution &&\n isDivergenceResolutionMarker(maybeDivergenceResolution.resolutionMarker)\n )\n}\n","import isEqual from 'lodash-es/isEqual.js'\nimport QuickLRU from 'quick-lru'\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n mergeMap,\n type Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n switchMap,\n switchScan,\n tap,\n toArray,\n} from 'rxjs'\n\nimport {\n type Divergence,\n type DivergenceAtPath,\n type FindDivergencesContext,\n readDocumentDivergences,\n} from './readDocumentDivergences'\nimport {delayTask} from './utils/delayTask'\n\nexport interface CollatedDocumentDivergencesState {\n state: 'pending' | 'ready'\n upstreamId: string | undefined\n divergences: Record<string, Divergence>\n}\n\n/**\n * @internal\n */\nexport interface CollatedDocumentDivergencesInstance {\n observable: Observable<CollatedDocumentDivergencesState>\n context: Subject<FindDivergencesContext>\n}\n\ninterface CollatedDocumentDivergencesContext {\n upstreamId: string | undefined\n subjectId: string | undefined\n}\n\nconst DEBOUNCE_DURATION = 1_000\nconst CACHE_MAX_SIZE = 10\n\nlet cacheWriteChannel: Subject<string>\nlet cache: QuickLRU<string, CollatedDocumentDivergencesInstance>\n\n/**\n * @internal\n */\nexport const collateDocumentDivergencesInitialState: CollatedDocumentDivergencesState = {\n state: 'pending',\n upstreamId: undefined,\n divergences: {},\n}\n\n/**\n * Collate all divergences in a single document.\n *\n * For each upstream id and subject id pair, the instance is cached globally in a LRU store.\n * Computation is throttled, and yields to the main thread to minimise blocking of the UI.\n *\n * The consumer is responsible for providing the data this computation depends on\n * (`FindDivergencesContext`). If any of the underlying context changes, recomputation can be\n * triggered by writing the updated context to the returned `context` subject.\n *\n * @internal\n */\nexport function collateDocumentDivergences({\n upstreamId,\n subjectId,\n}: CollatedDocumentDivergencesContext): CollatedDocumentDivergencesInstance {\n initialiseCache()\n\n const cacheKey = getCacheKey({upstreamId, subjectId})\n const cachedInstance = cache.get(cacheKey)\n\n if (typeof cachedInstance !== 'undefined') {\n return cachedInstance\n }\n\n const context = new Subject<FindDivergencesContext>()\n const markName = ['collateDocumentDivergences', cacheKey].join('.')\n\n if (typeof upstreamId === 'undefined' || typeof subjectId === 'undefined') {\n return {\n observable: EMPTY,\n context,\n }\n }\n\n const observable: Observable<CollatedDocumentDivergencesState> = context.pipe(\n debounceTime(DEBOUNCE_DURATION),\n tap(() => performance.mark(cacheKey)),\n distinctUntilChanged(isContextEqual),\n switchScan((state, nextContext) => {\n return of(nextContext).pipe(\n delayTask(),\n tap(() => performance.mark(markName)),\n switchMap(readDocumentDivergences),\n toArray(),\n tap(() =>\n performance.measure(cacheKey, {\n start: markName,\n detail: {\n devtools: {\n dataType: 'track-entry',\n track: 'Find all divergences',\n trackGroup: 'Aggregate Divergences',\n color: 'tertiary-dark',\n },\n },\n }),\n ),\n map<DivergenceAtPath[], Record<string, Divergence>>(Object.fromEntries),\n map<Record<string, Divergence>, CollatedDocumentDivergencesState>((divergences) => ({\n ...state,\n state: 'ready',\n upstreamId,\n divergences,\n })),\n startWith<CollatedDocumentDivergencesState>({\n ...state,\n upstreamId,\n state: 'pending',\n }),\n )\n }, collateDocumentDivergencesInitialState),\n startWith(collateDocumentDivergencesInitialState),\n shareReplay(1),\n )\n\n const instance: CollatedDocumentDivergencesInstance = {context, observable}\n\n cache.set(cacheKey, instance)\n cacheWriteChannel.next(cacheKey)\n\n return instance\n}\n\n/**\n * Subscribe to collated document divergences without initiating computation.\n *\n * @internal\n */\nexport function peekCollatedDocumentDivergences({\n upstreamId,\n subjectId,\n}: CollatedDocumentDivergencesContext): Observable<CollatedDocumentDivergencesState> {\n initialiseCache()\n\n if (typeof upstreamId === 'undefined' || typeof subjectId === 'undefined') {\n return EMPTY\n }\n\n const cacheKey = getCacheKey({upstreamId, subjectId})\n const instance = cache.get(cacheKey)\n\n if (typeof instance !== 'undefined') {\n return instance.observable\n }\n\n return cacheWriteChannel.pipe(\n filter((writtenCacheKey) => writtenCacheKey === cacheKey),\n map((writtenCacheKey) => cache.get(writtenCacheKey)),\n filter((cachedInstance) => typeof cachedInstance !== 'undefined'),\n mergeMap(({observable}) => observable),\n startWith(collateDocumentDivergencesInitialState),\n shareReplay(1),\n )\n}\n\nfunction isContextEqual(a: FindDivergencesContext, b: FindDivergencesContext): boolean {\n return (\n a.upstreamHead._rev === b.upstreamHead._rev &&\n a.subjectHead._rev === b.subjectHead._rev &&\n a.upstreamAtFork._rev === b.upstreamAtFork._rev &&\n isEqual(a.resolutions, b.resolutions)\n )\n}\n\nfunction initialiseCache() {\n cache ??= new QuickLRU({maxSize: CACHE_MAX_SIZE})\n cacheWriteChannel ??= new Subject()\n}\n\nfunction getCacheKey({\n subjectId,\n upstreamId,\n}: Pick<CollatedDocumentDivergencesContext, 'subjectId' | 'upstreamId'>): string {\n return [upstreamId, subjectId].join('.')\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n type TransactionLogEventWithEffects,\n type TransactionLogEventWithMutations,\n isCreateIfNotExistsMutation,\n isCreateMutation,\n isCreateOrReplaceMutation,\n} from '@sanity/types'\nimport {applyPatch} from 'mendoza'\nimport QuickLRU from 'quick-lru'\nimport {\n type Observable,\n catchError,\n concat,\n concatMap,\n EMPTY,\n first,\n from,\n map,\n merge,\n of,\n scan,\n switchMap,\n} from 'rxjs'\n\nimport {getTransactionsLogs as defaultGetTransactionsLogs} from '../store/translog/getTransactionsLogs'\n\ntype SourceTransaction = [source: 'a' | 'b', transaction: TransactionLogEventWithEffects]\n\ninterface TransactionAccumulation {\n a: Set<string>\n b: Set<string>\n currentTransaction: SourceTransaction\n}\n\ninterface PartialTransactionAccumulation extends Omit<\n TransactionAccumulation,\n 'currentTransaction'\n> {\n currentTransaction: SourceTransaction | undefined\n}\n\nconst PAGE_LENGTH = 50\n\nlet cache: QuickLRU<string, Observable<TransactionLogEventWithEffects | undefined>> | undefined\n\n/**\n * Find the most recent transaction shared by two documents, following each base\n * document link found in the `_system.base` field in order to construct the\n * content's full history, including its lineage.\n *\n * As soon as any transaction is found that appears in the lineage of each\n * document, that transaction is emitted and the process ends. It can be assumed\n * the emitted transaction is the most recent point in time that the content of\n * the two documents was identical.\n *\n * @internal\n */\nexport function readMostRecentSharedTransaction({\n a,\n b,\n client,\n getTransactionsLogs = defaultGetTransactionsLogs,\n}: {\n a?: string\n b?: string\n client: SanityClient\n getTransactionsLogs?: typeof defaultGetTransactionsLogs\n}): Observable<TransactionLogEventWithEffects | undefined> {\n if (typeof a === 'undefined' || typeof b === 'undefined') {\n return EMPTY\n }\n\n cache ??= new QuickLRU({\n maxSize: 250,\n })\n\n const cacheKey = [a, b].join(';')\n const cachedReader = cache.get(cacheKey)\n\n if (typeof cachedReader !== 'undefined') {\n return cachedReader\n }\n\n const reader = merge(\n readTransactionsFollowingLineage({documentId: a, client, getTransactionsLogs}).pipe(\n map((transaction) => ['a', transaction] satisfies SourceTransaction),\n ),\n readTransactionsFollowingLineage({documentId: b, client, getTransactionsLogs}).pipe(\n map((transaction) => ['b', transaction] satisfies SourceTransaction),\n ),\n ).pipe(\n scan<SourceTransaction, PartialTransactionAccumulation>(\n (visited, [source, transaction]) => {\n visited[source].add(transaction.id)\n visited.currentTransaction = [source, transaction] satisfies SourceTransaction\n return visited\n },\n {\n a: new Set<string>(),\n b: new Set<string>(),\n currentTransaction: undefined,\n },\n ),\n first((accumulation): accumulation is TransactionAccumulation => {\n const {a: transactionIdsA, b: transactionIdsB, currentTransaction} = accumulation\n\n if (typeof currentTransaction === 'undefined') {\n return false\n }\n\n const [source, transaction] = currentTransaction\n const partner = source === 'a' ? transactionIdsB : transactionIdsA\n\n return partner.has(transaction.id)\n }, undefined),\n map((accumulation) => {\n if (typeof accumulation === 'undefined') {\n return undefined\n }\n\n const [, transaction] = accumulation.currentTransaction\n return transaction\n }),\n catchError((error) => {\n cache?.delete(cacheKey)\n throw error\n }),\n )\n\n cache.set(cacheKey, reader)\n return reader\n}\n\nlet lineageCache:\n | QuickLRU<string, Observable<TransactionLogEventWithEffects & TransactionLogEventWithMutations>>\n | undefined\n\n/**\n * Read the entire history of a document, following each base document link\n * found in the `_system.base` field in order to construct the content's full\n * history, including its lineage.\n *\n * This is necessary, because history isn't copied when creating a version of a\n * document.\n *\n * @internal\n */\nexport function readTransactionsFollowingLineage({\n documentId,\n baseRevisionId,\n cursor,\n client,\n getTransactionsLogs = defaultGetTransactionsLogs,\n}: {\n documentId: string\n baseRevisionId?: string\n cursor?: string\n client: SanityClient\n getTransactionsLogs?: typeof defaultGetTransactionsLogs\n}): Observable<TransactionLogEventWithEffects & TransactionLogEventWithMutations> {\n if (PAGE_LENGTH < 2) {\n throw new Error(\n 'Page length must be greater than 1, because the Content Lake API response is inclusive of `toTransaction`.',\n )\n }\n\n lineageCache ??= new QuickLRU({\n maxSize: 250,\n })\n\n const cacheKey = [documentId, baseRevisionId, cursor].join(';')\n const cachedReader = lineageCache.get(cacheKey)\n\n if (typeof cachedReader !== 'undefined') {\n return cachedReader\n }\n\n const request = getTransactionsLogs(client, documentId, {\n limit: PAGE_LENGTH,\n excludeContent: true,\n effectFormat: 'mendoza',\n reverse: true,\n includeIdentifiedDocumentsOnly: true,\n toTransaction: cursor ?? baseRevisionId,\n tag: 'sanity.studio.divergences.read-version-lineage',\n })\n\n const reader = from(request).pipe(\n switchMap((transactions) => from(transactions)),\n concatMap((transaction, index) => {\n const isCursor = transaction.id === cursor\n\n // Content Lake response is inclusive of `toTransaction`, which means\n // transactions occurring at page boundaries will be re-emitted when using\n // `toTransaction` as a cursor.\n //\n // This step prevents the observable re-emitting such transactions.\n if (isCursor) {\n return EMPTY\n }\n\n const isPageEnd = index === PAGE_LENGTH - 1\n\n const maybeReadNextPage = isPageEnd\n ? readTransactionsFollowingLineage({\n documentId,\n baseRevisionId,\n cursor: transaction.id,\n client,\n getTransactionsLogs,\n })\n : EMPTY\n\n if (\n isVersionCreateTransaction(transaction, documentId) &&\n typeof transaction.effects[documentId] !== 'undefined'\n ) {\n const createdDocument = applyPatch({}, transaction.effects[documentId]?.apply)\n\n if (typeof createdDocument._system?.base !== 'undefined') {\n return concat(\n of(transaction),\n readTransactionsFollowingLineage({\n documentId: createdDocument._system.base.id,\n baseRevisionId: createdDocument._system.base.rev,\n client,\n getTransactionsLogs,\n }),\n maybeReadNextPage,\n )\n }\n }\n\n return concat(of(transaction), maybeReadNextPage)\n }),\n catchError((error) => {\n lineageCache?.delete(cacheKey)\n throw error\n }),\n )\n\n lineageCache.set(cacheKey, reader)\n return reader\n}\n\nfunction isVersionCreateTransaction(\n transaction: TransactionLogEventWithEffects & TransactionLogEventWithMutations,\n documentId: string,\n): boolean {\n const isCreateTransaction = transaction.mutations.some(\n (mutation) =>\n isCreateMutation(mutation) ||\n isCreateOrReplaceMutation(mutation) ||\n isCreateIfNotExistsMutation(mutation),\n )\n\n // Infer that a version was created if reverting the transaction is performed\n // by pushing `null` onto the output stack (Mendoza opcode 0).\n return (\n isCreateTransaction &&\n typeof transaction.effects[documentId] !== 'undefined' &&\n transaction.effects[documentId].revert.length === 2 &&\n transaction.effects[documentId].revert[0] === 0 &&\n transaction.effects[documentId].revert[1] === null\n )\n}\n","import {type SanityDocument} from '@sanity/types'\n\nimport {type EditStateFor} from './document-pair/editState'\n\n/**\n * Given an `EditState` object targeting the upstream version, select the first relevant document\n * that exists.\n *\n * - This is the version document itself if it exists.\n * - Otherwise, it is the published document.\n * - If neither documents exist, there is no existent upstream version.\n *\n * Unlike in other parts of the codebase, draft versions are never relevant here, because they\n * cannot be the upstream version of another document.\n *\n * @internal\n */\nexport function selectUpstreamVersion(upstreamEditState: EditStateFor): SanityDocument | null {\n return upstreamEditState.version ?? upstreamEditState.published\n}\n","import {type SanityClient} from '@sanity/client'\nimport {\n type TransactionLogEventWithMutations,\n type TransactionLogEventWithEffects,\n} from '@sanity/types'\n\nimport {getTransactionsLogs} from '../translog/getTransactionsLogs'\n\nconst TRANSLOG_ENTRY_LIMIT = 50\n\nconst documentTransactionsCache: Record<\n string,\n (TransactionLogEventWithEffects & TransactionLogEventWithMutations)[]\n> = Object.create(null)\n\n// Transactions could be cached, given they are not gonna change EVER.\n// Transactions are in an order, so if we have [rev4, rev3, rev2] and we already got [rev4, rev3] we can just get the diff between rev3 and rev2 and increment it.\n\nexport async function getDocumentTransactions({\n documentId,\n client,\n toTransaction,\n fromTransaction,\n}: {\n documentId: string\n client: SanityClient\n toTransaction?: string\n fromTransaction: string\n}): Promise<(TransactionLogEventWithEffects & TransactionLogEventWithMutations)[]> {\n const cacheKey = `${documentId}-${toTransaction}-${fromTransaction}`\n if (documentTransactionsCache[cacheKey] && typeof toTransaction !== 'undefined') {\n return documentTransactionsCache[cacheKey]\n }\n const skipFromTransaction = fromTransaction !== toTransaction\n\n let transactions = await getTransactionsLogs(client, documentId, {\n tag: 'sanity.studio.documents.history',\n effectFormat: 'mendoza',\n excludeContent: true,\n includeIdentifiedDocumentsOnly: true,\n limit: TRANSLOG_ENTRY_LIMIT,\n fromTransaction: fromTransaction,\n toTransaction: toTransaction,\n })\n if (skipFromTransaction) {\n transactions = transactions.filter((transaction) => transaction.id !== fromTransaction)\n }\n\n if (\n skipFromTransaction\n ? // The transaction received with the id fromTransaction is not included in the list but it's returned by the API; remove that from the count\n transactions.length === TRANSLOG_ENTRY_LIMIT - 1\n : transactions.length === TRANSLOG_ENTRY_LIMIT\n ) {\n // We have received the max values, we need to fetch the next batch. (Unless we have reached the toTransaction)\n if (\n (toTransaction && transactions[transactions.length - 1].id !== toTransaction) ||\n !toTransaction\n ) {\n const nextTransactions = await getDocumentTransactions({\n documentId,\n client,\n toTransaction,\n fromTransaction: transactions[transactions.length - 1].id,\n })\n return transactions.concat(nextTransactions)\n }\n }\n\n documentTransactionsCache[cacheKey] = transactions\n return transactions\n}\n","import {type MendozaPatch, type TransactionLogEventWithEffects} from '@sanity/types'\n\nimport {type ReleasesReducerState} from '../../releases/store/reducer'\nimport {getReleaseDocumentIdFromReleaseId} from '../../releases/util/getReleaseDocumentIdFromReleaseId'\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {type DocumentVariantType} from '../../util/getDocumentVariantType'\nimport {type DocumentRemoteMutationEvent} from '../document/buffered-doc/types'\nimport {\n type DocumentGroupEvent,\n type EditDocumentVersionEvent,\n isCreateDocumentVersionEvent,\n isCreateLiveDocumentEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n isEditDocumentVersionEvent,\n isPublishDocumentVersionEvent,\n isScheduleDocumentVersionEvent,\n isUnpublishDocumentEvent,\n isUnscheduleDocumentVersionEvent,\n isUpdateLiveDocumentEvent,\n type UpdateLiveDocumentEvent,\n} from './types'\n\nexport function removeDupes(\n events: DocumentGroupEvent[],\n newEvents: DocumentGroupEvent[],\n): DocumentGroupEvent[] {\n const noDupes = [...events, ...newEvents].reduce((acc, event) => {\n if (acc.has(event.id)) {\n const existingEvent = acc.get(event.id) as DocumentGroupEvent\n if (isEditDocumentVersionEvent(existingEvent) && !isEditDocumentVersionEvent(event)) {\n // Replaces the edit event with the none edit event, the publish event and the last edit event before the publish have the same id.\n acc.set(event.id, event)\n }\n\n if (existingEvent.type !== event.type) {\n // In the strange case two events got the same id but different types, we need to add a unique key to the map so both events are available\n // This could happen with a document that is created and published with the same revision id, for example in our e2e tests.\n acc.set(`${event.id}-${event.type}`, event)\n }\n return acc\n }\n return acc.set(event.id, event)\n }, new Map<string, DocumentGroupEvent>())\n return Array.from(noDupes.values())\n}\n\nexport function addEventId(\n event: Omit<DocumentGroupEvent, 'id'>,\n documentVariantType: DocumentVariantType,\n): DocumentGroupEvent {\n // this tries to infer the id of the event by checking if we are dealing with a published or version document\n let id = ''\n if (isCreateDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published'\n ? event.revisionId || `publishCreation--${event.timestamp}`\n : event.versionRevisionId\n } else if (isDeleteDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published' ? `deleteAt-${event.timestamp}` : event.versionRevisionId\n } else if (isPublishDocumentVersionEvent(event)) {\n id =\n documentVariantType === 'published'\n ? event.revisionId\n : event.versionRevisionId || event.revisionId\n } else if (isUnpublishDocumentEvent(event)) {\n // This event is only available for the published document\n id = documentVariantType === 'published' ? `unpublishAt-${event.timestamp}` : ''\n } else if (isScheduleDocumentVersionEvent(event)) {\n // This event is only available for the version document\n id = documentVariantType === 'published' ? '' : event.versionRevisionId\n } else if (isUnscheduleDocumentVersionEvent(event)) {\n id = documentVariantType === 'published' ? '' : event.versionRevisionId\n } else if (isDeleteDocumentGroupEvent(event)) {\n id = `deleted-${event.timestamp}`\n } else if (isCreateLiveDocumentEvent(event)) {\n id = event.revisionId\n } else if (isUpdateLiveDocumentEvent(event)) {\n id = event.revisionId\n } else if (isEditDocumentVersionEvent(event)) {\n id = event.revisionId\n }\n return {...event, id} as DocumentGroupEvent\n}\n\nexport function addParentToEvents(events: DocumentGroupEvent[]): DocumentGroupEvent[] {\n const eventsWithParent = JSON.parse(JSON.stringify(events)) as DocumentGroupEvent[]\n eventsWithParent.forEach((event, index) => {\n if (isPublishDocumentVersionEvent(event) || isDeleteDocumentVersionEvent(event)) {\n event.documentId = event.versionId\n // Find the creation event and edit events for this published event\n for (let i = index; i < eventsWithParent.length; i++) {\n const nextEvent = eventsWithParent[i]\n if (isEditDocumentVersionEvent(nextEvent)) {\n nextEvent.parentId = event.id\n }\n if (isCreateDocumentVersionEvent(nextEvent)) {\n event.creationEvent = nextEvent\n nextEvent.parentId = event.id\n // When we find the create event we should stop the loop. Events are ordered\n break\n }\n }\n }\n if (isEditDocumentVersionEvent(event)) {\n // If it's the first edit event after expanding a publish, the id of this event will be shared with the id of the published event, we need to use the following transaction id.\n if (event.parentId === event.id && event.transactions[1]?.revisionId) {\n event.id = event.transactions[1].revisionId\n }\n }\n })\n return eventsWithParent\n}\n\nconst MERGE_WINDOW = 5 * 60 * 1000 // 5 minutes\n\nexport function isWithinMergeWindow(a: string, b: string): boolean {\n return Math.abs(Date.parse(a) - Date.parse(b)) < MERGE_WINDOW\n}\n\nexport function squashLiveEditEvents(events: DocumentGroupEvent[]): DocumentGroupEvent[] {\n return events.reduce((acc: DocumentGroupEvent[], event) => {\n if (isUpdateLiveDocumentEvent(event)) {\n const previousEvent = acc[acc.length - 1]\n // check if the previous event is the same type is within the merge window and same author\n if (\n previousEvent &&\n isUpdateLiveDocumentEvent(previousEvent) &&\n isWithinMergeWindow(previousEvent.timestamp, event.timestamp) &&\n previousEvent.author === event.author\n ) {\n return acc\n }\n }\n acc.push(event)\n return acc\n }, [])\n}\n\nexport function remoteMutationToTransaction(\n event: DocumentRemoteMutationEvent,\n): TransactionLogEventWithEffects {\n return {\n author: event.author,\n documentIDs: [],\n id: event.transactionId,\n timestamp: event.timestamp.toISOString(),\n effects: {\n [event.head._id]: {\n apply: event.effects.apply as MendozaPatch,\n revert: event.effects.revert as MendozaPatch,\n },\n },\n }\n}\n\n/**\n * Updates the version publish document id.\n */\nexport function updateVersionEvents(events: DocumentGroupEvent[]) {\n return events.map((event) => {\n if (isPublishDocumentVersionEvent(event)) {\n return {\n ...event,\n documentId: event.versionId,\n }\n }\n return event\n })\n}\n\n/**\n * Adds the release information to the publish event.\n */\nexport function updatePublishedEvents(\n events: DocumentGroupEvent[],\n releases: ReleasesReducerState,\n) {\n return events.map((event) => {\n if (isPublishDocumentVersionEvent(event)) {\n const releaseId = getVersionFromId(event.versionId)\n if (releaseId) {\n const releaseDocumentId = getReleaseDocumentIdFromReleaseId(releaseId)\n const release = releases.releases.get(releaseDocumentId)\n return {\n ...event,\n release: release || {_id: releaseDocumentId},\n }\n }\n return event\n }\n return event\n })\n}\n\nexport function sortEvents({\n remoteEdits,\n events,\n expandedEvents,\n}: {\n remoteEdits: (UpdateLiveDocumentEvent | EditDocumentVersionEvent)[]\n events: DocumentGroupEvent[]\n expandedEvents: EditDocumentVersionEvent[]\n}): DocumentGroupEvent[] {\n const eventsWithRemoteEdits = [...remoteEdits, ...events, ...expandedEvents].sort(\n // Sort by timestamp, newest first unless is an edit event that has a corresponding publish event\n (a, b) => {\n if (\n isPublishDocumentVersionEvent(a) &&\n isEditDocumentVersionEvent(b) &&\n a.versionRevisionId === b.revisionId\n ) {\n return -1\n }\n if (\n isPublishDocumentVersionEvent(b) &&\n isEditDocumentVersionEvent(a) &&\n b.versionRevisionId === a.revisionId\n ) {\n return +1\n }\n\n return Date.parse(b.timestamp) - Date.parse(a.timestamp)\n },\n )\n return eventsWithRemoteEdits\n}\n","import {\n type MendozaEffectPair,\n type MendozaPatch,\n type TransactionLogEventWithEffects,\n} from '@sanity/types'\n\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {getDocumentVariantType} from '../../util/getDocumentVariantType'\nimport {\n type EditDocumentVersionEvent,\n isEditDocumentVersionEvent,\n type UpdateLiveDocumentEvent,\n} from './types'\nimport {isWithinMergeWindow} from './utils'\n\nexport function getEffectState(\n effect?: MendozaEffectPair,\n): 'noop' | 'deleted' | 'modified' | 'created' {\n const modified = Boolean(effect)\n const deleted = effect && isDeletePatch(effect?.apply)\n const created = effect && isDeletePatch(effect?.revert)\n\n if (deleted) {\n return 'deleted'\n }\n if (created) {\n return 'created'\n }\n\n if (modified) {\n return 'modified'\n }\n\n return 'noop'\n}\n\nfunction isDeletePatch(patch: MendozaPatch): boolean {\n return patch[0] === 0 && patch[1] === null\n}\n\nconst getEditTransaction = (\n transaction: TransactionLogEventWithEffects,\n): EditDocumentVersionEvent['transactions'][number] => {\n return {\n type: 'editTransaction',\n author: transaction.author,\n timestamp: transaction.timestamp,\n revisionId: transaction.id,\n }\n}\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: true,\n): UpdateLiveDocumentEvent[]\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: false,\n): EditDocumentVersionEvent[]\n\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: boolean,\n): (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[]\nexport function getEditEvents(\n transactions: TransactionLogEventWithEffects[],\n documentId: string,\n liveEdit: boolean,\n): (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[] {\n const editTransactions = transactions\n .filter((tx) => {\n const effectState = getEffectState(tx.effects[documentId])\n // We only care about the transactions that have modified the document\n return effectState === 'modified'\n })\n // We sort the transactions by timestamp, newest first\n .sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp))\n\n const result: (EditDocumentVersionEvent | UpdateLiveDocumentEvent)[] = []\n for (const transaction of editTransactions) {\n // If result is empty, add the current event\n const event = liveEdit\n ? ({\n id: transaction.id,\n timestamp: transaction.timestamp,\n type: 'updateLiveDocument',\n documentId: documentId,\n revisionId: transaction.id,\n author: transaction.author,\n documentVariantType: getDocumentVariantType(documentId),\n } satisfies UpdateLiveDocumentEvent)\n : ({\n type: 'editDocumentVersion',\n documentId: documentId,\n id: transaction.id,\n timestamp: transaction.timestamp,\n author: transaction.author,\n contributors: [transaction.author],\n releaseId: getVersionFromId(documentId),\n revisionId: transaction.id,\n transactions: [getEditTransaction(transaction)],\n documentVariantType: getDocumentVariantType(documentId),\n } satisfies EditDocumentVersionEvent)\n if (result.length === 0) {\n result.push(event)\n continue\n }\n\n const lastEvent = result[result.length - 1]\n\n if (isWithinMergeWindow(lastEvent.timestamp, event.timestamp)) {\n if (isEditDocumentVersionEvent(lastEvent)) {\n // Add the transaction event to the transactions\n lastEvent.transactions.push(getEditTransaction(transaction))\n if (!lastEvent.contributors.includes(event.author) && lastEvent.author !== event.author) {\n // Update event the contributors list\n lastEvent.contributors.push(event.author)\n }\n }\n } else {\n // If the time difference is greater than the window, add as a new event\n result.push(event)\n }\n }\n\n return result\n}\n","import {type SanityClient} from '@sanity/client'\nimport {BehaviorSubject, from, of} from 'rxjs'\nimport {catchError, map, scan, shareReplay, startWith, switchMap, tap} from 'rxjs/operators'\n\nimport {getDocumentVariantType} from '../../util/getDocumentVariantType'\nimport {getDocumentTransactions} from './getDocumentTransactions'\nimport {getEditEvents} from './getEditEvents'\nimport {\n type DocumentGroupEvent,\n type EditDocumentVersionEvent,\n type HistoryClearedEvent,\n isCreateDocumentVersionEvent,\n isDeleteDocumentGroupEvent,\n isDeleteDocumentVersionEvent,\n} from './types'\nimport {addEventId, removeDupes} from './utils'\n\nexport const HISTORY_CLEARED_EVENT_ID = 'history-cleared'\nexport interface EventsObservableValue {\n events: DocumentGroupEvent[]\n nextCursor: string\n loading: boolean\n error: null | Error\n}\nconst INITIAL_VALUE: EventsObservableValue = {\n events: [],\n nextCursor: '',\n loading: true,\n error: null,\n}\n\ninterface InitialFetchEventsOptions {\n client: SanityClient\n documentId: string\n}\nexport function getInitialFetchEvents({client, documentId}: InitialFetchEventsOptions) {\n const documentVariantType = getDocumentVariantType(documentId)\n const refetchEventsTrigger$ = new BehaviorSubject<{\n cursor: string | null\n origin: 'loadMore' | 'reload' | 'initial'\n }>({\n cursor: null,\n origin: 'initial',\n })\n\n const fetchEvents = ({limit, nextCursor}: {limit: number; nextCursor: string | null}) => {\n const params = new URLSearchParams({\n limit: limit.toString(),\n })\n if (nextCursor) {\n params.append('nextCursor', nextCursor)\n }\n return client.observable\n .request<{\n events: Record<string, Omit<DocumentGroupEvent, 'id'>[]>\n nextCursor: string\n }>({\n url: `/data/history/${client.config().dataset}/events/documents/${documentId}?${params.toString()}`,\n tag: 'get-document-events',\n })\n .pipe(\n map((response) => {\n return {\n events:\n response.events[documentId]?.map((ev) => addEventId(ev, documentVariantType)) || [],\n nextCursor: response.nextCursor,\n loading: false,\n error: null,\n }\n }),\n )\n }\n\n const fetchEditEvents = (events: DocumentGroupEvent[]) => {\n const eventWithRevision =\n documentVariantType === 'version'\n ? events.find(isCreateDocumentVersionEvent)\n : events.find(\n (event) =>\n 'versionRevisionId' in event &&\n event.versionRevisionId &&\n !isDeleteDocumentVersionEvent(event) &&\n !isDeleteDocumentGroupEvent(event),\n )\n\n const revisionId =\n eventWithRevision &&\n 'versionRevisionId' in eventWithRevision &&\n eventWithRevision.versionRevisionId\n return from(\n getDocumentTransactions({\n client,\n documentId,\n fromTransaction: revisionId || '',\n toTransaction: undefined, // We need to get up to the present moment\n }),\n ).pipe(\n map((transactions) => {\n const editEvents: (EditDocumentVersionEvent | HistoryClearedEvent)[] = getEditEvents(\n transactions,\n documentId,\n false,\n )\n const needsHistoryClearedEvent =\n events.length === 0 && transactions.length > 0 && editEvents.length > 0\n if (needsHistoryClearedEvent) {\n const clearedEventTimestamp =\n new Date(editEvents[editEvents.length - 1].timestamp).getTime() - 1\n\n editEvents.unshift({\n type: 'historyCleared',\n documentId,\n id: HISTORY_CLEARED_EVENT_ID,\n timestamp: new Date(clearedEventTimestamp).toISOString(),\n author: '',\n documentVariantType,\n })\n }\n return editEvents\n }),\n )\n }\n let nextCursor: string = ''\n\n return {\n events$: refetchEventsTrigger$.pipe(\n switchMap(({cursor, origin}) => {\n return fetchEvents({\n nextCursor: cursor,\n limit: origin === 'reload' ? 10 : 100,\n }).pipe(\n switchMap((response) => {\n if (documentVariantType === 'published' || origin === 'loadMore') {\n // For the published document we don't need to fetch the edit transactions.\n return of({...response, origin})\n }\n return fetchEditEvents(response.events).pipe(\n map((editEvents) => {\n return {...response, events: [...editEvents, ...response.events], origin}\n }),\n )\n }),\n catchError((error: Error) => {\n console.error('Error fetching events', error)\n return [{events: [], nextCursor: '', loading: false, error: error, origin}]\n }),\n startWith({events: [], nextCursor: '', loading: true, error: null, origin}),\n )\n }),\n scan((prev, next) => {\n return {\n events: removeDupes(prev.events, next.events),\n // If we are reloading, we should keep the cursor as it was before.\n nextCursor: next.origin === 'reload' ? prev.nextCursor : next.nextCursor,\n loading: next.loading,\n error: next.error,\n }\n }, INITIAL_VALUE),\n tap((response) => {\n nextCursor = response.nextCursor\n }),\n shareReplay(1),\n ),\n /**\n * Loads new events for the document, fetching the latest events from the API.\n */\n reloadEvents: () => refetchEventsTrigger$.next({cursor: null, origin: 'reload'}),\n /**\n * Loads more events for the document, fetching the next batch of events from the API.\n */\n loadMore: () => {\n const lastCursorUsed = refetchEventsTrigger$.getValue().cursor\n if (nextCursor && lastCursorUsed !== nextCursor) {\n refetchEventsTrigger$.next({origin: 'loadMore', cursor: nextCursor})\n }\n },\n }\n}\n","import {type SanityClient, type SanityDocument} from '@sanity/client'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, map, shareReplay, startWith} from 'rxjs/operators'\n\nimport {HISTORY_CLEARED_EVENT_ID} from './getInitialFetchEvents'\nimport {type EventsStoreRevision} from './types'\n\nconst documentRevisionCache: Record<string, Observable<EventsStoreRevision>> = Object.create(null)\n\n/**\n * - When fetching by `revisionId`, `revisionId` will always be present in the result.\n * - When fetching by `time`, `revisionId` will only be present after fetching.\n */\ntype Result<InputContext> = InputContext extends {revisionId: string}\n ? EventsStoreRevision\n : Omit<EventsStoreRevision, 'revisionId'> & Partial<Pick<EventsStoreRevision, 'revisionId'>>\n\ntype Context = {client: SanityClient; documentId: string} & (\n | {\n /**\n * Fetch the document revision by revision id.\n */\n revisionId: string\n time?: never\n }\n | {\n revisionId?: never\n /**\n * Fetch the document revision by time, formatted as a Content Lake compatible\n * date-time string.\n */\n time: string\n }\n)\n\nexport function getDocumentAtRevision<InputContext extends Context>({\n client,\n documentId,\n revisionId,\n time,\n}: InputContext): Observable<Result<InputContext> | null> {\n if (revisionId === HISTORY_CLEARED_EVENT_ID) {\n return of({document: null, loading: false, revisionId: revisionId})\n }\n const cacheKey = `${documentId}@${revisionId ? ['revisionId', revisionId].join('.') : ['time', time].join('.')}`\n const dataset = client.config().dataset\n if (!documentRevisionCache[cacheKey]) {\n const searchParams = new URLSearchParams(\n typeof revisionId === 'string' ? {revision: revisionId} : {time},\n )\n documentRevisionCache[cacheKey] = client.observable\n .request<{documents: SanityDocument[]}>({\n url: `/data/history/${dataset}/documents/${documentId}?${searchParams}`,\n tag: 'get-document-revision',\n })\n .pipe(\n map((response) => {\n const document = response.documents[0]\n return {document: document, loading: false, revisionId: document?._rev}\n }),\n\n catchError((error: Error) => {\n // TODO: Handle error\n console.error('Error fetching document at revision', error)\n return [\n {\n document: null,\n loading: false,\n revisionId: revisionId,\n } satisfies Result<Context> as any,\n ]\n }),\n startWith({\n document: null,\n loading: true,\n revisionId: revisionId,\n } satisfies Result<Context> as any),\n shareReplay(1),\n )\n }\n\n return documentRevisionCache[cacheKey]\n}\n","import {styled, css} from 'styled-components'\n\ninterface Props {\n $enabled: boolean\n}\n\n/**\n * @internal\n */\nexport const FormGutterCustomProperties = styled.div<Props>(({$enabled}) => {\n return css`\n display: contents;\n --formGutterEnabled: ${$enabled ? 1 : 0};\n `\n})\n","import {type SanityClient} from '@sanity/client'\nimport {type ObjectSchemaType, type SanityDocument} from '@sanity/types'\nimport {uuid} from '@sanity/uuid'\nimport get from 'lodash-es/get.js'\nimport {\n type ComponentType,\n type PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {BehaviorSubject, combineLatest, EMPTY, filter, map, of, Subject, tap} from 'rxjs'\nimport {type DocumentDivergencesContextValue, DocumentDivergencesContext} from 'sanity/_singletons'\n\nimport {\n collateDocumentDivergences,\n collateDocumentDivergencesInitialState,\n} from '../../divergence/collateDocumentDivergences'\nimport {useDivergenceNavigator} from '../../divergence/divergenceNavigator'\nimport {\n isDivergenceResolutions,\n type DivergenceResolution,\n type FindDivergencesContext,\n} from '../../divergence/readDocumentDivergences'\nimport {readMostRecentSharedTransaction} from '../../divergence/readMostRecentSharedTransaction'\nimport {type ResolutionMarker} from '../../divergence/types/ResolutionMarker'\nimport {useClient} from '../../hooks/useClient'\nimport {type EditStateFor} from '../../store/document/document-pair/editState'\nimport {selectUpstreamVersion} from '../../store/document/selectUpstreamVersion'\nimport {getDocumentAtRevision} from '../../store/events/getDocumentAtRevision'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {isPublishedId} from '../../util/draftUtils'\nimport {FormGutterCustomProperties} from '../components/FormGutterCustomProperties'\nimport {type FormState} from '../store/useFormState'\n\ninterface PropsEnabled extends PropsWithChildren {\n enabled: true\n formState: FormState\n upstreamEditState: EditStateFor\n editState: EditStateFor\n subjectId: string\n schemaType: ObjectSchemaType\n}\n\ninterface PropsDisabled extends PropsWithChildren {\n enabled: false\n}\n\ntype Props = PropsEnabled | PropsDisabled\n\n/**\n * @internal\n */\nexport const DivergencesProvider: ComponentType<Props> = (props) => {\n if (props.enabled) {\n return <DivergencesProviderEnabled {...props} />\n }\n\n return <DivergencesProviderDisabled {...props} />\n}\n\nconst DivergencesProviderEnabled: ComponentType<PropsEnabled> = ({\n formState,\n upstreamEditState,\n editState,\n subjectId,\n schemaType,\n children,\n}) => {\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n\n const upstreamHead = selectUpstreamVersion(upstreamEditState)\n const upstreamId = upstreamHead?._id\n const hasUpstreamVersion = typeof upstreamId !== 'undefined'\n\n const subject = isPublishedId(subjectId)\n ? editState.published\n : (editState.version ?? editState.draft)\n\n const collatedDivergences =\n !hasUpstreamVersion || typeof upstreamId === 'undefined' || typeof subjectId === 'undefined'\n ? {\n context: new Subject<FindDivergencesContext>(),\n observable: of(collateDocumentDivergencesInitialState),\n }\n : collateDocumentDivergences({\n subjectId: subjectId,\n upstreamId: upstreamId,\n })\n\n useCollateDivergencesContext({\n upstreamHead,\n hasUpstreamVersion,\n subjectHead: subject,\n resolutions:\n subject &&\n '_systemDivergences' in subject &&\n typeof subject._systemDivergences === 'object' &&\n subject._systemDivergences !== null &&\n 'resolutions' in subject._systemDivergences &&\n isDivergenceResolutions(subject._systemDivergences.resolutions)\n ? subject._systemDivergences.resolutions\n : [],\n client,\n context: collatedDivergences.context,\n })\n\n const divergenceNavigator = useDivergenceNavigator({\n divergences: collatedDivergences.observable,\n schemaType,\n formState,\n })\n\n const [sessionId] = useState(() => uuid())\n\n const value = useMemo<DocumentDivergencesContextValue>(\n () => ({enabled: true, sessionId, ...divergenceNavigator}),\n [sessionId, divergenceNavigator],\n )\n\n return (\n <DocumentDivergencesContext.Provider value={value}>\n <FormGutterCustomProperties $enabled>{children}</FormGutterCustomProperties>\n </DocumentDivergencesContext.Provider>\n )\n}\n\nconst disabledContextValue: DocumentDivergencesContextValue = {\n enabled: false,\n sessionId: null,\n}\n\nconst DivergencesProviderDisabled: ComponentType<PropsWithChildren> = ({children}) => {\n return (\n <DocumentDivergencesContext.Provider value={disabledContextValue}>\n <FormGutterCustomProperties $enabled={false}>{children}</FormGutterCustomProperties>\n </DocumentDivergencesContext.Provider>\n )\n}\n\n/**\n * @internal\n */\nexport function useDocumentDivergences(): DocumentDivergencesContextValue {\n return useContext(DocumentDivergencesContext)\n}\n\n/**\n * Listen to the dependencies required to collate divergences, and update its\n * context when they change.\n */\nfunction useCollateDivergencesContext({\n upstreamHead,\n hasUpstreamVersion,\n subjectHead,\n resolutions,\n client,\n context,\n}: {\n upstreamHead: SanityDocument | null\n hasUpstreamVersion: boolean\n subjectHead: SanityDocument | null\n resolutions: {\n _key: string\n resolutionMarker: ResolutionMarker\n }[]\n client: SanityClient\n context: Subject<FindDivergencesContext>\n}):\n | {\n upstreamHead: SanityDocument\n subjectHead: SanityDocument\n resolutions: DivergenceResolution[]\n upstreamAtFork: SanityDocument\n }\n | undefined {\n const shouldFindForkPoint = hasUpstreamVersion && subjectHead && upstreamHead\n\n const baseIsForkPoint =\n get(subjectHead, ['_system', 'base', 'id']) === upstreamHead?._id &&\n get(subjectHead, ['_system', 'base', 'rev']) === upstreamHead?._rev\n\n // Kept synchronous: this is an input to the `readUpstreamAtFork` stream that\n // is combined with the live document heads below — a deferred snapshot could\n // pair an outdated fork-point revision with newer heads.\n const mostRecentSharedTransaction = useSyncObservable(\n shouldFindForkPoint && baseIsForkPoint\n ? EMPTY\n : readMostRecentSharedTransaction({\n a: upstreamHead?._id,\n b: subjectHead?._id,\n client,\n }),\n )\n\n const listenUpstreamHead = useMemo(() => new BehaviorSubject<SanityDocument | null>(null), [])\n useEffect(() => listenUpstreamHead.next(upstreamHead), [upstreamHead, listenUpstreamHead])\n\n const listenSubjectHead = useMemo(() => new BehaviorSubject<SanityDocument | null>(null), [])\n useEffect(() => listenSubjectHead.next(subjectHead), [subjectHead, listenSubjectHead])\n\n const listenResolutions = useMemo(\n () => new BehaviorSubject<DivergenceResolution[] | null>(null),\n [],\n )\n\n useEffect(() => listenResolutions.next(resolutions ?? []), [resolutions, listenResolutions])\n\n // Read the base upstream document.\n //\n // - If the subject version's `_system.base.id` points to its current\n // upstream, the target of the subject's `_system.base` is inferred to be\n // the base upstream document.\n // - Otherwise, the base upstream document is identified using the most recent\n // transaction shared by the subject and upstream versions.\n const readUpstreamAtFork = useMemo(() => {\n if (shouldFindForkPoint && baseIsForkPoint) {\n return getDocumentAtRevision({\n client,\n documentId: get(subjectHead, ['_system', 'base', 'id']),\n revisionId: get(subjectHead, ['_system', 'base', 'rev']),\n })\n }\n\n if (\n upstreamHead === null ||\n subjectHead === null ||\n !hasUpstreamVersion ||\n typeof mostRecentSharedTransaction === 'undefined'\n ) {\n return EMPTY\n }\n\n return getDocumentAtRevision({\n client,\n documentId: mostRecentSharedTransaction.documentIDs[0],\n revisionId: mostRecentSharedTransaction.id,\n })\n }, [\n upstreamHead,\n subjectHead,\n hasUpstreamVersion,\n mostRecentSharedTransaction,\n client,\n shouldFindForkPoint,\n baseIsForkPoint,\n ])\n\n const listenContext = useMemo(() => {\n return combineLatest({\n upstreamHead: listenUpstreamHead.pipe(\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n subjectHead: listenSubjectHead.pipe(\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n resolutions: listenResolutions.pipe(map((nextResolutions) => nextResolutions ?? [])),\n upstreamAtFork: readUpstreamAtFork.pipe(\n filter((revision) => revision !== null),\n map(({document}) => document),\n filter((document) => typeof document !== 'undefined' && document !== null),\n ),\n }).pipe(tap((nextContext) => context.next(nextContext)))\n }, [readUpstreamAtFork, context, listenUpstreamHead, listenSubjectHead, listenResolutions])\n\n // The subscription exists to drive the `context.next` pipeline above; the\n // returned snapshot is not consumed for rendering, so deferring it would\n // only desynchronize the pipeline.\n return useSyncObservable(listenContext)\n}\n","import {type Path} from '@sanity/types'\nimport {AnimatePresence} from 'motion/react'\nimport {type ComponentType} from 'react'\n\nimport {DivergenceIndicator} from '../../divergence/components/DivergenceIndicator'\nimport {type DivergenceNavigator, selectDivergence} from '../../divergence/divergenceNavigator'\nimport {useVersionRelease} from '../../hooks/useVersionRelease'\nimport {useDocumentDivergences} from '../contexts/DivergencesProvider'\n\ninterface Props {\n path: Path\n}\n\nexport const FormDivergenceIndicator: ComponentType<Props> = (props) => {\n const divergenceNavigator = useDocumentDivergences()\n\n if (!divergenceNavigator.enabled) {\n return null\n }\n\n return <FormDivergenceIndicatorEnabled {...props} divergenceNavigator={divergenceNavigator} />\n}\n\nconst FormDivergenceIndicatorEnabled: ComponentType<\n Props & {divergenceNavigator: DivergenceNavigator & {enabled: true}}\n> = ({divergenceNavigator, path}) => {\n const divergence = selectDivergence(divergenceNavigator.state, path)\n const {release: upstreamBundle} = useVersionRelease(divergenceNavigator.state.upstreamId ?? '')\n\n return (\n <AnimatePresence>\n {divergence && divergence.divergences[0][1].status === 'unresolved' && (\n <DivergenceIndicator\n path={path}\n divergenceNavigator={divergenceNavigator}\n divergence={divergence}\n upstreamBundle={upstreamBundle}\n />\n )}\n </AnimatePresence>\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\nexport interface InspectedDivergenceInfo {\n sessionId: string | null\n divergenceCount: number | null\n}\n\nexport const InspectedDivergence = defineEvent<InspectedDivergenceInfo>({\n name: 'Inspected Divergence',\n version: 1,\n description: 'User inspected divergence in a single node',\n})\n\nexport interface ActedOnDivergenceInfo {\n action: 'take-upstream-value' | 'mark-resolved'\n sessionId: string | null\n divergenceCount: number | null\n}\n\nexport const ActedOnDivergence = defineEvent<ActedOnDivergenceInfo>({\n name: 'Acted On Divergence',\n version: 1,\n description: 'User acted on divergence in a single node',\n})\n","import {append, at, type NodePatch, type Path, set, setIfMissing, unset} from '@sanity/mutate'\nimport {type Path as SanityPath, type SanityDocument} from '@sanity/types'\nimport {fromString, isEqual, startsWith} from '@sanity/util/paths'\nimport {EMPTY, first, from, map, mergeMap, type Observable, of} from 'rxjs'\n\nimport {type DivergenceAtPath} from './readDocumentDivergences'\nimport {type ResolutionMarkerAtPath} from './types/ResolutionMarker'\nimport {flattenObject} from './utils/flatten'\n\nconst SYSTEM_PATH = '_systemDivergences'\nconst DIVERGENCE_RESOLUTION_PATH = [SYSTEM_PATH, 'resolutions'] as const satisfies Path\nconst DEFAULT_VALUES = [{}, []]\n\n/**\n * Create patches to set the provided resolution markers on the subject version,\n * ensuring the necessary `_systemDivergences` field exists.\n *\n * @internal\n */\nexport function createUpsertResolutionMarkerPatches(\n ...resolutionMarkers: ResolutionMarkerAtPath[]\n): NodePatch[] {\n const upsertSystem = DIVERGENCE_RESOLUTION_PATH.map((segment, index, array) =>\n array.slice(0, index).concat(segment),\n ).map((path, index) => at(path, setIfMissing(DEFAULT_VALUES[index])))\n\n const setResolutionMarkers = resolutionMarkers.flatMap(([path, resolutionMarker]) => [\n at([...DIVERGENCE_RESOLUTION_PATH, {_key: path}], unset()),\n at(\n DIVERGENCE_RESOLUTION_PATH,\n append([\n {\n _key: path,\n resolutionMarker,\n },\n ]),\n ),\n ])\n\n return [...upsertSystem, ...setResolutionMarkers]\n}\n\n/**\n * Resolve an array of divergences by taking their upstream value.\n *\n * @internal\n */\nexport function createTakeFromUpstreamPatches(\n source: SanityDocument,\n allDivergences: DivergenceAtPath[],\n ...paths: SanityPath[]\n): Observable<NodePatch> {\n return from(allDivergences).pipe(\n mergeMap(([divergencePath, divergence]) => {\n const divergencePathSegments = fromString(divergencePath)\n\n // Set ancestoral or sibling object `_type`.\n if (divergence.effect === 'set' && divergencePathSegments.at(-1) === '_type') {\n const isAncestorOrSibling = paths.some((acceptedPath) => {\n return (\n acceptedPath.length > divergencePathSegments.length - 1 &&\n startsWith(divergencePathSegments.slice(0, -1), acceptedPath) &&\n !isEqual(divergencePathSegments, acceptedPath)\n )\n })\n\n if (isAncestorOrSibling) {\n return from(flattenObject(source)).pipe(\n first(([nodeFlatPath]) => nodeFlatPath === divergencePath),\n map(([, value]) => value),\n map((value) => at(divergencePath, set(value))),\n )\n }\n }\n\n // Divergence not selected for copy.\n if (typeof paths.find((path) => isEqual(path, divergencePathSegments)) === 'undefined') {\n return EMPTY\n }\n\n if (divergence.effect === 'insert') {\n // TODO: Support array insertions.\n throw new Error('Array insertions not supported')\n }\n\n if (divergence.effect === 'unset') {\n return of(at(divergencePath, unset()))\n }\n\n if (divergence.effect === 'set') {\n return from(flattenObject(source)).pipe(\n first(([nodeFlatPath]) => nodeFlatPath === divergencePath),\n map(([, value]) => value),\n map((value) => at(divergencePath, set(value))),\n )\n }\n\n return EMPTY\n }),\n )\n}\n","import {SanityEncoder} from '@sanity/mutate'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {type SanityDocument} from '@sanity/types'\nimport {fromString, get} from '@sanity/util/paths'\nimport {useContext, useEffect, useState} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {\n type Observable,\n EMPTY,\n filter,\n find,\n firstValueFrom,\n from,\n map,\n mergeMap,\n of,\n startWith,\n switchMap,\n toArray,\n zip,\n} from 'rxjs'\nimport {DocumentDivergencesContext} from 'sanity/_singletons'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useDocumentOperation} from '../../hooks/useDocumentOperation'\nimport {useDocumentStore} from '../../store/datastores'\nimport {selectUpstreamVersion} from '../../store/document/selectUpstreamVersion'\nimport {getDocumentAtRevision} from '../../store/events/getDocumentAtRevision'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {getPublishedId, getVersionFromId} from '../../util/draftUtils'\nimport {ActedOnDivergence, InspectedDivergence} from '../__telemetry__/divergence.telemetry'\nimport {type ReachableDivergence} from '../divergenceNavigator'\nimport {createTakeFromUpstreamPatches, createUpsertResolutionMarkerPatches} from '../patches'\nimport {createDocumentRevisionMarker, type DivergenceAtPath} from '../readDocumentDivergences'\nimport {type ResolutionMarkerAtPath} from '../types/ResolutionMarker'\nimport {hashData} from '../utils/hashData'\n\ntype HydratedSnapshot =\n | {\n isLoading: true\n value?: never\n }\n | {\n isLoading: false\n value?: {\n value: unknown\n document: SanityDocument\n }\n }\n\n/**\n * @internal\n */\nexport interface DivergenceController {\n /**\n * Resolve the divergence by setting its resolution marker to the current\n * upstream node.\n */\n markResolved: () => Promise<void>\n /**\n * Resolve the divergence by taking the value from the upstream node.\n */\n takeUpstreamValue: () => Promise<void>\n isLoading: boolean\n isReadOnly: boolean\n isActionPending: boolean\n upstreamBase: HydratedSnapshot\n upstreamHead: HydratedSnapshot\n}\n\n/**\n * @internal\n */\nexport function useDivergenceController(\n divergence: ReachableDivergence,\n allDivergences: DivergenceAtPath[],\n contextReadOnly: boolean,\n): DivergenceController {\n const {subjectId, documentId, documentType, sinceRevisionId, path} = divergence\n const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const documentStore = useDocumentStore()\n const telemetry = useTelemetry()\n const [isActionPending, setIsActionPending] = useState<boolean>(false)\n\n // Why: `useDocumentDivergences` throws outside a `DivergencesProvider`, and\n // the controller can render in trees that lack one. Read the context directly.\n const divergencesContext = useContext(DocumentDivergencesContext)\n const sessionId = divergencesContext?.sessionId ?? null\n // Why: `null` distinguishes \"no provider mounted\" from \"known zero\n // divergences\" in telemetry.\n const divergenceCount = divergencesContext?.enabled\n ? divergencesContext.state.divergences.length\n : null\n\n const logInspectedDivergence = useEffectEvent(() =>\n telemetry.log(InspectedDivergence, {sessionId, divergenceCount}),\n )\n useEffect(logInspectedDivergence, [logInspectedDivergence])\n\n const [upstreamId, upstreamRevisionId] = sinceRevisionId.split('@')\n\n const readUpstreamBase: Observable<HydratedSnapshot> = getDocumentAtRevision({\n client,\n documentId: upstreamId,\n revisionId: upstreamRevisionId,\n }).pipe(\n switchMap((state) => {\n if (state?.loading) {\n return of({\n isLoading: true,\n })\n }\n return of(state).pipe(\n filter((revision) => revision !== null),\n map(({document}) => document),\n switchMap((document) => {\n if (!document) {\n return EMPTY\n }\n\n return of(get(document, path)).pipe(\n map((value) => ({value, document})),\n startWith(undefined),\n )\n }),\n map((value) => ({isLoading: false, value})),\n )\n }),\n )\n\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the divergence's own\n // document id, independent of the selected perspective.\n const readUpstreamHead: Observable<HydratedSnapshot> = documentStore.pair\n .editState(getPublishedId(documentId), documentType, getVersionFromId(documentId))\n .pipe(\n switchMap((state) => {\n if (!state.ready) {\n return of({\n isLoading: true,\n })\n }\n\n return of(state).pipe(\n map(selectUpstreamVersion),\n find((document) => document !== null),\n switchMap((document) => {\n if (typeof document === 'undefined') {\n return EMPTY\n }\n\n return of(get(document, path)).pipe(\n map((value) => ({value, document})),\n startWith(undefined),\n )\n }),\n map((value) => ({isLoading: false, value})),\n )\n }),\n )\n\n // Kept synchronous: `markResolved` / `takeUpstreamValue` build and execute\n // patches from `upstreamHead.value.document` (and gate on `isLoading`), so a\n // deferred snapshot could act against a stale upstream document head.\n const upstreamBase = useSyncObservable(readUpstreamBase, {isLoading: true})\n const upstreamHead = useSyncObservable(readUpstreamHead, {isLoading: true})\n\n const isLoading = upstreamBase.isLoading || upstreamHead.isLoading\n const isReadOnly = contextReadOnly || isLoading || isActionPending\n\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the divergence's subject\n // id, independent of the selected perspective.\n const {patch} = useDocumentOperation(\n getPublishedId(subjectId),\n documentType,\n getVersionFromId(subjectId),\n )\n\n const markResolved = async () => {\n if (isReadOnly || upstreamHead.isLoading || typeof upstreamHead.value === 'undefined') {\n return\n }\n\n setIsActionPending(true)\n\n telemetry.log(ActedOnDivergence, {\n action: 'mark-resolved',\n sessionId,\n divergenceCount,\n })\n\n const markers = await firstValueFrom(\n createResolutionMarkers(upstreamHead.value.document, divergence).pipe(toArray()),\n )\n\n const patches = createUpsertResolutionMarkerPatches(...markers)\n patch.execute(patches.map(SanityEncoder.encodePatch))\n }\n\n const takeUpstreamValue = async () => {\n if (isReadOnly || upstreamHead.isLoading || typeof upstreamHead.value === 'undefined') {\n return\n }\n\n setIsActionPending(true)\n\n telemetry.log(ActedOnDivergence, {\n action: 'take-upstream-value',\n sessionId,\n divergenceCount,\n })\n\n const patches = await firstValueFrom(\n createTakeFromUpstreamPatches(\n upstreamHead.value.document,\n allDivergences,\n ...divergence.divergences.map(([divergencePath]) => fromString(divergencePath)),\n ).pipe(toArray()),\n )\n\n patch.execute(patches.map(SanityEncoder.encodePatch))\n }\n\n return {\n upstreamBase,\n upstreamHead,\n markResolved,\n takeUpstreamValue,\n isLoading,\n isReadOnly,\n isActionPending,\n }\n}\n\nfunction createResolutionMarkers(\n document: SanityDocument,\n reachableDivergence: ReachableDivergence,\n): Observable<ResolutionMarkerAtPath> {\n return from(reachableDivergence.divergences).pipe(\n mergeMap(([path, divergence]) => zip(of(get(document, path)), of(divergence))),\n mergeMap(([value, divergence]) => {\n if (divergence.effect === 'move') {\n throw new Error('Resolution of \"move\" divergences not implemented')\n }\n\n if (typeof value === 'undefined') {\n throw new Error(`Could not resolve upstream value at \\`${divergence.path}\\``)\n }\n\n return zip(\n of(divergence.path),\n zip(of(createDocumentRevisionMarker(document._id, document._rev)), from(hashData(value))),\n )\n }),\n )\n}\n","import {type Path} from '@sanity/types'\nimport {type LayerContextValue, Card} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {css, styled} from 'styled-components'\n\nimport {pathToAnchorIdent} from '../../form/utils/pathToAnchorIdent'\n\ninterface Props {\n $path: Path\n $layer: LayerContextValue\n}\n\n/**\n * @internal\n */\nexport const DivergenceOverlay = styled(Card)<Props>(({$path, $layer, ...props}) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n inline-size: 100%;\n margin-block-start: ${theme.space[3]}px;\n\n @supports (position-anchor: --anchor) {\n position: fixed;\n position-anchor: ${pathToAnchorIdent('input', $path)};\n position-area: block-end span-all;\n position-try-fallbacks: flip-block;\n inline-size: calc(anchor-size(inline) + ${theme.space[5]}px);\n z-index: ${$layer.zIndex};\n }\n `\n})\n","import {diffInput, wrap} from '@sanity/diff'\nimport {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\nimport {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, Skeleton, Spinner, Text, useLayer} from '@sanity/ui'\nimport {fromString} from '@sanity/util/paths'\nimport {type RefObject, type ComponentType, Fragment} from 'react'\nimport {DocumentChangeContext} from 'sanity/_singletons'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {type DiffComponent, type DiffComponentOptions} from '../../field/types'\nimport {useVersionRelease} from '../../hooks/useVersionRelease'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type DivergenceNavigator, type ReachableDivergence} from '../divergenceNavigator'\nimport {useDivergenceController} from '../hooks/useDivergenceController'\nimport {DivergenceOverlay} from './DivergenceOverlay'\n\n/**\n * @internal\n */\nexport interface DivergenceDetailProps {\n divergence: ReachableDivergence\n divergenceNavigator: DivergenceNavigator\n title?: string\n containerElement?: RefObject<HTMLDivElement | null>\n readOnly: boolean | undefined\n}\n\nconst sectionPadding = 4\n\n/**\n * @internal\n */\nexport const DivergenceDetail: ComponentType<DivergenceDetailProps> = ({\n divergenceNavigator,\n divergence,\n containerElement,\n readOnly: contextReadOnly,\n}) => {\n const {\n upstreamBase,\n upstreamHead,\n markResolved,\n takeUpstreamValue,\n isReadOnly,\n isActionPending,\n isLoading,\n } = useDivergenceController(\n divergence,\n divergenceNavigator.state.allDivergences,\n contextReadOnly ?? false,\n )\n\n const {release: upstreamRelease, state: upstreamReleaseState} = useVersionRelease(\n divergence.documentId,\n )\n\n const diff = isLoading\n ? undefined\n : diffInput<any>(\n wrap(upstreamBase?.value?.value ?? null, {}),\n wrap(upstreamHead?.value?.value ?? null, {}),\n )\n\n const DiffComponent = normalizeDiffComponent(divergence.diffComponent)\n\n const divergenceIndex = divergenceNavigator.state.divergences.findIndex(\n ([path]) => path === divergence.path,\n )\n\n const {t} = useTranslation()\n const layer = useLayer()\n\n return (\n <DocumentChangeContext.Provider\n value={{\n documentId: divergence.documentId,\n schemaType: divergence.schemaType,\n isComparingCurrent: false,\n FieldWrapper: Fragment,\n rootDiff: null,\n value: upstreamHead?.value?.document ?? {},\n showFromValue: true,\n }}\n >\n <div ref={containerElement}>\n <DivergenceOverlay\n open\n border\n radius={3}\n shadow={2}\n $path={fromString(divergence.path)}\n contentEditable={false}\n $layer={layer}\n >\n <Flex justify=\"space-between\" align=\"center\">\n <Box paddingX={sectionPadding} paddingY={sectionPadding}>\n <Text size={1}>\n {upstreamReleaseState === 'loaded' &&\n t('divergence.effect.summary', {\n title: divergence.schemaType.title,\n effect: t('divergence.effect.changed'),\n versionName:\n typeof upstreamRelease === 'string'\n ? upstreamRelease\n : upstreamRelease?.metadata.title,\n })}\n </Text>\n </Box>\n <Box paddingLeft={sectionPadding} paddingRight={3}>\n <Button\n aria-label={t('divergence.action.close.label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={divergenceNavigator.blurFocusedDivergence}\n tooltipProps={{\n content: t('divergence.action.close.label'),\n portal: true,\n }}\n />\n </Box>\n </Flex>\n <Card padding={sectionPadding} borderTop borderBottom>\n {isLoading ? (\n <Skeleton\n animated\n delay={1000}\n radius={1}\n style={{width: '100%', aspectRatio: '1/0.125'}}\n />\n ) : (\n <>\n {diff &&\n DiffComponent && (\n // oxlint-disable-next-line react/react-compiler\n <DiffComponent diff={diff} schemaType={divergence.schemaType} />\n )}\n </>\n )}\n </Card>\n <Box paddingX={sectionPadding} paddingY={sectionPadding - 1}>\n <Flex flex={1} gap={2} justify=\"space-between\">\n <Flex flex={1} gap={3} align=\"center\">\n <Flex gap={2} align=\"center\">\n <Button\n mode=\"ghost\"\n tone=\"neutral\"\n text={t('divergence.action.markResolved.label')}\n type=\"button\"\n onClick={markResolved}\n disabled={isReadOnly}\n />\n <Button\n mode=\"ghost\"\n tone=\"neutral\"\n text={t('divergence.action.takeFromUpstream.label')}\n type=\"button\"\n onClick={takeUpstreamValue}\n disabled={isReadOnly}\n />\n </Flex>\n {isActionPending && <Spinner />}\n </Flex>\n <Flex flex={1} gap={2} style={{justifyContent: 'flex-end'}} align=\"center\">\n <Text size={1}>\n {t('divergence.pagination', {\n position: divergenceIndex + 1,\n count: divergenceNavigator.state.divergences.length,\n })}\n </Text>\n <Button\n aria-label={t('divergence.action.previous.label')}\n tooltipProps={{\n content: t('divergence.action.previous.label'),\n }}\n mode=\"ghost\"\n tone=\"neutral\"\n icon={ArrowLeftIcon}\n type=\"button\"\n disabled={divergenceNavigator.state.divergences.length < 2}\n onClick={() => {\n if (typeof divergenceNavigator.state.previousDivergence !== 'undefined') {\n divergenceNavigator.focusDivergence(\n divergenceNavigator.state.previousDivergence,\n )\n }\n }}\n />\n <Button\n aria-label={t('divergence.action.next.label')}\n tooltipProps={{\n content: t('divergence.action.next.label'),\n }}\n mode=\"ghost\"\n tone=\"neutral\"\n icon={ArrowRightIcon}\n type=\"button\"\n disabled={divergenceNavigator.state.divergences.length < 2}\n onClick={() => {\n if (typeof divergenceNavigator.state.nextDivergence !== 'undefined') {\n divergenceNavigator.focusDivergence(divergenceNavigator.state.nextDivergence)\n }\n }}\n />\n </Flex>\n </Flex>\n </Box>\n </DivergenceOverlay>\n </div>\n </DocumentChangeContext.Provider>\n )\n}\n\nfunction normalizeDiffComponent(\n diffComponent: DiffComponent | DiffComponentOptions | undefined,\n): DiffComponent | undefined {\n if (typeof diffComponent === 'undefined') {\n return undefined\n }\n\n if ('component' in diffComponent) {\n return diffComponent.component\n }\n\n return diffComponent\n}\n","import {type Path} from '@sanity/types'\nimport {useClickOutsideEvent, LayerProvider, Portal} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {type ComponentType, type PropsWithChildren, Fragment, useEffect, useRef} from 'react'\n\nimport {DivergenceDetail} from '../../divergence/components/DivergenceDetail'\nimport {type DivergenceNavigator, selectDivergence} from '../../divergence/divergenceNavigator'\nimport {useWorkspace} from '../../studio/workspace'\nimport {useDocumentDivergences} from '../contexts/DivergencesProvider'\n\nconst canUseAnchorPositioning =\n 'CSS' in globalThis && typeof CSS !== 'undefined' && typeof CSS.supports === 'function'\n ? CSS.supports('(position-anchor: --anchor)')\n : false\n\n/**\n * @internal\n */\nexport interface FormNodeDivergenceDetailProps {\n path: Path\n readOnly: boolean | undefined\n}\n\n/**\n * @internal\n */\nexport const FormNodeDivergenceDetail: ComponentType<\n PropsWithChildren<FormNodeDivergenceDetailProps>\n> = (props) => {\n const {\n advancedVersionControl: {enabled: advancedVersionControlEnabled},\n } = useWorkspace()\n\n const divergenceNavigator = useDocumentDivergences()\n\n if (!divergenceNavigator.enabled) {\n return props.children\n }\n\n return <FormNodeDivergenceDetailEnabled {...props} divergenceNavigator={divergenceNavigator} />\n}\n\nconst FormNodeDivergenceDetailEnabled: ComponentType<\n PropsWithChildren<\n FormNodeDivergenceDetailProps & {divergenceNavigator: DivergenceNavigator & {enabled: true}}\n >\n> = ({divergenceNavigator, children, path, readOnly}) => {\n const containerElement = useRef<HTMLDivElement | null>(null)\n const divergenceDetailContainerElement = useRef<HTMLDivElement | null>(null)\n const divergence = selectDivergence(divergenceNavigator.state, path)\n\n useEffect(() => {\n if (\n typeof divergenceNavigator.state.focusedDivergence !== 'undefined' &&\n divergenceNavigator.state.focusedDivergence === divergence?.path\n ) {\n containerElement.current?.parentElement?.scrollIntoView({block: 'center'})\n }\n }, [divergenceNavigator.state.focusedDivergence, divergence?.path])\n\n useClickOutsideEvent(\n () => {\n if (\n typeof divergenceNavigator.state.focusedDivergence !== 'undefined' &&\n divergenceNavigator.state.focusedDivergence === divergence?.path\n ) {\n divergenceNavigator?.blurDivergence(divergence.path)\n }\n },\n () => [containerElement.current, divergenceDetailContainerElement.current],\n )\n\n // Only use a portal if the browser supports anchor positioning. If the browser does not support\n // anchor positioning, the element is rendered alongside the subject in the document.\n const MaybePortal = canUseAnchorPositioning ? Portal : Fragment\n\n return (\n <div ref={containerElement}>\n {children}\n <MaybePortal>\n <LayerProvider zOffset={1}>\n <AnimatePresence>\n {divergence &&\n divergence.status === 'unresolved' &&\n divergenceNavigator.state.focusedDivergence === divergence.path && (\n <motion.div\n initial={{opacity: 0}}\n exit={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.1}}\n >\n <DivergenceDetail\n containerElement={divergenceDetailContainerElement}\n divergence={divergence}\n divergenceNavigator={divergenceNavigator}\n readOnly={readOnly}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </LayerProvider>\n </MaybePortal>\n </div>\n )\n}\n","import {styled} from 'styled-components'\n\nimport {type FormArea} from './FormRow'\n\ninterface Props {\n $area: FormArea\n}\n\n/**\n * @internal\n */\nexport const FormCell = styled.div<Props>`\n grid-area: ${({$area}) => $area};\n`\n","import {type ComponentType, type PropsWithChildren, type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nimport {FormCell} from './FormCell'\n\nconst areas = ['gutterStart', 'body', 'gutterEnd'] as const\nexport type FormArea = (typeof areas)[number]\n\nexport interface FormRowProps extends PropsWithChildren {\n gutterStartCell?: ReactNode\n}\n\n/**\n * @internal\n */\nexport const FormRow: ComponentType<FormRowProps> = ({children, gutterStartCell}) => (\n <FormRowContainer>\n {gutterStartCell && <FormCell $area=\"gutterStart\">{gutterStartCell}</FormCell>}\n <FormCell $area=\"body\">{children}</FormCell>\n </FormRowContainer>\n)\n\nconst FormRowContainer = styled.div`\n display: grid;\n grid-template-areas: '${areas.join(' ')}';\n grid-template-columns: var(--formGutterSize, 0px) 1fr var(--formGutterSize, 0px);\n gap: var(--formGutterGap, 0px);\n\n /* Collapse the end gutter and gap for nested rows. */\n & & {\n grid-template-columns: var(--formGutterSize, 0px) 1fr 0;\n margin-inline-end: calc(var(--formGutterGap, 0px) * -1);\n }\n`\n","import {type Path, type DeprecatedProperty, type FormNodeValidation} from '@sanity/types'\nimport {Stack} from '@sanity/ui'\nimport {type HTMLProps, memo, type ReactNode} from 'react'\n\nimport {type DocumentFieldActionNode} from '../../../config/document/fieldActions/types'\nimport {type FormNodePresence} from '../../../presence/types'\nimport {useFieldActions} from '../../field/actions/useFieldActions'\nimport {type FieldCommentsProps} from '../../types/fieldProps'\nimport {FormDivergenceIndicator} from '../FormDivergenceIndicator'\nimport {FormNodeDivergenceDetail} from '../FormNodeDivergenceDetail'\nimport {FormRow} from '../layout/FormRow'\nimport {FormFieldBaseHeader} from './FormFieldBaseHeader'\nimport {FormFieldHeaderText} from './FormFieldHeaderText'\n\nconst EMPTY_ARRAY: never[] = []\n\n/** @internal */\nexport interface FormFieldProps {\n /**\n * @hidden\n * @beta\n */\n __unstable_headerActions?: DocumentFieldActionNode[]\n /**\n * @hidden\n * @beta\n */\n __unstable_presence?: FormNodePresence[]\n /** @internal @deprecated DO NOT USE */\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments?: FieldCommentsProps\n /** @internal @deprecated ONLY USED BY AI ASSIST PLUGIN */\n __internal_slot?: ReactNode\n children: ReactNode\n description?: ReactNode\n /**\n * The unique ID used to target the actual input element\n */\n inputId?: string\n /**\n * The nesting level of the form field\n */\n level?: number\n title?: ReactNode\n /**\n * @beta\n */\n validation?: FormNodeValidation[]\n deprecated?: DeprecatedProperty\n path: Path\n}\n\n/** @internal */\nexport const FormField = memo(function FormField(\n props: FormFieldProps & Omit<HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref'>,\n) {\n const {\n __unstable_headerActions: actions = EMPTY_ARRAY,\n __unstable_presence: presence = EMPTY_ARRAY,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_slot: slot = null,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments: comments,\n children,\n description,\n inputId,\n level,\n path,\n readOnly,\n title,\n validation,\n deprecated,\n ...restProps\n } = props\n const {focused, hovered, onMouseEnter, onMouseLeave} = useFieldActions()\n\n return (\n <FormNodeDivergenceDetail path={path} readOnly={readOnly}>\n <FormRow gutterStartCell={<FormDivergenceIndicator path={path} />}>\n <Stack\n {...restProps}\n data-level={level}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n gap={2}\n >\n {/*\n NOTE: It’s not ideal to hide validation, presence and description when there's no `title`.\n So we might want to separate the concerns of input vs formfield components later on.\n */}\n {title && (\n <FormFieldBaseHeader\n __internal_comments={comments}\n __internal_slot={slot}\n actions={actions}\n fieldFocused={Boolean(focused)}\n fieldHovered={hovered}\n presence={presence}\n inputId={inputId}\n content={\n <FormFieldHeaderText\n description={description}\n inputId={inputId}\n title={title}\n validation={validation}\n deprecated={deprecated}\n />\n }\n />\n )}\n <div>{children}</div>\n </Stack>\n </FormRow>\n </FormNodeDivergenceDetail>\n )\n})\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst TimeZoneButtonElementQuery = styled(ElementQuery)`\n .button-small {\n display: block;\n }\n .button-large {\n display: none;\n }\n\n &[data-eq-min~='2'] {\n .button-small {\n display: none;\n }\n .button-large {\n display: block;\n }\n }\n`\n\nexport default TimeZoneButtonElementQuery\n","import {Box, Flex} from '@sanity/ui'\n\nimport {TimeZoneButton} from '../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport TimeZoneButtonElementQuery from './TimeZoneButtonElementQuery'\n\ninterface Props {\n title: string\n timeZoneScope: TimeZoneScope\n}\n\nconst DialogHeader = (props: Props) => {\n const {title, timeZoneScope} = props\n const {timeZone} = useTimeZone(timeZoneScope)\n const {t} = useTranslation()\n return (\n <TimeZoneButtonElementQuery>\n <Flex align=\"center\">\n {title}\n {/*\n HACK: Sanity UI will attempt to focus the first 'focusable' descendant of any dialog.\n Typically this is fine, but since our first focusable element is a button with a tooltip, this\n default behaviour causes the tooltip to appear whenever the dialog is opened, which we don't want!\n\n To get around this, we include a pseudo-hidden input to ensure our tooltip-enabled button remains\n unfocused on initial mount.\n */}\n <input style={{opacity: 0, position: 'absolute', width: 0}} tabIndex={-1} type=\"button\" />\n <Box marginLeft={2} style={{marginTop: '-1em', marginBottom: '-1em'}}>\n <TimeZoneButton\n tooltipContent={t('time-zone.time-zone-tooltip-scheduled-publishing', {\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n })}\n timeZoneScope={timeZoneScope}\n useElementQueries\n />\n </Box>\n </Flex>\n </TimeZoneButtonElementQuery>\n )\n}\n\nexport default DialogHeader\n","import {Card, Text} from '@sanity/ui'\nimport {endOfDay} from 'date-fns/endOfDay'\nimport {useCallback, useMemo} from 'react'\n\ninterface CalendarDayProps {\n date: Date\n focused?: boolean\n onSelect: (date: Date) => void\n isCurrentMonth?: boolean\n isToday: boolean\n customValidation?: (selectedDate: Date) => boolean\n selected?: boolean\n}\n\nexport function CalendarDay(props: CalendarDayProps) {\n const {date, focused, isCurrentMonth, isToday, customValidation, onSelect, selected} = props\n\n // Round date to the end of day when passing to custom validate function.\n // Remember that all calendar days are in UTC, but comparison is done with 'wall clock' time.\n const isValid = useMemo(() => {\n if (!customValidation) {\n return true\n }\n return customValidation(endOfDay(date))\n }, [date, customValidation])\n\n const handleClick = useCallback(() => {\n if (isValid) {\n onSelect(date)\n }\n }, [date, isValid, onSelect])\n\n return (\n <div aria-selected={selected} data-ui=\"CalendarDay\">\n <Card\n aria-label={date.toDateString()}\n aria-pressed={selected}\n as=\"button\"\n __unstable_focusRing\n data-weekday\n data-focused={focused ? 'true' : ''}\n disabled={!isValid}\n role=\"button\"\n tabIndex={-1}\n onClick={handleClick}\n padding={3}\n radius={2}\n selected={selected}\n tone={isToday || selected ? 'primary' : 'default'}\n >\n <Text\n muted={!selected && !isCurrentMonth}\n style={{textAlign: 'center'}}\n weight={isCurrentMonth ? 'medium' : 'regular'}\n >\n {date.getDate()}\n </Text>\n </Card>\n </div>\n )\n}\n","import range from 'lodash-es/range.js'\n\nexport const MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nexport const WEEK_DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n\nexport const HOURS_24 = range(0, 24)\n\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']\n\nexport const DEFAULT_TIME_PRESETS = [\n [0, 0],\n [6, 0],\n [12, 0],\n [18, 0],\n [23, 59],\n]\n\n// all weekdays except first\nexport const TAIL_WEEKDAYS = [1, 2, 3, 4, 5, 6]\n","import {addDays} from 'date-fns/addDays'\nimport {eachWeekOfInterval} from 'date-fns/eachWeekOfInterval'\nimport {getWeek} from 'date-fns/getWeek'\nimport {lastDayOfMonth} from 'date-fns/lastDayOfMonth'\nimport {startOfMonth} from 'date-fns/startOfMonth'\n\nimport {TAIL_WEEKDAYS} from './constants'\n\nconst getWeekStartsOfMonth = (date: Date): Date[] => {\n const firstDay = startOfMonth(date)\n return eachWeekOfInterval({\n start: firstDay,\n end: lastDayOfMonth(firstDay),\n })\n}\n\nconst getWeekDaysFromWeekStarts = (weekStarts: Date[]): Date[][] => {\n return weekStarts.map((weekStart) => [\n weekStart,\n ...TAIL_WEEKDAYS.map((d) => addDays(weekStart, d)),\n ])\n}\n\ntype Week = {\n number: number\n days: Date[]\n}\n\nexport const getWeeksOfMonth = (date: Date): Week[] =>\n getWeekDaysFromWeekStarts(getWeekStartsOfMonth(date)).map((days): Week => ({\n number: getWeek(days[0]),\n days,\n }))\n\nexport const formatTime = (hours: number, minutes: number): string =>\n `${`${hours}`.padStart(2, '0')}:${`${minutes}`.padStart(2, '0')}`\n","import {Box, Grid, Text} from '@sanity/ui'\nimport {isSameDay} from 'date-fns/isSameDay'\nimport {isSameMonth} from 'date-fns/isSameMonth'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../../hooks/useTimeZone'\nimport {CalendarDay} from './CalendarDay'\nimport {WEEK_DAY_NAMES} from './constants'\nimport {getWeeksOfMonth} from './utils'\n\ninterface CalendarMonthProps {\n date: Date\n focused?: Date\n selected?: Date\n onSelect: (date: Date) => void\n hidden?: boolean\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function CalendarMonth(props: CalendarMonthProps) {\n const {customValidation, timeZoneScope} = props\n const {getCurrentZoneDate} = useTimeZone(timeZoneScope)\n return (\n <Box aria-hidden={props.hidden || false} data-ui=\"CalendarMonth\">\n <Grid gap={1} style={{gridTemplateColumns: 'repeat(7, minmax(44px, 46px))'}}>\n {WEEK_DAY_NAMES.map((weekday) => (\n <Box key={weekday} paddingY={2}>\n <Text size={1} weight=\"medium\" style={{textAlign: 'center'}}>\n {weekday}\n </Text>\n </Box>\n ))}\n\n {/* Note: UTC dates are passed to each Calendar day but we use 'wall time' for comparison */}\n {getWeeksOfMonth(props.date).map((week, weekIdx) =>\n week.days.map((date, dayIdx) => {\n const focused = props.focused && isSameDay(date, props.focused)\n const selected = props.selected && isSameDay(date, props.selected)\n const isToday = isSameDay(date, getCurrentZoneDate())\n const isCurrentMonth = props.focused && isSameMonth(date, props.focused)\n\n return (\n <CalendarDay\n key={`${weekIdx}-${dayIdx}`}\n date={date}\n focused={focused}\n isCurrentMonth={isCurrentMonth}\n isToday={isToday}\n customValidation={customValidation}\n onSelect={props.onSelect}\n selected={selected}\n />\n )\n }),\n )}\n </Grid>\n </Box>\n )\n}\n","export const features = {\n dayPresets: false,\n timePresets: false,\n}\n","import {type ChangeEvent, type ComponentProps, type FocusEvent, useCallback} from 'react'\n\nimport {LazyTextInput} from '../../../../../components/inputs/DateInputs/LazyTextInput'\n\ntype Props = Omit<ComponentProps<typeof LazyTextInput>, 'onChange' | 'value'> & {\n value?: number\n onChange: (year: number) => void\n}\n\nexport const YearInput = ({onChange, ...props}: Props) => {\n const handleChange = useCallback(\n (event: FocusEvent<HTMLInputElement> | ChangeEvent<HTMLInputElement>) => {\n const numericValue = parseInt(event.currentTarget.value, 10)\n if (!isNaN(numericValue)) {\n onChange(numericValue)\n }\n },\n [onChange],\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n {...props}\n onChange={handleChange}\n inputMode=\"numeric\"\n />\n )\n}\n","import {ChevronLeftIcon} from '@sanity/icons/ChevronLeft'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button,\n Flex,\n Select,\n Text,\n} from '@sanity/ui'\nimport {addDays} from 'date-fns/addDays'\nimport {addMonths} from 'date-fns/addMonths'\nimport {setDate} from 'date-fns/setDate'\nimport {setHours} from 'date-fns/setHours'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {setMonth} from 'date-fns/setMonth'\nimport {setYear} from 'date-fns/setYear'\nimport range from 'lodash-es/range.js'\nimport {\n type ComponentProps,\n type FormEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n type RefAttributes,\n} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../../hooks/useTimeZone'\nimport {CalendarMonth} from './CalendarMonth'\nimport {ARROW_KEYS, DEFAULT_TIME_PRESETS, HOURS_24, MONTH_NAMES} from './constants'\nimport {features} from './features'\nimport {formatTime} from './utils'\nimport {YearInput} from './YearInput'\n\nexport type CalendarProps = Omit<ComponentProps<'div'>, 'onSelect'> & {\n selectTime?: boolean\n selectedDate?: Date\n timeStep?: number\n onSelect: (date: Date) => void\n focusedDate: Date\n onFocusedDateChange: (index: Date) => void\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\n// This is used to maintain focus on a child element of the calendar-grid between re-renders\n// When using arrow keys to move focus from a day in one month to another we are setting focus at the button for the day\n// after it has changed but *only* if we *already* had focus inside the calendar grid (e.g not if focus was on the \"next\n// year\" button, or any of the other controls)\n// When moving from the last day of a month that displays 6 weeks in the grid to a month that displays 5 weeks, current\n// focus gets lost on render, so this provides us with a stable element to help us preserve focus on a child element of\n// the calendar grid between re-renders\nconst PRESERVE_FOCUS_ELEMENT = (\n <span\n data-preserve-focus\n style={{overflow: 'hidden', position: 'absolute', outline: 'none'}}\n tabIndex={-1}\n />\n)\n\nexport function Calendar(props: CalendarProps & RefAttributes<HTMLDivElement>) {\n const {getCurrentZoneDate, zoneDateToUtc} = useTimeZone(props.timeZoneScope)\n const {\n ref: forwardedRef,\n selectTime,\n onFocusedDateChange,\n selectedDate = getCurrentZoneDate(),\n focusedDate = selectedDate,\n timeStep = 1,\n onSelect,\n customValidation,\n timeZoneScope,\n ...restProps\n } = props\n\n const setFocusedDate = useCallback(\n (date: Date) => onFocusedDateChange(zoneDateToUtc(date)),\n [onFocusedDateChange, zoneDateToUtc],\n )\n\n const setFocusedDateMonth = useCallback(\n (month: number) => setFocusedDate(setDate(setMonth(focusedDate, month), 1)),\n [focusedDate, setFocusedDate],\n )\n\n const handleFocusedMonthChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (e: FormEvent<HTMLSelectElement>) => setFocusedDateMonth(Number(e.currentTarget.value)),\n [setFocusedDateMonth],\n )\n\n const moveFocusedDate = useCallback(\n (by: number) => setFocusedDate(addMonths(focusedDate, by)),\n [focusedDate, setFocusedDate],\n )\n\n const setFocusedDateYear = useCallback(\n (year: number) => setFocusedDate(setYear(focusedDate, year)),\n [focusedDate, setFocusedDate],\n )\n\n const handleDateChange = useCallback(\n (date: Date) => {\n onSelect(\n zoneDateToUtc(\n setMinutes(setHours(date, selectedDate.getHours()), selectedDate.getMinutes()),\n ),\n )\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleMinutesChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (event: FormEvent<HTMLSelectElement>) => {\n const m = Number(event.currentTarget.value)\n onSelect(zoneDateToUtc(setMinutes(selectedDate, m)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleHoursChange = useCallback(\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n (event: FormEvent<HTMLSelectElement>) => {\n const m = Number(event.currentTarget.value)\n onSelect(zoneDateToUtc(setHours(selectedDate, m)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const handleTimeChange = useCallback(\n (hours: number, mins: number) => {\n onSelect(zoneDateToUtc(setHours(setMinutes(selectedDate, mins), hours)))\n },\n [onSelect, selectedDate, zoneDateToUtc],\n )\n\n const ref = useRef<HTMLDivElement | null>(null)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const focusCurrentWeekDay = useCallback(() => {\n ref.current?.querySelector<HTMLElement>(`[data-focused=\"true\"]`)?.focus()\n }, [ref])\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (!ARROW_KEYS.includes(event.key)) {\n return\n }\n event.preventDefault()\n if (event.currentTarget.hasAttribute('data-calendar-grid')) {\n focusCurrentWeekDay()\n return\n }\n if (event.key === 'ArrowUp') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -7)))\n }\n if (event.key === 'ArrowDown') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 7)))\n }\n if (event.key === 'ArrowLeft') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -1)))\n }\n if (event.key === 'ArrowRight') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 1)))\n }\n // set focus temporarily on this element to make sure focus is still inside the calendar-grid after re-render\n ref.current?.querySelector<HTMLElement>('[data-preserve-focus]')?.focus()\n },\n [zoneDateToUtc, ref, focusCurrentWeekDay, onFocusedDateChange, focusedDate],\n )\n\n useEffect(() => {\n focusCurrentWeekDay()\n }, [focusCurrentWeekDay])\n\n useEffect(() => {\n const currentFocusInCalendarGrid = document.activeElement?.matches(\n '[data-calendar-grid], [data-calendar-grid] [data-preserve-focus]',\n )\n if (\n // Only move focus if it's currently in the calendar grid\n currentFocusInCalendarGrid\n ) {\n focusCurrentWeekDay()\n }\n }, [ref, focusCurrentWeekDay, focusedDate])\n\n const handleNowClick = useCallback(() => onSelect(new Date()), [onSelect])\n\n return (\n <Box data-ui=\"Calendar\" {...restProps} ref={ref}>\n {/* Select date */}\n <Box padding={2}>\n {/* Select month and year */}\n <Flex>\n <Box flex={1}>\n <CalendarMonthSelect\n moveFocusedDate={moveFocusedDate}\n onChange={handleFocusedMonthChange}\n value={focusedDate?.getMonth()}\n />\n </Box>\n <Box marginLeft={2}>\n <CalendarYearSelect\n moveFocusedDate={moveFocusedDate}\n onChange={setFocusedDateYear}\n value={focusedDate.getFullYear()}\n />\n </Box>\n </Flex>\n\n {/* Selected month (grid of days) */}\n <Box\n data-calendar-grid\n onKeyDown={handleKeyDown}\n marginTop={2}\n overflow=\"hidden\"\n tabIndex={0}\n >\n <CalendarMonth\n date={focusedDate}\n focused={focusedDate}\n customValidation={customValidation}\n onSelect={handleDateChange}\n selected={selectedDate}\n timeZoneScope={timeZoneScope}\n />\n {PRESERVE_FOCUS_ELEMENT}\n </Box>\n </Box>\n\n {/* Select time */}\n {selectTime && (\n <Box padding={2} style={{borderTop: '1px solid var(--card-border-color)'}}>\n <Flex align=\"center\">\n <Flex align=\"center\" flex={1}>\n <Box>\n <Select\n aria-label=\"Select hour\"\n value={selectedDate?.getHours()}\n onChange={handleHoursChange}\n >\n {HOURS_24.map((h) => (\n <option key={h} value={h}>\n {`${h}`.padStart(2, '0')}\n </option>\n ))}\n </Select>\n </Box>\n\n <Box paddingX={1}>\n <Text>:</Text>\n </Box>\n\n <Box>\n <Select\n aria-label=\"Select minutes\"\n value={selectedDate?.getMinutes()}\n onChange={handleMinutesChange}\n >\n {range(0, 60, timeStep).map((m) => (\n <option key={m} value={m}>\n {`${m}`.padStart(2, '0')}\n </option>\n ))}\n </Select>\n </Box>\n </Flex>\n\n <Box marginLeft={2}>\n <Button text=\"Set to current time\" mode=\"bleed\" onClick={handleNowClick} />\n </Box>\n </Flex>\n\n {features.timePresets && (\n <Flex direction=\"row\" justify=\"center\" align=\"center\" style={{marginTop: 5}}>\n {DEFAULT_TIME_PRESETS.map(([hours, minutes]) => {\n return (\n <CalendarTimePresetButton\n key={`${hours}-${minutes}`}\n hours={hours}\n minutes={minutes}\n onTimeChange={handleTimeChange}\n selectedDate={selectedDate}\n />\n )\n })}\n </Flex>\n )}\n </Box>\n )}\n </Box>\n )\n}\n\nfunction CalendarTimePresetButton(props: {\n hours: number\n minutes: number\n onTimeChange: (hours: number, minutes: number) => void\n selectedDate: Date\n}) {\n const {hours, minutes, onTimeChange, selectedDate} = props\n const formatted = formatTime(hours, minutes)\n\n const handleClick = useCallback(() => {\n onTimeChange(hours, minutes)\n }, [hours, minutes, onTimeChange])\n\n return (\n <Button\n text={formatted}\n aria-label={`${formatted} on ${selectedDate.toDateString()}`}\n mode=\"bleed\"\n fontSize={1}\n onClick={handleClick}\n />\n )\n}\n\nfunction CalendarMonthSelect(props: {\n moveFocusedDate: (by: number) => void\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n onChange: (e: FormEvent<HTMLSelectElement>) => void\n value?: number\n}) {\n const {moveFocusedDate, onChange, value} = props\n\n const handlePrevMonthClick = useCallback(() => moveFocusedDate(-1), [moveFocusedDate])\n\n const handleNextMonthClick = useCallback(() => moveFocusedDate(1), [moveFocusedDate])\n\n return (\n <Flex flex={1}>\n <Button\n aria-label=\"Go to previous month\"\n onClick={handlePrevMonthClick}\n mode=\"bleed\"\n icon={ChevronLeftIcon}\n paddingX={2}\n radius={0}\n />\n <Box flex={1}>\n <Select radius={0} value={value} onChange={onChange}>\n {MONTH_NAMES.map((m, i) => (\n // oxlint-disable-next-line no-array-index-key\n <option key={i} value={i}>\n {m}\n </option>\n ))}\n </Select>\n </Box>\n <Button\n aria-label=\"Go to next month\"\n mode=\"bleed\"\n icon={ChevronRightIcon}\n onClick={handleNextMonthClick}\n paddingX={2}\n radius={0}\n />\n </Flex>\n )\n}\n\nfunction CalendarYearSelect(props: {\n moveFocusedDate: (by: number) => void\n onChange: (year: number) => void\n value?: number\n}) {\n const {moveFocusedDate, onChange, value} = props\n\n const handlePrevYearClick = useCallback(() => moveFocusedDate(-12), [moveFocusedDate])\n\n const handleNextYearClick = useCallback(() => moveFocusedDate(12), [moveFocusedDate])\n\n return (\n <Flex>\n <Button\n aria-label=\"Previous year\"\n onClick={handlePrevYearClick}\n mode=\"bleed\"\n icon={ChevronLeftIcon}\n paddingX={2}\n radius={0}\n />\n <YearInput value={value} onChange={onChange} radius={0} style={{width: 65}} />\n <Button\n aria-label=\"Next year\"\n onClick={handleNextYearClick}\n mode=\"bleed\"\n icon={ChevronRightIcon}\n paddingX={2}\n radius={0}\n />\n </Flex>\n )\n}\n","import {type ComponentProps, useCallback, useState, type RefAttributes} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../hooks/useTimeZone'\nimport {Calendar} from './calendar/Calendar'\n\nexport function DatePicker(\n props: Omit<ComponentProps<'div'>, 'onChange'> & {\n value?: Date\n onChange: (nextDate: Date) => void\n selectTime?: boolean\n timeStep?: number\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n } & RefAttributes<HTMLDivElement>,\n) {\n const {ref, value: _value, onChange, customValidation, timeZoneScope, ...rest} = props\n const value = _value ?? new Date()\n const {utcToCurrentZoneDate} = useTimeZone(timeZoneScope)\n const [focusedDate, setFocusedDay] = useState<Date>()\n\n const handleSelect = useCallback(\n (nextDate: Date) => {\n onChange(nextDate)\n setFocusedDay(undefined)\n },\n [onChange],\n )\n\n return (\n <Calendar\n {...rest}\n ref={ref}\n selectedDate={utcToCurrentZoneDate(value)}\n onSelect={handleSelect}\n focusedDate={utcToCurrentZoneDate(focusedDate || value)}\n onFocusedDateChange={setFocusedDay}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n )\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button,\n LayerProvider,\n useClickOutsideEvent,\n usePortal,\n} from '@sanity/ui'\nimport {\n type FocusEvent,\n type KeyboardEvent,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\nimport FocusLock from 'react-focus-lock'\n\nimport {Popover} from '../../../../../ui-components/popover/Popover'\nimport {LazyTextInput} from '../../../../components/inputs/DateInputs/LazyTextInput'\nimport {type TimeZoneScope} from '../../../../hooks/useTimeZone'\nimport {DatePicker} from './DatePicker'\n\ntype Props = {\n value?: Date\n id?: string\n readOnly?: boolean\n selectTime?: boolean\n timeStep?: number\n customValidity?: string\n placeholder?: string\n onInputChange?: (event: FocusEvent<HTMLInputElement>) => void\n inputValue?: string\n onChange: (date: Date | null) => void\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function DateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {\n ref: forwardedRef,\n value,\n inputValue,\n customValidation,\n onInputChange,\n onChange,\n selectTime,\n timeStep,\n timeZoneScope,\n ...rest\n } = props\n\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const buttonRef = useRef(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputRef.current,\n )\n\n const [isPickerOpen, setPickerOpen] = useState(false)\n\n const portal = usePortal()\n\n useClickOutsideEvent(\n () => setPickerOpen(false),\n () => [popoverRef.current],\n )\n\n const handleDeactivation = useCallback(() => {\n inputRef.current?.focus()\n inputRef.current?.select()\n }, [inputRef])\n\n const handleKeyUp = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setPickerOpen(false)\n }\n }, [])\n\n const handleClick = useCallback(() => setPickerOpen(true), [])\n\n const suffix = (\n <Box style={{padding: '5px'}}>\n <Button\n ref={buttonRef}\n icon={CalendarIcon}\n mode=\"bleed\"\n padding={2}\n onClick={handleClick}\n style={{display: 'block'}}\n data-testid=\"select-date-button\"\n />\n </Box>\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n ref={inputRef}\n {...rest}\n value={inputValue}\n onChange={onInputChange}\n suffix={\n isPickerOpen ? (\n // Note: we're conditionally inserting the popover here due to an\n // issue with popovers rendering incorrectly on subsequent renders\n // see https://github.com/sanity-io/design/issues/519\n <LayerProvider zOffset={1000}>\n <Popover\n constrainSize\n content={\n <Box overflow=\"auto\">\n <FocusLock onDeactivation={handleDeactivation}>\n <DatePicker\n selectTime={selectTime}\n timeStep={timeStep}\n onKeyUp={handleKeyUp}\n value={value}\n onChange={onChange}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n </FocusLock>\n </Box>\n }\n data-testid=\"date-input-dialog\"\n fallbackPlacements={['bottom', 'bottom-start', 'top-end', 'top', 'top-start']}\n floatingBoundary={portal.element}\n open\n placement=\"bottom-end\"\n portal\n radius={2}\n ref={popoverRef}\n >\n {suffix}\n </Popover>\n </LayerProvider>\n ) : (\n suffix\n )\n }\n />\n )\n}\n","import {TextInput} from '@sanity/ui'\nimport {\n type FocusEvent,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\n\nimport {FormField} from '../../../form/components/formField/FormField'\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {DateTimeInput} from './base/DateTimeInput'\nimport {type CommonProps, type ParseResult} from './types'\n\ntype Props = CommonProps & {\n title: string\n description?: string\n parseInputValue: (inputValue: string) => ParseResult\n formatInputValue: (date: Date) => string\n deserialize: (value: string) => ParseResult\n serialize: (date: Date) => string\n onChange: (nextDate: string | null) => void\n selectTime?: boolean\n placeholder?: string\n timeStep?: number\n customValidation?: (selectedDate: Date) => boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function CommonDateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {\n ref: forwardedRef,\n value,\n markers,\n title,\n description,\n placeholder,\n parseInputValue,\n formatInputValue,\n deserialize,\n serialize,\n selectTime,\n timeStep,\n readOnly,\n level,\n onChange,\n customValidation,\n timeZoneScope,\n ...rest\n } = props\n\n const [localValue, setLocalValue] = useState<string | null>(null)\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setLocalValue(null)\n }, [value])\n\n const {zoneDateToUtc} = useTimeZone(timeZoneScope)\n const undefinedValue = typeof value === 'undefined'\n // Text input changes ('wall time')\n const handleDatePickerInputChange = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const nextInputValue = event.currentTarget.value\n const result = nextInputValue === '' ? null : parseInputValue(nextInputValue)\n\n if (result === null) {\n onChange(null)\n\n // If the field value is undefined, and we are clearing the invalid value\n // the above useEffect won't trigger, so we do some extra clean up here\n if (undefinedValue && localValue) {\n setLocalValue(null)\n }\n } else if (result.isValid) {\n // Convert zone time to UTC\n onChange(serialize(zoneDateToUtc(result.date)))\n } else {\n setLocalValue(nextInputValue)\n }\n },\n [undefinedValue, zoneDateToUtc, localValue, serialize, onChange, parseInputValue],\n )\n\n // Calendar changes (UTC)\n const handleDatePickerChange = useCallback(\n (nextDate: Date | null) => {\n onChange(nextDate ? serialize(nextDate) : null)\n },\n [serialize, onChange],\n )\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => inputRef.current,\n )\n\n const id = useId()\n\n const parseResult = localValue ? parseInputValue(localValue) : value ? deserialize(value) : null\n\n const inputValue = localValue\n ? localValue\n : parseResult?.isValid\n ? formatInputValue(parseResult.date)\n : value\n\n const nodeValidations = useMemo(\n () =>\n markers.map((m) => ({\n level: m.level,\n path: m.path,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n message: m.message ?? m.item?.message,\n })),\n [markers],\n )\n return (\n <FormField\n validation={\n parseResult?.error\n ? [\n ...nodeValidations,\n {\n level: 'error',\n message: parseResult.error,\n path: [],\n }, // casting to marker to avoid having to implement cloneWithMessage on item\n ]\n : nodeValidations\n }\n title={title}\n level={level}\n description={description}\n inputId={id}\n path={[]}\n >\n {readOnly ? (\n <TextInput value={inputValue} readOnly />\n ) : (\n <DateTimeInput\n {...rest}\n id={id}\n selectTime={selectTime}\n timeStep={timeStep}\n placeholder={placeholder || `e.g. ${formatInputValue(new Date())}`}\n ref={inputRef}\n value={parseResult?.date}\n inputValue={inputValue || ''}\n readOnly={Boolean(readOnly)}\n onInputChange={handleDatePickerInputChange}\n onChange={handleDatePickerChange}\n customValidity={parseResult?.error}\n customValidation={customValidation}\n timeZoneScope={timeZoneScope}\n />\n )}\n </FormField>\n )\n}\n","export function isValidDate(date: Date): boolean {\n return date instanceof Date && !isNaN(date.valueOf())\n}\n","import {tz as tzHelper} from '@date-fns/tz'\nimport {format} from 'date-fns/format'\nimport {getMinutes} from 'date-fns/getMinutes'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {parseISO} from 'date-fns/parseISO'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {useCallback, type RefAttributes} from 'react'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {type CommonProps, type ParseResult} from './types'\nimport {isValidDate} from './utils'\n\ntype ParsedOptions = {\n calendarTodayLabel: string\n customValidation: (selectedDate: Date) => boolean\n customValidationMessage?: string\n timeStep: number\n}\ntype SchemaOptions = {\n calendarTodayLabel?: string\n customValidation?: (selectedDate: Date) => boolean\n customValidationMessage?: string\n timeStep?: number\n}\nexport type Props = CommonProps & {\n onChange: (date: string | null) => void\n timeZoneScope: TimeZoneScope\n type: {\n name: string\n title: string\n description?: string\n options?: SchemaOptions\n placeholder?: string\n }\n}\n\nfunction parseOptions(options: SchemaOptions = {}): ParsedOptions {\n return {\n customValidation:\n options.customValidation ||\n function () {\n return true\n },\n customValidationMessage: options.customValidationMessage || 'Invalid date.',\n calendarTodayLabel: options.calendarTodayLabel || 'Today',\n timeStep: ('timeStep' in options && Number(options.timeStep)) || 1,\n }\n}\n\nfunction serialize(date: Date) {\n return date.toISOString()\n}\nfunction deserialize(isoString: string): ParseResult {\n const deserialized = new Date(isoString)\n if (isValidDate(deserialized)) {\n return {isValid: true, date: deserialized}\n }\n return {isValid: false, error: `Invalid date value: \"${isoString}\"`}\n}\n\n// enforceTimeStep takes a dateString and datetime schema options and enforces the time\n// to be within the configured timeStep\nfunction enforceTimeStep(dateString: string, timeStep: number) {\n if (!timeStep || timeStep === 1) {\n return dateString\n }\n\n const date = parseISO(dateString)\n const minutes = getMinutes(date)\n const leftOver = minutes % timeStep\n if (leftOver !== 0) {\n return serialize(setMinutes(date, minutes - leftOver))\n }\n\n return serialize(date)\n}\n\nexport function DateTimeInput(props: Props & RefAttributes<HTMLInputElement>) {\n const {ref: forwardedRef, type, onChange, timeZoneScope, ...rest} = props\n const {title, description, placeholder} = type\n\n const {scheduledPublishing} = useWorkspace()\n const inputDateTimeFormat = scheduledPublishing.inputDateTimeFormat\n\n const {getCurrentZoneDate, timeZone} = useTimeZone(timeZoneScope)\n\n const {customValidation, customValidationMessage, timeStep} = parseOptions(type.options)\n\n // Returns date in UTC string\n const handleChange = useCallback(\n (nextDate: string | null) => {\n let date = nextDate\n if (date !== null && timeStep > 1) {\n date = enforceTimeStep(date, timeStep)\n }\n\n onChange(date)\n },\n [onChange, timeStep],\n )\n\n const formatInputValue = useCallback(\n (date: Date) => format(date, `${inputDateTimeFormat}`, {in: tzHelper(timeZone.name)}),\n [inputDateTimeFormat, timeZone.name],\n )\n\n const parseInputValue = useCallback(\n (inputValue: string) => {\n const parsed = parse(inputValue, `${inputDateTimeFormat}`, getCurrentZoneDate())\n\n // Check is value is a valid date\n if (!isValid(parsed)) {\n return {\n isValid: false,\n error: `Invalid date. Must be in the format \"${inputDateTimeFormat}\"`,\n } as ParseResult\n }\n\n // Check if value adheres to custom validation rules\n if (!customValidation(parsed)) {\n return {\n isValid: false,\n error: customValidationMessage,\n } as ParseResult\n }\n\n return {\n isValid: true,\n date: parsed,\n } as ParseResult\n },\n [customValidation, customValidationMessage, getCurrentZoneDate, inputDateTimeFormat],\n )\n\n return (\n <CommonDateTimeInput\n {...rest}\n onChange={handleChange}\n ref={forwardedRef}\n selectTime\n timeStep={timeStep}\n title={title}\n description={description}\n placeholder={placeholder}\n serialize={serialize}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n customValidation={customValidation}\n parseInputValue={parseInputValue}\n timeZoneScope={timeZoneScope}\n />\n )\n}\n","import {Card, Stack} from '@sanity/ui'\nimport {useState} from 'react'\n\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport {type ScheduleFormData} from '../../types'\nimport {DateTimeInput} from '../dateInputs'\n\ninterface Props {\n onChange?: (formData: ScheduleFormData) => void\n value?: ScheduleFormData | null\n}\n\nconst ScheduleForm = (props: Props) => {\n const {onChange, value} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n const {getCurrentZoneDate} = useTimeZone(timeZoneScope)\n\n // Date input is stored locally to handle behaviour of the studio's `<LazyTextInput />` component.\n // If we don't keep this local state (and only rely on the canonical value of `ScheduleFormData`),\n // you'll see an unsightly flash when text inputs are blurred / lose focus, as `<LazyTextInput />`\n // clears its internal value before it's had a chance to re-render as a result of its own props changing.\n const [inputValue, setInputValue] = useState<string>()\n\n const handleChange = (date: string | null) => {\n if (date && onChange) {\n onChange({date})\n setInputValue(date)\n }\n }\n\n // Only allow dates in the future (`selectedDate` is UTC)\n const handleCustomValidation = (selectedDate: Date): boolean => {\n return selectedDate > getCurrentZoneDate()\n }\n\n return (\n <Stack gap={4}>\n <Card>\n <DateTimeInput\n level={0}\n markers={[]}\n onChange={handleChange}\n type={{\n name: 'date',\n options: {\n customValidation: handleCustomValidation,\n customValidationMessage: 'Date cannot be in the past.',\n },\n title: 'Date and time',\n }}\n value={inputValue === undefined ? value?.date : inputValue}\n timeZoneScope={timeZoneScope}\n />\n </Card>\n </Stack>\n )\n}\n\nexport default ScheduleForm\n","import {Stack} from '@sanity/ui'\nimport {type PropsWithChildren} from 'react'\n\nimport {type ScheduleFormData} from '../../types'\nimport ScheduleForm from './ScheduleForm'\n\ninterface Props {\n onChange?: (formData: ScheduleFormData) => void\n value?: ScheduleFormData | null\n}\n\n/**\n * Form for editing a schedule for a document when scheduled publishing is enabled.\n * @deprecated we will be dropping support for scheduled publishing on a future major version\n * @internal\n */\nexport function EditScheduleForm(props: PropsWithChildren<Props>) {\n const {onChange, value} = props\n\n return (\n <Stack gap={4}>\n {props.children}\n <ScheduleForm onChange={onChange} value={value} />\n </Stack>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Card, Flex, Inline, Text} from '@sanity/ui'\n\ninterface Props {\n description?: string\n title: string\n}\n\nconst ErrorCallout = (props: Props) => {\n const {description, title} = props\n\n return (\n <Card overflow=\"hidden\" padding={4} radius={2} shadow={1} tone=\"critical\">\n <Flex align=\"center\" gap={4}>\n <Text size={2}>\n <ErrorOutlineIcon />\n </Text>\n <Inline gap={2}>\n <Text size={1} weight=\"semibold\">\n {title}\n </Text>\n {description && <Text size={1}>{description}</Text>}\n </Inline>\n </Flex>\n </Card>\n )\n}\n\nexport default ErrorCallout\n","import {type ReactNode, useContext} from 'react'\nimport {DocumentActionPropsContext} from 'sanity/_singletons'\n\nimport {type DocumentActionProps} from '../../config/document/actions'\n\nfunction DocumentActionPropsProvider({\n children,\n value,\n}: {\n children: ReactNode\n value: DocumentActionProps\n}) {\n return (\n <DocumentActionPropsContext.Provider value={value}>\n {children}\n </DocumentActionPropsContext.Provider>\n )\n}\n\nfunction useDocumentActionProps(): DocumentActionProps {\n const context = useContext(DocumentActionPropsContext)\n if (context === undefined) {\n throw new Error('useDocumentActionProps must be used within a DocumentActionPropsProvider')\n }\n return context\n}\n\nexport {DocumentActionPropsProvider, useDocumentActionProps}\n","import {useState} from 'react'\n\nimport {type Schedule, type ScheduleFormData} from '../types'\n\nexport default function useScheduleForm(schedule?: Schedule) {\n const [isDirty, setIsDirty] = useState(false)\n const [formData, setFormData] = useState<ScheduleFormData | null>(\n schedule && schedule?.executeAt\n ? {\n date: schedule.executeAt,\n }\n : null,\n )\n\n const handleFormChange = (form: ScheduleFormData) => {\n const equalDates =\n schedule?.executeAt &&\n new Date(schedule.executeAt).getTime() === new Date(form?.date).getTime()\n\n setFormData(form)\n setIsDirty(!equalDates)\n }\n\n return {\n formData,\n isDirty,\n onFormChange: handleFormChange,\n }\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {type Path, type ValidationMarker} from '@sanity/types'\nimport {Box, type ButtonTone, Flex, Stack, Text} from '@sanity/ui'\n// oxlint-disable-next-line no-restricted-imports\nimport {MenuItem} from '@sanity/ui/menu'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nconst StyledText = styled(Text)`\n white-space: initial;\n`\n\nconst MENU_ITEM_TONES: Record<'error' | 'warning' | 'info', ButtonTone> = {\n error: 'critical',\n warning: 'caution',\n info: 'primary',\n}\n\n/**\n * @internal\n */\nexport interface ValidationListItemProps {\n marker: ValidationMarker\n onClick?: (path?: Path) => void\n path: string\n truncate?: boolean\n}\n\n/**\n * @internal\n */\nexport function ValidationListItem(props: ValidationListItemProps) {\n const {marker, onClick, path, truncate} = props\n\n const handleClick = useCallback(() => {\n if (onClick) {\n onClick(marker.path)\n }\n }, [marker.path, onClick])\n\n const menuItemTone = MENU_ITEM_TONES[marker?.level] || undefined\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const message = marker.message ?? marker.item?.message\n const children = (\n <Flex>\n <Box>\n <Text size={1}>\n {marker.level === 'error' && <ErrorOutlineIcon />}\n {marker.level === 'warning' && <WarningOutlineIcon />}\n {marker.level === 'info' && <InfoOutlineIcon />}\n </Text>\n </Box>\n\n <Stack gap={2} flex={1} paddingLeft={3}>\n {path && (\n <StyledText size={1} weight=\"semibold\">\n {path}\n </StyledText>\n )}\n {message && (\n <StyledText muted size={1} textOverflow={truncate ? 'ellipsis' : undefined}>\n {message}\n </StyledText>\n )}\n </Stack>\n </Flex>\n )\n return (\n <MenuItem padding={1} onClick={handleClick} radius={2} tone={menuItemTone}>\n <Box padding={2}>{children}</Box>\n </MenuItem>\n )\n}\n","import {\n isValidationErrorMarker,\n isValidationInfoMarker,\n isValidationWarningMarker,\n type ObjectSchemaType,\n type Path,\n type ValidationMarker,\n} from '@sanity/types'\nimport {Container} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {ValidationListItem} from './ValidationListItem'\n\n/** @internal */\nexport interface ValidationListProps {\n documentType?: ObjectSchemaType\n kind?: 'simple'\n validation: ValidationMarker[]\n onFocus?: (path: Path) => void\n onClose?: () => void\n truncate?: boolean\n}\n\n/** @internal */\nexport function ValidationList(props: ValidationListProps) {\n const {documentType, kind, validation, onFocus, onClose, truncate} = props\n const errors = validation.filter(isValidationErrorMarker)\n const warnings = validation.filter(isValidationWarningMarker)\n const info = validation.filter(isValidationInfoMarker)\n\n const handleClick = useCallback(\n (path: Path = []) => {\n if (onFocus) onFocus(path)\n if (onClose) onClose()\n },\n [onFocus, onClose],\n )\n\n const resolvePathTitle = (path: Path) => {\n const fields = documentType && documentType.fields\n const field = fields && fields.find((curr) => curr.name === path[0])\n\n return (field && field.type.title) || ''\n }\n\n const hasErrors = errors.length > 0\n const hasWarnings = warnings.length > 0\n const hasInfo = info.length > 0\n\n if (!hasErrors && !hasWarnings && !hasInfo) {\n return null\n }\n\n return (\n <Container width={0} data-kind={kind} data-testid=\"validation-list\">\n {hasErrors &&\n errors.map((_error, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_error.path)}\n marker={_error}\n onClick={handleClick}\n />\n ))}\n {hasWarnings &&\n warnings.map((_warning, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_warning.path)}\n marker={_warning}\n onClick={handleClick}\n />\n ))}\n {hasInfo &&\n info.map((_info, i) => (\n <ValidationListItem\n // oxlint-disable-next-line no-array-index-key\n key={i}\n truncate={truncate}\n path={resolvePathTitle(_info.path)}\n marker={_info}\n onClick={handleClick}\n />\n ))}\n </Container>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {\n type ObjectSchemaType,\n type Path,\n type SchemaType,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type CardTone, Container, Stack} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\nimport * as PathUtils from '@sanity/util/paths'\nimport {type ReactNode, useCallback, useId} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {useValidationState} from '../../utils/validationUtils'\nimport {ValidationList} from './ValidationList'\n\ninterface ValidationProps {\n documentId?: string\n markers: ValidationMarker[]\n type?: SchemaType\n menuHeader?: ReactNode\n}\n\nconst POPOVER_PROPS = {\n portal: true,\n constrainSize: true,\n preventOverflow: true,\n tone: 'default' as CardTone,\n width: 0,\n placement: 'bottom-end',\n} as const\n\nexport function ValidationInfo(props: ValidationProps) {\n const {type, markers, menuHeader, documentId} = props\n const router = useRouter()\n const {hasError, hasWarning} = useValidationState(markers)\n // use visibility so we can occupy the space equally for all states\n const visibility = hasError || hasWarning ? 'visible' : 'hidden'\n const id = useId() || ''\n const publishId = usePublishedId(documentId)\n\n const onFocus = useCallback(\n (path: Path) => {\n if (!publishId) {\n return\n }\n router.navigateIntent('edit', {\n id: publishId,\n path: encodeURIComponent(PathUtils.toString(path)),\n })\n },\n [router, publishId],\n )\n\n return (\n <MenuButton\n id={id || ''}\n button={\n <Button\n tooltipProps={{content: 'Show validation issues'}}\n mode=\"bleed\"\n data-testid=\"schedule-validation-list-button\"\n icon={hasError ? ErrorOutlineIcon : WarningOutlineIcon}\n style={{visibility}}\n tone={hasError ? 'critical' : 'default'}\n />\n }\n menu={\n <Menu padding={1}>\n <Container width={0}>\n <Stack gap={1}>\n {menuHeader ?? null}\n <ValidationList\n documentType={type as ObjectSchemaType}\n validation={markers}\n onFocus={onFocus}\n />\n </Stack>\n </Container>\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n","// Based off: https://github.com/sanity-io/sanity/blob/next/packages/@sanity/desk-tool/src/components/paneItem/helpers.tsx\nimport {type SanityDocument} from '@sanity/client'\nimport {type SchemaType} from '@sanity/types'\nimport {type ReactNode} from 'react'\nimport {combineLatest, type Observable, of} from 'rxjs'\nimport {map, startWith} from 'rxjs/operators'\n\nimport {type DocumentPreviewStore} from '../../preview/documentPreviewStore'\nimport {getDraftId, getPublishedId} from '../../util/draftUtils'\nimport {type Schedule} from '../types'\n\nexport interface PaneItemPreviewState {\n isLoading?: boolean\n draft?: SanityDocument | null\n published?: SanityDocument | null\n}\n\nconst isLiveEditEnabled = (schemaType: any) => schemaType.liveEdit === true\n\nexport function getPreviewStateObservable(\n documentPreviewStore: DocumentPreviewStore,\n schemaType: SchemaType,\n documentId: string,\n title: ReactNode,\n): Observable<PaneItemPreviewState> {\n const draft$ = isLiveEditEnabled(schemaType)\n ? of({snapshot: null})\n : documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getDraftId(documentId)},\n schemaType,\n )\n\n const published$ = documentPreviewStore.observeForPreview(\n {_type: 'reference', _ref: getPublishedId(documentId)},\n schemaType,\n )\n\n return combineLatest([draft$, published$]).pipe(\n map(([draft, published]: any) => ({\n draft: draft.snapshot ? {title, ...draft.snapshot} : null,\n isLoading: false,\n published: published.snapshot ? {title, ...published.snapshot} : null,\n })),\n startWith({draft: null, isLoading: true, published: null}),\n )\n}\n\n/**\n * Whilst schedules can contain multiple documents, this plugin specifically limits schedules to one document only\n */\nexport function getScheduledDocument(schedule: Schedule) {\n return schedule.documents?.[0]\n}\n\n/**\n * Whilst schedules can contain multiple documents, this plugin specifically limits schedules to one document only\n */\nexport function getScheduledDocumentId(schedule: Schedule): string | undefined {\n return getScheduledDocument(schedule)?.documentId.replaceAll('drafts.', '')\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {useSchema} from '../../hooks/useSchema'\nimport {type Schedule} from '../types'\nimport {getScheduledDocument} from '../utils/paneItemHelpers'\n\nexport function useScheduleSchemaType(schedule: Schedule): SchemaType | undefined {\n const firstDocument = getScheduledDocument(schedule)\n const schema = useSchema()\n const schemaName = firstDocument.documentType\n\n return useMemo(() => {\n if (!schemaName) {\n return undefined\n }\n return schema.get(schemaName) as SchemaType\n }, [schemaName, schema])\n}\n\nexport function useSchemaType(schemaName: string): SchemaType {\n const schema = useSchema()\n return useMemo(() => schema.get(schemaName) as SchemaType, [schemaName, schema])\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {of} from 'rxjs'\n\nimport {useDocumentPreviewStore} from '../../store/datastores'\nimport {getPreviewStateObservable, type PaneItemPreviewState} from '../utils/paneItemHelpers'\n\nconst EMPTY_STATE: PaneItemPreviewState = {}\n\nexport default function usePreviewState(\n documentId: string,\n schemaType?: SchemaType,\n): PaneItemPreviewState {\n const documentPreviewStore = useDocumentPreviewStore()\n\n const preview$ = useMemo(\n () =>\n schemaType\n ? getPreviewStateObservable(documentPreviewStore, schemaType, documentId, '')\n : of(EMPTY_STATE),\n [documentPreviewStore, schemaType, documentId],\n )\n\n // Deferred: react-rx v5's deferral is identity-coherent, so on a document\n // id change the live snapshot wins and the previous document's preview\n // never renders under the new id.\n return useObservable(preview$, EMPTY_STATE)\n}\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst DateWithTooltipElementQuery: typeof ElementQuery = styled(ElementQuery)`\n .date-small {\n display: inline;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: none;\n }\n\n &[data-eq-min~='1'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: inline;\n }\n .date-large {\n display: none;\n }\n }\n\n &[data-eq-min~='2'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: inline;\n }\n }\n`\n\nexport default DateWithTooltipElementQuery\n","import {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport useScheduleForm from '../../hooks/useScheduleForm'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\nimport {EditScheduleForm} from '../editScheduleForm/EditScheduleForm'\nimport DialogHeader from './DialogHeader'\n\nexport interface DialogScheduleEditProps {\n onClose: () => void\n schedule: Schedule\n}\n\nconst DialogScheduleEdit = (props: DialogScheduleEditProps) => {\n const {onClose, schedule} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const {updateSchedule} = useScheduleOperation()\n const {formData, isDirty, onFormChange} = useScheduleForm(schedule)\n\n // Callbacks\n const handleScheduleUpdate = async () => {\n if (!formData?.date) {\n return\n }\n // Update schedule then close self\n await updateSchedule({\n date: formData.date,\n scheduleId: schedule.id,\n })\n onClose()\n }\n\n return (\n <Dialog\n footer={{\n confirmButton: {\n text: 'Update',\n disabled: !isDirty,\n onClick: handleScheduleUpdate,\n },\n }}\n header={<DialogHeader timeZoneScope={timeZoneScope} title=\"Edit schedule\" />}\n id=\"time-zone\"\n onClose={onClose}\n width={1}\n >\n {/* oxlint-disable-next-line no-deprecated -- will fix in follow up PR */}\n <EditScheduleForm onChange={onFormChange} value={formData} />\n </Dialog>\n )\n}\n\nexport default DialogScheduleEdit\n","import {useCallback, useState} from 'react'\n\nimport {type TimeZoneScope} from '../../hooks/useTimeZone'\n\ninterface DialogControls {\n show: () => void\n hide: () => void\n timeZoneScope: TimeZoneScope\n visible: boolean\n}\n\nexport function useDialogVisible(timeZoneScope: TimeZoneScope): DialogControls {\n const [dialogVisible, setDialogVisible] = useState(false)\n\n const hide = useCallback(() => {\n setDialogVisible(false)\n }, [])\n const show = useCallback(() => {\n setDialogVisible(true)\n }, [])\n\n return {\n visible: dialogVisible,\n show,\n timeZoneScope,\n hide,\n }\n}\n","import {type TimeZoneScope} from '../../hooks/useTimeZone'\nimport DialogScheduleEdit from '../components/dialogs/DialogScheduleEdit'\nimport {type Schedule} from '../types'\nimport {useDialogVisible} from './useDialogVisibile'\n\nfunction useDialogScheduleEdit(schedule: Schedule, tzScope: TimeZoneScope) {\n const {visible, show, hide, timeZoneScope} = useDialogVisible(tzScope)\n\n const dialogProps = {\n onClose: hide,\n schedule,\n visible,\n }\n\n return {\n DialogScheduleEdit: visible ? DialogScheduleEdit : null,\n dialogProps,\n timeZoneScope,\n dialogScheduleEditShow: show,\n hide,\n }\n}\n\nexport default useDialogScheduleEdit\n","import {type CurrentUser} from '@sanity/types'\nimport {Box, type SelectableTone} from '@sanity/ui'\nimport {type ComponentType, type ReactNode} from 'react'\n\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {\n InsufficientPermissionsMessage,\n type InsufficientPermissionsMessageProps,\n} from '../../../components/InsufficientPermissionsMessage'\n\ninterface Props {\n currentUser?: CurrentUser\n hasPermission?: boolean\n icon: ComponentType | ReactNode\n onClick: () => void\n permissionsOperationLabel: InsufficientPermissionsMessageProps['context']\n title: string\n tone?: SelectableTone\n disabled?: boolean\n}\n\nconst MenuItemWithPermissionsTooltip = (props: Props) => {\n const {\n currentUser,\n hasPermission,\n icon,\n onClick,\n permissionsOperationLabel,\n title,\n tone,\n disabled,\n } = props\n return (\n <Tooltip\n content={\n <Box paddingX={2} paddingY={1}>\n <InsufficientPermissionsMessage\n currentUser={currentUser}\n context={permissionsOperationLabel}\n />\n </Box>\n }\n disabled={hasPermission}\n placement=\"left\"\n portal\n >\n {/* Wrapper element to allow disabled menu items to trigger tooltips */}\n <div>\n <MenuItem\n disabled={!hasPermission || disabled}\n icon={icon}\n onClick={onClick}\n text={title}\n tone={tone}\n />\n </div>\n </Tooltip>\n )\n}\n\nexport default MenuItemWithPermissionsTooltip\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {type SchemaType} from '@sanity/types'\n\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {useDocumentPairPermissions} from '../../../store/grants/documentPairPermissions'\nimport {useCurrentUser} from '../../../store/user/hooks'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocument} from '../../utils/paneItemHelpers'\nimport MenuItemWithPermissionsTooltip from './MenuItemWithPermissionsTooltip'\n\ninterface Props {\n actions?: {\n clear?: boolean\n delete?: boolean\n edit?: boolean\n execute?: boolean\n }\n onDelete?: () => void\n onEdit?: () => void\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst ContextMenuItems = (props: Props) => {\n const {actions, onDelete, onEdit, schedule, schemaType} = props\n const {mode} = useScheduledPublishingEnabled()\n const firstDocument = getScheduledDocument(schedule)\n\n const currentUser = useCurrentUser()\n const [permissions, isPermissionsLoading] = useDocumentPairPermissions({\n id: firstDocument.documentId,\n type: schemaType?.name,\n permission: 'publish',\n })\n const {deleteSchedule, publishSchedule} = useScheduleOperation()\n\n const insufficientPermissions = !isPermissionsLoading && !permissions?.granted\n\n // Callbacks\n const handleEdit = () => {\n onEdit?.()\n }\n\n const handleDelete = () => {\n void deleteSchedule({schedule}).then(() => onDelete?.())\n }\n\n const handleExecute = () => {\n void publishSchedule({schedule})\n }\n\n if (!currentUser) {\n return null\n }\n\n return (\n <>\n {actions?.edit && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={CalendarIcon}\n onClick={handleEdit}\n permissionsOperationLabel=\"edit-schedules\"\n title=\"Edit schedule\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.execute && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={PublishIcon}\n onClick={handleExecute}\n permissionsOperationLabel=\"execute-schedules\"\n title=\"Publish now\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.delete && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={TrashIcon}\n onClick={handleDelete}\n permissionsOperationLabel=\"delete-schedules\"\n title=\"Delete schedule\"\n tone=\"critical\"\n disabled={mode === 'upsell'}\n />\n )}\n {actions?.clear && (\n <MenuItemWithPermissionsTooltip\n currentUser={currentUser}\n hasPermission={!insufficientPermissions}\n icon={CheckmarkCircleIcon}\n onClick={handleDelete}\n permissionsOperationLabel=\"delete-schedules\"\n title=\"Clear completed schedule\"\n disabled={mode === 'upsell'}\n />\n )}\n </>\n )\n}\n\nexport default ContextMenuItems\n","import {type SchemaType} from '@sanity/types'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {type Schedule} from '../../types'\nimport ContextMenuItems from './ContextMenuItems'\n\ninterface Props {\n actions?: {\n clear?: boolean\n delete?: boolean\n edit?: boolean\n execute?: boolean\n }\n onDelete?: () => void\n onEdit?: () => void\n schedule: Schedule\n schemaType: SchemaType\n}\n\nexport const ScheduleContextMenu = (props: Props) => {\n const {actions, onDelete, onEdit, schedule, schemaType} = props\n\n return (\n <MenuButton\n button={<ContextMenuButton />}\n id=\"contextMenu\"\n menu={\n <Menu>\n <ContextMenuItems\n actions={actions}\n onDelete={onDelete}\n onEdit={onEdit}\n schedule={schedule}\n schemaType={schemaType}\n />\n </Menu>\n }\n popover={{placement: 'left', portal: true, tone: 'default'}}\n />\n )\n}\n","import {useEffect, useState} from 'react'\n\nimport {useValidationStatus} from '../../../hooks/useValidationStatus'\nimport {getDraftId} from '../../../util/draftUtils'\nimport {useScheduleSchemaType} from '../../hooks/useSchemaType'\nimport {type Schedule, type ValidationStatus} from '../../types'\nimport {getScheduledDocumentId} from '../../utils/paneItemHelpers'\n\ninterface Props {\n schedule: Schedule\n updateValidation: (status: ValidationStatus) => void\n}\n\n// Duration to wait before validating (after this component has mounted)\nconst VALIDATION_DELAY_MS = 1500\n\n/**\n * useValidationStatus requires a published id, and we dont always have that\n *\n * This a boilerplate wrapper component around it,\n * so we conditionally call back with updated status whenver it is possible.\n * */\nexport function ValidateScheduleDoc({schedule, updateValidation}: Props) {\n const schemaType = useScheduleSchemaType(schedule)\n const id = getScheduledDocumentId(schedule)\n\n if (!id || !schemaType?.name) {\n return null\n }\n return (\n <DelayedValidationRunner\n id={id}\n schemaName={schemaType.name}\n updateValidation={updateValidation}\n />\n )\n}\n\ninterface ValidationRunnerProps {\n id: string\n schemaName: string\n updateValidation: (status: ValidationStatus) => void\n}\n\nfunction DelayedValidationRunner({id, schemaName, updateValidation}: ValidationRunnerProps) {\n const [ready, setReady] = useState(false)\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setReady(true)\n }, VALIDATION_DELAY_MS)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [])\n\n if (!ready) {\n return null\n }\n\n return <ValidationRunner id={id} schemaName={schemaName} updateValidation={updateValidation} />\n}\n\nfunction ValidationRunner({id, schemaName, updateValidation}: ValidationRunnerProps) {\n const draftId = getDraftId(id)\n // No `getTargetScopeId(useTargetDocumentState())` here: scheduled publishing deliberately validates the\n // explicit draft of the scheduled document, independent of the selected perspective.\n // TODO: this will be supported in the future, look for SAPP-3986 and SAPP-3987.\n const validationStatus = useValidationStatus(draftId, schemaName, true)\n\n useEffect(() => {\n if (!validationStatus.isValidating) {\n updateValidation(validationStatus)\n }\n }, [updateValidation, validationStatus])\n\n return null\n}\n","import {Text} from '@sanity/ui'\nimport {formatDistance} from 'date-fns/formatDistance'\n\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTimeZone} from '../../../../hooks/useTimeZone'\nimport {DATE_FORMAT} from '../../../../studio/timezones/constants'\n\ninterface Props {\n date: Date // local date in UTC\n useElementQueries?: boolean\n}\n\n/**\n * If `useElementQueries` is enabled, dates will be conditionally toggled at different element\n * breakpoints, provided this `<DateWithTooltip>` is wrapped in a `<DateElementQuery>` component.\n */\nconst DateWithTooltip = (props: Props) => {\n const {date, useElementQueries} = props\n\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n\n // Get distance between both dates\n const distance = formatDistance(date, new Date(), {\n addSuffix: true,\n })\n\n const dateTimeLarge = formatDateTz({date, format: DATE_FORMAT.LARGE})\n const dateTimeMedium = formatDateTz({date, format: DATE_FORMAT.MEDIUM})\n const dateTimeSmall = formatDateTz({date, format: DATE_FORMAT.SMALL})\n\n return (\n <Text size={1} textOverflow=\"ellipsis\">\n <Tooltip content={distance} portal>\n <span>\n {useElementQueries ? (\n <>\n <span className=\"date-small\">{dateTimeSmall}</span>\n <span className=\"date-medium\">{dateTimeMedium}</span>\n <span className=\"date-large\">{dateTimeLarge}</span>\n </>\n ) : (\n dateTimeLarge\n )}\n </span>\n </Tooltip>\n </Text>\n )\n}\n\nexport default DateWithTooltip\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {type CardTone, Container, Flex, Text} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {SCHEDULE_FAILED_TEXT} from '../../constants'\n\ninterface Props {\n stateReason: string\n}\n\nconst POPOVER_PROPS = {\n portal: true,\n constrainSize: true,\n preventOverflow: true,\n tone: 'default' as CardTone,\n width: 0,\n}\n\nconst StateReasonFailedInfo = (props: Props) => {\n const {stateReason} = props\n\n return (\n <MenuButton\n id=\"stateReason\"\n button={\n <Button\n tooltipProps={{content: 'Schedule failed'}}\n mode=\"bleed\"\n data-testid=\"schedule-validation-list-button\"\n icon={ErrorOutlineIcon}\n tone=\"critical\"\n />\n }\n menu={\n <Menu padding={1}>\n <Container padding={2} width={0}>\n <Text size={1}>{SCHEDULE_FAILED_TEXT}</Text>\n <Flex gap={3} marginTop={4} padding={1}>\n <Text size={1} style={{color: red[700].hex}}>\n <ErrorOutlineIcon />\n </Text>\n <Text size={1} style={{color: red[700].hex}} weight=\"medium\">\n {stateReason}\n </Text>\n </Flex>\n </Container>\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )\n}\n\nexport default StateReasonFailedInfo\n","import {UserAvatar} from '../../../components/userAvatar/UserAvatar'\n\ninterface Props {\n id: string\n}\n\nconst User = (props: Props) => {\n const {id} = props\n return <UserAvatar user={id} withTooltip />\n}\n\nexport default User\n","import {type SchemaType} from '@sanity/types'\nimport {Badge, Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {type ElementType, type ReactNode, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {DocumentStatus} from '../../../components/documentStatus/DocumentStatus'\nimport {DocumentStatusIndicator} from '../../../components/documentStatusIndicator/DocumentStatusIndicator'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {useDocumentVersions} from '../../../releases/hooks/useDocumentVersions'\nimport {getDocumentVersionInfoFromVersions} from '../../../releases/util/getDocumentVersionInfoFromVersions'\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {\n DOCUMENT_HAS_ERRORS_TEXT,\n DOCUMENT_HAS_WARNINGS_TEXT,\n SCHEDULE_ACTION_DICTIONARY,\n} from '../../constants'\nimport {type Schedule} from '../../types'\nimport {type PaneItemPreviewState} from '../../utils/paneItemHelpers'\nimport {getLastExecuteDate} from '../../utils/scheduleUtils'\nimport {EMPTY_VALIDATION_STATUS, useValidationState} from '../../utils/validationUtils'\nimport {ValidateScheduleDoc} from '../validation/SchedulesValidation'\nimport {ValidationInfo} from '../validation/ValidationInfo'\nimport DateWithTooltip from './dateWithTooltip/DateWithTooltip'\nimport StateReasonFailedInfo from './StateReasonFailedInfo'\nimport User from './User'\n\nconst StatusDotPlaceholder = styled(Box)`\n width: 9px;\n`\ninterface Props {\n children?: ReactNode\n contextMenu?: ReactNode\n linkComponent?: ElementType | keyof React.JSX.IntrinsicElements\n onClick?: () => void\n previewState?: PaneItemPreviewState\n publishedDocumentId?: string\n schedule: Schedule\n schemaType?: SchemaType\n useElementQueries?: boolean\n}\n\nconst PreviewWrapper = (props: Props) => {\n const {\n children,\n contextMenu,\n linkComponent,\n onClick,\n previewState,\n publishedDocumentId,\n schedule,\n schemaType,\n useElementQueries,\n } = props\n const {mode} = useScheduledPublishingEnabled()\n const [validationStatus, setValidationStatus] = useState(EMPTY_VALIDATION_STATUS)\n const {validation} = validationStatus\n const {hasError, validationTone} = useValidationState(validation)\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n\n const executeDate = getLastExecuteDate(schedule)\n const scheduleDate = executeDate ? new Date(executeDate) : null\n\n return (\n <Card\n padding={1}\n radius={2}\n shadow={1}\n tone={validationTone}\n style={mode === 'upsell' && schedule.state === 'scheduled' ? {opacity: 0.7} : undefined}\n >\n <Flex align=\"center\" gap={1} justify=\"space-between\">\n <Tooltip\n delay={{open: 400}}\n placement=\"bottom-end\"\n content={\n <DocumentStatus draft={previewState?.draft} published={previewState?.published} />\n }\n disabled={!previewState?.draft && !previewState?.published}\n >\n <Card\n __unstable_focusRing\n as={linkComponent ? linkComponent : undefined}\n data-as={onClick || linkComponent ? 'a' : undefined}\n flex={1}\n onClick={onClick}\n padding={1}\n radius={2}\n tabIndex={0}\n tone={validationTone}\n >\n <Flex align=\"center\" gap={3} justify=\"flex-start\" paddingLeft={children ? 0 : [1, 2]}>\n {children && <Box style={{flexBasis: 'auto', flexGrow: 1}}>{children}</Box>}\n\n {/* Badge */}\n {schedule.action === 'unpublish' && (\n <Flex style={{flexShrink: 0}}>\n <Badge fontSize={0} tone={SCHEDULE_ACTION_DICTIONARY[schedule.action].badgeTone}>\n {schedule.action}\n </Badge>\n </Flex>\n )}\n\n {/* Schedule date */}\n <Box display={['block', 'none']} style={{flexShrink: 0, width: '90px'}}>\n <Stack gap={2}>\n {scheduleDate ? (\n <>\n <Text size={1}>\n {formatDateTz({date: scheduleDate, format: 'dd/MM/yyyy'})}\n </Text>\n <Text size={1}>{formatDateTz({date: scheduleDate, format: 'p'})}</Text>\n </>\n ) : (\n <Text muted size={1}>\n <em>No date specified</em>\n </Text>\n )}\n </Stack>\n </Box>\n <Box\n display={['none', 'block']}\n style={{flexShrink: 0, maxWidth: '250px', width: children ? '35%' : 'auto'}}\n >\n {scheduleDate ? (\n <DateWithTooltip date={scheduleDate} useElementQueries={useElementQueries} />\n ) : (\n <Text muted size={1}>\n <em>No date specified</em>\n </Text>\n )}\n </Box>\n\n {/* HACK: render invisible preview wrapper when no children are provided to ensure consistent height */}\n {!children && (\n <Box style={{visibility: 'hidden'}}>\n <SanityDefaultPreview isPlaceholder />\n </Box>\n )}\n\n <Flex align=\"center\" style={{flexShrink: 0, marginLeft: 'auto'}}>\n {/* Avatar */}\n <Box display={['none', 'none', 'block']} marginX={3} style={{flexShrink: 0}}>\n <User id={schedule?.author} />\n </Box>\n\n {/* Document status */}\n <Box display={['none', 'block']} marginX={[2, 2, 3]} style={{flexShrink: 0}}>\n {publishedDocumentId ? (\n <DocumentVersionsStatus publishedDocumentId={publishedDocumentId} />\n ) : (\n <StatusDotPlaceholder />\n )}\n </Box>\n </Flex>\n </Flex>\n </Card>\n </Tooltip>\n\n <Flex justify=\"center\" style={{width: '38px'}}>\n {/* Validation status (only displayed on upcoming schedules) */}\n {schedule.state === 'scheduled' && (\n <Box>\n <ValidateScheduleDoc schedule={schedule} updateValidation={setValidationStatus} />\n <ValidationInfo\n markers={validation}\n type={schemaType}\n documentId={publishedDocumentId}\n menuHeader={\n <Box padding={2}>\n <Text size={1}>\n {hasError ? DOCUMENT_HAS_ERRORS_TEXT : DOCUMENT_HAS_WARNINGS_TEXT}\n </Text>\n </Box>\n }\n />\n </Box>\n )}\n\n {/* Failed state reason (only displayed on cancelled schedules) */}\n {schedule.state === 'cancelled' && (\n <StateReasonFailedInfo stateReason={schedule.stateReason} />\n )}\n </Flex>\n\n {/* Failed state reason (only displayed on cancelled schedules) */}\n {schedule.state === 'cancelled' && (\n <StateReasonFailedInfo stateReason={schedule.stateReason} />\n )}\n\n {/* Context menu */}\n {contextMenu && (\n <Box style={{flexShrink: 0}} paddingRight={2}>\n {contextMenu}\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n\nexport default PreviewWrapper\n\nfunction DocumentVersionsStatus({publishedDocumentId}: {publishedDocumentId: string}) {\n const {versions} = useDocumentVersions({documentId: publishedDocumentId})\n const versionsInfo = useMemo(() => getDocumentVersionInfoFromVersions(versions), [versions])\n return <DocumentStatusIndicator draft={versionsInfo.draft} published={versionsInfo.published} />\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useMemo} from 'react'\n\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport {useDocumentActionProps} from '../../contexts/documentActionProps'\nimport useDialogScheduleEdit from '../../hooks/useDialogScheduleEdit'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocumentId} from '../../utils/paneItemHelpers'\nimport {ScheduleContextMenu} from '../scheduleContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\ninterface Props {\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst DocumentPreview = (props: Props) => {\n const {schedule, schemaType} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const {DialogScheduleEdit, dialogProps, dialogScheduleEditShow} = useDialogScheduleEdit(\n schedule,\n timeZoneScope,\n )\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {onComplete} = useDocumentActionProps()\n const publishedId = useMemo(() => getScheduledDocumentId(schedule), [schedule])\n\n return (\n <>\n {/* Dialogs (rendered outside of cards so they don't infer card colors) */}\n {DialogScheduleEdit && <DialogScheduleEdit {...dialogProps} />}\n\n <PreviewWrapper\n contextMenu={\n <ScheduleContextMenu\n actions={{\n delete: true,\n edit: true,\n }}\n onDelete={onComplete}\n onEdit={dialogScheduleEditShow}\n schedule={schedule}\n schemaType={schemaType}\n />\n }\n onClick={dialogScheduleEditShow}\n publishedDocumentId={publishedId}\n schedule={schedule}\n schemaType={schemaType}\n />\n </>\n )\n}\n\nexport default DocumentPreview\n","import {TrashIcon} from '@sanity/icons/Trash'\nimport {Menu} from '@sanity/ui/menu'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport useScheduleOperation from '../../hooks/useScheduleOperation'\nimport {type Schedule} from '../../types'\n\ninterface Props {\n onDelete?: () => void\n schedule: Schedule\n}\n\n/**\n * 'Fallback' context menu used with schedules that don't have any valid associated documentType.\n * Currently, all users can delete schedules that don't have any associated documents, so we don't need to check for permissions here.\n */\nexport const FallbackContextMenu = (props: Props) => {\n const {onDelete, schedule} = props\n const {deleteSchedule} = useScheduleOperation()\n\n const handleDelete = () => {\n void deleteSchedule({schedule}).then(() => onDelete?.())\n }\n\n return (\n <MenuButton\n button={<ContextMenuButton />}\n id=\"contextMenu\"\n menu={\n <Menu>\n <MenuItem\n icon={TrashIcon}\n onClick={handleDelete}\n text=\"Delete schedule\"\n tone=\"critical\"\n />\n </Menu>\n }\n popover={{placement: 'left', portal: true, tone: 'default'}}\n />\n )\n}\n","import {red} from '@sanity/color'\nimport {UnknownIcon} from '@sanity/icons/Unknown'\n\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {type Schedule} from '../../types'\nimport {FallbackContextMenu} from '../scheduleContextMenu/FallbackContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\nconst NoSchemaItem = ({schedule}: {schedule: Schedule}) => {\n return (\n <PreviewWrapper\n contextMenu={<FallbackContextMenu schedule={schedule} />}\n schedule={schedule}\n useElementQueries\n >\n <SanityDefaultPreview\n icon={UnknownIcon}\n layout=\"default\"\n subtitle={<em>It may have been deleted</em>}\n title={<em style={{color: red[600].hex}}>Document not found</em>}\n />\n </PreviewWrapper>\n )\n}\n\nexport default NoSchemaItem\n","import {type SchemaType} from '@sanity/types'\nimport {type ComponentType, type ReactNode, type Ref, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {Preview} from '../../../preview/components/Preview'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE} from '../../constants'\nimport useDialogScheduleEdit from '../../hooks/useDialogScheduleEdit'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {type Schedule} from '../../types'\nimport {type PaneItemPreviewState} from '../../utils/paneItemHelpers'\nimport {ScheduleContextMenu} from '../scheduleContextMenu'\nimport PreviewWrapper from './PreviewWrapper'\n\ninterface Props {\n previewState: PaneItemPreviewState\n schedule: Schedule\n schemaType: SchemaType\n}\n\nconst ToolPreview = (props: Props) => {\n const {previewState, schedule, schemaType} = props\n const timeZoneScope = SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE\n\n const visibleDocument = previewState.draft || previewState.published\n const isCompleted = schedule.state === 'succeeded'\n const isScheduled = schedule.state === 'scheduled'\n\n const {DialogScheduleEdit, dialogProps, dialogScheduleEditShow} = useDialogScheduleEdit(\n schedule,\n timeZoneScope,\n )\n\n const publishedId = usePublishedId(visibleDocument?._id)\n\n const LinkComponent = useMemo(() => {\n function Component(linkProps: {children?: ReactNode; ref?: Ref<HTMLAnchorElement>}) {\n const {ref, ...rest} = linkProps\n const publishedDocId = visibleDocument ? getPublishedId(visibleDocument._id) : undefined\n return (\n <IntentLink\n {...rest}\n intent=\"edit\"\n params={{\n type: schemaType.name,\n ...(publishedDocId ? {id: publishedDocId} : {}),\n }}\n ref={ref}\n />\n )\n }\n // oxlint-disable-next-line react/react-compiler -- displayName assignment on render-local component\n Component.displayName = 'LinkComponent'\n return Component\n }, [schemaType, visibleDocument])\n\n return (\n <>\n {/* Dialogs (rendered outside of cards so they don't infer card colors) */}\n {DialogScheduleEdit && <DialogScheduleEdit {...dialogProps} />}\n <PreviewWrapper\n contextMenu={\n <ScheduleContextMenu\n actions={{\n clear: isCompleted,\n delete: !isCompleted,\n edit: isScheduled,\n execute: isScheduled,\n }}\n onEdit={dialogScheduleEditShow}\n schedule={schedule}\n schemaType={schemaType}\n />\n }\n linkComponent={LinkComponent}\n previewState={previewState}\n publishedDocumentId={publishedId}\n schedule={schedule}\n schemaType={schemaType}\n useElementQueries\n >\n {previewState.isLoading ? (\n <SanityDefaultPreview\n icon={schemaType?.icon as ComponentType}\n isPlaceholder={previewState.isLoading}\n layout=\"default\"\n />\n ) : (\n <Preview layout=\"default\" schemaType={schemaType} value={visibleDocument} />\n )}\n </PreviewWrapper>\n </>\n )\n}\n\nexport default ToolPreview\n","import {useMemo} from 'react'\n\nimport usePreviewState from '../../hooks/usePreviewState'\nimport {useScheduleSchemaType} from '../../hooks/useSchemaType'\nimport {type Schedule} from '../../types'\nimport {getScheduledDocument} from '../../utils/paneItemHelpers'\nimport DateWithTooltipElementQuery from './dateWithTooltip/DateWithTooltipElementQuery'\nimport DocumentPreview from './DocumentPreview'\nimport NoSchemaItem from './NoSchemaItem'\nimport ToolPreview from './ToolPreview'\n\ninterface Props {\n schedule: Schedule\n type: 'document' | 'tool'\n}\n\nexport const ScheduleItem = (props: Props) => {\n const {schedule, type} = props\n\n const firstDocument = getScheduledDocument(schedule)\n\n const schemaType = useScheduleSchemaType(schedule)\n const previewState = usePreviewState(firstDocument?.documentId, schemaType)\n\n const visibleDocument = previewState.draft || previewState.published\n const invalidDocument = !visibleDocument && !previewState.isLoading\n\n const preview = useMemo(() => {\n if (!schemaType || invalidDocument) {\n return <NoSchemaItem schedule={schedule} />\n }\n\n if (type === 'document') {\n return <DocumentPreview schedule={schedule} schemaType={schemaType} />\n }\n\n if (type === 'tool') {\n return <ToolPreview previewState={previewState} schedule={schedule} schemaType={schemaType} />\n }\n\n return null\n }, [invalidDocument, type, previewState, schedule, schemaType])\n\n return <DateWithTooltipElementQuery>{preview}</DateWithTooltipElementQuery>\n}\n"],"mappings":"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"}