sanity 6.8.0-next.2 → 6.8.0-next.21

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 (141) hide show
  1. package/lib/{AddonDatasetProvider-DKjnqxwO.js → AddonDatasetProvider-Cp0gK33v.js} +2 -2
  2. package/lib/{AddonDatasetProvider-DKjnqxwO.js.map → AddonDatasetProvider-Cp0gK33v.js.map} +1 -1
  3. package/lib/{CalendarFilter-B5Bb9eze.js → CalendarFilter-Cgz5picy.js} +3 -3
  4. package/lib/{CalendarFilter-B5Bb9eze.js.map → CalendarFilter-Cgz5picy.js.map} +1 -1
  5. package/lib/{CommandList-Q4ua5avE.js → CommandList-BeDeX_Tr.js} +23 -6
  6. package/lib/CommandList-BeDeX_Tr.js.map +1 -0
  7. package/lib/{CommentsDocumentLayout-Brt2OR56.js → CommentsDocumentLayout-BJMRXrxl.js} +2 -2
  8. package/lib/{CommentsDocumentLayout-Brt2OR56.js.map → CommentsDocumentLayout-BJMRXrxl.js.map} +1 -1
  9. package/lib/{CommentsField-Cmmta6uT.js → CommentsField-DV6bhirZ.js} +3 -3
  10. package/lib/{CommentsField-Cmmta6uT.js.map → CommentsField-DV6bhirZ.js.map} +1 -1
  11. package/lib/{CommentsInput-C7Kq5XMu.js → CommentsInput-DQ4WCdZJ.js} +5 -5
  12. package/lib/{CommentsInput-C7Kq5XMu.js.map → CommentsInput-DQ4WCdZJ.js.map} +1 -1
  13. package/lib/{CommentsInspector-H5CpN_XH.js → CommentsInspector-PkVZw8uv.js} +5 -5
  14. package/lib/{CommentsInspector-H5CpN_XH.js.map → CommentsInspector-PkVZw8uv.js.map} +1 -1
  15. package/lib/{CommentsListItem-x7FKz_CM.js → CommentsListItem-BjWNEXPU.js} +3 -3
  16. package/lib/{CommentsListItem-x7FKz_CM.js.map → CommentsListItem-BjWNEXPU.js.map} +1 -1
  17. package/lib/{CommentsSelectedPathProvider-Bt8q7wL8.js → CommentsSelectedPathProvider-x5f1q0eW.js} +3 -3
  18. package/lib/{CommentsSelectedPathProvider-Bt8q7wL8.js.map → CommentsSelectedPathProvider-x5f1q0eW.js.map} +1 -1
  19. package/lib/{CommentsStudioLayout-BTJ8Jz1o.js → CommentsStudioLayout-CxZq2lGu.js} +4 -4
  20. package/lib/{CommentsStudioLayout-BTJ8Jz1o.js.map → CommentsStudioLayout-CxZq2lGu.js.map} +1 -1
  21. package/lib/{PaneContainer-D8iNUpZk.js → PaneContainer-B_cWaSSe.js} +8 -8
  22. package/lib/{PaneContainer-D8iNUpZk.js.map → PaneContainer-B_cWaSSe.js.map} +1 -1
  23. package/lib/{PresentationToolGrantsCheck-CxqDuu8I.js → PresentationToolGrantsCheck-CITNu5DG.js} +14 -6
  24. package/lib/PresentationToolGrantsCheck-CITNu5DG.js.map +1 -0
  25. package/lib/{ReleasesMetadataProvider-CZ8jrkBT.js → ReleasesMetadataProvider-CpYsTC5J.js} +2 -2
  26. package/lib/{ReleasesMetadataProvider-CZ8jrkBT.js.map → ReleasesMetadataProvider-CpYsTC5J.js.map} +1 -1
  27. package/lib/{ReleasesNav-BmGRLcrk.js → ReleasesNav-BuqDytPb.js} +59 -19
  28. package/lib/ReleasesNav-BuqDytPb.js.map +1 -0
  29. package/lib/{ReleasesStudioLayout-6V5oDb3h.js → ReleasesStudioLayout-mJZnbUum.js} +8 -8
  30. package/lib/{ReleasesStudioLayout-6V5oDb3h.js.map → ReleasesStudioLayout-mJZnbUum.js.map} +1 -1
  31. package/lib/{ReleasesTool-CMABMGcE.js → ReleasesTool-BFOV2VEc.js} +14 -14
  32. package/lib/{ReleasesTool-CMABMGcE.js.map → ReleasesTool-BFOV2VEc.js.map} +1 -1
  33. package/lib/{SchedulePublishingStudioLayout-BJDA4FBy.js → SchedulePublishingStudioLayout-D2ptE43I.js} +3 -3
  34. package/lib/{SchedulePublishingStudioLayout-BJDA4FBy.js.map → SchedulePublishingStudioLayout-D2ptE43I.js.map} +1 -1
  35. package/lib/{SchedulePublishingUpsellProvider-DfmpnFZz.js → SchedulePublishingUpsellProvider-DvCfqtdZ.js} +2 -2
  36. package/lib/{SchedulePublishingUpsellProvider-DfmpnFZz.js.map → SchedulePublishingUpsellProvider-DvCfqtdZ.js.map} +1 -1
  37. package/lib/{ScheduledPublishingEnabledProvider-C2jEx3t4.js → ScheduledPublishingEnabledProvider-B5yA7hHi.js} +3 -3
  38. package/lib/{ScheduledPublishingEnabledProvider-C2jEx3t4.js.map → ScheduledPublishingEnabledProvider-B5yA7hHi.js.map} +1 -1
  39. package/lib/{SearchProvider-Dk7IfeRS.js → SearchProvider-Cpl3WUyR.js} +25 -25
  40. package/lib/SearchProvider-Cpl3WUyR.js.map +1 -0
  41. package/lib/{SingleDocReleaseLayout-DW02L2zA.js → SingleDocReleaseLayout-CfPCP1Ur.js} +2 -2
  42. package/lib/{SingleDocReleaseLayout-DW02L2zA.js.map → SingleDocReleaseLayout-CfPCP1Ur.js.map} +1 -1
  43. package/lib/{SingleDocReleaseUpsellProvider-9OXN223n.js → SingleDocReleaseUpsellProvider-4ib7kMdI.js} +4 -4
  44. package/lib/{SingleDocReleaseUpsellProvider-9OXN223n.js.map → SingleDocReleaseUpsellProvider-4ib7kMdI.js.map} +1 -1
  45. package/lib/{TasksStudioActiveToolLayout-grF1qQvq.js → TasksStudioActiveToolLayout-lrH8y1Kh.js} +11 -11
  46. package/lib/{TasksStudioActiveToolLayout-grF1qQvq.js.map → TasksStudioActiveToolLayout-lrH8y1Kh.js.map} +1 -1
  47. package/lib/{TasksStudioLayout-Dq72bdM2.js → TasksStudioLayout-CITzoP_1.js} +5 -5
  48. package/lib/{TasksStudioLayout-Dq72bdM2.js.map → TasksStudioLayout-CITzoP_1.js.map} +1 -1
  49. package/lib/{Tool-DNTYDreC.js → Tool-DxqXi1AF.js} +12 -12
  50. package/lib/{Tool-DNTYDreC.js.map → Tool-DxqXi1AF.js.map} +1 -1
  51. package/lib/{UnpublishVersionDialog-B0kX1dt6.js → UnpublishVersionDialog-VZflky9U.js} +4 -4
  52. package/lib/{UnpublishVersionDialog-B0kX1dt6.js.map → UnpublishVersionDialog-VZflky9U.js.map} +1 -1
  53. package/lib/{UpsellDialog-B3IbZqLA.js → UpsellDialog-BmQSjdJg.js} +2 -2
  54. package/lib/{UpsellDialog-B3IbZqLA.js.map → UpsellDialog-BmQSjdJg.js.map} +1 -1
  55. package/lib/{VariantsStudioNavbar-N-cvStJh.js → VariantsStudioNavbar-HsA97lVy.js} +7 -27
  56. package/lib/VariantsStudioNavbar-HsA97lVy.js.map +1 -0
  57. package/lib/{VariantsTool-Bj3RjgBN.js → VariantsTool-rOcVMkln.js} +7 -7
  58. package/lib/{VariantsTool-Bj3RjgBN.js.map → VariantsTool-rOcVMkln.js.map} +1 -1
  59. package/lib/{WorkspaceLoader-BZD0-fj6.js → WorkspaceLoader-kepBjrsn.js} +25 -25
  60. package/lib/{WorkspaceLoader-BZD0-fj6.js.map → WorkspaceLoader-kepBjrsn.js.map} +1 -1
  61. package/lib/_createContext.js +1 -1
  62. package/lib/_singletons.d.ts +1 -1
  63. package/lib/{buildTextSelectionFromFragment-BXiSMql4.js → buildTextSelectionFromFragment-Dj_WBTDa.js} +3 -3
  64. package/lib/{buildTextSelectionFromFragment-BXiSMql4.js.map → buildTextSelectionFromFragment-Dj_WBTDa.js.map} +1 -1
  65. package/lib/{datastores-CFWEadl-.js → datastores-CrRYBoDP.js} +12 -2
  66. package/lib/datastores-CrRYBoDP.js.map +1 -0
  67. package/lib/desk.d.ts +1 -1
  68. package/lib/desk.js +2 -2
  69. package/lib/{index-Dhee2Ms1.d.ts → index-Bic9X2KM.d.ts} +43 -11
  70. package/lib/index.d.ts +2 -2
  71. package/lib/index.js +642 -258
  72. package/lib/index.js.map +1 -1
  73. package/lib/{inputResolver-BHxsuFDP.js → inputResolver-Czq6o5Gh.js} +4 -4
  74. package/lib/{inputResolver-BHxsuFDP.js.map → inputResolver-Czq6o5Gh.js.map} +1 -1
  75. package/lib/{list-CwENPuWS.js → list-BgF8Q_09.js} +2 -2
  76. package/lib/{list-CwENPuWS.js.map → list-BgF8Q_09.js.map} +1 -1
  77. package/lib/{navigation.telemetry-C6drHR5a.js → navigation.telemetry-DSG23KnM.js} +7 -7
  78. package/lib/{navigation.telemetry-C6drHR5a.js.map → navigation.telemetry-DSG23KnM.js.map} +1 -1
  79. package/lib/pane-BXoiwAkI.js +2 -0
  80. package/lib/pane-W85qO-M2.js +2 -0
  81. package/lib/{plugin-Cr5EXfrh.js → plugin-CLeQ5x8I.js} +4 -4
  82. package/lib/{plugin-Cr5EXfrh.js.map → plugin-CLeQ5x8I.js.map} +1 -1
  83. package/lib/{plugin-C1y-_vWr.js → plugin-CgIJubgG.js} +3 -3
  84. package/lib/{plugin-C1y-_vWr.js.map → plugin-CgIJubgG.js.map} +1 -1
  85. package/lib/{plugin-BHRmn24Q.js → plugin-CqWxiAAn.js} +6 -6
  86. package/lib/{plugin-BHRmn24Q.js.map → plugin-CqWxiAAn.js.map} +1 -1
  87. package/lib/{plugin-DkiEMpfN.js → plugin-DkdjF8sO.js} +5 -5
  88. package/lib/{plugin-DkiEMpfN.js.map → plugin-DkdjF8sO.js.map} +1 -1
  89. package/lib/presentation.js +1 -1
  90. package/lib/{scheduleItem-u5-b4stD.js → scheduleItem-CqReiIMI.js} +8 -8
  91. package/lib/{scheduleItem-u5-b4stD.js.map → scheduleItem-CqReiIMI.js.map} +1 -1
  92. package/lib/{schedules-D0WwNN6x.js → schedules-DoZXofxj.js} +3 -3
  93. package/lib/{schedules-D0WwNN6x.js.map → schedules-DoZXofxj.js.map} +1 -1
  94. package/lib/structure.js +2 -2
  95. package/lib/{structureTool-BCCGiqpF.js → structureTool-By2eJI8F.js} +60 -49
  96. package/lib/structureTool-By2eJI8F.js.map +1 -0
  97. package/lib/{structureTool-B5ch7u4I.js → structureTool-UGWPEr2I.js} +6 -6
  98. package/lib/{structureTool-B5ch7u4I.js.map → structureTool-UGWPEr2I.js.map} +1 -1
  99. package/lib/{studioClient-DvoDxN44.js → studioClient-DqAy4dnu.js} +2 -2
  100. package/lib/{studioClient-DvoDxN44.js.map → studioClient-DqAy4dnu.js.map} +1 -1
  101. package/lib/{useBundleDocuments-CWvP-dZI.js → useBundleDocuments-Dyop3VGZ.js} +15 -13
  102. package/lib/useBundleDocuments-Dyop3VGZ.js.map +1 -0
  103. package/lib/{useComments-KoRXRvW7.js → useComments-CzNBSPgQ.js} +3 -3
  104. package/lib/{useComments-KoRXRvW7.js.map → useComments-CzNBSPgQ.js.map} +1 -1
  105. package/lib/{useCommentsTelemetry-LlKtxi5d.js → useCommentsTelemetry-CkplhYJa.js} +3 -3
  106. package/lib/{useCommentsTelemetry-LlKtxi5d.js.map → useCommentsTelemetry-CkplhYJa.js.map} +1 -1
  107. package/lib/{useDocumentPreviewValues-DcVumcdT.js → useDocumentPreviewValues-BPzq1mWh.js} +3 -3
  108. package/lib/{useDocumentPreviewValues-DcVumcdT.js.map → useDocumentPreviewValues-BPzq1mWh.js.map} +1 -1
  109. package/lib/{useFeatureEnabled-D7BsN6xF.js → useFeatureEnabled-B_ywe2up.js} +2 -2
  110. package/lib/{useFeatureEnabled-D7BsN6xF.js.map → useFeatureEnabled-B_ywe2up.js.map} +1 -1
  111. package/lib/{useFieldActions-NrjLdjo8.js → useFieldActions-DbRTTr6-.js} +2 -2
  112. package/lib/{useFieldActions-NrjLdjo8.js.map → useFieldActions-DbRTTr6-.js.map} +1 -1
  113. package/lib/{useReleasesToolAvailable-Cki52QI6.js → useReleasesToolAvailable-CUvya3HF.js} +3 -3
  114. package/lib/{useReleasesToolAvailable-Cki52QI6.js.map → useReleasesToolAvailable-CUvya3HF.js.map} +1 -1
  115. package/lib/{useScheduledDraftMenuActions-DIa5I8rU.js → useScheduledDraftMenuActions-BBEMJkNE.js} +5 -5
  116. package/lib/{useScheduledDraftMenuActions-DIa5I8rU.js.map → useScheduledDraftMenuActions-BBEMJkNE.js.map} +1 -1
  117. package/lib/{useSetVariant-MvLHJC9A.js → useSetVariant-Cz8brFbQ.js} +3 -3
  118. package/lib/{useSetVariant-MvLHJC9A.js.map → useSetVariant-Cz8brFbQ.js.map} +1 -1
  119. package/lib/{useStudioUrl-DN_xMGIS.js → useStudioUrl-DFAbTA0R.js} +5 -5
  120. package/lib/{useStudioUrl-DN_xMGIS.js.map → useStudioUrl-DFAbTA0R.js.map} +1 -1
  121. package/lib/{useTimeZone-B5fBFjsR.js → useTimeZone-CNjAZCdC.js} +2 -2
  122. package/lib/{useTimeZone-B5fBFjsR.js.map → useTimeZone-CNjAZCdC.js.map} +1 -1
  123. package/lib/{userComponent-BQj9BWzn.js → userComponent-MPULaxdQ.js} +2 -2
  124. package/lib/{userComponent-BQj9BWzn.js.map → userComponent-MPULaxdQ.js.map} +1 -1
  125. package/lib/{validationUtils-RTzFL-p1.js → validationUtils-C9y0bJZd.js} +4 -4
  126. package/lib/{validationUtils-RTzFL-p1.js.map → validationUtils-C9y0bJZd.js.map} +1 -1
  127. package/lib/{version-CY300aPw.js → version-BZCsk4ue.js} +2 -2
  128. package/lib/{version-CY300aPw.js.map → version-BZCsk4ue.js.map} +1 -1
  129. package/package.json +12 -11
  130. package/lib/CommandList-Q4ua5avE.js.map +0 -1
  131. package/lib/Delay-DjgiAi06.js +0 -21
  132. package/lib/Delay-DjgiAi06.js.map +0 -1
  133. package/lib/PresentationToolGrantsCheck-CxqDuu8I.js.map +0 -1
  134. package/lib/ReleasesNav-BmGRLcrk.js.map +0 -1
  135. package/lib/SearchProvider-Dk7IfeRS.js.map +0 -1
  136. package/lib/VariantsStudioNavbar-N-cvStJh.js.map +0 -1
  137. package/lib/datastores-CFWEadl-.js.map +0 -1
  138. package/lib/pane-CEegQ2Kh.js +0 -2
  139. package/lib/pane-DHrjuFiG.js +0 -2
  140. package/lib/structureTool-BCCGiqpF.js.map +0 -1
  141. package/lib/useBundleDocuments-CWvP-dZI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtils-RTzFL-p1.js","names":["BadgeTone","TimeZoneScope","ScheduleAction","ScheduleState","SCHEDULE_ACTION_DICTIONARY","Record","actionName","badgeColor","badgeTone","publish","unpublish","SCHEDULE_STATE_DICTIONARY","title","scheduled","succeeded","cancelled","SCHEDULE_FILTERS","Object","keys","filter","f","TOOL_HEADER_HEIGHT","DOCUMENT_HAS_WARNINGS_TEXT","DOCUMENT_HAS_ERRORS_TEXT","SCHEDULE_FAILED_TEXT","TOOL_TITLE","RELEASES_DOCS_URL","FORBIDDEN_RESPONSE_TEXT","SCHEDULED_PUBLISHING_TOOL_NAME","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","type","Schedule","getLastExecuteDate","schedule","executedAt","executeAt","Schedule","getLastExecuteDate","sortByExecuteDate","reverseOrder","a","b","aExecuteDate","bExecuteDate","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","ClientError","FORBIDDEN_RESPONSE_TEXT","isClientError","e","getErrorMessage","err","message","response","statusCode","Error","String","SanityClient","useMemo","useClient","debugWithName","Schedule","debug","useScheduleApi","$","_c","t0","Symbol","for","apiVersion","client","t1","createScheduleApi","dataset","projectId","config","_create","date","documentId","roundedDate","Date","setSeconds","setMilliseconds","request","body","documents","executeAt","name","method","uri","_delete","scheduleId","_deleteMultiple","scheduleIds","requests","map","Promise","allSettled","_publish","transactionId","_update","documentSchedule","Partial","create","delete","deleteMultiple","publish","update","useToast","useTimeZone","ToastDescription","Schedule","getErrorMessage","useScheduleApi","ScheduleEvents","create","const","delete","deleteMultiple","publish","update","ScheduleCreateEvent","date","documentId","ScheduleDeleteEvent","scheduleId","ScheduleDeleteMultipleEvent","scheduleIds","SchedulePublishEvent","ScheduleUpdateEvent","global","WindowEventMap","CustomEvent","UnpackCustomEventPayload","T","U","pluralize","word","count","scheduleCustomEvent","name","payload","Omit","CustomEventInit","D","detail","useScheduleOperation","$","_c","toast","t0","Symbol","for","type","formatDateTz","api","t1","createSchedule","t2","displayToast","t3","undefined","run","data","window","dispatchEvent","executeAt","push","closable","description","Date","includeTimeZone","prefix","duration","status","catch","err","deleteSchedule","t4","schedule","displayToast_0","run_0","id","err_0","deleteSchedules","t5","schedules","displayToast_1","run_1","map","_temp","response","fulfilledIds","rejectedReasons","reduce","acc","v","index","reason","numFulfilledIds","length","numRejectedReasons","toString","err_1","publishSchedule","t6","schedule_1","displayToast_2","t7","updateSchedule","date_0","scheduleId_0","displayToast_3","documentSchedule","t8","schedule_0","useCallback","useEffect","useMemo","useSWR","useClient","useScheduledPublishingEnabled","Schedule","ScheduleState","sortByExecuteDate","ScheduleDeleteEvent","ScheduleDeleteMultipleEvent","ScheduleEvents","SchedulePublishEvent","ScheduleUpdateEvent","QueryKey","params","documentIds","state","url","useScheduleBaseUrl","$","_c","t0","Symbol","for","apiVersion","client","t1","config","dataset","projectId","useFetcher","queryKey","request","query","method","uri","NO_SCHEDULES","usePollSchedules","undefined","documentId","mode","enabled","t2","t3","t4","t5","refreshWhenHidden","refreshWhenOffline","revalidateOnFocus","shouldRetryOnError","refreshInterval","revalidateIfStale","revalidateOnReconnect","SWR_OPTIONS","swrOptions","t6","t7","fetcher","data","error","mutate","t8","event","currentData","schedules","filter","schedule","id","detail","scheduleId","handleDelete","t9","event_0","currentData_0","schedule_0","scheduleIds","includes","handleDeleteMultiple","t10","event_1","currentData_1","currentSchedules","index","findIndex","schedule_1","slice","executeAt","Date","toISOString","handlePublish","t11","event_2","currentData_2","currentSchedules_0","index_0","schedule_2","date","handleUpdate","t12","t13","window","addEventListener","delete","deleteMultiple","publish","update","removeEventListener","t14","sort","sortedSchedules","t15","t16","t17","isInitialLoading","useMemo","usePublishedId","id","$","_c","t0","replaceAll","undefined","T","isValidationErrorMarker","isValidationWarningMarker","ValidationMarker","ButtonTone","useMemo","ValidationStatus","EMPTY_VALIDATION_STATUS","validation","isValidating","ValidationState","markers","validationTone","hasError","hasWarning","getValidationState","validationMarkers","filter","length","useValidationState","$","_c","t0"],"sources":["../src/core/scheduled-publishing/constants.tsx","../src/core/scheduled-publishing/utils/scheduleUtils.ts","../src/core/scheduled-publishing/utils/sortByExecuteDate.ts","../src/core/scheduled-publishing/components/toastDescription/ToastDescription.tsx","../src/core/scheduled-publishing/utils/getErrorMessage.ts","../src/core/scheduled-publishing/hooks/useScheduleApi.ts","../src/core/scheduled-publishing/hooks/useScheduleOperation.tsx","../src/core/scheduled-publishing/hooks/usePollSchedules.ts","../src/core/scheduled-publishing/hooks/usePublishedId.ts","../src/core/scheduled-publishing/utils/validationUtils.ts"],"sourcesContent":["import {type BadgeTone} from '@sanity/ui'\n\nimport {type TimeZoneScope} from '../hooks/useTimeZone'\nimport {type ScheduleAction, type ScheduleState} from './types'\n\nexport const SCHEDULE_ACTION_DICTIONARY: Record<\n ScheduleAction,\n {\n actionName: string\n badgeColor?: 'primary' | 'success' | 'warning' | 'danger' // Document badge specific\n badgeTone: BadgeTone\n }\n> = {\n publish: {\n actionName: 'Publishing',\n badgeColor: 'primary',\n badgeTone: 'positive',\n },\n unpublish: {\n actionName: 'Unpublishing',\n badgeColor: 'danger',\n badgeTone: 'critical',\n },\n}\n\nexport const SCHEDULE_STATE_DICTIONARY: Record<\n ScheduleState,\n {\n title: string\n }\n> = {\n scheduled: {\n title: 'Upcoming',\n },\n succeeded: {\n title: 'Completed',\n },\n cancelled: {\n title: 'Failed',\n },\n}\n\n// Tool: denotes order of filter tags as well as accessible routes\nexport const SCHEDULE_FILTERS: ScheduleState[] = Object.keys(SCHEDULE_STATE_DICTIONARY).filter(\n (f): f is ScheduleState => !!f,\n)\n\nexport const TOOL_HEADER_HEIGHT = 55 // px\n\nexport const DOCUMENT_HAS_WARNINGS_TEXT = 'This document has validation warnings.'\nexport const DOCUMENT_HAS_ERRORS_TEXT =\n 'This document has validation errors that should be resolved before its publish date.'\n\nexport const SCHEDULE_FAILED_TEXT = 'This schedule failed to run.'\n\nexport const TOOL_TITLE = 'Schedules'\n\nexport const RELEASES_DOCS_URL = 'https://www.sanity.io/blog/introducing-content-releases'\n\nexport const FORBIDDEN_RESPONSE_TEXT =\n 'Forbidden. Please check that your project has access to Scheduled Publishing.'\n\nexport const SCHEDULED_PUBLISHING_TOOL_NAME = 'schedules'\n\nexport const SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE: TimeZoneScope = {type: 'scheduledPublishing'}\n","import {type Schedule} from '../types'\n\n/**\n * Return a schedule's `executedAt` date if it exists, otherwise just return `executeAt`.\n *\n * When dealing with schedules that may have differing values for `executeAt` and\n * `executedAt` (e.g. schedules force-published ahead of time), for the purposes of\n * rendering and sorting we only care about the _final_ date a schedule was executed.\n *\n * Note that it's possible for both `executedAt` and `executeAt` to be null\n * (if creating Schedules via the Scheduling API without dates).\n */\nexport function getLastExecuteDate(schedule: Schedule): string | null {\n return schedule?.executedAt || schedule?.executeAt\n}\n","import {type Schedule} from '../types'\nimport {getLastExecuteDate} from './scheduleUtils'\n\nexport function sortByExecuteDate({reverseOrder}: {reverseOrder: boolean} = {reverseOrder: false}) {\n return function (a: Schedule, b: Schedule): number {\n const aExecuteDate = getLastExecuteDate(a)\n const bExecuteDate = getLastExecuteDate(b)\n\n if (aExecuteDate === bExecuteDate) {\n return 0\n }\n if (aExecuteDate === null) {\n return 1\n }\n if (bExecuteDate === null) {\n return -1\n }\n return (aExecuteDate > bExecuteDate ? 1 : -1) * (reverseOrder ? -1 : 1)\n }\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} space={3}>\n <Inline space={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {type ClientError} from '@sanity/client'\n\nimport {FORBIDDEN_RESPONSE_TEXT} from '../constants'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nexport default function getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = FORBIDDEN_RESPONSE_TEXT\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {debugWithName} from '../../studio/timezones/utils/debug'\nimport {type Schedule} from '../types'\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport function useScheduleApi(): ReturnType<typeof createScheduleApi> {\n const client = useClient({apiVersion: '2022-09-01'})\n return useMemo(() => createScheduleApi(client), [client])\n}\n\nfunction createScheduleApi(client: SanityClient) {\n const {dataset, projectId} = client.config()\n function _create({date, documentId}: {date: string; documentId: string}) {\n debug('_create:', documentId)\n\n // Round date to nearest second (mutate)\n const roundedDate = new Date(date)\n roundedDate.setSeconds(0)\n roundedDate.setMilliseconds(0)\n\n return client.request<Schedule>({\n body: {\n documents: [{documentId}],\n executeAt: roundedDate,\n name: roundedDate,\n },\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}`,\n })\n }\n\n function _delete({scheduleId}: {scheduleId: string}) {\n debug('_delete:', scheduleId)\n return client.request<void>({\n method: 'DELETE',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n function _deleteMultiple({scheduleIds}: {scheduleIds: string[]}) {\n debug('_deleteMultiple:', scheduleIds)\n const requests = scheduleIds.map((scheduleId) => _delete({scheduleId}))\n return Promise.allSettled(requests)\n }\n\n function _publish({scheduleId}: {scheduleId: string}) {\n debug('_publish:', scheduleId)\n\n return client.request<{transactionId: string}>({\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}/publish`,\n })\n }\n\n function _update({\n documentSchedule,\n scheduleId,\n }: {\n documentSchedule: Partial<Schedule>\n scheduleId: string\n }) {\n debug('_update:', scheduleId, documentSchedule)\n return client.request<{transactionId: string}>({\n body: documentSchedule,\n method: 'PATCH',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n return {\n create: _create,\n delete: _delete,\n deleteMultiple: _deleteMultiple,\n publish: _publish,\n update: _update,\n }\n}\n","import {useToast} from '@sanity/ui'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport ToastDescription from '../components/toastDescription/ToastDescription'\nimport {type Schedule} from '../types'\nimport getErrorMessage from '../utils/getErrorMessage'\nimport {useScheduleApi} from './useScheduleApi'\n\n// Custom events\nexport const ScheduleEvents = {\n create: 'scheduleCreate' as const,\n delete: 'scheduleDelete' as const,\n deleteMultiple: 'scheduleDeleteMultiple' as const,\n publish: 'schedulePublish' as const,\n update: 'scheduleUpdate' as const,\n}\n\nexport type ScheduleCreateEvent = {\n date: string\n documentId: string\n}\n\nexport type ScheduleDeleteEvent = {\n scheduleId: string\n}\n\nexport type ScheduleDeleteMultipleEvent = {\n scheduleIds: string[]\n}\n\nexport type SchedulePublishEvent = {\n scheduleId: string\n}\n\nexport type ScheduleUpdateEvent = {\n date: string\n scheduleId: string\n}\n\n// Add our custom events to `WindowEventMap`, providing typing when using `addEventListener`\ndeclare global {\n interface WindowEventMap {\n [ScheduleEvents.create]: CustomEvent<ScheduleCreateEvent>\n [ScheduleEvents.delete]: CustomEvent<ScheduleDeleteEvent>\n [ScheduleEvents.deleteMultiple]: CustomEvent<ScheduleDeleteMultipleEvent>\n [ScheduleEvents.publish]: CustomEvent<SchedulePublishEvent>\n [ScheduleEvents.update]: CustomEvent<ScheduleUpdateEvent>\n }\n}\n\ntype UnpackCustomEventPayload<T> = T extends CustomEvent<infer U> ? U : never\n\nfunction pluralize(word: string, count: number) {\n return `${count} ${word}${count === 1 ? '' : 's'}`\n}\n// Proxy that generates type safe CustomEvents.\n// We infer our CustomEvent's `detail` using `UnpackCustomEventPayload`\nconst scheduleCustomEvent = <\n T extends (typeof ScheduleEvents)[keyof typeof ScheduleEvents],\n D extends UnpackCustomEventPayload<WindowEventMap[T]>,\n>(\n name: T,\n // override `detail` in `CustomEventInit` with our own custom payload\n payload: Omit<CustomEventInit<D>, 'detail'> & {\n detail: D\n },\n): CustomEvent<D> => new CustomEvent(name, payload)\n\nexport default function useScheduleOperation() {\n const toast = useToast()\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n const api = useScheduleApi()\n\n async function createSchedule({\n date,\n displayToast = true,\n documentId,\n }: {\n date: string\n displayToast?: boolean\n documentId: string\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const data = await api.create({date, documentId})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.create, {\n detail: {\n date,\n documentId,\n },\n }),\n )\n\n if (displayToast && data?.executeAt) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(data.executeAt),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule created\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to create schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n await api.delete({scheduleId: schedule?.id})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.delete, {\n detail: {\n scheduleId: schedule?.id,\n },\n }),\n )\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Schedule deleted\" />,\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedules({\n displayToast = true,\n schedules,\n }: {\n displayToast?: boolean\n schedules: Schedule[]\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const scheduleIds = schedules.map((schedule) => schedule.id)\n const response = await api.deleteMultiple({scheduleIds})\n\n const {fulfilledIds, rejectedReasons} = response.reduce<{\n fulfilledIds: string[]\n rejectedReasons: string[]\n }>(\n (acc, v, index) => {\n if (v.status === 'fulfilled') {\n acc.fulfilledIds.push(schedules[index].id)\n }\n\n if (v.status === 'rejected') {\n acc.rejectedReasons.push(`[${schedules[index].id}]: ${v.reason}`)\n }\n\n return acc\n },\n {fulfilledIds: [], rejectedReasons: []},\n )\n const numFulfilledIds = fulfilledIds.length\n const numRejectedReasons = rejectedReasons.length\n\n if (fulfilledIds?.length > 0) {\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.deleteMultiple, {\n detail: {scheduleIds: fulfilledIds},\n }),\n )\n }\n\n if (displayToast) {\n if (fulfilledIds?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription title={`${pluralize('schedule', numFulfilledIds)} deleted`} />\n ),\n status: 'success',\n })\n }\n if (rejectedReasons?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={rejectedReasons?.toString()}\n title={`Unable to delete ${pluralize('schedule', numRejectedReasons)}`}\n />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedules\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function publishSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n try {\n const scheduleId = schedule.id\n await api.publish({scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.publish, {detail: {scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Document published\" />,\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to publish schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n async function updateSchedule({\n date,\n displayToast = true,\n scheduleId,\n }: {\n date: string\n displayToast?: boolean\n scheduleId: string\n }) {\n try {\n await api.update({documentSchedule: {executeAt: date}, scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.update, {detail: {date, scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(date),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule updated\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n return {\n createSchedule,\n deleteSchedule,\n deleteSchedules,\n publishSchedule,\n updateSchedule,\n }\n}\n","import {useCallback, useEffect, useMemo} from 'react'\nimport useSWR from 'swr'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useScheduledPublishingEnabled} from '../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {type Schedule, type ScheduleState} from '../types'\nimport {sortByExecuteDate} from '../utils/sortByExecuteDate'\nimport {\n type ScheduleDeleteEvent,\n type ScheduleDeleteMultipleEvent,\n ScheduleEvents,\n type SchedulePublishEvent,\n type ScheduleUpdateEvent,\n} from './useScheduleOperation'\n\ntype QueryKey = {\n params?: {\n documentIds?: string\n state?: ScheduleState\n }\n url: string\n}\n\nfunction useScheduleBaseUrl() {\n const client = useClient({apiVersion: '2022-09-01'})\n const {dataset, projectId} = client.config()\n return `/schedules/${projectId}/${dataset}`\n}\n\nfunction useFetcher(queryKey: QueryKey) {\n const client = useClient({apiVersion: '2022-09-01'})\n return useCallback(\n () =>\n client.request<{schedules: Schedule[] | undefined}>({\n query: queryKey.params,\n method: 'GET',\n uri: queryKey.url,\n }),\n [client, queryKey],\n )\n}\n\nconst NO_SCHEDULES: Schedule[] = []\n\n/**\n * Poll for all schedules\n */\nfunction usePollSchedules({documentId, state}: {documentId?: string; state?: ScheduleState} = {}): {\n error: Error\n isInitialLoading: boolean\n schedules: Schedule[]\n} {\n const {mode, enabled} = useScheduledPublishingEnabled()\n\n const swrOptions = useMemo(() => {\n const SWR_OPTIONS = {\n refreshWhenHidden: false,\n refreshWhenOffline: false,\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n // Revalidate data only on default mode, upsell mode should not poll given the data won't change.\n refreshInterval: mode === 'default' ? 10000 : undefined, // 10s\n revalidateIfStale: mode === 'default',\n revalidateOnReconnect: mode === 'default',\n }\n return SWR_OPTIONS\n }, [mode])\n const url = useScheduleBaseUrl()\n const queryKey: QueryKey = useMemo(\n () => ({params: {documentIds: documentId, state}, url}),\n [url, documentId, state],\n )\n\n const fetcher = useFetcher(queryKey)\n\n // Disables SWR if scheduled publishing is not enabled by not providing a key\n const {data, error, mutate} = useSWR(enabled ? queryKey : null, fetcher, swrOptions)\n\n // Immediately remove schedule from SWR cache and revalidate\n const handleDelete = useCallback(\n (event: CustomEvent<ScheduleDeleteEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => schedule.id !== event.detail.scheduleId,\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately remove schedules from SWR cache and revalidate\n const handleDeleteMultiple = useCallback(\n (event: CustomEvent<ScheduleDeleteMultipleEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => !event.detail.scheduleIds.includes(schedule.id),\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately publish schedule in SWR cache and revalidate\n const handlePublish = useCallback(\n (event: CustomEvent<SchedulePublishEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: new Date().toISOString(),\n state: 'succeeded',\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately update schedule in SWR cache and revalidate\n const handleUpdate = useCallback(\n (event: CustomEvent<ScheduleUpdateEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: event.detail.date,\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Listen to schedule events\n useEffect(() => {\n window.addEventListener(ScheduleEvents.delete, handleDelete)\n window.addEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.addEventListener(ScheduleEvents.publish, handlePublish)\n window.addEventListener(ScheduleEvents.update, handleUpdate)\n return () => {\n window.removeEventListener(ScheduleEvents.delete, handleDelete)\n window.removeEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.removeEventListener(ScheduleEvents.publish, handlePublish)\n window.removeEventListener(ScheduleEvents.update, handleUpdate)\n }\n }, [handleDelete, handleDeleteMultiple, handlePublish, handleUpdate])\n\n // By default: sort schedules by last execute date (executedAt || executeAt)\n const sortedSchedules = useMemo(\n () => data?.schedules?.sort(sortByExecuteDate()),\n [data?.schedules],\n )\n\n return {\n error,\n isInitialLoading: !error && !data,\n schedules: sortedSchedules || NO_SCHEDULES,\n }\n}\n\nexport default usePollSchedules\n","import {useMemo} from 'react'\n\nexport function usePublishedId<T extends string | undefined>(id: T): T {\n return useMemo(() => (id ? id.replaceAll('drafts.', '') : undefined) as T, [id])\n}\n","import {\n isValidationErrorMarker,\n isValidationWarningMarker,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type ButtonTone} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ValidationStatus} from '../types'\n\nexport const EMPTY_VALIDATION_STATUS: ValidationStatus = {\n validation: [],\n isValidating: false,\n}\n\ninterface ValidationState {\n markers: ValidationMarker[]\n validationTone: ButtonTone\n hasError: boolean\n hasWarning: boolean\n}\n\nfunction getValidationState(\n validationMarkers: ValidationMarker[] = EMPTY_VALIDATION_STATUS.validation,\n): ValidationState {\n const hasError = validationMarkers.filter(isValidationErrorMarker).length > 0\n const hasWarning = validationMarkers.filter(isValidationWarningMarker).length > 0\n\n let validationTone: ButtonTone = 'default'\n if (hasWarning) {\n validationTone = 'default' //not using 'caution' for now\n }\n if (hasError) {\n validationTone = 'critical'\n }\n\n return {\n markers: validationMarkers,\n validationTone,\n hasError,\n hasWarning,\n }\n}\n\nexport function useValidationState(markers: ValidationMarker[]): ValidationState {\n return useMemo(() => getValidationState(markers), [markers])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"validationUtils-C9y0bJZd.js","names":["BadgeTone","TimeZoneScope","ScheduleAction","ScheduleState","SCHEDULE_ACTION_DICTIONARY","Record","actionName","badgeColor","badgeTone","publish","unpublish","SCHEDULE_STATE_DICTIONARY","title","scheduled","succeeded","cancelled","SCHEDULE_FILTERS","Object","keys","filter","f","TOOL_HEADER_HEIGHT","DOCUMENT_HAS_WARNINGS_TEXT","DOCUMENT_HAS_ERRORS_TEXT","SCHEDULE_FAILED_TEXT","TOOL_TITLE","RELEASES_DOCS_URL","FORBIDDEN_RESPONSE_TEXT","SCHEDULED_PUBLISHING_TOOL_NAME","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","type","Schedule","getLastExecuteDate","schedule","executedAt","executeAt","Schedule","getLastExecuteDate","sortByExecuteDate","reverseOrder","a","b","aExecuteDate","bExecuteDate","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","ClientError","FORBIDDEN_RESPONSE_TEXT","isClientError","e","getErrorMessage","err","message","response","statusCode","Error","String","SanityClient","useMemo","useClient","debugWithName","Schedule","debug","useScheduleApi","$","_c","t0","Symbol","for","apiVersion","client","t1","createScheduleApi","dataset","projectId","config","_create","date","documentId","roundedDate","Date","setSeconds","setMilliseconds","request","body","documents","executeAt","name","method","uri","_delete","scheduleId","_deleteMultiple","scheduleIds","requests","map","Promise","allSettled","_publish","transactionId","_update","documentSchedule","Partial","create","delete","deleteMultiple","publish","update","useToast","useTimeZone","ToastDescription","Schedule","getErrorMessage","useScheduleApi","ScheduleEvents","create","const","delete","deleteMultiple","publish","update","ScheduleCreateEvent","date","documentId","ScheduleDeleteEvent","scheduleId","ScheduleDeleteMultipleEvent","scheduleIds","SchedulePublishEvent","ScheduleUpdateEvent","global","WindowEventMap","CustomEvent","UnpackCustomEventPayload","T","U","pluralize","word","count","scheduleCustomEvent","name","payload","Omit","CustomEventInit","D","detail","useScheduleOperation","$","_c","toast","t0","Symbol","for","type","formatDateTz","api","t1","createSchedule","t2","displayToast","t3","undefined","run","data","window","dispatchEvent","executeAt","push","closable","description","Date","includeTimeZone","prefix","duration","status","catch","err","deleteSchedule","t4","schedule","displayToast_0","run_0","id","err_0","deleteSchedules","t5","schedules","displayToast_1","run_1","map","_temp","response","fulfilledIds","rejectedReasons","reduce","acc","v","index","reason","numFulfilledIds","length","numRejectedReasons","toString","err_1","publishSchedule","t6","schedule_1","displayToast_2","t7","updateSchedule","date_0","scheduleId_0","displayToast_3","documentSchedule","t8","schedule_0","useCallback","useEffect","useMemo","useSWR","useClient","useScheduledPublishingEnabled","Schedule","ScheduleState","sortByExecuteDate","ScheduleDeleteEvent","ScheduleDeleteMultipleEvent","ScheduleEvents","SchedulePublishEvent","ScheduleUpdateEvent","QueryKey","params","documentIds","state","url","useScheduleBaseUrl","$","_c","t0","Symbol","for","apiVersion","client","t1","config","dataset","projectId","useFetcher","queryKey","request","query","method","uri","NO_SCHEDULES","usePollSchedules","undefined","documentId","mode","enabled","t2","t3","t4","t5","refreshWhenHidden","refreshWhenOffline","revalidateOnFocus","shouldRetryOnError","refreshInterval","revalidateIfStale","revalidateOnReconnect","SWR_OPTIONS","swrOptions","t6","t7","fetcher","data","error","mutate","t8","event","currentData","schedules","filter","schedule","id","detail","scheduleId","handleDelete","t9","event_0","currentData_0","schedule_0","scheduleIds","includes","handleDeleteMultiple","t10","event_1","currentData_1","currentSchedules","index","findIndex","schedule_1","slice","executeAt","Date","toISOString","handlePublish","t11","event_2","currentData_2","currentSchedules_0","index_0","schedule_2","date","handleUpdate","t12","t13","window","addEventListener","delete","deleteMultiple","publish","update","removeEventListener","t14","sort","sortedSchedules","t15","t16","t17","isInitialLoading","useMemo","usePublishedId","id","$","_c","t0","replaceAll","undefined","T","isValidationErrorMarker","isValidationWarningMarker","ValidationMarker","ButtonTone","useMemo","ValidationStatus","EMPTY_VALIDATION_STATUS","validation","isValidating","ValidationState","markers","validationTone","hasError","hasWarning","getValidationState","validationMarkers","filter","length","useValidationState","$","_c","t0"],"sources":["../src/core/scheduled-publishing/constants.tsx","../src/core/scheduled-publishing/utils/scheduleUtils.ts","../src/core/scheduled-publishing/utils/sortByExecuteDate.ts","../src/core/scheduled-publishing/components/toastDescription/ToastDescription.tsx","../src/core/scheduled-publishing/utils/getErrorMessage.ts","../src/core/scheduled-publishing/hooks/useScheduleApi.ts","../src/core/scheduled-publishing/hooks/useScheduleOperation.tsx","../src/core/scheduled-publishing/hooks/usePollSchedules.ts","../src/core/scheduled-publishing/hooks/usePublishedId.ts","../src/core/scheduled-publishing/utils/validationUtils.ts"],"sourcesContent":["import {type BadgeTone} from '@sanity/ui'\n\nimport {type TimeZoneScope} from '../hooks/useTimeZone'\nimport {type ScheduleAction, type ScheduleState} from './types'\n\nexport const SCHEDULE_ACTION_DICTIONARY: Record<\n ScheduleAction,\n {\n actionName: string\n badgeColor?: 'primary' | 'success' | 'warning' | 'danger' // Document badge specific\n badgeTone: BadgeTone\n }\n> = {\n publish: {\n actionName: 'Publishing',\n badgeColor: 'primary',\n badgeTone: 'positive',\n },\n unpublish: {\n actionName: 'Unpublishing',\n badgeColor: 'danger',\n badgeTone: 'critical',\n },\n}\n\nexport const SCHEDULE_STATE_DICTIONARY: Record<\n ScheduleState,\n {\n title: string\n }\n> = {\n scheduled: {\n title: 'Upcoming',\n },\n succeeded: {\n title: 'Completed',\n },\n cancelled: {\n title: 'Failed',\n },\n}\n\n// Tool: denotes order of filter tags as well as accessible routes\nexport const SCHEDULE_FILTERS: ScheduleState[] = Object.keys(SCHEDULE_STATE_DICTIONARY).filter(\n (f): f is ScheduleState => !!f,\n)\n\nexport const TOOL_HEADER_HEIGHT = 55 // px\n\nexport const DOCUMENT_HAS_WARNINGS_TEXT = 'This document has validation warnings.'\nexport const DOCUMENT_HAS_ERRORS_TEXT =\n 'This document has validation errors that should be resolved before its publish date.'\n\nexport const SCHEDULE_FAILED_TEXT = 'This schedule failed to run.'\n\nexport const TOOL_TITLE = 'Schedules'\n\nexport const RELEASES_DOCS_URL = 'https://www.sanity.io/blog/introducing-content-releases'\n\nexport const FORBIDDEN_RESPONSE_TEXT =\n 'Forbidden. Please check that your project has access to Scheduled Publishing.'\n\nexport const SCHEDULED_PUBLISHING_TOOL_NAME = 'schedules'\n\nexport const SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE: TimeZoneScope = {type: 'scheduledPublishing'}\n","import {type Schedule} from '../types'\n\n/**\n * Return a schedule's `executedAt` date if it exists, otherwise just return `executeAt`.\n *\n * When dealing with schedules that may have differing values for `executeAt` and\n * `executedAt` (e.g. schedules force-published ahead of time), for the purposes of\n * rendering and sorting we only care about the _final_ date a schedule was executed.\n *\n * Note that it's possible for both `executedAt` and `executeAt` to be null\n * (if creating Schedules via the Scheduling API without dates).\n */\nexport function getLastExecuteDate(schedule: Schedule): string | null {\n return schedule?.executedAt || schedule?.executeAt\n}\n","import {type Schedule} from '../types'\nimport {getLastExecuteDate} from './scheduleUtils'\n\nexport function sortByExecuteDate({reverseOrder}: {reverseOrder: boolean} = {reverseOrder: false}) {\n return function (a: Schedule, b: Schedule): number {\n const aExecuteDate = getLastExecuteDate(a)\n const bExecuteDate = getLastExecuteDate(b)\n\n if (aExecuteDate === bExecuteDate) {\n return 0\n }\n if (aExecuteDate === null) {\n return 1\n }\n if (bExecuteDate === null) {\n return -1\n }\n return (aExecuteDate > bExecuteDate ? 1 : -1) * (reverseOrder ? -1 : 1)\n }\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} space={3}>\n <Inline space={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {type ClientError} from '@sanity/client'\n\nimport {FORBIDDEN_RESPONSE_TEXT} from '../constants'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nexport default function getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = FORBIDDEN_RESPONSE_TEXT\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {debugWithName} from '../../studio/timezones/utils/debug'\nimport {type Schedule} from '../types'\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport function useScheduleApi(): ReturnType<typeof createScheduleApi> {\n const client = useClient({apiVersion: '2022-09-01'})\n return useMemo(() => createScheduleApi(client), [client])\n}\n\nfunction createScheduleApi(client: SanityClient) {\n const {dataset, projectId} = client.config()\n function _create({date, documentId}: {date: string; documentId: string}) {\n debug('_create:', documentId)\n\n // Round date to nearest second (mutate)\n const roundedDate = new Date(date)\n roundedDate.setSeconds(0)\n roundedDate.setMilliseconds(0)\n\n return client.request<Schedule>({\n body: {\n documents: [{documentId}],\n executeAt: roundedDate,\n name: roundedDate,\n },\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}`,\n })\n }\n\n function _delete({scheduleId}: {scheduleId: string}) {\n debug('_delete:', scheduleId)\n return client.request<void>({\n method: 'DELETE',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n function _deleteMultiple({scheduleIds}: {scheduleIds: string[]}) {\n debug('_deleteMultiple:', scheduleIds)\n const requests = scheduleIds.map((scheduleId) => _delete({scheduleId}))\n return Promise.allSettled(requests)\n }\n\n function _publish({scheduleId}: {scheduleId: string}) {\n debug('_publish:', scheduleId)\n\n return client.request<{transactionId: string}>({\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}/publish`,\n })\n }\n\n function _update({\n documentSchedule,\n scheduleId,\n }: {\n documentSchedule: Partial<Schedule>\n scheduleId: string\n }) {\n debug('_update:', scheduleId, documentSchedule)\n return client.request<{transactionId: string}>({\n body: documentSchedule,\n method: 'PATCH',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n return {\n create: _create,\n delete: _delete,\n deleteMultiple: _deleteMultiple,\n publish: _publish,\n update: _update,\n }\n}\n","import {useToast} from '@sanity/ui'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport ToastDescription from '../components/toastDescription/ToastDescription'\nimport {type Schedule} from '../types'\nimport getErrorMessage from '../utils/getErrorMessage'\nimport {useScheduleApi} from './useScheduleApi'\n\n// Custom events\nexport const ScheduleEvents = {\n create: 'scheduleCreate' as const,\n delete: 'scheduleDelete' as const,\n deleteMultiple: 'scheduleDeleteMultiple' as const,\n publish: 'schedulePublish' as const,\n update: 'scheduleUpdate' as const,\n}\n\nexport type ScheduleCreateEvent = {\n date: string\n documentId: string\n}\n\nexport type ScheduleDeleteEvent = {\n scheduleId: string\n}\n\nexport type ScheduleDeleteMultipleEvent = {\n scheduleIds: string[]\n}\n\nexport type SchedulePublishEvent = {\n scheduleId: string\n}\n\nexport type ScheduleUpdateEvent = {\n date: string\n scheduleId: string\n}\n\n// Add our custom events to `WindowEventMap`, providing typing when using `addEventListener`\ndeclare global {\n interface WindowEventMap {\n [ScheduleEvents.create]: CustomEvent<ScheduleCreateEvent>\n [ScheduleEvents.delete]: CustomEvent<ScheduleDeleteEvent>\n [ScheduleEvents.deleteMultiple]: CustomEvent<ScheduleDeleteMultipleEvent>\n [ScheduleEvents.publish]: CustomEvent<SchedulePublishEvent>\n [ScheduleEvents.update]: CustomEvent<ScheduleUpdateEvent>\n }\n}\n\ntype UnpackCustomEventPayload<T> = T extends CustomEvent<infer U> ? U : never\n\nfunction pluralize(word: string, count: number) {\n return `${count} ${word}${count === 1 ? '' : 's'}`\n}\n// Proxy that generates type safe CustomEvents.\n// We infer our CustomEvent's `detail` using `UnpackCustomEventPayload`\nconst scheduleCustomEvent = <\n T extends (typeof ScheduleEvents)[keyof typeof ScheduleEvents],\n D extends UnpackCustomEventPayload<WindowEventMap[T]>,\n>(\n name: T,\n // override `detail` in `CustomEventInit` with our own custom payload\n payload: Omit<CustomEventInit<D>, 'detail'> & {\n detail: D\n },\n): CustomEvent<D> => new CustomEvent(name, payload)\n\nexport default function useScheduleOperation() {\n const toast = useToast()\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n const api = useScheduleApi()\n\n async function createSchedule({\n date,\n displayToast = true,\n documentId,\n }: {\n date: string\n displayToast?: boolean\n documentId: string\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const data = await api.create({date, documentId})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.create, {\n detail: {\n date,\n documentId,\n },\n }),\n )\n\n if (displayToast && data?.executeAt) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(data.executeAt),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule created\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to create schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n await api.delete({scheduleId: schedule?.id})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.delete, {\n detail: {\n scheduleId: schedule?.id,\n },\n }),\n )\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Schedule deleted\" />,\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedules({\n displayToast = true,\n schedules,\n }: {\n displayToast?: boolean\n schedules: Schedule[]\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const scheduleIds = schedules.map((schedule) => schedule.id)\n const response = await api.deleteMultiple({scheduleIds})\n\n const {fulfilledIds, rejectedReasons} = response.reduce<{\n fulfilledIds: string[]\n rejectedReasons: string[]\n }>(\n (acc, v, index) => {\n if (v.status === 'fulfilled') {\n acc.fulfilledIds.push(schedules[index].id)\n }\n\n if (v.status === 'rejected') {\n acc.rejectedReasons.push(`[${schedules[index].id}]: ${v.reason}`)\n }\n\n return acc\n },\n {fulfilledIds: [], rejectedReasons: []},\n )\n const numFulfilledIds = fulfilledIds.length\n const numRejectedReasons = rejectedReasons.length\n\n if (fulfilledIds?.length > 0) {\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.deleteMultiple, {\n detail: {scheduleIds: fulfilledIds},\n }),\n )\n }\n\n if (displayToast) {\n if (fulfilledIds?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription title={`${pluralize('schedule', numFulfilledIds)} deleted`} />\n ),\n status: 'success',\n })\n }\n if (rejectedReasons?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={rejectedReasons?.toString()}\n title={`Unable to delete ${pluralize('schedule', numRejectedReasons)}`}\n />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedules\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function publishSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n try {\n const scheduleId = schedule.id\n await api.publish({scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.publish, {detail: {scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Document published\" />,\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to publish schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n async function updateSchedule({\n date,\n displayToast = true,\n scheduleId,\n }: {\n date: string\n displayToast?: boolean\n scheduleId: string\n }) {\n try {\n await api.update({documentSchedule: {executeAt: date}, scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.update, {detail: {date, scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(date),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule updated\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n return {\n createSchedule,\n deleteSchedule,\n deleteSchedules,\n publishSchedule,\n updateSchedule,\n }\n}\n","import {useCallback, useEffect, useMemo} from 'react'\nimport useSWR from 'swr'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useScheduledPublishingEnabled} from '../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {type Schedule, type ScheduleState} from '../types'\nimport {sortByExecuteDate} from '../utils/sortByExecuteDate'\nimport {\n type ScheduleDeleteEvent,\n type ScheduleDeleteMultipleEvent,\n ScheduleEvents,\n type SchedulePublishEvent,\n type ScheduleUpdateEvent,\n} from './useScheduleOperation'\n\ntype QueryKey = {\n params?: {\n documentIds?: string\n state?: ScheduleState\n }\n url: string\n}\n\nfunction useScheduleBaseUrl() {\n const client = useClient({apiVersion: '2022-09-01'})\n const {dataset, projectId} = client.config()\n return `/schedules/${projectId}/${dataset}`\n}\n\nfunction useFetcher(queryKey: QueryKey) {\n const client = useClient({apiVersion: '2022-09-01'})\n return useCallback(\n () =>\n client.request<{schedules: Schedule[] | undefined}>({\n query: queryKey.params,\n method: 'GET',\n uri: queryKey.url,\n }),\n [client, queryKey],\n )\n}\n\nconst NO_SCHEDULES: Schedule[] = []\n\n/**\n * Poll for all schedules\n */\nfunction usePollSchedules({documentId, state}: {documentId?: string; state?: ScheduleState} = {}): {\n error: Error\n isInitialLoading: boolean\n schedules: Schedule[]\n} {\n const {mode, enabled} = useScheduledPublishingEnabled()\n\n const swrOptions = useMemo(() => {\n const SWR_OPTIONS = {\n refreshWhenHidden: false,\n refreshWhenOffline: false,\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n // Revalidate data only on default mode, upsell mode should not poll given the data won't change.\n refreshInterval: mode === 'default' ? 10000 : undefined, // 10s\n revalidateIfStale: mode === 'default',\n revalidateOnReconnect: mode === 'default',\n }\n return SWR_OPTIONS\n }, [mode])\n const url = useScheduleBaseUrl()\n const queryKey: QueryKey = useMemo(\n () => ({params: {documentIds: documentId, state}, url}),\n [url, documentId, state],\n )\n\n const fetcher = useFetcher(queryKey)\n\n // Disables SWR if scheduled publishing is not enabled by not providing a key\n const {data, error, mutate} = useSWR(enabled ? queryKey : null, fetcher, swrOptions)\n\n // Immediately remove schedule from SWR cache and revalidate\n const handleDelete = useCallback(\n (event: CustomEvent<ScheduleDeleteEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => schedule.id !== event.detail.scheduleId,\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately remove schedules from SWR cache and revalidate\n const handleDeleteMultiple = useCallback(\n (event: CustomEvent<ScheduleDeleteMultipleEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => !event.detail.scheduleIds.includes(schedule.id),\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately publish schedule in SWR cache and revalidate\n const handlePublish = useCallback(\n (event: CustomEvent<SchedulePublishEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: new Date().toISOString(),\n state: 'succeeded',\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately update schedule in SWR cache and revalidate\n const handleUpdate = useCallback(\n (event: CustomEvent<ScheduleUpdateEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: event.detail.date,\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Listen to schedule events\n useEffect(() => {\n window.addEventListener(ScheduleEvents.delete, handleDelete)\n window.addEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.addEventListener(ScheduleEvents.publish, handlePublish)\n window.addEventListener(ScheduleEvents.update, handleUpdate)\n return () => {\n window.removeEventListener(ScheduleEvents.delete, handleDelete)\n window.removeEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.removeEventListener(ScheduleEvents.publish, handlePublish)\n window.removeEventListener(ScheduleEvents.update, handleUpdate)\n }\n }, [handleDelete, handleDeleteMultiple, handlePublish, handleUpdate])\n\n // By default: sort schedules by last execute date (executedAt || executeAt)\n const sortedSchedules = useMemo(\n () => data?.schedules?.sort(sortByExecuteDate()),\n [data?.schedules],\n )\n\n return {\n error,\n isInitialLoading: !error && !data,\n schedules: sortedSchedules || NO_SCHEDULES,\n }\n}\n\nexport default usePollSchedules\n","import {useMemo} from 'react'\n\nexport function usePublishedId<T extends string | undefined>(id: T): T {\n return useMemo(() => (id ? id.replaceAll('drafts.', '') : undefined) as T, [id])\n}\n","import {\n isValidationErrorMarker,\n isValidationWarningMarker,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type ButtonTone} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ValidationStatus} from '../types'\n\nexport const EMPTY_VALIDATION_STATUS: ValidationStatus = {\n validation: [],\n isValidating: false,\n}\n\ninterface ValidationState {\n markers: ValidationMarker[]\n validationTone: ButtonTone\n hasError: boolean\n hasWarning: boolean\n}\n\nfunction getValidationState(\n validationMarkers: ValidationMarker[] = EMPTY_VALIDATION_STATUS.validation,\n): ValidationState {\n const hasError = validationMarkers.filter(isValidationErrorMarker).length > 0\n const hasWarning = validationMarkers.filter(isValidationWarningMarker).length > 0\n\n let validationTone: ButtonTone = 'default'\n if (hasWarning) {\n validationTone = 'default' //not using 'caution' for now\n }\n if (hasError) {\n validationTone = 'critical'\n }\n\n return {\n markers: validationMarkers,\n validationTone,\n hasError,\n hasWarning,\n }\n}\n\nexport function useValidationState(markers: ValidationMarker[]): ValidationState {\n return useMemo(() => getValidationState(markers), [markers])\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ try {
6
6
  * @hidden
7
7
  * @beta
8
8
  */
9
- const SANITY_VERSION = buildVersion || "6.8.0-next.2+6ae94fddcb";
9
+ const SANITY_VERSION = buildVersion || "6.8.0-next.21+20525238d6";
10
10
  export { SANITY_VERSION as t };
11
11
 
12
- //# sourceMappingURL=version-CY300aPw.js.map
12
+ //# sourceMappingURL=version-BZCsk4ue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-CY300aPw.js","names":["version","global","__PKG_VERSION__","buildVersion","process","env","PKG_BUILD_VERSION","SANITY_VERSION"],"sources":["../src/core/version.ts"],"sourcesContent":["import {version} from '../../package.json'\n\ndeclare global {\n /**\n * Replaced with the published package version by tsdown at build time (see the `define` option\n * in `tsdown.config.ts`); undefined when running from source, e.g. in dev or test environments\n */\n var __PKG_VERSION__: string | undefined\n}\n\nlet buildVersion: string | undefined\ntry {\n // this offers a way to override what version is displayed\n // currently used for test-studio preview builds to attach custom version details like git info\n buildVersion = process.env.PKG_BUILD_VERSION\n} catch {\n // ignore, assume process.env is not defined by the runtime\n}\n\n/**\n * @hidden\n * @beta\n */\nexport const SANITY_VERSION =\n buildVersion || (typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : `${version}-dev`)\n"],"mappings":"AAUA,IAAIG;AACJ,IAAI;CAGFA,eAAeC,QAAQC,IAAIC;AAC7B,QAAQ,CACN;;;;;AAOF,MAAaC,iBACXJ,gBAAAA"}
1
+ {"version":3,"file":"version-BZCsk4ue.js","names":["version","global","__PKG_VERSION__","buildVersion","process","env","PKG_BUILD_VERSION","SANITY_VERSION"],"sources":["../src/core/version.ts"],"sourcesContent":["import {version} from '../../package.json'\n\ndeclare global {\n /**\n * Replaced with the published package version by tsdown at build time (see the `define` option\n * in `tsdown.config.ts`); undefined when running from source, e.g. in dev or test environments\n */\n var __PKG_VERSION__: string | undefined\n}\n\nlet buildVersion: string | undefined\ntry {\n // this offers a way to override what version is displayed\n // currently used for test-studio preview builds to attach custom version details like git info\n buildVersion = process.env.PKG_BUILD_VERSION\n} catch {\n // ignore, assume process.env is not defined by the runtime\n}\n\n/**\n * @hidden\n * @beta\n */\nexport const SANITY_VERSION =\n buildVersion || (typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : `${version}-dev`)\n"],"mappings":"AAUA,IAAIG;AACJ,IAAI;CAGFA,eAAeC,QAAQC,IAAIC;AAC7B,QAAQ,CACN;;;;;AAOF,MAAaC,iBACXJ,gBAAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity",
3
- "version": "6.8.0-next.2",
3
+ "version": "6.8.0-next.21",
4
4
  "description": "Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches",
5
5
  "keywords": [
6
6
  "cms",
@@ -78,9 +78,10 @@
78
78
  "@portabletext/to-html": "^5.0.2",
79
79
  "@portabletext/toolkit": "^5.0.2",
80
80
  "@rexxars/react-json-inspector": "^9.0.1",
81
+ "@sanity-labs/ui-poc": "0.0.1-alpha.22",
81
82
  "@sanity/asset-utils": "^2.3.0",
82
83
  "@sanity/bifur-client": "^1.0.0",
83
- "@sanity/cli": "^7.13.0",
84
+ "@sanity/cli": "^7.14.0",
84
85
  "@sanity/client": "^7.25.0",
85
86
  "@sanity/color": "^3.0.8",
86
87
  "@sanity/comlink": "^4.0.1",
@@ -156,11 +157,11 @@
156
157
  "uuid": "^14.0.1",
157
158
  "web-vitals": "^6.0.0",
158
159
  "xstate": "^5.32.5",
159
- "@sanity/diff": "6.8.0-next.2+6ae94fddcb",
160
- "@sanity/mutator": "6.8.0-next.2+6ae94fddcb",
161
- "@sanity/schema": "6.8.0-next.2+6ae94fddcb",
162
- "@sanity/types": "6.8.0-next.2+6ae94fddcb",
163
- "@sanity/util": "6.8.0-next.2+6ae94fddcb"
160
+ "@sanity/diff": "6.8.0-next.21+20525238d6",
161
+ "@sanity/schema": "6.8.0-next.21+20525238d6",
162
+ "@sanity/types": "6.8.0-next.21+20525238d6",
163
+ "@sanity/mutator": "6.8.0-next.21+20525238d6",
164
+ "@sanity/util": "6.8.0-next.21+20525238d6"
164
165
  },
165
166
  "devDependencies": {
166
167
  "@rolldown/plugin-babel": "^0.2.3",
@@ -200,10 +201,10 @@
200
201
  "vitest": "^4.1.10",
201
202
  "vitest-browser-react": "^2.2.0",
202
203
  "vitest-package-exports": "^1.2.0",
203
- "@repo/tsconfig": "6.8.0-next.2+6ae94fddcb",
204
- "@repo/test-config": "6.8.0-next.2+6ae94fddcb",
205
- "@repo/tsdown.config": "6.8.0-next.2+6ae94fddcb",
206
- "@repo/package.bundle": "6.8.0-next.2+6ae94fddcb"
204
+ "@repo/package.bundle": "6.8.0-next.21+20525238d6",
205
+ "@repo/test-config": "6.8.0-next.21+20525238d6",
206
+ "@repo/tsconfig": "6.8.0-next.21+20525238d6",
207
+ "@repo/tsdown.config": "6.8.0-next.21+20525238d6"
207
208
  },
208
209
  "peerDependencies": {
209
210
  "react": "^19.2.2",
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandList-Q4ua5avE.js","names":["Box","rem","Stack","ScrollToOptions","useVirtualizer","Virtualizer","throttle","cloneElement","forwardRef","Fragment","isValidElement","memo","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","css","styled","FIXME","focusRingStyle","CommandListElementType","CommandListGetItemDisabledCallback","CommandListGetItemSelectedCallback","CommandListHandle","CommandListProps","LIST_ITEM_DATA_ATTR_ACTIVE","LIST_ITEM_INTERACTIVE_SELECTOR","FocusOverlayDiv","div","offset","theme","sanity","radius","VirtualListBox","base","color","focusRing","PointerOverlayDiv","VirtualListChildBoxProps","$height","VirtualListChildBox","attrs","style","height","CommandListComponent","CommandList","activeItemDataAttr","ariaLabel","ariaMultiselectable","autoFocus","canReceiveFocus","fixedHeight","focusRingOffset","getItemDisabled","getItemKey","getItemSelected","initialIndex","initialScrollAlign","inputElement","itemHeight","items","onEndReached","onEndReachedIndexOffset","onlyShowSelectionWhenActive","overscan","renderItem","testId","wrapAround","responsivePaddingProps","ref","isMountedRef","commandListId","activeIndexRef","childContainerElement","setChildContainerElement","HTMLElement","hovered","setHovered","pointerOverlayElement","setPointerOverlayElement","HTMLDivElement","virtualListElement","setVirtualListElement","handleChange","v","Element","lastItem","getVirtualItems","reverse","reachedEnd","index","length","current","virtualizer","count","getScrollElement","estimateSize","onChange","itemIndices","getItemIndicies","activeItemCount","filter","disabled","enableChildContainerPointerEvents","enabled","setAttribute","toString","getChildDescendantId","getCommandListChildrenId","showChildrenActiveState","hasFocus","some","el","document","activeElement","childElements","Array","from","children","forEach","child","virtualIndex","Number","dataset","targetIndex","activeIndex","querySelector","toggleAttribute","hideChildrenActiveState","refreshChildrenActiveStateThrottled","handleUpdateActiveDescendant","removeAttribute","handleGetTopIndex","childContainerParentElement","parentElement","getBoundingClientRect","top","getVirtualItemForOffset","setActiveIndex","scrollAlign","scrollIntoView","virtualListIndex","findIndex","i","scrollToIndex","align","selectAdjacentItemIndex","direction","nextIndex","lastIndex","wrapAroundIndex","focusElement","type","focus","focusInputElement","focusListElement","handleChildMouseEnter","handleFocus","handleKeyDown","event","KeyboardEvent","key","preventDefault","currentElement","find","clickableElement","click","handleKeyDownInput","handleKeyDownList","handleVirtualListMouseEnter","handleVirtualListMouseLeave","getTopIndex","handleMouseEvent","addEventListener","passive","removeEventListener","mutationObserver","MutationObserver","observe","childList","subtree","disconnect","rootTabIndex","getTotalSize","map","virtualRow","selected","itemToRender","React","JSX","clonedItem","tabIndex","undefined","measureElement","size","start","displayName","CommandListItemComponent","CommandListItem","props","forwardedRef","$","_c","virtualRowStart","t0","onMouseEnter","t1","activeAriaAttributes","t2","t3","flex","left","position","const","transform","width","t4","reduce","acc","_"],"sources":["../src/core/components/commandList/CommandList.tsx"],"sourcesContent":["import {Box, rem, Stack} from '@sanity/ui'\nimport {type ScrollToOptions, useVirtualizer, type Virtualizer} from '@tanstack/react-virtual'\nimport throttle from 'lodash-es/throttle.js'\nimport {\n cloneElement,\n forwardRef,\n Fragment,\n isValidElement,\n memo,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type FIXME} from '../../FIXME'\nimport {focusRingStyle} from '../../form/components/formField/styles'\nimport {\n type CommandListElementType,\n type CommandListGetItemDisabledCallback,\n type CommandListGetItemSelectedCallback,\n type CommandListHandle,\n type CommandListProps,\n} from './types'\n\n// Data attribute to assign to the current active virtual list element\nconst LIST_ITEM_DATA_ATTR_ACTIVE = 'data-active'\n// Selector to find the first interactive element in the virtual list element\nconst LIST_ITEM_INTERACTIVE_SELECTOR = 'a,button'\n\n/**\n * Conditionally render a focus ring overlay over the command list, with adjustable offset\n */\nconst FocusOverlayDiv = styled.div<{offset: number}>(({theme, offset}) => {\n return css`\n bottom: ${-offset}px;\n border-radius: ${rem(theme.sanity.radius[1])};\n left: ${-offset}px;\n pointer-events: none;\n position: absolute;\n right: ${-offset}px;\n top: ${-offset}px;\n z-index: 2;\n\n ${VirtualListBox}:focus-visible & {\n box-shadow: ${focusRingStyle({\n base: theme.sanity.color.base,\n focusRing: theme.sanity.focusRing,\n })};\n }\n `\n})\n\n/*\n * Conditionally appears over command list items to cancel existing :hover states for all child elements.\n * It should only appear if hover capabilities are available (not on touch devices)\n */\nconst PointerOverlayDiv = styled.div`\n bottom: 0;\n display: none;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n\n @media (hover: hover) {\n &[data-enabled='true'] {\n display: block;\n }\n }\n`\n\nconst VirtualListBox = styled(Box)`\n height: 100%;\n outline: none;\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n width: 100%;\n`\n\ntype VirtualListChildBoxProps = {\n $height: number\n}\nconst VirtualListChildBox = styled(Box) //\n .attrs<VirtualListChildBoxProps>(({$height}) => ({\n style: {height: `${$height}px`},\n }))<VirtualListChildBoxProps>`\n position: relative;\n width: 100%;\n`\n\n// oxlint-disable-next-line react/react-compiler\nconst CommandListComponent = forwardRef<CommandListHandle, CommandListProps>(function CommandList(\n {\n activeItemDataAttr = LIST_ITEM_DATA_ATTR_ACTIVE,\n ariaLabel,\n ariaMultiselectable = false,\n autoFocus,\n canReceiveFocus,\n fixedHeight,\n focusRingOffset = 0,\n getItemDisabled,\n getItemKey,\n getItemSelected,\n initialIndex,\n initialScrollAlign = 'start',\n inputElement,\n itemHeight,\n items,\n onEndReached,\n onEndReachedIndexOffset = 0,\n onlyShowSelectionWhenActive,\n overscan,\n renderItem,\n testId,\n wrapAround = true,\n ...responsivePaddingProps\n },\n ref,\n) {\n const isMountedRef = useRef(false)\n const [commandListId] = useState(useId())\n const activeIndexRef = useRef(initialIndex ?? 0)\n\n const [childContainerElement, setChildContainerElement] = useState<HTMLElement | null>(null)\n const [hovered, setHovered] = useState(false)\n const [pointerOverlayElement, setPointerOverlayElement] = useState<HTMLDivElement | null>(null)\n const [virtualListElement, setVirtualListElement] = useState<HTMLElement | null>(null)\n\n const handleChange = useCallback(\n (v: Virtualizer<HTMLElement, Element>) => {\n if (!onEndReached) return\n\n const [lastItem] = [...v.getVirtualItems()].reverse()\n\n if (!lastItem) return\n\n const reachedEnd = lastItem.index >= items.length - onEndReachedIndexOffset - 1\n\n // Make sure we only trigger `onEndReached` after initial mount\n if (reachedEnd && isMountedRef.current) {\n onEndReached()\n }\n },\n [onEndReached, items.length, onEndReachedIndexOffset],\n )\n\n // This will trigger a re-render whenever its internal state changes\n const virtualizer = useVirtualizer({\n count: items.length,\n getItemKey,\n getScrollElement: () => virtualListElement,\n estimateSize: () => itemHeight,\n onChange: handleChange,\n overscan,\n })\n\n /**\n * Return an array of values with `activeIndex`, `disabled` and `selected` defined, applying custom\n * mapping functions (`getItemDisabled`, `getItemSelected`) if provided. E.g.:\n *\n * ```\n * [\n * { activeIndex: 0 disabled: false, selected: false },\n * { activeIndex: null, disabled: true, selected: false },\n * { activeIndex: 1, disabled: false, selected: true }\n * ]\n * ```\n *\n * Disabled virtual list items are ignored when creating aria attributes.\n */\n const itemIndices = useMemo(\n () => getItemIndicies(items, getItemDisabled, getItemSelected),\n [getItemDisabled, getItemSelected, items],\n )\n\n const activeItemCount = useMemo(\n () => itemIndices.filter((v) => !v.disabled).length,\n [itemIndices],\n )\n\n /**\n * Toggle pointer overlay element which will kill existing hover states\n */\n const enableChildContainerPointerEvents = useCallback(\n (enabled: boolean) =>\n pointerOverlayElement?.setAttribute('data-enabled', (!enabled).toString()),\n [pointerOverlayElement],\n )\n\n const getChildDescendantId = useCallback(\n (index: number) => `${commandListId}-item-${index}`,\n [commandListId],\n )\n\n const getCommandListChildrenId = useCallback(() => `${commandListId}-children`, [commandListId])\n\n /**\n * Iterate through all virtual list children and apply the active data-attribute on the selected index.\n * Don't apply styles when `hideSelectionOnMouseLeave` is true and the command list is neither focused or hovered.\n */\n const showChildrenActiveState = useCallback(() => {\n const hasFocus = [inputElement, virtualListElement].some((el) => document.activeElement === el)\n if (onlyShowSelectionWhenActive && !hasFocus && !hovered) {\n return\n }\n\n const childElements = Array.from(childContainerElement?.children || []) as HTMLElement[]\n childElements?.forEach((child) => {\n const virtualIndex = Number(child.dataset?.index)\n const targetIndex = itemIndices[virtualIndex]?.activeIndex\n child\n .querySelector(LIST_ITEM_INTERACTIVE_SELECTOR)\n ?.toggleAttribute(activeItemDataAttr, targetIndex === activeIndexRef.current)\n })\n }, [\n activeItemDataAttr,\n childContainerElement?.children,\n hovered,\n inputElement,\n itemIndices,\n onlyShowSelectionWhenActive,\n virtualListElement,\n ])\n\n /**\n * Iterate through all virtual list children and clear the active data-attribute.\n */\n const hideChildrenActiveState = useCallback(() => {\n const childElements = Array.from(childContainerElement?.children || [])\n childElements?.forEach((child) => {\n child\n .querySelector(LIST_ITEM_INTERACTIVE_SELECTOR)\n ?.toggleAttribute(activeItemDataAttr, false)\n })\n }, [activeItemDataAttr, childContainerElement?.children])\n\n /**\n * Throttled version of `showChildrenActiveState`, used when DOM mutations are detected in virtual lists\n */\n const refreshChildrenActiveStateThrottled = useMemo(() => {\n return throttle(showChildrenActiveState, 200)\n }, [showChildrenActiveState])\n\n /**\n * Assign active descendant on input element (if present)\n */\n const handleUpdateActiveDescendant = useCallback(() => {\n const activeIndex = activeIndexRef?.current\n if (items.length > 0) {\n inputElement?.setAttribute('aria-activedescendant', getChildDescendantId(activeIndex))\n virtualListElement?.setAttribute('aria-activedescendant', getChildDescendantId(activeIndex))\n } else {\n inputElement?.removeAttribute('aria-activedescendant')\n virtualListElement?.removeAttribute('aria-activedescendant')\n }\n }, [getChildDescendantId, inputElement, items.length, virtualListElement])\n\n /**\n * Obtain index of the top most visible element\n */\n const handleGetTopIndex = useCallback(() => {\n const childContainerParentElement = childContainerElement?.parentElement\n if (childContainerElement && childContainerParentElement) {\n const offset =\n childContainerParentElement.getBoundingClientRect().top -\n childContainerElement.getBoundingClientRect().top\n return virtualizer.getVirtualItemForOffset(offset)?.index ?? -1\n }\n return -1\n }, [childContainerElement, virtualizer])\n\n /**\n * Mark an index as active, re-assign aria attrs on all children and optionally scroll into view\n */\n const setActiveIndex = useCallback(\n ({\n index,\n scrollAlign,\n scrollIntoView = true,\n }: {\n index: number\n scrollAlign?: ScrollToOptions['align']\n scrollIntoView?: boolean\n }) => {\n activeIndexRef.current = index\n handleUpdateActiveDescendant()\n showChildrenActiveState()\n\n if (scrollIntoView) {\n const virtualListIndex = itemIndices.findIndex((i) => i.activeIndex === index)\n if (virtualListIndex > -1) {\n virtualizer.scrollToIndex(virtualListIndex, scrollAlign ? {align: scrollAlign} : {})\n }\n }\n },\n [handleUpdateActiveDescendant, itemIndices, showChildrenActiveState, virtualizer],\n )\n\n /**\n * Select adjacent virtual item index and scroll into view with `react-virtual`\n */\n const selectAdjacentItemIndex = useCallback(\n (direction: 'previous' | 'next') => {\n let nextIndex = -1\n const lastIndex = activeItemCount - 1\n\n if (direction === 'next') {\n const wrapAroundIndex = wrapAround ? 0 : lastIndex\n nextIndex =\n activeIndexRef.current < activeItemCount - 1\n ? activeIndexRef.current + 1\n : wrapAroundIndex\n }\n if (direction === 'previous') {\n const wrapAroundIndex = wrapAround ? lastIndex : 0\n nextIndex = activeIndexRef.current > 0 ? activeIndexRef.current - 1 : wrapAroundIndex\n }\n setActiveIndex({index: nextIndex, scrollIntoView: true})\n enableChildContainerPointerEvents(false)\n },\n [activeItemCount, enableChildContainerPointerEvents, setActiveIndex, wrapAround],\n )\n\n const focusElement = useCallback(\n (type: CommandListElementType) => {\n switch (type) {\n case 'input':\n inputElement?.focus()\n break\n case 'list':\n virtualListElement?.focus()\n break\n default:\n break\n }\n },\n [inputElement, virtualListElement],\n )\n\n const focusInputElement = useCallback(() => {\n inputElement?.focus()\n }, [inputElement])\n\n const focusListElement = useCallback(() => {\n virtualListElement?.focus()\n }, [virtualListElement])\n\n /**\n * Mark hovered child item as active\n */\n const handleChildMouseEnter = useCallback(\n (index: number) => () => {\n setActiveIndex({index, scrollIntoView: false})\n },\n [setActiveIndex],\n )\n\n const handleFocus = useCallback(() => {\n showChildrenActiveState()\n }, [showChildrenActiveState])\n\n /**\n * Handle keyboard events:\n * - Up/down arrow: scroll to adjacent items\n * - Enter: trigger click events on the current active element\n */\n const handleKeyDown = useCallback(\n (type: CommandListElementType) => (event: KeyboardEvent) => {\n const childElements = Array.from(childContainerElement?.children || []) as HTMLElement[]\n if (!childElements.length) {\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusElement(type)\n selectAdjacentItemIndex('next')\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusElement(type)\n selectAdjacentItemIndex('previous')\n }\n\n if (event.key === 'Enter') {\n event.preventDefault()\n focusElement(type)\n const currentElement = childElements.find(\n (el) =>\n Number(el.dataset.index) ===\n itemIndices.findIndex((i) => i.activeIndex === activeIndexRef.current),\n )\n\n if (currentElement) {\n const clickableElement = currentElement?.querySelector<HTMLElement>(\n LIST_ITEM_INTERACTIVE_SELECTOR,\n )\n clickableElement?.click()\n }\n }\n },\n [childContainerElement?.children, focusElement, itemIndices, selectAdjacentItemIndex],\n )\n const handleKeyDownInput = useCallback(\n (event: KeyboardEvent) => handleKeyDown('input')(event),\n [handleKeyDown],\n )\n const handleKeyDownList = useCallback(\n (event: KeyboardEvent) => handleKeyDown('list')(event),\n [handleKeyDown],\n )\n\n const handleVirtualListMouseEnter = useCallback(() => {\n if (onlyShowSelectionWhenActive) {\n showChildrenActiveState()\n setHovered(true)\n }\n }, [onlyShowSelectionWhenActive, showChildrenActiveState])\n const handleVirtualListMouseLeave = useCallback(() => {\n if (onlyShowSelectionWhenActive) {\n hideChildrenActiveState()\n setHovered(false)\n }\n }, [hideChildrenActiveState, onlyShowSelectionWhenActive])\n\n useImperativeHandle(ref, () => {\n return {\n focusInputElement() {\n focusInputElement()\n },\n focusListElement() {\n focusListElement()\n },\n getTopIndex() {\n return handleGetTopIndex()\n },\n scrollToIndex(index: number) {\n setActiveIndex({index})\n enableChildContainerPointerEvents(true)\n },\n }\n }, [\n enableChildContainerPointerEvents,\n focusInputElement,\n focusListElement,\n handleGetTopIndex,\n setActiveIndex,\n ])\n\n /**\n * Optionally set active index (and align) on mount only\n */\n useEffect(() => {\n if (typeof initialIndex !== 'undefined' && !isMountedRef.current) {\n setActiveIndex({\n index: initialIndex,\n scrollAlign: initialScrollAlign,\n scrollIntoView: true,\n })\n }\n isMountedRef.current = true\n }, [initialIndex, initialScrollAlign, onlyShowSelectionWhenActive, setActiveIndex])\n\n /**\n * Re-enable child pointer events on any mousemove / wheel event\n */\n useEffect(() => {\n function handleMouseEvent() {\n enableChildContainerPointerEvents(true)\n }\n virtualListElement?.addEventListener('mousemove', handleMouseEvent)\n virtualListElement?.addEventListener('wheel', handleMouseEvent, {passive: true})\n return () => {\n virtualListElement?.removeEventListener('mousemove', handleMouseEvent)\n virtualListElement?.removeEventListener('wheel', handleMouseEvent)\n }\n }, [enableChildContainerPointerEvents, virtualListElement])\n\n /**\n * Listen to keyboard / blur / focus events on both input element (if present) and the virtual list element.\n */\n useEffect(() => {\n inputElement?.addEventListener('focus', handleFocus)\n inputElement?.addEventListener('keydown', handleKeyDownInput)\n virtualListElement?.addEventListener('focus', handleFocus)\n virtualListElement?.addEventListener('keydown', handleKeyDownList)\n return () => {\n inputElement?.removeEventListener('focus', handleFocus)\n inputElement?.removeEventListener('keydown', handleKeyDownInput)\n virtualListElement?.removeEventListener('focus', handleFocus)\n virtualListElement?.removeEventListener('keydown', handleKeyDownList)\n }\n }, [\n canReceiveFocus,\n handleFocus,\n handleKeyDown,\n handleKeyDownInput,\n handleKeyDownList,\n hideChildrenActiveState,\n inputElement,\n showChildrenActiveState,\n virtualListElement,\n ])\n\n /**\n * Refresh selected state when item values change (as a result of filtering).\n * This is to ensure that we correctly clear aria-activedescendant attrs if the filtered array is empty.\n */\n useEffect(() => {\n handleUpdateActiveDescendant()\n }, [handleUpdateActiveDescendant, items])\n\n /**\n * On DOM mutations, re-assign active descendant on input element (if present) and update active state on all children.\n *\n * Useful since virtual lists will constantly mutate the DOM on scroll, and we want to ensure that\n * new elements coming into view are rendered with the correct selected state.\n *\n * An alternative to using MutationObserver is hooking into the `onChange` callback that `react-virtual` provides, though\n * this changes on _every_ internal state change.\n */\n useEffect(() => {\n const mutationObserver = new MutationObserver(refreshChildrenActiveStateThrottled)\n\n if (childContainerElement) {\n mutationObserver.observe(childContainerElement, {\n childList: true,\n subtree: true,\n })\n }\n\n return () => {\n mutationObserver.disconnect()\n }\n }, [childContainerElement, refreshChildrenActiveStateThrottled])\n\n /**\n * Apply input aria attributes\n */\n useEffect(() => {\n inputElement?.setAttribute('aria-autocomplete', 'list')\n inputElement?.setAttribute('aria-expanded', 'true')\n inputElement?.setAttribute('aria-controls', getCommandListChildrenId())\n inputElement?.setAttribute('role', 'combobox')\n }, [getCommandListChildrenId, inputElement])\n\n /**\n * Focus input / virtual list element on mount\n */\n useEffect(() => {\n if (autoFocus) {\n focusElement(autoFocus)\n }\n }, [autoFocus, canReceiveFocus, focusListElement, focusInputElement, focusElement])\n\n const rootTabIndex = canReceiveFocus ? 0 : -1\n\n return (\n <VirtualListBox\n id={getCommandListChildrenId()}\n onMouseEnter={handleVirtualListMouseEnter}\n onMouseLeave={handleVirtualListMouseLeave}\n ref={setVirtualListElement}\n sizing=\"border\"\n tabIndex={rootTabIndex}\n data-testid={testId}\n {...responsivePaddingProps}\n >\n {canReceiveFocus && <FocusOverlayDiv offset={focusRingOffset} />}\n <PointerOverlayDiv aria-hidden=\"true\" data-enabled=\"false\" ref={setPointerOverlayElement} />\n {virtualizer && (\n <VirtualListChildBox\n forwardedAs=\"ul\"\n $height={virtualizer.getTotalSize()}\n aria-label={ariaLabel}\n aria-multiselectable={ariaMultiselectable}\n flex={1}\n ref={setChildContainerElement}\n role=\"listbox\"\n >\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const virtualIndex = virtualRow.index // visible index in the DOM\n const {activeIndex, disabled, selected} = itemIndices[virtualIndex]\n\n const itemToRender = renderItem(items[virtualIndex], {\n activeIndex,\n disabled,\n selected,\n virtualIndex,\n }) as React.JSX.Element\n\n // @TODO can we avoid using cloneElement here?\n const clonedItem =\n isValidElement(itemToRender) && itemToRender.type != Fragment\n ? cloneElement(itemToRender, {\n // @ts-expect-error @TODO shift the responsibility of setting tabIndex to the consumer, so we can remove the need to clone\n tabIndex: -1,\n })\n : itemToRender\n\n return (\n <CommandListItem\n key={virtualRow.key}\n ref={fixedHeight ? undefined : virtualizer.measureElement}\n activeIndex={activeIndex}\n activeItemCount={activeItemCount}\n ariaMultiselectable={ariaMultiselectable}\n disabled={disabled}\n fixedHeight={fixedHeight ? `${virtualRow.size}px` : undefined}\n getChildDescendantId={getChildDescendantId}\n handleChildMouseEnter={handleChildMouseEnter}\n selected={selected}\n virtualIndex={virtualIndex}\n virtualRowStart={virtualRow.start}\n >\n {clonedItem}\n </CommandListItem>\n )\n })}\n </VirtualListChildBox>\n )}\n </VirtualListBox>\n )\n})\n\n/**\n * Renders a Command List with support for the following:\n *\n * - Keyboard navigation (↑ / ↓ / ENTER) to children with a specified container (`childContainerRef`)\n * - Focus redirection when clicking child elements\n * - Pointer blocking when navigating with arrow keys (to ensure that only one active state is visible at any given time)\n * - ARIA attributes to define a `combobox` input that controls a separate `listbox`\n *\n * @internal\n */\nexport const CommandList = memo(CommandListComponent)\nCommandList.displayName = 'Memo(ForwardRef(CommandList))'\n\nconst CommandListItemComponent = forwardRef(function CommandListItem(\n props: {\n children: React.ReactNode\n activeIndex: number | null\n activeItemCount: number\n ariaMultiselectable: boolean\n disabled: boolean\n fixedHeight: `${number}px` | undefined\n getChildDescendantId: (index: number) => string\n handleChildMouseEnter: (index: number) => () => void\n selected: boolean\n virtualIndex: number\n virtualRowStart: number\n },\n forwardedRef: React.ForwardedRef<HTMLLIElement>,\n) {\n const {\n children,\n activeIndex,\n activeItemCount,\n ariaMultiselectable,\n disabled,\n fixedHeight,\n getChildDescendantId,\n handleChildMouseEnter,\n selected,\n virtualIndex,\n virtualRowStart,\n } = props\n\n const onMouseEnter = useMemo(\n () =>\n typeof activeIndex === 'number' && !disabled ? handleChildMouseEnter(activeIndex) : undefined,\n [activeIndex, disabled, handleChildMouseEnter],\n )\n const activeAriaAttributes = useMemo(\n () =>\n typeof activeIndex === 'number' && !disabled\n ? {\n 'aria-posinset': activeIndex + 1,\n ...(ariaMultiselectable ? {'aria-selected': selected.toString()} : {}),\n 'aria-setsize': activeItemCount,\n 'id': getChildDescendantId(activeIndex),\n 'role': 'option',\n }\n : {},\n [activeIndex, activeItemCount, ariaMultiselectable, disabled, getChildDescendantId, selected],\n )\n\n const style = useMemo(\n () => ({\n flex: 1,\n height: fixedHeight,\n left: 0,\n position: 'absolute' as const,\n top: 0,\n transform: `translateY(${virtualRowStart}px)`,\n width: '100%',\n }),\n [fixedHeight, virtualRowStart],\n )\n\n return (\n <Stack\n as=\"li\"\n data-index={virtualIndex}\n ref={forwardedRef}\n style={style}\n tabIndex={-1}\n {...activeAriaAttributes}\n onMouseEnter={onMouseEnter}\n >\n {children}\n </Stack>\n )\n})\n\nconst CommandListItem = memo(CommandListItemComponent)\nCommandListItem.displayName = 'Memo(ForwardRef(CommandListItem))'\n\nfunction getItemIndicies(\n items: FIXME[],\n getItemDisabled: CommandListGetItemDisabledCallback | undefined,\n getItemSelected: CommandListGetItemSelectedCallback | undefined,\n) {\n let i = -1\n return items.reduce<\n {\n activeIndex: number | null\n selected: boolean\n disabled: boolean\n }[]\n >((acc, _, index) => {\n const disabled = getItemDisabled?.(index) ?? false\n const selected = getItemSelected?.(index) ?? false\n if (!disabled) {\n i += 1\n }\n acc[index] = {\n activeIndex: disabled ? null : i,\n disabled,\n selected,\n }\n return acc\n }, [])\n}\n"],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { c } from "react/compiler-runtime";
3
- import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
- function Delay(t0) {
5
- let $ = c(6), { children, ms: t1 } = t0, ms = t1 === void 0 ? 0 : t1, [ready, setReady] = useState(ms <= 0), t2, t3;
6
- if ($[0] === ms ? (t2 = $[1], t3 = $[2]) : (t2 = () => {
7
- if (ms <= 0) return;
8
- let timeoutId = setTimeout(() => setReady(!0), ms);
9
- return () => {
10
- clearTimeout(timeoutId);
11
- };
12
- }, t3 = [ms], $[0] = ms, $[1] = t2, $[2] = t3), useEffect(t2, t3), !ready || !children) {
13
- let t4;
14
- return $[3] === Symbol.for("react.memo_cache_sentinel") ? (t4 = /* @__PURE__ */ jsx(Fragment$1, {}), $[3] = t4) : t4 = $[3], t4;
15
- }
16
- let t4;
17
- return $[4] === children ? t4 = $[5] : (t4 = typeof children == "function" ? children() : children, $[4] = children, $[5] = t4), t4;
18
- }
19
- export { Delay as t };
20
-
21
- //# sourceMappingURL=Delay-DjgiAi06.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Delay-DjgiAi06.js","names":["useEffect","useState","Delay","t0","$","_c","children","ms","t1","undefined","ready","setReady","t2","t3","timeoutId","setTimeout","clearTimeout","t4","Symbol","for"],"sources":["../src/structure/components/Delay.tsx"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function Delay({\n children,\n ms = 0,\n}: {\n children?: React.JSX.Element | (() => React.JSX.Element)\n ms?: number\n}): React.JSX.Element {\n const [ready, setReady] = useState(ms <= 0)\n\n useEffect(() => {\n if (ms <= 0) {\n return undefined\n }\n\n const timeoutId = setTimeout(() => setReady(true), ms)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [ms])\n\n if (!ready || !children) {\n return <></>\n }\n\n return typeof children === 'function' ? children() : children\n}\n"],"mappings":";;;AAEA,SAAOE,MAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAe,EAAAC,UAAAC,IAAAC,OAAAL,IAEpBI,KAAAC,OAAAC,KAAAA,IAAA,IAAAD,IAKA,CAAAE,OAAAC,YAA0BV,SAASM,MAAM,CAAC,GAACK,IAAAC;CAc3C,IAd2CT,EAAA,OAAAG,MAYpCK,KAAAR,EAAA,IAAAS,KAAAT,EAAA,OAVGQ,WAAA;EACR,IAAIL,MAAM,GAAC;EAIX,IAAAO,YAAkBC,iBAAiBJ,SAAS,EAAI,GAAGJ,EAAE;EAAC,aAE/C;GACLS,aAAaF,SAAS;EAAC;CACxB,GACAD,KAAA,CAACN,EAAE,GAACH,EAAA,KAAAG,IAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,KAVPb,UAAUY,IAUPC,EAAI,GAEH,CAACH,SAAD,CAAWJ,UAAQ;EAAA,IAAAW;EACT,OADSb,EAAA,OAAAc,OAAAC,IAAA,2BAAA,KACdF,KAAA,oBAAA,YAAA,CAAA,CAAA,GAAKb,EAAA,KAAAa,MAAAA,KAAAb,EAAA,IAALa;CAAK;CACb,IAAAA;CAE4D,OAF5Db,EAAA,OAAAE,WAE4DW,KAAAb,EAAA,MAAtDa,KAAA,OAAOX,YAAa,aAAaA,SAAoB,IAArDA,UAAsDF,EAAA,KAAAE,UAAAF,EAAA,KAAAa,KAAtDA;AAAsD"}