sanity 6.7.0 → 6.8.0-next.13

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 (140) hide show
  1. package/lib/{AddonDatasetProvider-DGvQRg0M.js → AddonDatasetProvider-j4tCiH3e.js} +2 -2
  2. package/lib/{AddonDatasetProvider-DGvQRg0M.js.map → AddonDatasetProvider-j4tCiH3e.js.map} +1 -1
  3. package/lib/{CalendarFilter-Cz5HCFLA.js → CalendarFilter-D7qsXo8l.js} +3 -3
  4. package/lib/{CalendarFilter-Cz5HCFLA.js.map → CalendarFilter-D7qsXo8l.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-C8D--w7w.js → CommentsDocumentLayout-DdqM0Xva.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-C8D--w7w.js.map → CommentsDocumentLayout-DdqM0Xva.js.map} +1 -1
  7. package/lib/{CommentsField-01fndj6n.js → CommentsField-boIeJpD6.js} +3 -3
  8. package/lib/{CommentsField-01fndj6n.js.map → CommentsField-boIeJpD6.js.map} +1 -1
  9. package/lib/{CommentsInput-DEXCCEGP.js → CommentsInput-CXUjX47s.js} +5 -5
  10. package/lib/{CommentsInput-DEXCCEGP.js.map → CommentsInput-CXUjX47s.js.map} +1 -1
  11. package/lib/{CommentsInspector-DBY7KD3P.js → CommentsInspector-DnhaBRvP.js} +5 -5
  12. package/lib/{CommentsInspector-DBY7KD3P.js.map → CommentsInspector-DnhaBRvP.js.map} +1 -1
  13. package/lib/{CommentsListItem-BEGOSIY0.js → CommentsListItem-Dn3MXuMi.js} +3 -3
  14. package/lib/{CommentsListItem-BEGOSIY0.js.map → CommentsListItem-Dn3MXuMi.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-Clvemp0W.js → CommentsSelectedPathProvider-jbvY-MJ0.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-Clvemp0W.js.map → CommentsSelectedPathProvider-jbvY-MJ0.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-D1kFwOni.js → CommentsStudioLayout-jxq4yKzW.js} +4 -4
  18. package/lib/{CommentsStudioLayout-D1kFwOni.js.map → CommentsStudioLayout-jxq4yKzW.js.map} +1 -1
  19. package/lib/{PaneContainer-QCEhEyzd.js → PaneContainer-BtFBEWLZ.js} +5 -6
  20. package/lib/PaneContainer-BtFBEWLZ.js.map +1 -0
  21. package/lib/{PresentationToolGrantsCheck-CxqDuu8I.js → PresentationToolGrantsCheck-CITNu5DG.js} +14 -6
  22. package/lib/PresentationToolGrantsCheck-CITNu5DG.js.map +1 -0
  23. package/lib/{ReleasesMetadataProvider-DH9ZPiY1.js → ReleasesMetadataProvider-16P_iZKZ.js} +2 -2
  24. package/lib/{ReleasesMetadataProvider-DH9ZPiY1.js.map → ReleasesMetadataProvider-16P_iZKZ.js.map} +1 -1
  25. package/lib/{ReleasesNav-DIkvTixA.js → ReleasesNav-BzrUhOoJ.js} +59 -19
  26. package/lib/ReleasesNav-BzrUhOoJ.js.map +1 -0
  27. package/lib/{ReleasesStudioLayout-KuVpj5_v.js → ReleasesStudioLayout-DEWAqdmR.js} +8 -8
  28. package/lib/{ReleasesStudioLayout-KuVpj5_v.js.map → ReleasesStudioLayout-DEWAqdmR.js.map} +1 -1
  29. package/lib/{ReleasesTool-DN5FBLWz.js → ReleasesTool-DJhN0bPA.js} +14 -14
  30. package/lib/{ReleasesTool-DN5FBLWz.js.map → ReleasesTool-DJhN0bPA.js.map} +1 -1
  31. package/lib/{SchedulePublishingStudioLayout-B5K8nqiH.js → SchedulePublishingStudioLayout-B3d-Pcp4.js} +3 -3
  32. package/lib/{SchedulePublishingStudioLayout-B5K8nqiH.js.map → SchedulePublishingStudioLayout-B3d-Pcp4.js.map} +1 -1
  33. package/lib/{SchedulePublishingUpsellProvider-CSMocuXk.js → SchedulePublishingUpsellProvider-tHnK31n0.js} +2 -2
  34. package/lib/{SchedulePublishingUpsellProvider-CSMocuXk.js.map → SchedulePublishingUpsellProvider-tHnK31n0.js.map} +1 -1
  35. package/lib/{ScheduledPublishingEnabledProvider-DGpt_kKu.js → ScheduledPublishingEnabledProvider-CzQXgTsk.js} +3 -3
  36. package/lib/{ScheduledPublishingEnabledProvider-DGpt_kKu.js.map → ScheduledPublishingEnabledProvider-CzQXgTsk.js.map} +1 -1
  37. package/lib/{SearchProvider-Iy4-6hcz.js → SearchProvider-D_Y0UV_W.js} +24 -24
  38. package/lib/SearchProvider-D_Y0UV_W.js.map +1 -0
  39. package/lib/{SingleDocReleaseLayout-CRJT6Vu9.js → SingleDocReleaseLayout-BCJmxy5s.js} +2 -2
  40. package/lib/{SingleDocReleaseLayout-CRJT6Vu9.js.map → SingleDocReleaseLayout-BCJmxy5s.js.map} +1 -1
  41. package/lib/{SingleDocReleaseUpsellProvider-BRUYOryN.js → SingleDocReleaseUpsellProvider-CpUQPbkP.js} +4 -4
  42. package/lib/{SingleDocReleaseUpsellProvider-BRUYOryN.js.map → SingleDocReleaseUpsellProvider-CpUQPbkP.js.map} +1 -1
  43. package/lib/{TasksStudioActiveToolLayout-BUnLMMYi.js → TasksStudioActiveToolLayout-uoPm3E0Y.js} +11 -11
  44. package/lib/{TasksStudioActiveToolLayout-BUnLMMYi.js.map → TasksStudioActiveToolLayout-uoPm3E0Y.js.map} +1 -1
  45. package/lib/{TasksStudioLayout-ClMZ9sWa.js → TasksStudioLayout-CFRlrtHs.js} +5 -5
  46. package/lib/{TasksStudioLayout-ClMZ9sWa.js.map → TasksStudioLayout-CFRlrtHs.js.map} +1 -1
  47. package/lib/{Tool-CGMUCSOs.js → Tool-CjZmRZ_L.js} +12 -12
  48. package/lib/{Tool-CGMUCSOs.js.map → Tool-CjZmRZ_L.js.map} +1 -1
  49. package/lib/{UnpublishVersionDialog-DnGH3SLI.js → UnpublishVersionDialog-dJM5TcRn.js} +4 -4
  50. package/lib/{UnpublishVersionDialog-DnGH3SLI.js.map → UnpublishVersionDialog-dJM5TcRn.js.map} +1 -1
  51. package/lib/{UpsellDialog-Dcjf8OuF.js → UpsellDialog-2urLJ5H5.js} +2 -2
  52. package/lib/{UpsellDialog-Dcjf8OuF.js.map → UpsellDialog-2urLJ5H5.js.map} +1 -1
  53. package/lib/{VariantsStudioNavbar-D8L9UWqH.js → VariantsStudioNavbar-BbpP-SV6.js} +7 -27
  54. package/lib/VariantsStudioNavbar-BbpP-SV6.js.map +1 -0
  55. package/lib/{VariantsTool-JHeKZHcr.js → VariantsTool-BpDy94Yo.js} +7 -7
  56. package/lib/{VariantsTool-JHeKZHcr.js.map → VariantsTool-BpDy94Yo.js.map} +1 -1
  57. package/lib/{WorkspaceLoader-CtnP9tNF.js → WorkspaceLoader-COkgKUSq.js} +25 -25
  58. package/lib/{WorkspaceLoader-CtnP9tNF.js.map → WorkspaceLoader-COkgKUSq.js.map} +1 -1
  59. package/lib/_createContext.js +1 -1
  60. package/lib/_singletons.d.ts +1 -1
  61. package/lib/{buildTextSelectionFromFragment-k_rh1KNa.js → buildTextSelectionFromFragment-DkScjl9L.js} +3 -3
  62. package/lib/{buildTextSelectionFromFragment-k_rh1KNa.js.map → buildTextSelectionFromFragment-DkScjl9L.js.map} +1 -1
  63. package/lib/{datastores-X2znh4zT.js → datastores-BKRF0Q9p.js} +16 -5
  64. package/lib/datastores-BKRF0Q9p.js.map +1 -0
  65. package/lib/desk.d.ts +1 -1
  66. package/lib/desk.js +2 -2
  67. package/lib/{index-Z0jxEn8U.d.ts → index-CnGXln7W.d.ts} +62 -12
  68. package/lib/index.d.ts +2 -2
  69. package/lib/index.js +640 -257
  70. package/lib/index.js.map +1 -1
  71. package/lib/{inputResolver-CwZU1DyA.js → inputResolver-BxWoGLcP.js} +4 -4
  72. package/lib/{inputResolver-CwZU1DyA.js.map → inputResolver-BxWoGLcP.js.map} +1 -1
  73. package/lib/{list-CQ5wYKGN.js → list-BqCyKicl.js} +2 -2
  74. package/lib/{list-CQ5wYKGN.js.map → list-BqCyKicl.js.map} +1 -1
  75. package/lib/{navigation.telemetry-Poh1ANIW.js → navigation.telemetry-BdALj7hP.js} +7 -7
  76. package/lib/{navigation.telemetry-Poh1ANIW.js.map → navigation.telemetry-BdALj7hP.js.map} +1 -1
  77. package/lib/pane-8ExVl8qY.js +2 -0
  78. package/lib/pane-wKH9j_H3.js +2 -0
  79. package/lib/{plugin-CNhX_Tb7.js → plugin-BQpcUNhw.js} +6 -6
  80. package/lib/{plugin-CNhX_Tb7.js.map → plugin-BQpcUNhw.js.map} +1 -1
  81. package/lib/{plugin-CXnu--df.js → plugin-CWQXnaVS.js} +5 -5
  82. package/lib/{plugin-CXnu--df.js.map → plugin-CWQXnaVS.js.map} +1 -1
  83. package/lib/{plugin-WOJhZc9d.js → plugin-DbF85jWy.js} +4 -4
  84. package/lib/{plugin-WOJhZc9d.js.map → plugin-DbF85jWy.js.map} +1 -1
  85. package/lib/{plugin-C220AR82.js → plugin-QIqhqpZS.js} +3 -3
  86. package/lib/{plugin-C220AR82.js.map → plugin-QIqhqpZS.js.map} +1 -1
  87. package/lib/presentation.js +1 -1
  88. package/lib/{scheduleItem-DvRHEFEW.js → scheduleItem-CBN6T3h1.js} +8 -8
  89. package/lib/{scheduleItem-DvRHEFEW.js.map → scheduleItem-CBN6T3h1.js.map} +1 -1
  90. package/lib/{schedules-pdE6eEGn.js → schedules-ORlte5Aq.js} +3 -3
  91. package/lib/{schedules-pdE6eEGn.js.map → schedules-ORlte5Aq.js.map} +1 -1
  92. package/lib/structure.js +2 -2
  93. package/lib/{structureTool-BwC_ba3R.js → structureTool-CB6Y6xfI.js} +6 -6
  94. package/lib/{structureTool-BwC_ba3R.js.map → structureTool-CB6Y6xfI.js.map} +1 -1
  95. package/lib/{structureTool-BRYk4qG7.js → structureTool-CupaRvVm.js} +68 -68
  96. package/lib/structureTool-CupaRvVm.js.map +1 -0
  97. package/lib/{studioClient--dm-G_7a.js → studioClient-CJOrhmsT.js} +2 -2
  98. package/lib/{studioClient--dm-G_7a.js.map → studioClient-CJOrhmsT.js.map} +1 -1
  99. package/lib/{useBundleDocuments-oAq5rEkm.js → useBundleDocuments-Bhs3f0QF.js} +15 -13
  100. package/lib/useBundleDocuments-Bhs3f0QF.js.map +1 -0
  101. package/lib/{useComments-DYQ9xguT.js → useComments-b_kg13ZL.js} +2 -2
  102. package/lib/{useComments-DYQ9xguT.js.map → useComments-b_kg13ZL.js.map} +1 -1
  103. package/lib/{useCommentsTelemetry-BoYJL3eG.js → useCommentsTelemetry-BFtot5ib.js} +3 -3
  104. package/lib/{useCommentsTelemetry-BoYJL3eG.js.map → useCommentsTelemetry-BFtot5ib.js.map} +1 -1
  105. package/lib/{useDocumentPreviewValues-v43xdQrb.js → useDocumentPreviewValues-Cp12V_zK.js} +3 -3
  106. package/lib/{useDocumentPreviewValues-v43xdQrb.js.map → useDocumentPreviewValues-Cp12V_zK.js.map} +1 -1
  107. package/lib/{useFeatureEnabled-4gSsu40G.js → useFeatureEnabled-CKA9SpR4.js} +2 -2
  108. package/lib/{useFeatureEnabled-4gSsu40G.js.map → useFeatureEnabled-CKA9SpR4.js.map} +1 -1
  109. package/lib/{useFieldActions-BKWh56GI.js → useFieldActions-BT0dmvAk.js} +2 -2
  110. package/lib/{useFieldActions-BKWh56GI.js.map → useFieldActions-BT0dmvAk.js.map} +1 -1
  111. package/lib/{useReleasesToolAvailable-5DSPa2Gx.js → useReleasesToolAvailable-BtNPK1ns.js} +3 -3
  112. package/lib/{useReleasesToolAvailable-5DSPa2Gx.js.map → useReleasesToolAvailable-BtNPK1ns.js.map} +1 -1
  113. package/lib/{useScheduledDraftMenuActions-BxKkDOS8.js → useScheduledDraftMenuActions-Btn2NKF9.js} +38 -21
  114. package/lib/useScheduledDraftMenuActions-Btn2NKF9.js.map +1 -0
  115. package/lib/{useSetVariant-C6TkfVCm.js → useSetVariant-D6nDqKeX.js} +3 -3
  116. package/lib/{useSetVariant-C6TkfVCm.js.map → useSetVariant-D6nDqKeX.js.map} +1 -1
  117. package/lib/{useStudioUrl-CGakngEM.js → useStudioUrl-DFBaha5x.js} +5 -5
  118. package/lib/{useStudioUrl-CGakngEM.js.map → useStudioUrl-DFBaha5x.js.map} +1 -1
  119. package/lib/{useTimeZone-BoKWaSj6.js → useTimeZone-DceoecRg.js} +2 -2
  120. package/lib/{useTimeZone-BoKWaSj6.js.map → useTimeZone-DceoecRg.js.map} +1 -1
  121. package/lib/{userComponent-DIoiRgtl.js → userComponent-DBLembOH.js} +2 -2
  122. package/lib/{userComponent-DIoiRgtl.js.map → userComponent-DBLembOH.js.map} +1 -1
  123. package/lib/{validationUtils-CX9mO1s1.js → validationUtils-BefUKU_E.js} +4 -4
  124. package/lib/{validationUtils-CX9mO1s1.js.map → validationUtils-BefUKU_E.js.map} +1 -1
  125. package/lib/{version-CUL0S-Ix.js → version-D8FgjwBF.js} +2 -2
  126. package/lib/{version-CUL0S-Ix.js.map → version-D8FgjwBF.js.map} +1 -1
  127. package/package.json +10 -10
  128. package/lib/Delay-DjgiAi06.js +0 -21
  129. package/lib/Delay-DjgiAi06.js.map +0 -1
  130. package/lib/PaneContainer-QCEhEyzd.js.map +0 -1
  131. package/lib/PresentationToolGrantsCheck-CxqDuu8I.js.map +0 -1
  132. package/lib/ReleasesNav-DIkvTixA.js.map +0 -1
  133. package/lib/SearchProvider-Iy4-6hcz.js.map +0 -1
  134. package/lib/VariantsStudioNavbar-D8L9UWqH.js.map +0 -1
  135. package/lib/datastores-X2znh4zT.js.map +0 -1
  136. package/lib/pane-CoSiSpvR.js +0 -2
  137. package/lib/pane-ptq8ykm7.js +0 -2
  138. package/lib/structureTool-BRYk4qG7.js.map +0 -1
  139. package/lib/useBundleDocuments-oAq5rEkm.js.map +0 -1
  140. package/lib/useScheduledDraftMenuActions-BxKkDOS8.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useTimeZone-BoKWaSj6.js","names":["DATE_FORMAT","SMALL","MEDIUM","LARGE","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","debug","rootName","debugWithName","name","Debugger","namespace","enabled","tz","tzHelper","TZDate","ClientError","useToast","sanitizeLocale","format","dateFnsFormat","useCallback","useEffect","useMemo","useState","useObservable","startWith","useKeyValueStore","DATE_FORMAT","ToastDescription","NormalizedTimeZone","debugWithName","createTZDateFromComponents","date","Date","timeZone","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","TimeZoneEvents","update","const","TimeZoneScopeType","NoIdRequiredTypes","IdRequiredTypes","ReleasesOrScheduledPublishingScope","type","defaultTimeZone","InputScope","id","relativeDate","TimeZoneScope","debug","timeZoneLocalStorageNamespace","timeZoneCache","Map","offsetCache","abbreviation","alternativeName","offset","offsetToMinutes","multiplier","startsWith","includes","Number","replace","hours","minutes","split","map","getCachedTimeZoneInfo","locale","canonicalIdentifier","relativeDateForZones","dateKey","toISOString","slice","cacheKey","has","get","formatter","Intl","DateTimeFormat","timeZoneName","shortFormatter","dateToUse","parts","formatToParts","shortParts","rawOffset","in","info","find","value","set","computeAllTimeZones","timeZones","supportedValuesOf","tzName","city","replaceAll","name","namePretty","filter","sort","a","b","getGloballyCachedTimeZones","computedTimeZones","TIME_ZONE_SCOPE_TYPE","scheduledPublishing","contentReleases","input","useTimeZone","scope","$","_c","toast","keyValueStore","currentLocale","navigator","language","keyStoreId","undefined","t0","legacyValue","localStorage","getItem","scheduledPublishingValue","JSON","parse","setKey","removeItem","t1","t2","allTimeZones","t3","normalizedDefaultTimezone","getDefaultTimeZone","t4","getKey","pipe","keyValueTimeZone$","storedTimeZone","t5","run","wholeTimeZone","tz_0","some","tz_1","fallbackTimeZone","tz_2","getStoredTimeZone","t6","localTzName","resolvedOptions","foundLocal","tz_3","gmt","_temp","getLocalTimeZone","t7","getInitialTimeZone","t8","timeZone_0","setTimeZone","t10","t9","t11","t12","handler","window","addEventListener","removeEventListener","t13","t14","t15","includeTimeZone","prefix","LARGE","dateFormat","formatDateTz","getCurrentZoneDate","tzValue","tz_4","getTimeZone","t16","tz_5","prevTz","run_0","dispatchEvent","Event","push","closable","description","duration","status","t17","err","console","error","getErrorMessage","handleNewValue","date_0","utcToCurrentZoneDate","t18","date_1","tzDate","utcDate","zoneDateToUtc","t19","isClientError","e","message","response","statusCode","Error","String"],"sources":["../src/core/studio/timezones/constants.tsx","../src/core/studio/timezones/toastDescription/ToastDescription.tsx","../src/core/studio/timezones/utils/debug.ts","../src/core/hooks/useTimeZone.tsx"],"sourcesContent":["// date-fns compatible date formats\n// https://date-fns.org/v2.28.0/docs/format\nexport const DATE_FORMAT = {\n // 1 Oct 22, 10:00 PM\n SMALL: `d MMM yy',' p`,\n // 1 October 2022, 10:00 PM\n MEDIUM: `d MMMM yyyy',' p`,\n // Saturday, 1 October 2022, 10:00 PM\n LARGE: `iiii',' d MMMM yyyy',' p`,\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 debug from 'debug'\n\nconst rootName = 'scheduled-publishing:'\n\nexport function debugWithName(name: string): debug.Debugger {\n const namespace = `${rootName}${name}`\n if (debug && debug.enabled(namespace)) {\n return debug(namespace)\n }\n return debug(rootName)\n}\n","import {tz as tzHelper, TZDate} from '@date-fns/tz'\nimport {type ClientError} from '@sanity/client'\nimport {useToast} from '@sanity/ui'\nimport {sanitizeLocale} from '@sanity/util/legacyDateFormat'\nimport {format as dateFnsFormat} from 'date-fns/format'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {startWith} from 'rxjs/operators'\n\nimport {useKeyValueStore} from '../store/datastores'\nimport {DATE_FORMAT} from '../studio/timezones/constants'\nimport ToastDescription from '../studio/timezones/toastDescription/ToastDescription'\nimport {type NormalizedTimeZone} from '../studio/timezones/types'\nimport {debugWithName} from '../studio/timezones/utils/debug'\n\n/**\n * Helper function to create a TZDate from a Date's components in a specific timezone.\n * This is useful for interpreting local date/time values as being in a specific timezone.\n */\nfunction createTZDateFromComponents(date: Date, timeZone: string): TZDate {\n return new TZDate(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n timeZone,\n )\n}\n\nconst TimeZoneEvents = {\n update: 'timeZoneEventUpdate' as const,\n}\n\nexport type TimeZoneScopeType = 'scheduledPublishing' | 'contentReleases' | 'input'\n\ntype NoIdRequiredTypes = 'scheduledPublishing' | 'contentReleases'\ntype IdRequiredTypes = 'input'\n\ntype ReleasesOrScheduledPublishingScope = {\n type: NoIdRequiredTypes\n defaultTimeZone?: string\n}\n\ntype InputScope = {\n type: IdRequiredTypes\n id: string\n defaultTimeZone?: string\n relativeDate?: Date // offsets can change over time, so we use a relative date to get the offset\n}\n\nexport type TimeZoneScope = ReleasesOrScheduledPublishingScope | InputScope\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport const timeZoneLocalStorageNamespace = 'studio.timezone.'\n\nconst timeZoneCache = new Map<string, NormalizedTimeZone[]>()\nconst offsetCache = new Map<\n string,\n {abbreviation: string; alternativeName: string; offset: string}\n>()\n\nconst offsetToMinutes = (offset: string): number => {\n if (!offset) return 0\n const multiplier = offset.startsWith('-') ? -1 : 1\n if (!offset.includes(':')) return multiplier * Number(offset.replace(/[+-]/, '')) * 60\n\n const [hours, minutes] = offset.replace(/[+-]/, '').split(':').map(Number)\n return multiplier * (hours * 60 + minutes)\n}\n\nfunction getCachedTimeZoneInfo(\n locale: string,\n canonicalIdentifier: string,\n relativeDateForZones?: Date,\n): {abbreviation: string; alternativeName: string; offset: string} {\n const dateKey = relativeDateForZones?.toISOString().slice(0, 10) || 'now'\n const cacheKey = `${locale}_${canonicalIdentifier}_${dateKey}`\n // relative date is not used for caching, but it's used to invalidate the cache when it changes\n if (offsetCache.has(cacheKey)) {\n return offsetCache.get(cacheKey)!\n }\n\n const formatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'long',\n })\n\n const shortFormatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'short',\n })\n\n const dateToUse = relativeDateForZones ?? new Date()\n const parts = formatter.formatToParts(dateToUse)\n const shortParts = shortFormatter.formatToParts(dateToUse)\n const rawOffset = dateFnsFormat(dateToUse, 'xxx', {in: tzHelper(canonicalIdentifier)})\n // If the offset is +02:00 then we can just show +2, if it has +13:45 then we should show +13:45, remove the leading +0 and just leave a + if a number under 10, remove the :00 at the end\n const offset = rawOffset\n .replace(/([+-])0(\\d)/, '$1$2')\n .replace(/([+-])0$/, '$1')\n .replace(/:00$/, '')\n .replace(/[+]0$/, '')\n\n const info = {\n abbreviation: shortParts.find(({type}) => type === 'timeZoneName')?.value || '',\n alternativeName: parts.find(({type}) => type === 'timeZoneName')?.value || '',\n offset,\n }\n\n offsetCache.set(cacheKey, info)\n return info\n}\n\nfunction computeAllTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const timeZones = Intl.supportedValuesOf('timeZone')\n .map((tzName): NormalizedTimeZone | null => {\n // Skip if timezone name doesn't contain a city (should have a '/')\n if (!tzName.includes('/')) return null\n\n const {alternativeName, abbreviation, offset} = getCachedTimeZoneInfo(\n locale,\n tzName,\n relativeDate,\n )\n const [, city] = tzName.split('/')\n return {\n abbreviation,\n alternativeName,\n city: city.replaceAll('_', ' '),\n name: tzName,\n namePretty: tzName.replaceAll('_', ' '),\n offset,\n value: `${offset} ${abbreviation} ${tzName} ${alternativeName}`,\n }\n })\n .filter((tz): tz is NormalizedTimeZone => tz !== null)\n .sort(\n (a: NormalizedTimeZone, b: NormalizedTimeZone) =>\n offsetToMinutes(a.offset) - offsetToMinutes(b.offset),\n )\n\n return timeZones\n}\n\nfunction getGloballyCachedTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const cacheKey = `${locale}_${relativeDate?.toISOString().slice(0, 10) || 'now'}`\n\n if (timeZoneCache.has(cacheKey)) {\n return timeZoneCache.get(cacheKey)!\n }\n\n const computedTimeZones = computeAllTimeZones(locale, relativeDate)\n timeZoneCache.set(cacheKey, computedTimeZones)\n return computedTimeZones\n}\n\nexport const TIME_ZONE_SCOPE_TYPE = {\n scheduledPublishing: 'scheduled-publishing',\n contentReleases: 'content-releases',\n input: 'input',\n}\n\nexport const useTimeZone = (scope: TimeZoneScope) => {\n const toast = useToast()\n const keyValueStore = useKeyValueStore()\n const currentLocale = navigator.language\n const {defaultTimeZone} = scope\n\n // used for the key to match formatting in cellar\n const type = TIME_ZONE_SCOPE_TYPE[scope.type]\n const keyStoreId =\n 'id' in scope\n ? `${timeZoneLocalStorageNamespace}${type}.${scope.id}`\n : `${timeZoneLocalStorageNamespace}${type}`\n const relativeDate = 'relativeDate' in scope ? scope.relativeDate : undefined\n\n // Check for legacy localStorage key and migrate if needed\n // fall back for old way of handling timezones\n useEffect(() => {\n if (scope.type === 'scheduledPublishing') {\n const legacyKey = 'scheduled-publishing::time-zone'\n // the original value was kept as an object with the name\n const legacyValue = localStorage.getItem(legacyKey)\n\n if (legacyValue) {\n // Migrate the value to key-value store\n const scheduledPublishingValue = JSON.parse(legacyValue)\n void keyValueStore.setKey(keyStoreId, scheduledPublishingValue.name)\n // Remove the legacy key\n localStorage.removeItem(legacyKey)\n }\n }\n }, [scope.type, keyValueStore, keyStoreId, currentLocale, relativeDate])\n\n const allTimeZones: NormalizedTimeZone[] = useMemo(() => {\n return getGloballyCachedTimeZones(currentLocale, relativeDate)\n }, [currentLocale, relativeDate])\n\n const getDefaultTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n const normalizedDefaultTimezone = defaultTimeZone\n ? allTimeZones.find((tz: NormalizedTimeZone) => tz.name === defaultTimeZone)\n : undefined\n return normalizedDefaultTimezone\n }, [allTimeZones, defaultTimeZone])\n\n const keyValueTimeZone$ = useMemo(\n () => keyValueStore.getKey(keyStoreId).pipe(startWith(null)),\n [keyValueStore, keyStoreId],\n )\n\n const storedTimeZone = useObservable(keyValueTimeZone$, null)\n\n const getStoredTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n if (!storedTimeZone) return undefined\n\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n const wholeTimeZone = allTimeZones.find((tz) => tz.name === storedTimeZone)\n\n if (\n wholeTimeZone &&\n allTimeZones.some((tz: NormalizedTimeZone) => tz.name === wholeTimeZone.name)\n ) {\n return wholeTimeZone\n }\n\n const fallbackTimeZone = allTimeZones.find((tz) => tz.offset === wholeTimeZone?.offset)\n if (fallbackTimeZone) {\n void keyValueStore.setKey(keyStoreId, fallbackTimeZone.name)\n return fallbackTimeZone\n }\n return undefined\n }\n try {\n return run()\n } catch {\n return undefined\n }\n }, [allTimeZones, keyStoreId, keyValueStore, storedTimeZone])\n\n const getLocalTimeZone = useCallback((): NormalizedTimeZone => {\n const localTzName = Intl.DateTimeFormat().resolvedOptions().timeZone\n const foundLocal = allTimeZones.find((tz) => tz.name === localTzName)\n if (foundLocal) return foundLocal\n\n // Fallback\n const gmt = allTimeZones.find((timeZone) => timeZone.abbreviation === 'GMT')\n if (gmt) return gmt\n\n return allTimeZones[0]\n }, [allTimeZones])\n\n const getInitialTimeZone = useCallback((): NormalizedTimeZone => {\n return getStoredTimeZone() || getDefaultTimeZone() || getLocalTimeZone()\n }, [getStoredTimeZone, getDefaultTimeZone, getLocalTimeZone])\n\n const [timeZone, setTimeZone] = useState<NormalizedTimeZone>(() => getInitialTimeZone())\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler -- @todo fix later\n setTimeZone(getInitialTimeZone())\n }, [getInitialTimeZone])\n\n useEffect(() => {\n const handler = () => {\n setTimeZone(getInitialTimeZone())\n }\n\n window.addEventListener(TimeZoneEvents.update, handler)\n return () => {\n window.removeEventListener(TimeZoneEvents.update, handler)\n }\n }, [getInitialTimeZone])\n\n const formatDateTz = useCallback(\n ({\n date,\n format = DATE_FORMAT.LARGE,\n includeTimeZone,\n prefix,\n }: {\n date: Date\n format?: string\n includeTimeZone?: boolean\n prefix?: string\n }) => {\n let dateFormat = format\n if (prefix) {\n dateFormat = `'${prefix}'${format}`\n }\n if (includeTimeZone) {\n dateFormat = `${format} (zzzz)`\n }\n return dateFnsFormat(date, dateFormat, {\n in: tzHelper(timeZone?.name || getLocalTimeZone()?.name || 'UTC'),\n })\n },\n [timeZone, getLocalTimeZone],\n )\n\n const getCurrentZoneDate = useCallback(() => {\n if (!timeZone) return new Date()\n return new TZDate(new Date(), timeZone.name)\n }, [timeZone])\n\n const getTimeZone = useCallback(\n (tzValue: string): NormalizedTimeZone =>\n allTimeZones.find((tz) => tzValue === tz.value) || getInitialTimeZone(),\n [allTimeZones, getInitialTimeZone],\n )\n\n const handleNewValue = useCallback(\n (tz: NormalizedTimeZone) => {\n debug('handleNewValue:', tz)\n\n setTimeZone((prevTz) => {\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n if (prevTz?.name !== tz.name) {\n void keyValueStore.setKey(keyStoreId, tz.name)\n window.dispatchEvent(new Event(TimeZoneEvents.update))\n }\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={`${tz.alternativeName} (${tz.namePretty})`}\n title=\"Time zone updated\"\n />\n ),\n duration: 15000,\n status: 'info',\n })\n }\n try {\n run()\n } catch (err) {\n console.error(err)\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update time zone\" />\n ),\n status: 'error',\n })\n }\n\n return tz\n })\n },\n [keyStoreId, toast, keyValueStore],\n )\n\n const utcToCurrentZoneDate = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n return new TZDate(date, timeZone.name)\n },\n [timeZone],\n )\n\n const zoneDateToUtc = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n // Create a TZDate by interpreting the date components as being in the timezone\n const tzDate = createTZDateFromComponents(date, timeZone.name)\n // Convert to regular Date to save as UTC instead of preserving timezone offset\n const utcDate = new Date(tzDate)\n return utcDate\n },\n [timeZone],\n )\n\n return useMemo(\n () => ({\n formatDateTz,\n getCurrentZoneDate,\n setTimeZone: handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n }),\n [\n formatDateTz,\n getCurrentZoneDate,\n handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n ],\n )\n}\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\nfunction 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. Please check that your project has access to the feature.'\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"],"mappings":"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"}
1
+ {"version":3,"file":"useTimeZone-DceoecRg.js","names":["DATE_FORMAT","SMALL","MEDIUM","LARGE","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","debug","rootName","debugWithName","name","Debugger","namespace","enabled","tz","tzHelper","TZDate","ClientError","useToast","sanitizeLocale","format","dateFnsFormat","useCallback","useEffect","useMemo","useState","useObservable","startWith","useKeyValueStore","DATE_FORMAT","ToastDescription","NormalizedTimeZone","debugWithName","createTZDateFromComponents","date","Date","timeZone","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","TimeZoneEvents","update","const","TimeZoneScopeType","NoIdRequiredTypes","IdRequiredTypes","ReleasesOrScheduledPublishingScope","type","defaultTimeZone","InputScope","id","relativeDate","TimeZoneScope","debug","timeZoneLocalStorageNamespace","timeZoneCache","Map","offsetCache","abbreviation","alternativeName","offset","offsetToMinutes","multiplier","startsWith","includes","Number","replace","hours","minutes","split","map","getCachedTimeZoneInfo","locale","canonicalIdentifier","relativeDateForZones","dateKey","toISOString","slice","cacheKey","has","get","formatter","Intl","DateTimeFormat","timeZoneName","shortFormatter","dateToUse","parts","formatToParts","shortParts","rawOffset","in","info","find","value","set","computeAllTimeZones","timeZones","supportedValuesOf","tzName","city","replaceAll","name","namePretty","filter","sort","a","b","getGloballyCachedTimeZones","computedTimeZones","TIME_ZONE_SCOPE_TYPE","scheduledPublishing","contentReleases","input","useTimeZone","scope","$","_c","toast","keyValueStore","currentLocale","navigator","language","keyStoreId","undefined","t0","legacyValue","localStorage","getItem","scheduledPublishingValue","JSON","parse","setKey","removeItem","t1","t2","allTimeZones","t3","normalizedDefaultTimezone","getDefaultTimeZone","t4","getKey","pipe","keyValueTimeZone$","storedTimeZone","t5","run","wholeTimeZone","tz_0","some","tz_1","fallbackTimeZone","tz_2","getStoredTimeZone","t6","localTzName","resolvedOptions","foundLocal","tz_3","gmt","_temp","getLocalTimeZone","t7","getInitialTimeZone","t8","timeZone_0","setTimeZone","t10","t9","t11","t12","handler","window","addEventListener","removeEventListener","t13","t14","t15","includeTimeZone","prefix","LARGE","dateFormat","formatDateTz","getCurrentZoneDate","tzValue","tz_4","getTimeZone","t16","tz_5","prevTz","run_0","dispatchEvent","Event","push","closable","description","duration","status","t17","err","console","error","getErrorMessage","handleNewValue","date_0","utcToCurrentZoneDate","t18","date_1","tzDate","utcDate","zoneDateToUtc","t19","isClientError","e","message","response","statusCode","Error","String"],"sources":["../src/core/studio/timezones/constants.tsx","../src/core/studio/timezones/toastDescription/ToastDescription.tsx","../src/core/studio/timezones/utils/debug.ts","../src/core/hooks/useTimeZone.tsx"],"sourcesContent":["// date-fns compatible date formats\n// https://date-fns.org/v2.28.0/docs/format\nexport const DATE_FORMAT = {\n // 1 Oct 22, 10:00 PM\n SMALL: `d MMM yy',' p`,\n // 1 October 2022, 10:00 PM\n MEDIUM: `d MMMM yyyy',' p`,\n // Saturday, 1 October 2022, 10:00 PM\n LARGE: `iiii',' d MMMM yyyy',' p`,\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 debug from 'debug'\n\nconst rootName = 'scheduled-publishing:'\n\nexport function debugWithName(name: string): debug.Debugger {\n const namespace = `${rootName}${name}`\n if (debug && debug.enabled(namespace)) {\n return debug(namespace)\n }\n return debug(rootName)\n}\n","import {tz as tzHelper, TZDate} from '@date-fns/tz'\nimport {type ClientError} from '@sanity/client'\nimport {useToast} from '@sanity/ui'\nimport {sanitizeLocale} from '@sanity/util/legacyDateFormat'\nimport {format as dateFnsFormat} from 'date-fns/format'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {useObservable} from 'react-rx'\nimport {startWith} from 'rxjs/operators'\n\nimport {useKeyValueStore} from '../store/datastores'\nimport {DATE_FORMAT} from '../studio/timezones/constants'\nimport ToastDescription from '../studio/timezones/toastDescription/ToastDescription'\nimport {type NormalizedTimeZone} from '../studio/timezones/types'\nimport {debugWithName} from '../studio/timezones/utils/debug'\n\n/**\n * Helper function to create a TZDate from a Date's components in a specific timezone.\n * This is useful for interpreting local date/time values as being in a specific timezone.\n */\nfunction createTZDateFromComponents(date: Date, timeZone: string): TZDate {\n return new TZDate(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n timeZone,\n )\n}\n\nconst TimeZoneEvents = {\n update: 'timeZoneEventUpdate' as const,\n}\n\nexport type TimeZoneScopeType = 'scheduledPublishing' | 'contentReleases' | 'input'\n\ntype NoIdRequiredTypes = 'scheduledPublishing' | 'contentReleases'\ntype IdRequiredTypes = 'input'\n\ntype ReleasesOrScheduledPublishingScope = {\n type: NoIdRequiredTypes\n defaultTimeZone?: string\n}\n\ntype InputScope = {\n type: IdRequiredTypes\n id: string\n defaultTimeZone?: string\n relativeDate?: Date // offsets can change over time, so we use a relative date to get the offset\n}\n\nexport type TimeZoneScope = ReleasesOrScheduledPublishingScope | InputScope\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport const timeZoneLocalStorageNamespace = 'studio.timezone.'\n\nconst timeZoneCache = new Map<string, NormalizedTimeZone[]>()\nconst offsetCache = new Map<\n string,\n {abbreviation: string; alternativeName: string; offset: string}\n>()\n\nconst offsetToMinutes = (offset: string): number => {\n if (!offset) return 0\n const multiplier = offset.startsWith('-') ? -1 : 1\n if (!offset.includes(':')) return multiplier * Number(offset.replace(/[+-]/, '')) * 60\n\n const [hours, minutes] = offset.replace(/[+-]/, '').split(':').map(Number)\n return multiplier * (hours * 60 + minutes)\n}\n\nfunction getCachedTimeZoneInfo(\n locale: string,\n canonicalIdentifier: string,\n relativeDateForZones?: Date,\n): {abbreviation: string; alternativeName: string; offset: string} {\n const dateKey = relativeDateForZones?.toISOString().slice(0, 10) || 'now'\n const cacheKey = `${locale}_${canonicalIdentifier}_${dateKey}`\n // relative date is not used for caching, but it's used to invalidate the cache when it changes\n if (offsetCache.has(cacheKey)) {\n return offsetCache.get(cacheKey)!\n }\n\n const formatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'long',\n })\n\n const shortFormatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'short',\n })\n\n const dateToUse = relativeDateForZones ?? new Date()\n const parts = formatter.formatToParts(dateToUse)\n const shortParts = shortFormatter.formatToParts(dateToUse)\n const rawOffset = dateFnsFormat(dateToUse, 'xxx', {in: tzHelper(canonicalIdentifier)})\n // If the offset is +02:00 then we can just show +2, if it has +13:45 then we should show +13:45, remove the leading +0 and just leave a + if a number under 10, remove the :00 at the end\n const offset = rawOffset\n .replace(/([+-])0(\\d)/, '$1$2')\n .replace(/([+-])0$/, '$1')\n .replace(/:00$/, '')\n .replace(/[+]0$/, '')\n\n const info = {\n abbreviation: shortParts.find(({type}) => type === 'timeZoneName')?.value || '',\n alternativeName: parts.find(({type}) => type === 'timeZoneName')?.value || '',\n offset,\n }\n\n offsetCache.set(cacheKey, info)\n return info\n}\n\nfunction computeAllTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const timeZones = Intl.supportedValuesOf('timeZone')\n .map((tzName): NormalizedTimeZone | null => {\n // Skip if timezone name doesn't contain a city (should have a '/')\n if (!tzName.includes('/')) return null\n\n const {alternativeName, abbreviation, offset} = getCachedTimeZoneInfo(\n locale,\n tzName,\n relativeDate,\n )\n const [, city] = tzName.split('/')\n return {\n abbreviation,\n alternativeName,\n city: city.replaceAll('_', ' '),\n name: tzName,\n namePretty: tzName.replaceAll('_', ' '),\n offset,\n value: `${offset} ${abbreviation} ${tzName} ${alternativeName}`,\n }\n })\n .filter((tz): tz is NormalizedTimeZone => tz !== null)\n .sort(\n (a: NormalizedTimeZone, b: NormalizedTimeZone) =>\n offsetToMinutes(a.offset) - offsetToMinutes(b.offset),\n )\n\n return timeZones\n}\n\nfunction getGloballyCachedTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const cacheKey = `${locale}_${relativeDate?.toISOString().slice(0, 10) || 'now'}`\n\n if (timeZoneCache.has(cacheKey)) {\n return timeZoneCache.get(cacheKey)!\n }\n\n const computedTimeZones = computeAllTimeZones(locale, relativeDate)\n timeZoneCache.set(cacheKey, computedTimeZones)\n return computedTimeZones\n}\n\nexport const TIME_ZONE_SCOPE_TYPE = {\n scheduledPublishing: 'scheduled-publishing',\n contentReleases: 'content-releases',\n input: 'input',\n}\n\nexport const useTimeZone = (scope: TimeZoneScope) => {\n const toast = useToast()\n const keyValueStore = useKeyValueStore()\n const currentLocale = navigator.language\n const {defaultTimeZone} = scope\n\n // used for the key to match formatting in cellar\n const type = TIME_ZONE_SCOPE_TYPE[scope.type]\n const keyStoreId =\n 'id' in scope\n ? `${timeZoneLocalStorageNamespace}${type}.${scope.id}`\n : `${timeZoneLocalStorageNamespace}${type}`\n const relativeDate = 'relativeDate' in scope ? scope.relativeDate : undefined\n\n // Check for legacy localStorage key and migrate if needed\n // fall back for old way of handling timezones\n useEffect(() => {\n if (scope.type === 'scheduledPublishing') {\n const legacyKey = 'scheduled-publishing::time-zone'\n // the original value was kept as an object with the name\n const legacyValue = localStorage.getItem(legacyKey)\n\n if (legacyValue) {\n // Migrate the value to key-value store\n const scheduledPublishingValue = JSON.parse(legacyValue)\n void keyValueStore.setKey(keyStoreId, scheduledPublishingValue.name)\n // Remove the legacy key\n localStorage.removeItem(legacyKey)\n }\n }\n }, [scope.type, keyValueStore, keyStoreId, currentLocale, relativeDate])\n\n const allTimeZones: NormalizedTimeZone[] = useMemo(() => {\n return getGloballyCachedTimeZones(currentLocale, relativeDate)\n }, [currentLocale, relativeDate])\n\n const getDefaultTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n const normalizedDefaultTimezone = defaultTimeZone\n ? allTimeZones.find((tz: NormalizedTimeZone) => tz.name === defaultTimeZone)\n : undefined\n return normalizedDefaultTimezone\n }, [allTimeZones, defaultTimeZone])\n\n const keyValueTimeZone$ = useMemo(\n () => keyValueStore.getKey(keyStoreId).pipe(startWith(null)),\n [keyValueStore, keyStoreId],\n )\n\n const storedTimeZone = useObservable(keyValueTimeZone$, null)\n\n const getStoredTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n if (!storedTimeZone) return undefined\n\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n const wholeTimeZone = allTimeZones.find((tz) => tz.name === storedTimeZone)\n\n if (\n wholeTimeZone &&\n allTimeZones.some((tz: NormalizedTimeZone) => tz.name === wholeTimeZone.name)\n ) {\n return wholeTimeZone\n }\n\n const fallbackTimeZone = allTimeZones.find((tz) => tz.offset === wholeTimeZone?.offset)\n if (fallbackTimeZone) {\n void keyValueStore.setKey(keyStoreId, fallbackTimeZone.name)\n return fallbackTimeZone\n }\n return undefined\n }\n try {\n return run()\n } catch {\n return undefined\n }\n }, [allTimeZones, keyStoreId, keyValueStore, storedTimeZone])\n\n const getLocalTimeZone = useCallback((): NormalizedTimeZone => {\n const localTzName = Intl.DateTimeFormat().resolvedOptions().timeZone\n const foundLocal = allTimeZones.find((tz) => tz.name === localTzName)\n if (foundLocal) return foundLocal\n\n // Fallback\n const gmt = allTimeZones.find((timeZone) => timeZone.abbreviation === 'GMT')\n if (gmt) return gmt\n\n return allTimeZones[0]\n }, [allTimeZones])\n\n const getInitialTimeZone = useCallback((): NormalizedTimeZone => {\n return getStoredTimeZone() || getDefaultTimeZone() || getLocalTimeZone()\n }, [getStoredTimeZone, getDefaultTimeZone, getLocalTimeZone])\n\n const [timeZone, setTimeZone] = useState<NormalizedTimeZone>(() => getInitialTimeZone())\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler -- @todo fix later\n setTimeZone(getInitialTimeZone())\n }, [getInitialTimeZone])\n\n useEffect(() => {\n const handler = () => {\n setTimeZone(getInitialTimeZone())\n }\n\n window.addEventListener(TimeZoneEvents.update, handler)\n return () => {\n window.removeEventListener(TimeZoneEvents.update, handler)\n }\n }, [getInitialTimeZone])\n\n const formatDateTz = useCallback(\n ({\n date,\n format = DATE_FORMAT.LARGE,\n includeTimeZone,\n prefix,\n }: {\n date: Date\n format?: string\n includeTimeZone?: boolean\n prefix?: string\n }) => {\n let dateFormat = format\n if (prefix) {\n dateFormat = `'${prefix}'${format}`\n }\n if (includeTimeZone) {\n dateFormat = `${format} (zzzz)`\n }\n return dateFnsFormat(date, dateFormat, {\n in: tzHelper(timeZone?.name || getLocalTimeZone()?.name || 'UTC'),\n })\n },\n [timeZone, getLocalTimeZone],\n )\n\n const getCurrentZoneDate = useCallback(() => {\n if (!timeZone) return new Date()\n return new TZDate(new Date(), timeZone.name)\n }, [timeZone])\n\n const getTimeZone = useCallback(\n (tzValue: string): NormalizedTimeZone =>\n allTimeZones.find((tz) => tzValue === tz.value) || getInitialTimeZone(),\n [allTimeZones, getInitialTimeZone],\n )\n\n const handleNewValue = useCallback(\n (tz: NormalizedTimeZone) => {\n debug('handleNewValue:', tz)\n\n setTimeZone((prevTz) => {\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n if (prevTz?.name !== tz.name) {\n void keyValueStore.setKey(keyStoreId, tz.name)\n window.dispatchEvent(new Event(TimeZoneEvents.update))\n }\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={`${tz.alternativeName} (${tz.namePretty})`}\n title=\"Time zone updated\"\n />\n ),\n duration: 15000,\n status: 'info',\n })\n }\n try {\n run()\n } catch (err) {\n console.error(err)\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update time zone\" />\n ),\n status: 'error',\n })\n }\n\n return tz\n })\n },\n [keyStoreId, toast, keyValueStore],\n )\n\n const utcToCurrentZoneDate = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n return new TZDate(date, timeZone.name)\n },\n [timeZone],\n )\n\n const zoneDateToUtc = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n // Create a TZDate by interpreting the date components as being in the timezone\n const tzDate = createTZDateFromComponents(date, timeZone.name)\n // Convert to regular Date to save as UTC instead of preserving timezone offset\n const utcDate = new Date(tzDate)\n return utcDate\n },\n [timeZone],\n )\n\n return useMemo(\n () => ({\n formatDateTz,\n getCurrentZoneDate,\n setTimeZone: handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n }),\n [\n formatDateTz,\n getCurrentZoneDate,\n handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n ],\n )\n}\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\nfunction 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. Please check that your project has access to the feature.'\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"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { a as Button$1 } from "./MenuItem-B0ry3E4J.js";
2
- import { l as BackLink, u as PaneHeaderActions } from "./structureTool-BRYk4qG7.js";
2
+ import { l as BackLink, u as PaneHeaderActions } from "./structureTool-CupaRvVm.js";
3
3
  import { i as Pane, n as PaneHeader, r as usePane, t as useStructureTool } from "./useStructureTool-CX6y4EKI.js";
4
4
  import { isValidElement, useState } from "react";
5
5
  import { c } from "react/compiler-runtime";
@@ -91,4 +91,4 @@ function UserComponentPane(props) {
91
91
  }
92
92
  export { UserComponentPane as default };
93
93
 
94
- //# sourceMappingURL=userComponent-DIoiRgtl.js.map
94
+ //# sourceMappingURL=userComponent-DBLembOH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"userComponent-DIoiRgtl.js","names":["Box","ReactNode","styled","usePane","UserComponentPaneContentProps","children","Root","UserComponentPaneContent","props","$","_c","collapsed","t0","ArrowLeftIcon","Button","PaneHeader","PaneHeaderActions","BackLink","PaneMenuItem","PaneMenuItemGroup","StructureToolPaneActionHandler","useStructureTool","UserComponentPaneHeaderProps","actionHandlers","Record","index","menuItems","menuItemGroups","title","UserComponentPaneHeader","props","$","_c","features","length","t0","t1","backButton","content","t2","isValidElement","useState","isValidElementType","useI18nText","Pane","StructureToolPaneActionHandler","BaseStructureToolPaneProps","UserComponentPaneContent","UserComponentPaneHeader","UserComponentPaneProps","UserComponentPane","props","$","_c","index","pane","paneKey","restProps","UserComponent","child","menuItemGroups","menuItems","restPane","t0","component","t1","t2","t3","type","_unused","t4","ref","setRef","title","undefined","componentProps","key","actionHandlers","t5","t6","isSelected"],"sources":["../src/structure/panes/userComponent/UserComponentPaneContent.tsx","../src/structure/panes/userComponent/UserComponentPaneHeader.tsx","../src/structure/panes/userComponent/UserComponentPane.tsx"],"sourcesContent":["import {Box} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nimport {usePane} from '../../components/pane/usePane'\n\ninterface UserComponentPaneContentProps {\n children: ReactNode\n}\n\nconst Root = styled(Box)`\n position: relative;\n`\n\nexport function UserComponentPaneContent(props: UserComponentPaneContentProps) {\n const {children} = props\n const {collapsed} = usePane()\n\n return (\n <Root hidden={collapsed} height=\"fill\" overflow=\"auto\">\n {children}\n </Root>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {PaneHeader} from '../../components/pane/PaneHeader'\nimport {PaneHeaderActions} from '../../components/paneHeaderActions/PaneHeaderActions'\nimport {BackLink} from '../../components/paneRouter/BackLink'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\n\ninterface UserComponentPaneHeaderProps {\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n index: number\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n title: string\n}\n\nexport function UserComponentPaneHeader(props: UserComponentPaneHeaderProps) {\n const {actionHandlers, index, menuItems, menuItemGroups, title} = props\n const {features} = useStructureTool()\n\n if (!menuItems?.length && !title) {\n return null\n }\n\n return (\n <PaneHeader\n actions={\n <PaneHeaderActions\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n actionHandlers={actionHandlers}\n />\n }\n backButton={\n features.backButton &&\n index > 0 && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: 'Back'}}\n />\n )\n }\n title={title}\n />\n )\n}\n","import {isValidElement, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useI18nText} from 'sanity'\n\nimport {Pane} from '../../components/pane/Pane'\nimport {type StructureToolPaneActionHandler} from '../../types'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {UserComponentPaneContent} from './UserComponentPaneContent'\nimport {UserComponentPaneHeader} from './UserComponentPaneHeader'\n\ntype UserComponentPaneProps = BaseStructureToolPaneProps<'component'>\n\n/**\n * @internal\n */\nexport function UserComponentPane(props: UserComponentPaneProps) {\n const {index, pane, paneKey, ...restProps} = props\n const {\n child,\n component: UserComponent,\n menuItems,\n menuItemGroups,\n type: _unused,\n ...restPane\n } = pane\n const [ref, setRef] = useState<{\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n } | null>(null)\n const {title = ''} = useI18nText(pane)\n\n const {key, ...componentProps} = {...restProps, ...restPane}\n\n return (\n <Pane id={paneKey} minWidth={320} selected={restProps.isSelected}>\n <UserComponentPaneHeader\n actionHandlers={ref?.actionHandlers}\n index={index}\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n title={title}\n />\n\n <UserComponentPaneContent>\n {isValidElementType(UserComponent) && (\n <UserComponent\n key={key}\n {...componentProps}\n // NOTE: here we're utilizing the function form of refs so setting\n // the ref causes a re-render for `UserComponentPaneHeader`\n ref={setRef as any}\n child={child}\n paneKey={paneKey}\n />\n )}\n {isValidElement(UserComponent) && UserComponent}\n </UserComponentPaneContent>\n </Pane>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"userComponent-DBLembOH.js","names":["Box","ReactNode","styled","usePane","UserComponentPaneContentProps","children","Root","UserComponentPaneContent","props","$","_c","collapsed","t0","ArrowLeftIcon","Button","PaneHeader","PaneHeaderActions","BackLink","PaneMenuItem","PaneMenuItemGroup","StructureToolPaneActionHandler","useStructureTool","UserComponentPaneHeaderProps","actionHandlers","Record","index","menuItems","menuItemGroups","title","UserComponentPaneHeader","props","$","_c","features","length","t0","t1","backButton","content","t2","isValidElement","useState","isValidElementType","useI18nText","Pane","StructureToolPaneActionHandler","BaseStructureToolPaneProps","UserComponentPaneContent","UserComponentPaneHeader","UserComponentPaneProps","UserComponentPane","props","$","_c","index","pane","paneKey","restProps","UserComponent","child","menuItemGroups","menuItems","restPane","t0","component","t1","t2","t3","type","_unused","t4","ref","setRef","title","undefined","componentProps","key","actionHandlers","t5","t6","isSelected"],"sources":["../src/structure/panes/userComponent/UserComponentPaneContent.tsx","../src/structure/panes/userComponent/UserComponentPaneHeader.tsx","../src/structure/panes/userComponent/UserComponentPane.tsx"],"sourcesContent":["import {Box} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\nimport {usePane} from '../../components/pane/usePane'\n\ninterface UserComponentPaneContentProps {\n children: ReactNode\n}\n\nconst Root = styled(Box)`\n position: relative;\n`\n\nexport function UserComponentPaneContent(props: UserComponentPaneContentProps) {\n const {children} = props\n const {collapsed} = usePane()\n\n return (\n <Root hidden={collapsed} height=\"fill\" overflow=\"auto\">\n {children}\n </Root>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {PaneHeader} from '../../components/pane/PaneHeader'\nimport {PaneHeaderActions} from '../../components/paneHeaderActions/PaneHeaderActions'\nimport {BackLink} from '../../components/paneRouter/BackLink'\nimport {\n type PaneMenuItem,\n type PaneMenuItemGroup,\n type StructureToolPaneActionHandler,\n} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\n\ninterface UserComponentPaneHeaderProps {\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n index: number\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n title: string\n}\n\nexport function UserComponentPaneHeader(props: UserComponentPaneHeaderProps) {\n const {actionHandlers, index, menuItems, menuItemGroups, title} = props\n const {features} = useStructureTool()\n\n if (!menuItems?.length && !title) {\n return null\n }\n\n return (\n <PaneHeader\n actions={\n <PaneHeaderActions\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n actionHandlers={actionHandlers}\n />\n }\n backButton={\n features.backButton &&\n index > 0 && (\n <Button\n as={BackLink}\n data-as=\"a\"\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n tooltipProps={{content: 'Back'}}\n />\n )\n }\n title={title}\n />\n )\n}\n","import {isValidElement, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useI18nText} from 'sanity'\n\nimport {Pane} from '../../components/pane/Pane'\nimport {type StructureToolPaneActionHandler} from '../../types'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {UserComponentPaneContent} from './UserComponentPaneContent'\nimport {UserComponentPaneHeader} from './UserComponentPaneHeader'\n\ntype UserComponentPaneProps = BaseStructureToolPaneProps<'component'>\n\n/**\n * @internal\n */\nexport function UserComponentPane(props: UserComponentPaneProps) {\n const {index, pane, paneKey, ...restProps} = props\n const {\n child,\n component: UserComponent,\n menuItems,\n menuItemGroups,\n type: _unused,\n ...restPane\n } = pane\n const [ref, setRef] = useState<{\n actionHandlers?: Record<string, StructureToolPaneActionHandler>\n } | null>(null)\n const {title = ''} = useI18nText(pane)\n\n const {key, ...componentProps} = {...restProps, ...restPane}\n\n return (\n <Pane id={paneKey} minWidth={320} selected={restProps.isSelected}>\n <UserComponentPaneHeader\n actionHandlers={ref?.actionHandlers}\n index={index}\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n title={title}\n />\n\n <UserComponentPaneContent>\n {isValidElementType(UserComponent) && (\n <UserComponent\n key={key}\n {...componentProps}\n // NOTE: here we're utilizing the function form of refs so setting\n // the ref causes a re-render for `UserComponentPaneHeader`\n ref={setRef as any}\n child={child}\n paneKey={paneKey}\n />\n )}\n {isValidElement(UserComponent) && UserComponent}\n </UserComponentPaneContent>\n </Pane>\n )\n}\n"],"mappings":";;;;;;;;;;;AAUA,MAAMM,OAAOJ,OAAOF,GAAG,CAAC,CAAA,WAAA;;;;AAIxB,SAAOO,yBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAL,aAAmBG,OACnB,EAAAG,cAAoBR,QAAQ,GAACS;CAKpB,OALoBH,EAAA,OAAAJ,YAAAI,EAAA,OAAAE,aAG3BC,KAAA,oBAAC,MAAD;EAAcD,QAAAA;EAAkB,QAAA;EAAgB,UAAA;EAC7CN;CADE,CAAA,GAEEI,EAAA,KAAAJ,UAAAI,EAAA,KAAAE,WAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFPG;AAEO;ACAX,SAAOiB,wBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAT,gBAAAE,OAAAC,WAAAC,gBAAAC,UAAkEE,OAClE,EAAAG,aAAmBZ,iBAAiB;CAEpC,IAAI,CAACK,WAASQ,UAAV,CAAuBN,OAAK,OACvB;CACR,IAAAO;CAAA,AAAAJ,EAAA,OAAAR,kBAAAQ,EAAA,OAAAJ,kBAAAI,EAAA,OAAAL,aAKKS,KAAA,oBAAC,mBAAD;EACaT;EACKC;EACAJ;CAAc,CAAA,GAC9BQ,EAAA,KAAAR,gBAAAQ,EAAA,KAAAJ,gBAAAI,EAAA,KAAAL,WAAAK,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAE,SAAAI,cAAAN,EAAA,OAAAN,SAGFW,KAAAH,SAAQI,cACRZ,QAAQ,KACN,oBAAC,UAAD;EACMR,IAAAA;EACI,WAAA;EACFJ,MAAAA;EACD,MAAA;EACS,cAAA,EAAAyB,SAAU,OAAM;CAAC,CAAA,GAElCP,EAAA,KAAAE,SAAAI,YAAAN,EAAA,KAAAN,OAAAM,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAQ;CAGH,OAHGR,EAAA,OAAAI,MAAAJ,EAAA,OAAAK,MAAAL,EAAA,OAAAH,SAlBLW,KAAA,oBAAC,YAAD;EAEI,SAAAJ;EAOA,YAAAC;EAWKR;CAAK,CAAA,GACZG,EAAA,KAAAI,IAAAJ,EAAA,KAAAK,IAAAL,EAAA,KAAAH,OAAAG,EAAA,MAAAQ,MAAAA,KAAAR,EAAA,KArBFQ;AAqBE;;;;ACpCN,SAAOW,kBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,OAAAC,MAAAC,SAAAC;CAAA,AAAAL,EAAA,OAAAD,SAC6CG,QAAAF,EAAA,IAAAG,OAAAH,EAAA,IAAAI,UAAAJ,EAAA,IAAAK,YAAAL,EAAA,OAAlD,CAAAE,OAAAC,MAAAC,YAAAC,aAA6CN,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,OAAAF,EAAA,KAAAG,MAAAH,EAAA,KAAAI,SAAAJ,EAAA,KAAAK;CAAA,IAAAC,eAAAC,OAAAC,gBAAAC,WAAAC;CAAA,IAAAV,EAAA,OAAAG,MAAA;EAClD,IAAA,EAAAI,OAAAI,IAAAC,WAAAC,IAAAJ,WAAAK,IAAAN,gBAAAO,IAAAC,MAAAC,SAAA,GAAAC,OAOIf;EAAIH,AAPRO,QAAAI,IAAAL,gBAAAO,IAAAJ,YAAAK,IAAAN,iBAAAO,IAAAL,WAAAQ,IAOQlB,EAAA,KAAAG,MAAAH,EAAA,KAAAM,eAAAN,EAAA,KAAAO,OAAAP,EAAA,KAAAQ,gBAAAR,EAAA,KAAAS,WAAAT,EAAA,MAAAU;CAAA,OAAAA,AAAAJ,gBAAAN,EAAA,IAAAO,QAAAP,EAAA,IAAAQ,iBAAAR,EAAA,IAAAS,YAAAT,EAAA,IAAAU,WAAAV,EAAA;CACR,IAAA,CAAAmB,KAAAC,UAAsB/B,SAEZ,IAAI,GACd,EAAAgC,OAAAV,OAAqBpB,YAAYY,IAAI,GAA9BkB,QAAAV,OAAAW,KAAAA,IAAA,KAAAX,IAAUY,gBAAAC;CAAA,AAAAxB,EAAA,QAAAU,YAAAV,EAAA,QAAAK,aAEjB,CAAAmB,QAAAD,kBAAiC;EAAA,GAAIlB;EAAS,GAAKK;CAAQ,GAACV,EAAA,MAAAU,UAAAV,EAAA,MAAAK,WAAAL,EAAA,MAAAuB,gBAAAvB,EAAA,MAAAwB,QAAAD,iBAAAvB,EAAA,KAAAwB,MAAAxB,EAAA;CAKtC,IAAAa,KAAAM,KAAGM,gBAAgBX;CAAA,AAAAd,EAAA,QAAAE,SAAAF,EAAA,QAAAQ,kBAAAR,EAAA,QAAAS,aAAAT,EAAA,QAAAa,MAAAb,EAAA,QAAAqB,SADrCP,KAAA,oBAAC,yBAAD;EACkB,gBAAAD;EACTX;EACIO;EACKD;EACTa;CAAK,CAAA,GACZrB,EAAA,MAAAE,OAAAF,EAAA,MAAAQ,gBAAAR,EAAA,MAAAS,WAAAT,EAAA,MAAAa,IAAAb,EAAA,MAAAqB,OAAArB,EAAA,MAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,QAAAM,iBAAAN,EAAA,QAAAO,SAAAP,EAAA,QAAAuB,kBAAAvB,EAAA,QAAAwB,OAAAxB,EAAA,QAAAI,WAGCW,KAAAzB,mBAAmBgB,aAUpB,KATE,oBAAC,eAAD;EACU,GACJiB;EAGC,KAAAH;EACEb;EACEH;CAAO,GANXoB,GAMW,GAEnBxB,EAAA,MAAAM,eAAAN,EAAA,MAAAO,OAAAP,EAAA,MAAAuB,gBAAAvB,EAAA,MAAAwB,KAAAxB,EAAA,MAAAI,SAAAJ,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,QAAAM,gBAC8CY,KAAAlB,EAAA,OAA9CkB,KAAA9B,eAAekB,aAA8B,KAA7CA,eAA8CN,EAAA,MAAAM,eAAAN,EAAA,MAAAkB;CAAA,IAAAQ;CAAA,AAAA1B,EAAA,QAAAe,MAAAf,EAAA,QAAAkB,MAZjDQ,KAAA,qBAAC,0BAAD,EAAA,UAAA,CACGX,IAWAG,EAZsB,EAAA,CAAA,GAaElB,EAAA,MAAAe,IAAAf,EAAA,MAAAkB,IAAAlB,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CACtB,OADsB3B,EAAA,QAAAI,WAAAJ,EAAA,QAAAK,UAAAuB,cAAA5B,EAAA,QAAAc,MAAAd,EAAA,QAAA0B,MAtB7BC,KAAA,qBAAC,MAAD;EAAUvB,IAAAA;EAAmB,UAAA;EAAe,UAAAC,UAASuB;EAArD,UAAA,CACEd,IAQAY,EATG;KAuBE1B,EAAA,MAAAI,SAAAJ,EAAA,MAAAK,UAAAuB,YAAA5B,EAAA,MAAAc,IAAAd,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KAvBP2B;AAuBO"}
@@ -1,6 +1,6 @@
1
- import { i as useClient } from "./studioClient--dm-G_7a.js";
2
- import { n as debugWithName, t as useTimeZone } from "./useTimeZone-BoKWaSj6.js";
3
- import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-DGpt_kKu.js";
1
+ import { i as useClient } from "./studioClient-CJOrhmsT.js";
2
+ import { n as debugWithName, t as useTimeZone } from "./useTimeZone-DceoecRg.js";
3
+ import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-CzQXgTsk.js";
4
4
  import { useEffect } from "react";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -428,4 +428,4 @@ function useValidationState(markers) {
428
428
  }
429
429
  export { TOOL_TITLE as _, useScheduleOperation as a, DOCUMENT_HAS_ERRORS_TEXT as c, SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE as d, SCHEDULED_PUBLISHING_TOOL_NAME as f, SCHEDULE_STATE_DICTIONARY as g, SCHEDULE_FILTERS as h, usePollSchedules as i, DOCUMENT_HAS_WARNINGS_TEXT as l, SCHEDULE_FAILED_TEXT as m, useValidationState as n, sortByExecuteDate as o, SCHEDULE_ACTION_DICTIONARY as p, usePublishedId as r, getLastExecuteDate as s, EMPTY_VALIDATION_STATUS as t, RELEASES_DOCS_URL as u };
430
430
 
431
- //# sourceMappingURL=validationUtils-CX9mO1s1.js.map
431
+ //# sourceMappingURL=validationUtils-BefUKU_E.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtils-CX9mO1s1.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-BefUKU_E.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.7.0";
9
+ const SANITY_VERSION = buildVersion || "6.8.0-next.13+c15ea83bab";
10
10
  export { SANITY_VERSION as t };
11
11
 
12
- //# sourceMappingURL=version-CUL0S-Ix.js.map
12
+ //# sourceMappingURL=version-D8FgjwBF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-CUL0S-Ix.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-D8FgjwBF.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.7.0",
3
+ "version": "6.8.0-next.13",
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",
@@ -156,11 +156,11 @@
156
156
  "uuid": "^14.0.1",
157
157
  "web-vitals": "^6.0.0",
158
158
  "xstate": "^5.32.5",
159
- "@sanity/diff": "6.7.0",
160
- "@sanity/mutator": "6.7.0",
161
- "@sanity/schema": "6.7.0",
162
- "@sanity/types": "6.7.0",
163
- "@sanity/util": "6.7.0"
159
+ "@sanity/diff": "6.8.0-next.13+c15ea83bab",
160
+ "@sanity/mutator": "6.8.0-next.13+c15ea83bab",
161
+ "@sanity/types": "6.8.0-next.13+c15ea83bab",
162
+ "@sanity/schema": "6.8.0-next.13+c15ea83bab",
163
+ "@sanity/util": "6.8.0-next.13+c15ea83bab"
164
164
  },
165
165
  "devDependencies": {
166
166
  "@rolldown/plugin-babel": "^0.2.3",
@@ -200,10 +200,10 @@
200
200
  "vitest": "^4.1.10",
201
201
  "vitest-browser-react": "^2.2.0",
202
202
  "vitest-package-exports": "^1.2.0",
203
- "@repo/package.bundle": "6.7.0",
204
- "@repo/test-config": "6.7.0",
205
- "@repo/tsconfig": "6.7.0",
206
- "@repo/tsdown.config": "6.7.0"
203
+ "@repo/test-config": "6.8.0-next.13+c15ea83bab",
204
+ "@repo/tsconfig": "6.8.0-next.13+c15ea83bab",
205
+ "@repo/package.bundle": "6.8.0-next.13+c15ea83bab",
206
+ "@repo/tsdown.config": "6.8.0-next.13+c15ea83bab"
207
207
  },
208
208
  "peerDependencies": {
209
209
  "react": "^19.2.2",
@@ -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"}