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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/lib/{AddonDatasetProvider-DKjnqxwO.js → AddonDatasetProvider-Cp0gK33v.js} +2 -2
  2. package/lib/{AddonDatasetProvider-DKjnqxwO.js.map → AddonDatasetProvider-Cp0gK33v.js.map} +1 -1
  3. package/lib/{CalendarFilter-B5Bb9eze.js → CalendarFilter-Cgz5picy.js} +3 -3
  4. package/lib/{CalendarFilter-B5Bb9eze.js.map → CalendarFilter-Cgz5picy.js.map} +1 -1
  5. package/lib/{CommandList-Q4ua5avE.js → CommandList-BeDeX_Tr.js} +23 -6
  6. package/lib/CommandList-BeDeX_Tr.js.map +1 -0
  7. package/lib/{CommentsDocumentLayout-Brt2OR56.js → CommentsDocumentLayout-BJMRXrxl.js} +2 -2
  8. package/lib/{CommentsDocumentLayout-Brt2OR56.js.map → CommentsDocumentLayout-BJMRXrxl.js.map} +1 -1
  9. package/lib/{CommentsField-Cmmta6uT.js → CommentsField-DV6bhirZ.js} +3 -3
  10. package/lib/{CommentsField-Cmmta6uT.js.map → CommentsField-DV6bhirZ.js.map} +1 -1
  11. package/lib/{CommentsInput-C7Kq5XMu.js → CommentsInput-DQ4WCdZJ.js} +5 -5
  12. package/lib/{CommentsInput-C7Kq5XMu.js.map → CommentsInput-DQ4WCdZJ.js.map} +1 -1
  13. package/lib/{CommentsInspector-H5CpN_XH.js → CommentsInspector-PkVZw8uv.js} +5 -5
  14. package/lib/{CommentsInspector-H5CpN_XH.js.map → CommentsInspector-PkVZw8uv.js.map} +1 -1
  15. package/lib/{CommentsListItem-x7FKz_CM.js → CommentsListItem-BjWNEXPU.js} +3 -3
  16. package/lib/{CommentsListItem-x7FKz_CM.js.map → CommentsListItem-BjWNEXPU.js.map} +1 -1
  17. package/lib/{CommentsSelectedPathProvider-Bt8q7wL8.js → CommentsSelectedPathProvider-x5f1q0eW.js} +3 -3
  18. package/lib/{CommentsSelectedPathProvider-Bt8q7wL8.js.map → CommentsSelectedPathProvider-x5f1q0eW.js.map} +1 -1
  19. package/lib/{CommentsStudioLayout-BTJ8Jz1o.js → CommentsStudioLayout-CxZq2lGu.js} +4 -4
  20. package/lib/{CommentsStudioLayout-BTJ8Jz1o.js.map → CommentsStudioLayout-CxZq2lGu.js.map} +1 -1
  21. package/lib/{PaneContainer-D8iNUpZk.js → PaneContainer-B_cWaSSe.js} +8 -8
  22. package/lib/{PaneContainer-D8iNUpZk.js.map → PaneContainer-B_cWaSSe.js.map} +1 -1
  23. package/lib/{PresentationToolGrantsCheck-CxqDuu8I.js → PresentationToolGrantsCheck-CITNu5DG.js} +14 -6
  24. package/lib/PresentationToolGrantsCheck-CITNu5DG.js.map +1 -0
  25. package/lib/{ReleasesMetadataProvider-CZ8jrkBT.js → ReleasesMetadataProvider-CpYsTC5J.js} +2 -2
  26. package/lib/{ReleasesMetadataProvider-CZ8jrkBT.js.map → ReleasesMetadataProvider-CpYsTC5J.js.map} +1 -1
  27. package/lib/{ReleasesNav-BmGRLcrk.js → ReleasesNav-BuqDytPb.js} +59 -19
  28. package/lib/ReleasesNav-BuqDytPb.js.map +1 -0
  29. package/lib/{ReleasesStudioLayout-6V5oDb3h.js → ReleasesStudioLayout-mJZnbUum.js} +8 -8
  30. package/lib/{ReleasesStudioLayout-6V5oDb3h.js.map → ReleasesStudioLayout-mJZnbUum.js.map} +1 -1
  31. package/lib/{ReleasesTool-CMABMGcE.js → ReleasesTool-BFOV2VEc.js} +14 -14
  32. package/lib/{ReleasesTool-CMABMGcE.js.map → ReleasesTool-BFOV2VEc.js.map} +1 -1
  33. package/lib/{SchedulePublishingStudioLayout-BJDA4FBy.js → SchedulePublishingStudioLayout-D2ptE43I.js} +3 -3
  34. package/lib/{SchedulePublishingStudioLayout-BJDA4FBy.js.map → SchedulePublishingStudioLayout-D2ptE43I.js.map} +1 -1
  35. package/lib/{SchedulePublishingUpsellProvider-DfmpnFZz.js → SchedulePublishingUpsellProvider-DvCfqtdZ.js} +2 -2
  36. package/lib/{SchedulePublishingUpsellProvider-DfmpnFZz.js.map → SchedulePublishingUpsellProvider-DvCfqtdZ.js.map} +1 -1
  37. package/lib/{ScheduledPublishingEnabledProvider-C2jEx3t4.js → ScheduledPublishingEnabledProvider-B5yA7hHi.js} +3 -3
  38. package/lib/{ScheduledPublishingEnabledProvider-C2jEx3t4.js.map → ScheduledPublishingEnabledProvider-B5yA7hHi.js.map} +1 -1
  39. package/lib/{SearchProvider-Dk7IfeRS.js → SearchProvider-Cpl3WUyR.js} +25 -25
  40. package/lib/SearchProvider-Cpl3WUyR.js.map +1 -0
  41. package/lib/{SingleDocReleaseLayout-DW02L2zA.js → SingleDocReleaseLayout-CfPCP1Ur.js} +2 -2
  42. package/lib/{SingleDocReleaseLayout-DW02L2zA.js.map → SingleDocReleaseLayout-CfPCP1Ur.js.map} +1 -1
  43. package/lib/{SingleDocReleaseUpsellProvider-9OXN223n.js → SingleDocReleaseUpsellProvider-4ib7kMdI.js} +4 -4
  44. package/lib/{SingleDocReleaseUpsellProvider-9OXN223n.js.map → SingleDocReleaseUpsellProvider-4ib7kMdI.js.map} +1 -1
  45. package/lib/{TasksStudioActiveToolLayout-grF1qQvq.js → TasksStudioActiveToolLayout-lrH8y1Kh.js} +11 -11
  46. package/lib/{TasksStudioActiveToolLayout-grF1qQvq.js.map → TasksStudioActiveToolLayout-lrH8y1Kh.js.map} +1 -1
  47. package/lib/{TasksStudioLayout-Dq72bdM2.js → TasksStudioLayout-CITzoP_1.js} +5 -5
  48. package/lib/{TasksStudioLayout-Dq72bdM2.js.map → TasksStudioLayout-CITzoP_1.js.map} +1 -1
  49. package/lib/{Tool-DNTYDreC.js → Tool-DxqXi1AF.js} +12 -12
  50. package/lib/{Tool-DNTYDreC.js.map → Tool-DxqXi1AF.js.map} +1 -1
  51. package/lib/{UnpublishVersionDialog-B0kX1dt6.js → UnpublishVersionDialog-VZflky9U.js} +4 -4
  52. package/lib/{UnpublishVersionDialog-B0kX1dt6.js.map → UnpublishVersionDialog-VZflky9U.js.map} +1 -1
  53. package/lib/{UpsellDialog-B3IbZqLA.js → UpsellDialog-BmQSjdJg.js} +2 -2
  54. package/lib/{UpsellDialog-B3IbZqLA.js.map → UpsellDialog-BmQSjdJg.js.map} +1 -1
  55. package/lib/{VariantsStudioNavbar-N-cvStJh.js → VariantsStudioNavbar-HsA97lVy.js} +7 -27
  56. package/lib/VariantsStudioNavbar-HsA97lVy.js.map +1 -0
  57. package/lib/{VariantsTool-Bj3RjgBN.js → VariantsTool-rOcVMkln.js} +7 -7
  58. package/lib/{VariantsTool-Bj3RjgBN.js.map → VariantsTool-rOcVMkln.js.map} +1 -1
  59. package/lib/{WorkspaceLoader-BZD0-fj6.js → WorkspaceLoader-kepBjrsn.js} +25 -25
  60. package/lib/{WorkspaceLoader-BZD0-fj6.js.map → WorkspaceLoader-kepBjrsn.js.map} +1 -1
  61. package/lib/_createContext.js +1 -1
  62. package/lib/_singletons.d.ts +1 -1
  63. package/lib/{buildTextSelectionFromFragment-BXiSMql4.js → buildTextSelectionFromFragment-Dj_WBTDa.js} +3 -3
  64. package/lib/{buildTextSelectionFromFragment-BXiSMql4.js.map → buildTextSelectionFromFragment-Dj_WBTDa.js.map} +1 -1
  65. package/lib/{datastores-CFWEadl-.js → datastores-CrRYBoDP.js} +12 -2
  66. package/lib/datastores-CrRYBoDP.js.map +1 -0
  67. package/lib/desk.d.ts +1 -1
  68. package/lib/desk.js +2 -2
  69. package/lib/{index-Dhee2Ms1.d.ts → index-Bic9X2KM.d.ts} +43 -11
  70. package/lib/index.d.ts +2 -2
  71. package/lib/index.js +642 -258
  72. package/lib/index.js.map +1 -1
  73. package/lib/{inputResolver-BHxsuFDP.js → inputResolver-Czq6o5Gh.js} +4 -4
  74. package/lib/{inputResolver-BHxsuFDP.js.map → inputResolver-Czq6o5Gh.js.map} +1 -1
  75. package/lib/{list-CwENPuWS.js → list-BgF8Q_09.js} +2 -2
  76. package/lib/{list-CwENPuWS.js.map → list-BgF8Q_09.js.map} +1 -1
  77. package/lib/{navigation.telemetry-C6drHR5a.js → navigation.telemetry-DSG23KnM.js} +7 -7
  78. package/lib/{navigation.telemetry-C6drHR5a.js.map → navigation.telemetry-DSG23KnM.js.map} +1 -1
  79. package/lib/pane-BXoiwAkI.js +2 -0
  80. package/lib/pane-W85qO-M2.js +2 -0
  81. package/lib/{plugin-Cr5EXfrh.js → plugin-CLeQ5x8I.js} +4 -4
  82. package/lib/{plugin-Cr5EXfrh.js.map → plugin-CLeQ5x8I.js.map} +1 -1
  83. package/lib/{plugin-C1y-_vWr.js → plugin-CgIJubgG.js} +3 -3
  84. package/lib/{plugin-C1y-_vWr.js.map → plugin-CgIJubgG.js.map} +1 -1
  85. package/lib/{plugin-BHRmn24Q.js → plugin-CqWxiAAn.js} +6 -6
  86. package/lib/{plugin-BHRmn24Q.js.map → plugin-CqWxiAAn.js.map} +1 -1
  87. package/lib/{plugin-DkiEMpfN.js → plugin-DkdjF8sO.js} +5 -5
  88. package/lib/{plugin-DkiEMpfN.js.map → plugin-DkdjF8sO.js.map} +1 -1
  89. package/lib/presentation.js +1 -1
  90. package/lib/{scheduleItem-u5-b4stD.js → scheduleItem-CqReiIMI.js} +8 -8
  91. package/lib/{scheduleItem-u5-b4stD.js.map → scheduleItem-CqReiIMI.js.map} +1 -1
  92. package/lib/{schedules-D0WwNN6x.js → schedules-DoZXofxj.js} +3 -3
  93. package/lib/{schedules-D0WwNN6x.js.map → schedules-DoZXofxj.js.map} +1 -1
  94. package/lib/structure.js +2 -2
  95. package/lib/{structureTool-BCCGiqpF.js → structureTool-By2eJI8F.js} +60 -49
  96. package/lib/structureTool-By2eJI8F.js.map +1 -0
  97. package/lib/{structureTool-B5ch7u4I.js → structureTool-UGWPEr2I.js} +6 -6
  98. package/lib/{structureTool-B5ch7u4I.js.map → structureTool-UGWPEr2I.js.map} +1 -1
  99. package/lib/{studioClient-DvoDxN44.js → studioClient-DqAy4dnu.js} +2 -2
  100. package/lib/{studioClient-DvoDxN44.js.map → studioClient-DqAy4dnu.js.map} +1 -1
  101. package/lib/{useBundleDocuments-CWvP-dZI.js → useBundleDocuments-Dyop3VGZ.js} +15 -13
  102. package/lib/useBundleDocuments-Dyop3VGZ.js.map +1 -0
  103. package/lib/{useComments-KoRXRvW7.js → useComments-CzNBSPgQ.js} +3 -3
  104. package/lib/{useComments-KoRXRvW7.js.map → useComments-CzNBSPgQ.js.map} +1 -1
  105. package/lib/{useCommentsTelemetry-LlKtxi5d.js → useCommentsTelemetry-CkplhYJa.js} +3 -3
  106. package/lib/{useCommentsTelemetry-LlKtxi5d.js.map → useCommentsTelemetry-CkplhYJa.js.map} +1 -1
  107. package/lib/{useDocumentPreviewValues-DcVumcdT.js → useDocumentPreviewValues-BPzq1mWh.js} +3 -3
  108. package/lib/{useDocumentPreviewValues-DcVumcdT.js.map → useDocumentPreviewValues-BPzq1mWh.js.map} +1 -1
  109. package/lib/{useFeatureEnabled-D7BsN6xF.js → useFeatureEnabled-B_ywe2up.js} +2 -2
  110. package/lib/{useFeatureEnabled-D7BsN6xF.js.map → useFeatureEnabled-B_ywe2up.js.map} +1 -1
  111. package/lib/{useFieldActions-NrjLdjo8.js → useFieldActions-DbRTTr6-.js} +2 -2
  112. package/lib/{useFieldActions-NrjLdjo8.js.map → useFieldActions-DbRTTr6-.js.map} +1 -1
  113. package/lib/{useReleasesToolAvailable-Cki52QI6.js → useReleasesToolAvailable-CUvya3HF.js} +3 -3
  114. package/lib/{useReleasesToolAvailable-Cki52QI6.js.map → useReleasesToolAvailable-CUvya3HF.js.map} +1 -1
  115. package/lib/{useScheduledDraftMenuActions-DIa5I8rU.js → useScheduledDraftMenuActions-BBEMJkNE.js} +5 -5
  116. package/lib/{useScheduledDraftMenuActions-DIa5I8rU.js.map → useScheduledDraftMenuActions-BBEMJkNE.js.map} +1 -1
  117. package/lib/{useSetVariant-MvLHJC9A.js → useSetVariant-Cz8brFbQ.js} +3 -3
  118. package/lib/{useSetVariant-MvLHJC9A.js.map → useSetVariant-Cz8brFbQ.js.map} +1 -1
  119. package/lib/{useStudioUrl-DN_xMGIS.js → useStudioUrl-DFAbTA0R.js} +5 -5
  120. package/lib/{useStudioUrl-DN_xMGIS.js.map → useStudioUrl-DFAbTA0R.js.map} +1 -1
  121. package/lib/{useTimeZone-B5fBFjsR.js → useTimeZone-CNjAZCdC.js} +2 -2
  122. package/lib/{useTimeZone-B5fBFjsR.js.map → useTimeZone-CNjAZCdC.js.map} +1 -1
  123. package/lib/{userComponent-BQj9BWzn.js → userComponent-MPULaxdQ.js} +2 -2
  124. package/lib/{userComponent-BQj9BWzn.js.map → userComponent-MPULaxdQ.js.map} +1 -1
  125. package/lib/{validationUtils-RTzFL-p1.js → validationUtils-C9y0bJZd.js} +4 -4
  126. package/lib/{validationUtils-RTzFL-p1.js.map → validationUtils-C9y0bJZd.js.map} +1 -1
  127. package/lib/{version-CY300aPw.js → version-BZCsk4ue.js} +2 -2
  128. package/lib/{version-CY300aPw.js.map → version-BZCsk4ue.js.map} +1 -1
  129. package/package.json +12 -11
  130. package/lib/CommandList-Q4ua5avE.js.map +0 -1
  131. package/lib/Delay-DjgiAi06.js +0 -21
  132. package/lib/Delay-DjgiAi06.js.map +0 -1
  133. package/lib/PresentationToolGrantsCheck-CxqDuu8I.js.map +0 -1
  134. package/lib/ReleasesNav-BmGRLcrk.js.map +0 -1
  135. package/lib/SearchProvider-Dk7IfeRS.js.map +0 -1
  136. package/lib/VariantsStudioNavbar-N-cvStJh.js.map +0 -1
  137. package/lib/datastores-CFWEadl-.js.map +0 -1
  138. package/lib/pane-CEegQ2Kh.js +0 -2
  139. package/lib/pane-DHrjuFiG.js +0 -2
  140. package/lib/structureTool-BCCGiqpF.js.map +0 -1
  141. package/lib/useBundleDocuments-CWvP-dZI.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { r as DATE_FORMAT } from "./useTimeZone-B5fBFjsR.js";
2
- import { i as usePollSchedules, n as useValidationState, r as usePublishedId } from "./validationUtils-RTzFL-p1.js";
3
- import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-C2jEx3t4.js";
1
+ import { r as DATE_FORMAT } from "./useTimeZone-CNjAZCdC.js";
2
+ import { i as usePollSchedules, n as useValidationState, r as usePublishedId } from "./validationUtils-C9y0bJZd.js";
3
+ import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-B5yA7hHi.js";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Badge, Box, Card, Flex, Inline, Stack, Text } from "@sanity/ui";
@@ -157,4 +157,4 @@ function getRootType(type) {
157
157
  }
158
158
  export { DocumentBannerInput };
159
159
 
160
- //# sourceMappingURL=inputResolver-BHxsuFDP.js.map
160
+ //# sourceMappingURL=inputResolver-Czq6o5Gh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputResolver-BHxsuFDP.js","names":["CalendarIcon","WarningOutlineIcon","ValidationMarker","Badge","Box","Card","Flex","Inline","Stack","Text","format","useScheduledPublishingEnabled","DATE_FORMAT","DOCUMENT_HAS_ERRORS_TEXT","usePollSchedules","usePublishedId","useValidationState","Props","id","markers","ScheduleBanner","props","$","_c","publishedId","hasError","t0","documentId","state","schedules","mode","hasSchedules","length","t1","t2","t3","opacity","undefined","t4","Symbol","for","t5","fontWeight","t6","map","_temp","t7","t8","t9","t10","t11","schedule","executeAt","formattedDateTime","Date","LARGE","action","ValidationMarker","PropsWithChildren","useMemo","InputProps","ScheduleBanner","ScheduledDocumentInput","props","$","_c","value","validation","children","doc","_id","t0","map","_temp","markers","t1","t2","v","level","path","item","message","ComponentType","InputProps","ScheduledDocumentInput","DocumentBannerInput","props","$","_c","schemaType","rootType","getRootType","name","t0","renderDefault","t1","type"],"sources":["../src/core/scheduled-publishing/components/documentWrapper/ScheduleBanner.tsx","../src/core/scheduled-publishing/components/documentWrapper/ScheduledDocumentInput.tsx","../src/core/scheduled-publishing/plugin/inputResolver.tsx"],"sourcesContent":["import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {type ValidationMarker} from '@sanity/types'\nimport {Badge, Box, Card, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns/format'\n\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {DATE_FORMAT} from '../../../studio/timezones/constants'\nimport {DOCUMENT_HAS_ERRORS_TEXT} from '../../constants'\nimport usePollSchedules from '../../hooks/usePollSchedules'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {useValidationState} from '../../utils/validationUtils'\n\ninterface Props {\n id: string\n markers: ValidationMarker[]\n}\n\nexport function ScheduleBanner(props: Props) {\n const {id, markers} = props\n const publishedId = usePublishedId(id)\n const {hasError} = useValidationState(markers)\n const {schedules} = usePollSchedules({documentId: publishedId, state: 'scheduled'})\n const {mode} = useScheduledPublishingEnabled()\n\n const hasSchedules = schedules.length > 0\n if (!hasSchedules) {\n return null\n }\n\n return (\n <Box marginBottom={4}>\n {mode === 'upsell' && (\n <Card tone=\"caution\" padding={3} radius={3} shadow={1} marginBottom={3}>\n <Flex align=\"center\" gap={3} padding={1}>\n <Text muted size={1}>\n <WarningOutlineIcon />\n </Text>\n <Text muted size={1} weight=\"medium\">\n Scheduled publishing is not available on your current plan\n </Text>\n </Flex>\n </Card>\n )}\n <Card\n padding={3}\n radius={1}\n shadow={1}\n tone={hasError ? 'critical' : 'primary'}\n style={mode === 'upsell' ? {opacity: 0.7} : undefined}\n >\n <Stack space={2}>\n <Flex align=\"center\" gap={3} marginBottom={1} padding={1}>\n <Text muted size={1}>\n <CalendarIcon />\n </Text>\n <Text muted size={1}>\n <span style={{fontWeight: 600}}>Upcoming schedule</span> (local time)\n </Text>\n </Flex>\n\n <Stack space={2}>\n {schedules.map((schedule) => {\n if (!schedule.executeAt) {\n return null\n }\n const formattedDateTime = format(new Date(schedule.executeAt), DATE_FORMAT.LARGE)\n return (\n <Inline key={schedule.id} space={2}>\n <Text muted size={1}>\n {formattedDateTime}\n </Text>\n {/* HACK: Hide non unpublish schedules to maintain layout */}\n <Flex style={{opacity: schedule.action === 'unpublish' ? 1 : 0}}>\n <Badge fontSize={0} mode=\"outline\">\n {schedule.action}\n </Badge>\n </Flex>\n </Inline>\n )\n })}\n </Stack>\n\n {hasError && (\n <Box marginTop={3}>\n <Text muted size={1} weight=\"regular\">\n {DOCUMENT_HAS_ERRORS_TEXT}\n </Text>\n </Box>\n )}\n </Stack>\n </Card>\n </Box>\n )\n}\n","import {type ValidationMarker} from '@sanity/types'\nimport {type PropsWithChildren, useMemo} from 'react'\n\nimport {type InputProps} from '../../../form/types/inputProps'\nimport {ScheduleBanner} from './ScheduleBanner'\n\nexport function ScheduledDocumentInput(props: PropsWithChildren<InputProps>) {\n const {value, validation, children} = props\n const doc: {_id?: string} = value as unknown as {_id: string}\n\n const markers: ValidationMarker[] = useMemo(\n () =>\n validation.map((v) => ({\n level: v.level,\n path: v.path,\n item: {message: v.message},\n message: v.message,\n })),\n [validation],\n )\n\n return (\n <>\n {doc?._id ? <ScheduleBanner id={doc._id} markers={markers} /> : null}\n {children}\n </>\n )\n}\n","import {type ComponentType} from 'react'\n\nimport {type InputProps} from '../../form/types/inputProps'\nimport {ScheduledDocumentInput} from '../components/documentWrapper/ScheduledDocumentInput'\n\nexport const DocumentBannerInput: ComponentType<InputProps> = (props) => {\n const {schemaType} = props\n const rootType = getRootType(schemaType)\n if (rootType.name === 'document') {\n return <ScheduledDocumentInput {...props}>{props.renderDefault(props)}</ScheduledDocumentInput>\n }\n return props.renderDefault(props)\n}\n\nfunction getRootType(type: any): any {\n if (!type.type) {\n return type\n }\n return getRootType(type.type)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"inputResolver-Czq6o5Gh.js","names":["CalendarIcon","WarningOutlineIcon","ValidationMarker","Badge","Box","Card","Flex","Inline","Stack","Text","format","useScheduledPublishingEnabled","DATE_FORMAT","DOCUMENT_HAS_ERRORS_TEXT","usePollSchedules","usePublishedId","useValidationState","Props","id","markers","ScheduleBanner","props","$","_c","publishedId","hasError","t0","documentId","state","schedules","mode","hasSchedules","length","t1","t2","t3","opacity","undefined","t4","Symbol","for","t5","fontWeight","t6","map","_temp","t7","t8","t9","t10","t11","schedule","executeAt","formattedDateTime","Date","LARGE","action","ValidationMarker","PropsWithChildren","useMemo","InputProps","ScheduleBanner","ScheduledDocumentInput","props","$","_c","value","validation","children","doc","_id","t0","map","_temp","markers","t1","t2","v","level","path","item","message","ComponentType","InputProps","ScheduledDocumentInput","DocumentBannerInput","props","$","_c","schemaType","rootType","getRootType","name","t0","renderDefault","t1","type"],"sources":["../src/core/scheduled-publishing/components/documentWrapper/ScheduleBanner.tsx","../src/core/scheduled-publishing/components/documentWrapper/ScheduledDocumentInput.tsx","../src/core/scheduled-publishing/plugin/inputResolver.tsx"],"sourcesContent":["import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {type ValidationMarker} from '@sanity/types'\nimport {Badge, Box, Card, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns/format'\n\nimport {useScheduledPublishingEnabled} from '../../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {DATE_FORMAT} from '../../../studio/timezones/constants'\nimport {DOCUMENT_HAS_ERRORS_TEXT} from '../../constants'\nimport usePollSchedules from '../../hooks/usePollSchedules'\nimport {usePublishedId} from '../../hooks/usePublishedId'\nimport {useValidationState} from '../../utils/validationUtils'\n\ninterface Props {\n id: string\n markers: ValidationMarker[]\n}\n\nexport function ScheduleBanner(props: Props) {\n const {id, markers} = props\n const publishedId = usePublishedId(id)\n const {hasError} = useValidationState(markers)\n const {schedules} = usePollSchedules({documentId: publishedId, state: 'scheduled'})\n const {mode} = useScheduledPublishingEnabled()\n\n const hasSchedules = schedules.length > 0\n if (!hasSchedules) {\n return null\n }\n\n return (\n <Box marginBottom={4}>\n {mode === 'upsell' && (\n <Card tone=\"caution\" padding={3} radius={3} shadow={1} marginBottom={3}>\n <Flex align=\"center\" gap={3} padding={1}>\n <Text muted size={1}>\n <WarningOutlineIcon />\n </Text>\n <Text muted size={1} weight=\"medium\">\n Scheduled publishing is not available on your current plan\n </Text>\n </Flex>\n </Card>\n )}\n <Card\n padding={3}\n radius={1}\n shadow={1}\n tone={hasError ? 'critical' : 'primary'}\n style={mode === 'upsell' ? {opacity: 0.7} : undefined}\n >\n <Stack space={2}>\n <Flex align=\"center\" gap={3} marginBottom={1} padding={1}>\n <Text muted size={1}>\n <CalendarIcon />\n </Text>\n <Text muted size={1}>\n <span style={{fontWeight: 600}}>Upcoming schedule</span> (local time)\n </Text>\n </Flex>\n\n <Stack space={2}>\n {schedules.map((schedule) => {\n if (!schedule.executeAt) {\n return null\n }\n const formattedDateTime = format(new Date(schedule.executeAt), DATE_FORMAT.LARGE)\n return (\n <Inline key={schedule.id} space={2}>\n <Text muted size={1}>\n {formattedDateTime}\n </Text>\n {/* HACK: Hide non unpublish schedules to maintain layout */}\n <Flex style={{opacity: schedule.action === 'unpublish' ? 1 : 0}}>\n <Badge fontSize={0} mode=\"outline\">\n {schedule.action}\n </Badge>\n </Flex>\n </Inline>\n )\n })}\n </Stack>\n\n {hasError && (\n <Box marginTop={3}>\n <Text muted size={1} weight=\"regular\">\n {DOCUMENT_HAS_ERRORS_TEXT}\n </Text>\n </Box>\n )}\n </Stack>\n </Card>\n </Box>\n )\n}\n","import {type ValidationMarker} from '@sanity/types'\nimport {type PropsWithChildren, useMemo} from 'react'\n\nimport {type InputProps} from '../../../form/types/inputProps'\nimport {ScheduleBanner} from './ScheduleBanner'\n\nexport function ScheduledDocumentInput(props: PropsWithChildren<InputProps>) {\n const {value, validation, children} = props\n const doc: {_id?: string} = value as unknown as {_id: string}\n\n const markers: ValidationMarker[] = useMemo(\n () =>\n validation.map((v) => ({\n level: v.level,\n path: v.path,\n item: {message: v.message},\n message: v.message,\n })),\n [validation],\n )\n\n return (\n <>\n {doc?._id ? <ScheduleBanner id={doc._id} markers={markers} /> : null}\n {children}\n </>\n )\n}\n","import {type ComponentType} from 'react'\n\nimport {type InputProps} from '../../form/types/inputProps'\nimport {ScheduledDocumentInput} from '../components/documentWrapper/ScheduledDocumentInput'\n\nexport const DocumentBannerInput: ComponentType<InputProps> = (props) => {\n const {schemaType} = props\n const rootType = getRootType(schemaType)\n if (rootType.name === 'document') {\n return <ScheduledDocumentInput {...props}>{props.renderDefault(props)}</ScheduledDocumentInput>\n }\n return props.renderDefault(props)\n}\n\nfunction getRootType(type: any): any {\n if (!type.type) {\n return type\n }\n return getRootType(type.type)\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { a as Button$1 } from "./MenuItem-B0ry3E4J.js";
2
- import { d as PaneItem, l as BackLink, u as PaneHeaderActions } from "./structureTool-BCCGiqpF.js";
2
+ import { d as PaneItem, l as BackLink, u as PaneHeaderActions } from "./structureTool-By2eJI8F.js";
3
3
  import { a as usePaneLayout, i as Pane, n as PaneHeader, r as usePane, t as useStructureTool } from "./useStructureTool-CX6y4EKI.js";
4
4
  import { i as PaneContent } from "./constants-CEn05wvv.js";
5
5
  import { c } from "react/compiler-runtime";
@@ -150,4 +150,4 @@ function ListPane(props) {
150
150
  }
151
151
  export { ListPane as default };
152
152
 
153
- //# sourceMappingURL=list-CwENPuWS.js.map
153
+ //# sourceMappingURL=list-BgF8Q_09.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-CwENPuWS.js","names":["Box","Text","useCallback","CommandList","CommandListItemContext","GeneralPreviewLayoutKey","useGetI18nText","useI18nText","styled","PaneContent","usePaneLayout","PaneItem","PaneListItem","PaneListItemDivider","ListPaneContentProps","childItemId","isActive","items","layout","showIcons","title","DividerContainer","Divider","hr","DividerTitle","DividerItemProps","item","DividerItem","t0","$","_c","dividerTitle","t1","t2","Symbol","for","t3","ListPaneContent","props","collapsed","layoutCollapsed","filter","_temp","getI18nText","itemIndex","find","_","i","type","getItemDisabled","item_0","displayOptions","showIcon","shouldShowIconForItem","item_1","ctx","virtualIndex","itemIndex_0","pressed","id","selected","value","_id","schemaType","_type","name","undefined","icon","renderItem","t4","t5","length","t6","ArrowLeftIcon","Button","PaneHeader","usePane","PaneHeaderActions","BackLink","PaneMenuItem","PaneMenuItemGroup","useStructureTool","ListPaneHeaderProps","index","menuItems","menuItemGroups","title","ListPaneHeader","t0","$","_c","features","collapsed","isLast","tabIndex","t1","t2","backButton","content","t3","Card","Code","useI18nText","Pane","_DEBUG","BaseStructureToolPaneProps","ListPaneContent","ListPaneHeader","ListPaneProps","ListPane","props","$","_c","childItemId","index","isActive","isSelected","pane","paneKey","defaultLayout","displayOptions","items","menuItems","menuItemGroups","showIcons","title","t0","source","t1","t2","t3"],"sources":["../src/structure/panes/list/ListPaneContent.tsx","../src/structure/panes/list/ListPaneHeader.tsx","../src/structure/panes/list/ListPane.tsx"],"sourcesContent":["import {Box, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n CommandList,\n type CommandListItemContext,\n type GeneralPreviewLayoutKey,\n useGetI18nText,\n useI18nText,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PaneContent} from '../../components/pane/PaneContent'\nimport {usePaneLayout} from '../../components/pane/usePaneLayout'\nimport {PaneItem} from '../../components/paneItem/PaneItem'\nimport {type PaneListItem, type PaneListItemDivider} from '../../types'\n\ninterface ListPaneContentProps {\n childItemId?: string\n isActive?: boolean\n items: (PaneListItem | PaneListItemDivider)[] | undefined\n layout?: GeneralPreviewLayoutKey\n showIcons: boolean\n title: string\n}\n\nconst DividerContainer = styled(Box)`\n display: flex;\n align-items: center;\n gap: 1rem;\n margin: 0.75rem 0 0.25rem 0;\n`\n\nconst Divider = styled.hr`\n flex: 1;\n background-color: var(--card-border-color);\n height: 1px;\n margin: 0;\n border: none;\n`\n\nconst DividerTitle = styled(Text)`\n padding-bottom: 0.75rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n`\n\ninterface DividerItemProps {\n item: PaneListItemDivider\n}\n\nfunction DividerItem({item}: DividerItemProps) {\n const {title: dividerTitle} = useI18nText(item)\n return (\n <DividerContainer>\n <DividerTitle weight=\"semibold\" muted size={1}>\n {dividerTitle}\n </DividerTitle>\n\n <Divider />\n </DividerContainer>\n )\n}\n\n/**\n * @internal\n */\nexport function ListPaneContent(props: ListPaneContentProps) {\n const {childItemId, items, isActive, layout, showIcons, title} = props\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const getI18nText = useGetI18nText(\n items?.filter(\n (item): item is Exclude<typeof item, {type: 'divider'}> => item.type !== 'divider',\n ),\n )\n\n const getItemDisabled = useCallback(\n (itemIndex: number) => {\n return items?.find((_, i) => i === itemIndex)?.type === 'divider'\n },\n [items],\n )\n\n const shouldShowIconForItem = useCallback(\n (item: PaneListItem): boolean => {\n // Specific true/false on item should have precedence over list setting\n // If no item setting is defined, defer to the pane settings\n return item.displayOptions?.showIcon ?? showIcons ?? false\n },\n [showIcons],\n )\n\n const renderItem = useCallback(\n (item: PaneListItem | PaneListItemDivider, ctx: CommandListItemContext) => {\n const {virtualIndex: itemIndex} = ctx\n\n if (item.type === 'divider') {\n return (\n <Box key={`divider-${itemIndex}`} marginBottom={1}>\n {item.title ? <DividerItem item={item} /> : <Divider />}\n </Box>\n )\n }\n\n const pressed = !isActive && childItemId === item.id\n const selected = isActive && childItemId === item.id\n // If this is a document list item, pass on the ID and type,\n // otherwise leave it undefined to use the passed title and gang\n const value =\n item._id && item.schemaType\n ? {_id: item._id, _type: item.schemaType.name, title: item.title}\n : undefined\n\n return (\n <PaneItem\n key={item.id}\n icon={shouldShowIconForItem(item) ? item.icon : false}\n id={item.id}\n layout={layout}\n marginBottom={1}\n pressed={pressed}\n schemaType={item.schemaType}\n selected={selected}\n title={getI18nText(item).title}\n value={value}\n />\n )\n },\n [childItemId, getI18nText, isActive, layout, shouldShowIconForItem],\n )\n\n return (\n <PaneContent overflow={layoutCollapsed ? 'hidden' : 'auto'}>\n {items && items.length > 0 && (\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={title}\n canReceiveFocus\n getItemDisabled={getItemDisabled}\n itemHeight={51}\n items={items}\n onlyShowSelectionWhenActive\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n )}\n </PaneContent>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {PaneHeader} from '../../components/pane/PaneHeader'\nimport {usePane} from '../../components/pane/usePane'\nimport {PaneHeaderActions} from '../../components/paneHeaderActions/PaneHeaderActions'\nimport {BackLink} from '../../components/paneRouter/BackLink'\nimport {type PaneMenuItem, type PaneMenuItemGroup} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\n\ninterface ListPaneHeaderProps {\n index: number\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n title: string\n}\n\nexport const ListPaneHeader = ({index, menuItems, menuItemGroups, title}: ListPaneHeaderProps) => {\n const {features} = useStructureTool()\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n return (\n <PaneHeader\n actions={<PaneHeaderActions menuItems={menuItems} menuItemGroups={menuItemGroups} />}\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 tabIndex={tabIndex}\n title={title}\n />\n )\n}\n","import {Card, Code} from '@sanity/ui'\nimport {useI18nText} from 'sanity'\n\nimport {Pane} from '../../components/pane/Pane'\nimport {_DEBUG} from '../../constants'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {ListPaneContent} from './ListPaneContent'\nimport {ListPaneHeader} from './ListPaneHeader'\n\ntype ListPaneProps = BaseStructureToolPaneProps<'list'>\n\n/**\n * @internal\n */\nexport function ListPane(props: ListPaneProps) {\n const {childItemId, index, isActive, isSelected, pane, paneKey} = props\n\n const {defaultLayout, displayOptions, items, menuItems, menuItemGroups} = pane\n const showIcons = displayOptions?.showIcons !== false\n const {title} = useI18nText(pane)\n\n return (\n <Pane\n currentMaxWidth={350}\n data-testid=\"structure-tool-list-pane\"\n data-ui=\"ListPane\"\n id={paneKey}\n maxWidth={640}\n minWidth={320}\n selected={isSelected}\n >\n {_DEBUG && (\n <Card padding={4} tone=\"transparent\">\n <Code>{pane.source || '(none)'}</Code>\n </Card>\n )}\n\n <ListPaneHeader\n index={index}\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n title={title}\n />\n\n <ListPaneContent\n key={paneKey}\n childItemId={childItemId}\n isActive={isActive}\n items={items}\n layout={defaultLayout}\n showIcons={showIcons}\n title={title}\n />\n </Pane>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"list-BgF8Q_09.js","names":["Box","Text","useCallback","CommandList","CommandListItemContext","GeneralPreviewLayoutKey","useGetI18nText","useI18nText","styled","PaneContent","usePaneLayout","PaneItem","PaneListItem","PaneListItemDivider","ListPaneContentProps","childItemId","isActive","items","layout","showIcons","title","DividerContainer","Divider","hr","DividerTitle","DividerItemProps","item","DividerItem","t0","$","_c","dividerTitle","t1","t2","Symbol","for","t3","ListPaneContent","props","collapsed","layoutCollapsed","filter","_temp","getI18nText","itemIndex","find","_","i","type","getItemDisabled","item_0","displayOptions","showIcon","shouldShowIconForItem","item_1","ctx","virtualIndex","itemIndex_0","pressed","id","selected","value","_id","schemaType","_type","name","undefined","icon","renderItem","t4","t5","length","t6","ArrowLeftIcon","Button","PaneHeader","usePane","PaneHeaderActions","BackLink","PaneMenuItem","PaneMenuItemGroup","useStructureTool","ListPaneHeaderProps","index","menuItems","menuItemGroups","title","ListPaneHeader","t0","$","_c","features","collapsed","isLast","tabIndex","t1","t2","backButton","content","t3","Card","Code","useI18nText","Pane","_DEBUG","BaseStructureToolPaneProps","ListPaneContent","ListPaneHeader","ListPaneProps","ListPane","props","$","_c","childItemId","index","isActive","isSelected","pane","paneKey","defaultLayout","displayOptions","items","menuItems","menuItemGroups","showIcons","title","t0","source","t1","t2","t3"],"sources":["../src/structure/panes/list/ListPaneContent.tsx","../src/structure/panes/list/ListPaneHeader.tsx","../src/structure/panes/list/ListPane.tsx"],"sourcesContent":["import {Box, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {\n CommandList,\n type CommandListItemContext,\n type GeneralPreviewLayoutKey,\n useGetI18nText,\n useI18nText,\n} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PaneContent} from '../../components/pane/PaneContent'\nimport {usePaneLayout} from '../../components/pane/usePaneLayout'\nimport {PaneItem} from '../../components/paneItem/PaneItem'\nimport {type PaneListItem, type PaneListItemDivider} from '../../types'\n\ninterface ListPaneContentProps {\n childItemId?: string\n isActive?: boolean\n items: (PaneListItem | PaneListItemDivider)[] | undefined\n layout?: GeneralPreviewLayoutKey\n showIcons: boolean\n title: string\n}\n\nconst DividerContainer = styled(Box)`\n display: flex;\n align-items: center;\n gap: 1rem;\n margin: 0.75rem 0 0.25rem 0;\n`\n\nconst Divider = styled.hr`\n flex: 1;\n background-color: var(--card-border-color);\n height: 1px;\n margin: 0;\n border: none;\n`\n\nconst DividerTitle = styled(Text)`\n padding-bottom: 0.75rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n`\n\ninterface DividerItemProps {\n item: PaneListItemDivider\n}\n\nfunction DividerItem({item}: DividerItemProps) {\n const {title: dividerTitle} = useI18nText(item)\n return (\n <DividerContainer>\n <DividerTitle weight=\"semibold\" muted size={1}>\n {dividerTitle}\n </DividerTitle>\n\n <Divider />\n </DividerContainer>\n )\n}\n\n/**\n * @internal\n */\nexport function ListPaneContent(props: ListPaneContentProps) {\n const {childItemId, items, isActive, layout, showIcons, title} = props\n const {collapsed: layoutCollapsed} = usePaneLayout()\n const getI18nText = useGetI18nText(\n items?.filter(\n (item): item is Exclude<typeof item, {type: 'divider'}> => item.type !== 'divider',\n ),\n )\n\n const getItemDisabled = useCallback(\n (itemIndex: number) => {\n return items?.find((_, i) => i === itemIndex)?.type === 'divider'\n },\n [items],\n )\n\n const shouldShowIconForItem = useCallback(\n (item: PaneListItem): boolean => {\n // Specific true/false on item should have precedence over list setting\n // If no item setting is defined, defer to the pane settings\n return item.displayOptions?.showIcon ?? showIcons ?? false\n },\n [showIcons],\n )\n\n const renderItem = useCallback(\n (item: PaneListItem | PaneListItemDivider, ctx: CommandListItemContext) => {\n const {virtualIndex: itemIndex} = ctx\n\n if (item.type === 'divider') {\n return (\n <Box key={`divider-${itemIndex}`} marginBottom={1}>\n {item.title ? <DividerItem item={item} /> : <Divider />}\n </Box>\n )\n }\n\n const pressed = !isActive && childItemId === item.id\n const selected = isActive && childItemId === item.id\n // If this is a document list item, pass on the ID and type,\n // otherwise leave it undefined to use the passed title and gang\n const value =\n item._id && item.schemaType\n ? {_id: item._id, _type: item.schemaType.name, title: item.title}\n : undefined\n\n return (\n <PaneItem\n key={item.id}\n icon={shouldShowIconForItem(item) ? item.icon : false}\n id={item.id}\n layout={layout}\n marginBottom={1}\n pressed={pressed}\n schemaType={item.schemaType}\n selected={selected}\n title={getI18nText(item).title}\n value={value}\n />\n )\n },\n [childItemId, getI18nText, isActive, layout, shouldShowIconForItem],\n )\n\n return (\n <PaneContent overflow={layoutCollapsed ? 'hidden' : 'auto'}>\n {items && items.length > 0 && (\n <CommandList\n activeItemDataAttr=\"data-hovered\"\n ariaLabel={title}\n canReceiveFocus\n getItemDisabled={getItemDisabled}\n itemHeight={51}\n items={items}\n onlyShowSelectionWhenActive\n paddingBottom={1}\n paddingX={3}\n renderItem={renderItem}\n wrapAround={false}\n />\n )}\n </PaneContent>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons/ArrowLeft'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {PaneHeader} from '../../components/pane/PaneHeader'\nimport {usePane} from '../../components/pane/usePane'\nimport {PaneHeaderActions} from '../../components/paneHeaderActions/PaneHeaderActions'\nimport {BackLink} from '../../components/paneRouter/BackLink'\nimport {type PaneMenuItem, type PaneMenuItemGroup} from '../../types'\nimport {useStructureTool} from '../../useStructureTool'\n\ninterface ListPaneHeaderProps {\n index: number\n menuItems?: PaneMenuItem[]\n menuItemGroups?: PaneMenuItemGroup[]\n title: string\n}\n\nexport const ListPaneHeader = ({index, menuItems, menuItemGroups, title}: ListPaneHeaderProps) => {\n const {features} = useStructureTool()\n const {collapsed, isLast} = usePane()\n // Prevent focus if this is the last (non-collapsed) pane.\n const tabIndex = isLast && !collapsed ? -1 : 0\n\n return (\n <PaneHeader\n actions={<PaneHeaderActions menuItems={menuItems} menuItemGroups={menuItemGroups} />}\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 tabIndex={tabIndex}\n title={title}\n />\n )\n}\n","import {Card, Code} from '@sanity/ui'\nimport {useI18nText} from 'sanity'\n\nimport {Pane} from '../../components/pane/Pane'\nimport {_DEBUG} from '../../constants'\nimport {type BaseStructureToolPaneProps} from '../types'\nimport {ListPaneContent} from './ListPaneContent'\nimport {ListPaneHeader} from './ListPaneHeader'\n\ntype ListPaneProps = BaseStructureToolPaneProps<'list'>\n\n/**\n * @internal\n */\nexport function ListPane(props: ListPaneProps) {\n const {childItemId, index, isActive, isSelected, pane, paneKey} = props\n\n const {defaultLayout, displayOptions, items, menuItems, menuItemGroups} = pane\n const showIcons = displayOptions?.showIcons !== false\n const {title} = useI18nText(pane)\n\n return (\n <Pane\n currentMaxWidth={350}\n data-testid=\"structure-tool-list-pane\"\n data-ui=\"ListPane\"\n id={paneKey}\n maxWidth={640}\n minWidth={320}\n selected={isSelected}\n >\n {_DEBUG && (\n <Card padding={4} tone=\"transparent\">\n <Code>{pane.source || '(none)'}</Code>\n </Card>\n )}\n\n <ListPaneHeader\n index={index}\n menuItems={menuItems}\n menuItemGroups={menuItemGroups}\n title={title}\n />\n\n <ListPaneContent\n key={paneKey}\n childItemId={childItemId}\n isActive={isActive}\n items={items}\n layout={defaultLayout}\n showIcons={showIcons}\n title={title}\n />\n </Pane>\n )\n}\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { i as Dialog$1 } from "./ConfirmPopover-CEELgHMw.js";
2
2
  import { a as Button$1, o as Tooltip$1, r as MenuButton$1 } from "./MenuItem-B0ry3E4J.js";
3
- import { _ as useResourceCache, ct as getReleaseIdFromReleaseDocumentId } from "./datastores-CFWEadl-.js";
3
+ import { _ as useResourceCache, ct as getReleaseIdFromReleaseDocumentId } from "./datastores-CrRYBoDP.js";
4
4
  import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
5
- import { Ct as DateTimeInput, Do as ReleaseAvatar, Ko as RELEASE_TYPES_TONES, Po as getReleaseDefaults, St as getCalendarLabels, Tt as MONTH_PICKER_VARIANT, Uo as DEFAULT_RELEASE_TYPE, Zo as isReleaseType, a as isReleaseLimitError, i as useReleaseOperations, jt as useDialogTimeZone, o as isErrorWithDetails, s as useReleasesUpsell } from "./useBundleDocuments-CWvP-dZI.js";
6
- import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-D7BsN6xF.js";
7
- import { t as useTimeZone } from "./useTimeZone-B5fBFjsR.js";
8
- import { s as CreatedRelease, y as useSetPerspective } from "./UnpublishVersionDialog-B0kX1dt6.js";
9
- import { r as CONTENT_RELEASES_TIME_ZONE_SCOPE } from "./useScheduledDraftMenuActions-DIa5I8rU.js";
5
+ import { Ct as DateTimeInput, Do as ReleaseAvatar, Ko as RELEASE_TYPES_TONES, Po as getReleaseDefaults, St as getCalendarLabels, Tt as MONTH_PICKER_VARIANT, Uo as DEFAULT_RELEASE_TYPE, Zo as isReleaseType, a as isReleaseLimitError, i as useReleaseOperations, jt as useDialogTimeZone, o as isErrorWithDetails, s as useReleasesUpsell } from "./useBundleDocuments-Dyop3VGZ.js";
6
+ import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-B_ywe2up.js";
7
+ import { t as useTimeZone } from "./useTimeZone-CNjAZCdC.js";
8
+ import { s as CreatedRelease, y as useSetPerspective } from "./UnpublishVersionDialog-VZflky9U.js";
9
+ import { r as CONTENT_RELEASES_TIME_ZONE_SCOPE } from "./useScheduledDraftMenuActions-BBEMJkNE.js";
10
10
  import { useEffect, useId, useRef, useState } from "react";
11
11
  import { c } from "react/compiler-runtime";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -653,4 +653,4 @@ const NavigatedToReleasesOverview = defineEvent({
653
653
  });
654
654
  export { ReleaseForm as a, getIsReleaseInvalid as c, useCreateReleaseMetadata as d, useReleasePermissions as i, useReleaseFormStorage as l, NavigatedToScheduledDrafts as n, TitleDescriptionForm as o, CreateReleaseDialog as r, getIsReleaseOpen as s, NavigatedToReleasesOverview as t, useGuardWithReleaseLimitUpsell as u };
655
655
 
656
- //# sourceMappingURL=navigation.telemetry-C6drHR5a.js.map
656
+ //# sourceMappingURL=navigation.telemetry-DSG23KnM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.telemetry-C6drHR5a.js","names":["EditableReleaseDocument","useCallback","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","useCreateReleaseMetadata","$","_c","zoneDateToUtc","t0","release","metadata","intendedPublishAt","Date","toISOString","undefined","title","trim","createReleaseMetadata","noop","useEffect","useState","useReleasesUpsell","useGuardWithReleaseLimitUpsell","$","_c","isPendingGuardResponse","setIsPendingGuardResponse","releasePromise","setReleasePromise","guardWithReleaseLimitUpsell","t0","promise","Promise","resolve","hasPassed","t1","t2","ReleaseType","useCallback","RELEASE_FORM_STORAGE_KEY","ReleaseFormDraft","title","description","releaseType","intendedPublishAt","useReleaseFormStorage","$","_c","getStoredReleaseData","_temp","saveReleaseDataToStorage","_temp2","clearReleaseDataFromStorage","_temp3","t0","Symbol","for","localStorage","removeItem","data","setItem","JSON","stringify","stored","getItem","parse","undefined","EditableReleaseDocument","getIsReleaseInvalid","release","metadata","releaseType","intendedPublishAt","EarthGlobeIcon","Flex","format","isValid","parse","useCallback","useMemo","Button","MONTH_PICKER_VARIANT","CalendarLabels","DateTimeInput","getCalendarLabels","useDialogTimeZone","TimeZoneScope","useTimeZone","useTranslation","ScheduleDatePickerProps","value","Date","onChange","date","timeZoneScope","inputDateFormat","ScheduleDatePicker","t0","$","_c","t","timeZone","utcToCurrentZoneDate","zoneDateToUtc","dialogTimeZoneShow","DialogTimeZone","dialogProps","T0","T1","t1","t2","t3","t4","t5","t6","t7","t8","t9","timeZoneAdjustedValue","undefined","t10","handlePublishAtCalendarChange","t11","event","date_0","currentTarget","parsedDate","handlePublishAtInputChange","t12","calendarLabels","carousel","abbreviation","t13","t14","EditableReleaseDocument","useCallback","useEffect","useMemo","useRef","useState","ReleaseFormFields","Pick","UseReleaseFormOptimisticUpdatingOptions","externalValue","id","extractData","value","useReleaseFormOptimisticUpdating","t0","$","_c","t1","incomingFormData","t2","localData","setLocalData","focusedField","setFocusedField","previousIdRef","t3","currentFormData","formFieldNames","Object","keys","Array","unfocusedFieldUpdates","filter","field","reduce","fieldUpdates","field_0","updateUnfocusedFields","t4","t5","_createdAt","isEditingExistingRelease","Boolean","current","t6","Symbol","for","fieldName","createFocusHandler","t7","handleBlur","t8","formDataUpdates","currentFormData_0","updateLocalData","t9","EditableReleaseDocument","Stack","getTheme_v2","ChangeEvent","useCallback","useEffect","useRef","useState","css","styled","useTranslation","useReleaseFormOptimisticUpdating","MAX_DESCRIPTION_HEIGHT","TitleTextArea","textarea","props","color","font","theme","text","family","weights","bold","sizes","fontSize","lineHeight","input","default","enabled","fg","placeholder","DescriptionTextArea","regular","getIsReleaseOpen","release","state","resizeTextarea","element","HTMLTextAreaElement","style","height","scrollHeight","TitleDescriptionForm","t0","$","_c","onChange","disabled","t1","isReleaseOpen","titleRef","descriptionRef","setScrollHeight","t","t2","externalValue","id","_id","extractData","_temp","localData","updateLocalData","createFocusHandler","handleBlur","t3","Symbol","for","current","t4","metadata","title","t5","t6","description","t7","event","preventDefault","target","value","handleTitleChange","t8","event_0","currentTarget","handleDescriptionChange","shouldShowDescription","t9","t10","t11","t12","t13","t14","maxHeight","overflowY","t15","EditableReleaseDocument","ReleaseType","ChevronDownIcon","InfoOutlineIcon","Button","Flex","Menu","MenuItem","Stack","TabPanel","Text","addHours","startOfHour","ComponentType","MouseEventHandler","useCallback","useEffect","useId","useState","MenuButton","Tooltip","useTranslation","CONTENT_RELEASES_TIME_ZONE_SCOPE","useReleaseFormStorage","isReleaseType","DEFAULT_RELEASE_TYPE","RELEASE_TYPES_TONES","ReleaseAvatar","ScheduleDatePicker","TitleDescriptionForm","ReleaseForm","props","$","_c","onChange","value","t0","metadata","releaseType","t1","intendedPublishAt","undefined","t","getStoredReleaseData","saveReleaseDataToStorage","id","_id","t2","t3","storedData","updatedValue","title","description","t4","updatedValue_0","handleOnChangeAndStorage","t5","date","toISOString","handleBundlePublishAtCalendarChange","t6","event","pickedReleaseType","currentTarget","dataset","nextInputValue","Date","handleReleaseTypeChange","t7","updatedRelease","handleTitleDescriptionChange","menuButtonId","menuButton","setMenuButton","t8","t9","t10","Symbol","for","maxWidth","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","placement","matchReferenceWidth","boundaryElement","t25","Object","keys","t26","map","type","t27","t28","outline","t29","t30","t31","t32","t33","ReleaseTypeOption","text","SingleActionResult","isErrorWithDetails","useReleasePermissionsValue","ReleasePermissionError","details","type","isReleasePermissionError","error","createReleasePermissionsStore","isContentReleasesEnabled","permissions","key","checkWithPermissionGuard","args","Promise","action","T","Parameters","name","undefined","dryRun","skipCrossDatasetReferenceValidation","e","SingleActionResult","useMemo","FEATURES","useFeatureEnabled","useResourceCache","createReleasePermissionsStore","RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE","useReleasePermissionsValue","checkWithPermissionGuard","args","Promise","action","T","Parameters","permissions","key","useReleasePermissions","$","_c","resourceCache","contentReleasesFeature","contentReleases","releasePermissionsStore","get","dependencies","namespace","enabled","set","value","EditableReleaseDocument","useTelemetry","Box","Card","Flex","useToast","FormEvent","useCallback","useState","Button","Dialog","useTranslation","useSetPerspective","CreatedRelease","OriginInfo","useCreateReleaseMetadata","useGuardWithReleaseLimitUpsell","useReleaseFormStorage","isReleaseLimitError","useReleaseOperations","getIsReleaseInvalid","getReleaseIdFromReleaseDocumentId","getReleaseDefaults","ReleaseForm","CreateReleaseDialogProps","onCancel","onSubmit","createdReleaseId","origin","CreateReleaseDialog","props","$","_c","toast","createRelease","setPerspective","t","telemetry","createReleaseMetadata","clearReleaseDataFromStorage","release","setRelease","isSubmitting","setIsSubmitting","t0","invalid","releasePromise","t1","event","preventDefault","inQuota","releaseValue","log","Promise","_temp","_id","t2","err","console","error","push","closable","status","title","handleOnSubmit","Symbol","for","releaseMetadata","handleOnChange","t3","dialogTitle","t4","dialogConfirm","t5","handleOnClose","t6","t7","t8","t9","t10","resolve","setTimeout","defineEvent","NavigationSourceInfo","source","NavigatedToReleasesOverview","name","version","description","NavigatedToScheduledDrafts"],"sources":["../src/core/releases/hooks/useCreateReleaseMetadata.ts","../src/core/releases/hooks/useGuardWithReleaseLimitUpsell.ts","../src/core/releases/hooks/useReleaseFormStorage.ts","../src/core/releases/util/getIsReleaseInvalid.ts","../src/core/releases/components/ScheduleDatePicker.tsx","../src/core/releases/hooks/useReleaseFormOptimisticUpdating.ts","../src/core/releases/components/dialog/TitleDescriptionForm.tsx","../src/core/releases/components/dialog/ReleaseForm.tsx","../src/core/releases/store/createReleasePermissionsStore.ts","../src/core/releases/store/useReleasePermissions.ts","../src/core/releases/components/dialog/CreateReleaseDialog.tsx","../src/core/releases/__telemetry__/navigation.telemetry.ts"],"sourcesContent":["import {type EditableReleaseDocument} from '@sanity/client'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../studio/constants'\n\nexport const useCreateReleaseMetadata = () => {\n const {zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n const createReleaseMetadata = useCallback(\n (release: EditableReleaseDocument) => {\n const {metadata} = release\n const intendedPublishAt = metadata.intendedPublishAt\n ? zoneDateToUtc(new Date(metadata.intendedPublishAt)).toISOString()\n : undefined\n\n return {\n ...release,\n metadata: {\n ...metadata,\n intendedPublishAt,\n title: metadata?.title?.trim(),\n },\n }\n },\n [zoneDateToUtc],\n )\n\n return createReleaseMetadata\n}\n","import noop from 'lodash-es/noop.js'\nimport {useEffect, useState} from 'react'\n\nimport {useReleasesUpsell} from '../contexts/upsell/useReleasesUpsell'\n\nexport function useGuardWithReleaseLimitUpsell() {\n const [isPendingGuardResponse, setIsPendingGuardResponse] = useState<boolean>(true)\n const [releasePromise, setReleasePromise] = useState<Promise<boolean> | null>(null)\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setIsPendingGuardResponse(true)\n\n const promise = new Promise<boolean>((resolve) => {\n void guardWithReleaseLimitUpsell(noop, false, (hasPassed: boolean) => {\n resolve(hasPassed)\n })\n })\n\n setReleasePromise(promise)\n }, [guardWithReleaseLimitUpsell, isPendingGuardResponse])\n\n return {\n releasePromise,\n }\n}\n","import {type ReleaseType} from '@sanity/client'\nimport {useCallback} from 'react'\n\nconst RELEASE_FORM_STORAGE_KEY = 'studio.release-form.recovery'\n\ninterface ReleaseFormDraft {\n title?: string\n description?: string\n releaseType?: ReleaseType\n intendedPublishAt?: string\n}\n\n/**\n * This hook is used to store the release form data in localStorage.\n * The main use case is when a user accidentally closes the dialog for a release before it is created .\n *\n * @returns an object with the following methods:\n * - getStoredReleaseData: a function that returns the stored release form data\n * - saveReleaseDataToStorage: a function that saves the release form data to localStorage\n * - clearReleaseDataFromStorage: a function that clears the release form data from localStorage\n */\nexport function useReleaseFormStorage() {\n const getStoredReleaseData = useCallback((): ReleaseFormDraft | undefined => {\n const stored = localStorage.getItem(RELEASE_FORM_STORAGE_KEY)\n return stored ? JSON.parse(stored) : undefined\n }, [])\n\n const saveReleaseDataToStorage = useCallback((data: ReleaseFormDraft) => {\n localStorage.setItem(RELEASE_FORM_STORAGE_KEY, JSON.stringify(data))\n }, [])\n\n const clearReleaseDataFromStorage = useCallback(() => {\n localStorage.removeItem(RELEASE_FORM_STORAGE_KEY)\n }, [])\n\n return {getStoredReleaseData, saveReleaseDataToStorage, clearReleaseDataFromStorage}\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\n\nexport function getIsReleaseInvalid(release: EditableReleaseDocument) {\n return release.metadata?.releaseType === 'scheduled' && !release.metadata?.intendedPublishAt\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {Flex} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {MONTH_PICKER_VARIANT} from '../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../components/inputs/DateInputs/DateTimeInput'\nimport {getCalendarLabels} from '../../form/inputs/DateInputs'\nimport useDialogTimeZone from '../../hooks/useDialogTimeZone'\nimport {type TimeZoneScope, useTimeZone} from '../../hooks/useTimeZone'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\n\ninterface ScheduleDatePickerProps {\n value: Date | undefined\n onChange: (date: Date) => void\n timeZoneScope: TimeZoneScope\n}\n\nconst inputDateFormat = 'PP HH:mm'\n\nexport const ScheduleDatePicker = ({value, onChange, timeZoneScope}: ScheduleDatePickerProps) => {\n const {t} = useTranslation()\n const {timeZone, utcToCurrentZoneDate, zoneDateToUtc} = useTimeZone(timeZoneScope)\n const {dialogTimeZoneShow, DialogTimeZone, dialogProps} = useDialogTimeZone(timeZoneScope)\n\n const timeZoneAdjustedValue = value ? utcToCurrentZoneDate(value) : undefined\n\n const handlePublishAtCalendarChange = (date: Date | null) => {\n if (!date) return\n\n onChange(zoneDateToUtc(date))\n }\n\n const handlePublishAtInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const date = event.currentTarget.value\n const parsedDate = zoneDateToUtc(parse(date, inputDateFormat, new Date()))\n\n if (isValid(parsedDate)) onChange(parsedDate)\n },\n [onChange, zoneDateToUtc],\n )\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n\n return (\n <Flex flex={1} justify=\"space-between\">\n <DateTimeInput\n selectTime\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n onChange={handlePublishAtCalendarChange}\n onInputChange={handlePublishAtInputChange}\n calendarLabels={calendarLabels}\n value={timeZoneAdjustedValue}\n inputValue={timeZoneAdjustedValue ? format(timeZoneAdjustedValue, inputDateFormat) : ''}\n constrainSize={false}\n padding={0}\n isPastDisabled\n timeZoneScope={timeZoneScope}\n />\n\n <Button\n icon={EarthGlobeIcon}\n mode=\"bleed\"\n size=\"default\"\n text={`${timeZone.abbreviation}`}\n onClick={dialogTimeZoneShow}\n />\n {DialogTimeZone && <DialogTimeZone {...dialogProps} />}\n </Flex>\n )\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\ntype ReleaseFormFields = Pick<EditableReleaseDocument['metadata'], 'title' | 'description'>\n\ninterface UseReleaseFormOptimisticUpdatingOptions {\n /** The external value from props/server */\n externalValue: EditableReleaseDocument\n id: string\n extractData: (value: EditableReleaseDocument) => ReleaseFormFields\n}\n\n/**\n * Hook for managing release form state that syncs with server data while respecting per-field focus.\n *\n * This prevents server updates from overriding user input during typing.\n * Local state syncs with server data on a per-field basis only when the field is not focused.\n *\n * @internal\n */\nexport function useReleaseFormOptimisticUpdating({\n externalValue,\n id,\n extractData,\n}: UseReleaseFormOptimisticUpdatingOptions) {\n const incomingFormData = useMemo(() => extractData(externalValue), [externalValue, extractData])\n const [localData, setLocalData] = useState(() => incomingFormData)\n const [focusedField, setFocusedField] = useState<string | null>(null)\n const previousIdRef = useRef(id)\n\n const updateUnfocusedFields = useCallback(\n (currentFormData: ReleaseFormFields) => {\n const formFieldNames = Object.keys(incomingFormData) as Array<keyof ReleaseFormFields>\n const unfocusedFieldUpdates = formFieldNames\n .filter((field) => field !== focusedField)\n .reduce<Partial<ReleaseFormFields>>((fieldUpdates, field) => {\n fieldUpdates[field] = incomingFormData[field]\n\n return fieldUpdates\n }, {})\n\n return {...currentFormData, ...unfocusedFieldUpdates}\n },\n [incomingFormData, focusedField],\n )\n\n useEffect(() => {\n // New releases don't have _createdAt and should always sync to support local storage\n const isEditingExistingRelease = Boolean(externalValue._createdAt)\n\n // if tracking a new ID\n\n if (previousIdRef.current === id) {\n setLocalData(isEditingExistingRelease ? updateUnfocusedFields : incomingFormData)\n } else {\n previousIdRef.current = id\n setLocalData(incomingFormData)\n setFocusedField(null)\n }\n }, [incomingFormData, id, externalValue._createdAt, updateUnfocusedFields])\n\n const createFocusHandler = useCallback(\n (fieldName: string) => () => setFocusedField(fieldName),\n [],\n )\n\n const handleBlur = useCallback(() => setFocusedField(null), [])\n\n const updateLocalData = useCallback((formDataUpdates: Partial<ReleaseFormFields>) => {\n setLocalData((currentFormData) => ({...currentFormData, ...formDataUpdates}))\n }, [])\n\n return {\n localData,\n updateLocalData,\n createFocusHandler,\n handleBlur,\n focusedField,\n }\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {Stack} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {type ChangeEvent, useCallback, useEffect, useRef, useState} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseFormOptimisticUpdating} from '../../hooks/useReleaseFormOptimisticUpdating'\n\nconst MAX_DESCRIPTION_HEIGHT = 200\n\nconst TitleTextArea = styled.textarea((props) => {\n const {color, font} = getTheme_v2(props.theme)\n return css`\n resize: none;\n overflow: hidden;\n appearance: none;\n background: none;\n border: 0;\n padding: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.text.family};\n font-weight: ${font.text.weights.bold};\n font-size: ${font.text.sizes[4].fontSize}px;\n line-height: ${font.text.sizes[4].lineHeight}px;\n min-height: ${font.text.sizes[4].lineHeight}px;\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n /* NOTE: This is a hack to disable Chrome's autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n color: ${color.input.default.enabled.fg};\n\n &::placeholder {\n color: ${color.input.default.enabled.placeholder};\n }\n `\n})\n\nconst DescriptionTextArea = styled.textarea((props) => {\n const {color, font} = getTheme_v2(props.theme)\n\n return css`\n resize: none;\n overflow: hidden;\n appearance: none;\n background: none;\n border: 0;\n padding: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.text.family};\n font-weight: ${font.text.weights.regular};\n font-size: ${font.text.sizes[2].fontSize}px;\n height: auto;\n line-height: ${font.text.sizes[2].lineHeight}px;\n margin: 0;\n max-width: 624px;\n position: relative;\n z-index: 1;\n display: block;\n color: ${color.input.default.enabled.fg};\n\n &::placeholder {\n color: ${color.input.default.enabled.placeholder};\n }\n `\n})\n\nexport const getIsReleaseOpen = (release: EditableReleaseDocument): boolean =>\n release.state !== 'archived' && release.state !== 'published'\n\nfunction resizeTextarea(element: HTMLTextAreaElement): void {\n element.style.height = 'auto'\n element.style.height = `${element.scrollHeight}px`\n}\n\nexport function TitleDescriptionForm({\n release,\n onChange,\n disabled,\n}: {\n release: EditableReleaseDocument\n onChange: (changedValue: EditableReleaseDocument) => void\n disabled?: boolean\n}): React.JSX.Element {\n const isReleaseOpen = getIsReleaseOpen(release)\n const titleRef = useRef<HTMLTextAreaElement>(null)\n const descriptionRef = useRef<HTMLTextAreaElement>(null)\n const [scrollHeight, setScrollHeight] = useState(46)\n const {t} = useTranslation()\n\n const {localData, updateLocalData, createFocusHandler, handleBlur} =\n useReleaseFormOptimisticUpdating({\n externalValue: release,\n id: release._id,\n extractData: useCallback(\n ({metadata}: EditableReleaseDocument) => ({\n title: metadata.title,\n description: metadata.description,\n }),\n [],\n ),\n })\n\n useEffect(() => {\n if (titleRef.current) {\n resizeTextarea(titleRef.current)\n }\n }, [release.metadata.title])\n\n useEffect(() => {\n if (descriptionRef.current) {\n resizeTextarea(descriptionRef.current)\n setScrollHeight(descriptionRef.current.scrollHeight)\n }\n }, [release.metadata.description])\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n event.preventDefault()\n const title = event.target.value\n updateLocalData({title})\n onChange({...release, metadata: {...release.metadata, title}})\n if (titleRef.current) {\n resizeTextarea(titleRef.current)\n }\n },\n [onChange, release, updateLocalData],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n event.preventDefault()\n if (!isReleaseOpen) return\n\n const description = event.target.value\n updateLocalData({description})\n onChange({...release, metadata: {...release.metadata, description}})\n\n // Reset to 'auto' first so the textarea can shrink when text is removed\n if (descriptionRef.current) {\n resizeTextarea(descriptionRef.current)\n }\n\n setScrollHeight(event.currentTarget.scrollHeight)\n },\n [isReleaseOpen, onChange, release, updateLocalData],\n )\n\n const shouldShowDescription = isReleaseOpen || localData.description\n\n return (\n <Stack space={3}>\n <TitleTextArea\n ref={titleRef}\n onChange={handleTitleChange}\n onFocus={createFocusHandler('title')}\n onBlur={handleBlur}\n value={localData.title}\n placeholder={t('release.placeholder-untitled-release')}\n data-testid=\"release-form-title\"\n readOnly={!isReleaseOpen}\n disabled={disabled}\n />\n {shouldShowDescription && (\n <DescriptionTextArea\n ref={descriptionRef}\n autoFocus={!localData.title}\n value={localData.description}\n placeholder={t('release.form.placeholder-describe-release')}\n onChange={handleDescriptionChange}\n onFocus={createFocusHandler('description')}\n onBlur={handleBlur}\n style={{\n height: `${scrollHeight}px`,\n maxHeight: MAX_DESCRIPTION_HEIGHT,\n overflowY: scrollHeight > MAX_DESCRIPTION_HEIGHT ? 'auto' : 'hidden',\n }}\n data-testid=\"release-form-description\"\n disabled={disabled}\n readOnly={!isReleaseOpen}\n />\n )}\n </Stack>\n )\n}\n","import {type EditableReleaseDocument, type ReleaseType} from '@sanity/client'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {\n // oxlint-disable-next-line no-restricted-imports -- fine-grained control needed\n Button,\n Flex,\n Menu,\n // oxlint-disable-next-line no-restricted-imports -- fine-grained control needed\n MenuItem,\n Stack,\n TabPanel,\n Text,\n} from '@sanity/ui'\nimport {addHours} from 'date-fns/addHours'\nimport {startOfHour} from 'date-fns/startOfHour'\nimport {\n type ComponentType,\n type MouseEventHandler,\n useCallback,\n useEffect,\n useId,\n useState,\n} from 'react'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useReleaseFormStorage} from '../../hooks/useReleaseFormStorage'\nimport {isReleaseType} from '../../store/types'\nimport {DEFAULT_RELEASE_TYPE, RELEASE_TYPES_TONES} from '../../util/const'\nimport {ReleaseAvatar} from '../ReleaseAvatar'\nimport {ScheduleDatePicker} from '../ScheduleDatePicker'\nimport {TitleDescriptionForm} from './TitleDescriptionForm'\n\n/** @internal */\nexport function ReleaseForm(props: {\n onChange: (params: EditableReleaseDocument) => void\n value: EditableReleaseDocument\n}): React.JSX.Element {\n const {onChange, value} = props\n const {releaseType = DEFAULT_RELEASE_TYPE, intendedPublishAt} = value.metadata || {}\n const {t} = useTranslation()\n const {getStoredReleaseData, saveReleaseDataToStorage} = useReleaseFormStorage()\n\n const id = value._id\n\n useEffect(() => {\n const storedData = getStoredReleaseData()\n if (storedData) {\n const updatedValue = {\n metadata: {\n title: storedData.title,\n description: storedData.description,\n releaseType: storedData.releaseType ?? DEFAULT_RELEASE_TYPE,\n intendedPublishAt: storedData.intendedPublishAt,\n },\n }\n onChange({_id: id, ...updatedValue})\n }\n }, [getStoredReleaseData, id, onChange])\n\n const handleOnChangeAndStorage = useCallback(\n (updatedValue: EditableReleaseDocument) => {\n onChange(updatedValue)\n saveReleaseDataToStorage({\n ...updatedValue.metadata,\n })\n },\n [onChange, saveReleaseDataToStorage],\n )\n\n const handleBundlePublishAtCalendarChange = useCallback(\n (date: Date) => {\n handleOnChangeAndStorage({\n ...value,\n metadata: {...value.metadata, intendedPublishAt: date.toISOString()},\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const handleReleaseTypeChange = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n const pickedReleaseType = event.currentTarget.dataset.value\n\n if (!isReleaseType(pickedReleaseType)) {\n return\n }\n\n // select the start of the next hour\n const nextInputValue = startOfHour(addHours(new Date(), 1))\n\n handleOnChangeAndStorage({\n ...value,\n metadata: {\n ...value.metadata,\n releaseType: pickedReleaseType,\n intendedPublishAt:\n (pickedReleaseType === 'scheduled' && nextInputValue.toISOString()) || undefined,\n },\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const handleTitleDescriptionChange = useCallback(\n (updatedRelease: EditableReleaseDocument) => {\n handleOnChangeAndStorage({\n ...value,\n metadata: {\n ...value.metadata,\n title: updatedRelease.metadata.title,\n description: updatedRelease.metadata.description,\n },\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const menuButtonId = useId()\n const [menuButton, setMenuButton] = useState<HTMLElement | null>(null)\n\n return (\n <Stack space={5}>\n <Stack space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"label\" htmlFor={menuButtonId}>\n {t('release.dialog.tooltip.title')}\n </Text>\n <Text muted size={1}>\n <Tooltip\n content={\n <Stack space={3} style={{maxWidth: 320 - 16}}>\n <Text size={1}>{t('release.dialog.tooltip.description')}</Text>\n <Text muted size={1}>\n {t('release.dialog.tooltip.note')}\n </Text>\n </Stack>\n }\n delay={0}\n placement=\"right-start\"\n portal\n >\n <InfoOutlineIcon />\n </Tooltip>\n </Text>\n </Flex>\n <Stack space={3}>\n <MenuButton\n id={menuButtonId}\n ref={setMenuButton}\n button={\n <Button mode=\"ghost\">\n <Flex justify=\"space-between\" align=\"center\">\n <ReleaseTypeOption\n text={t(`release.type.${releaseType}`)}\n releaseType={releaseType}\n />\n <Text size={1}>\n <ChevronDownIcon />\n </Text>\n </Flex>\n </Button>\n }\n popover={{\n placement: 'bottom',\n matchReferenceWidth: true,\n boundaryElement: menuButton,\n }}\n menu={\n <Menu>\n {/* oxlint-disable-next-line typescript/no-unsafe-type-assertion */}\n {(Object.keys(RELEASE_TYPES_TONES) as ReleaseType[]).map((type) => (\n <MenuItem key={type} data-value={type} onClick={handleReleaseTypeChange}>\n <ReleaseTypeOption text={t(`release.type.${type}`)} releaseType={type} />\n </MenuItem>\n ))}\n </Menu>\n }\n />\n <Flex gap={1}>\n {releaseType === 'scheduled' && (\n <TabPanel\n aria-labelledby=\"release-timing-at-time-tab\"\n flex={1}\n id=\"release-timing-at-time\"\n style={{outline: 'none'}}\n tabIndex={-1}\n >\n <ScheduleDatePicker\n value={intendedPublishAt ? new Date(intendedPublishAt) : undefined}\n onChange={handleBundlePublishAtCalendarChange}\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </TabPanel>\n )}\n </Flex>\n </Stack>\n </Stack>\n <TitleDescriptionForm release={value} onChange={handleTitleDescriptionChange} />\n </Stack>\n )\n}\n\nconst ReleaseTypeOption: ComponentType<{\n text: string\n releaseType: ReleaseType\n}> = ({releaseType, text}) => (\n <Flex gap={3} align=\"center\">\n <ReleaseAvatar padding={1} releaseType={releaseType} />\n <Text>{text}</Text>\n </Flex>\n)\n","import {type SingleActionResult} from '@sanity/client'\n\nimport {isErrorWithDetails} from '../../error/types/isErrorWithDetails'\nimport {type useReleasePermissionsValue} from './useReleasePermissions'\n\ntype ReleasePermissionError = {details: {type: 'insufficientPermissionsError'}}\n\n/**\n * Checks if the error is a permission error\n *\n * @param error - the error to check\n * @returns true if the error is a permission error\n */\nconst isReleasePermissionError = (error: unknown): error is ReleasePermissionError =>\n isErrorWithDetails(error) && error.details?.type === 'insufficientPermissionsError'\n\n/**\n * Store that contains if the user has permissions to perform a release action\n * And a guardrail to dry run requests to check if the user has permissions\n *\n * @returns an object with the following properties:\n * * checkWithPermissionGuard - a function that checks if the user has permissions to perform a release action by adding dryRun properties\n * * permissions - an object with the permissions for each action\n *\n * @internal\n */\nexport function createReleasePermissionsStore(\n isContentReleasesEnabled: boolean,\n): useReleasePermissionsValue {\n let permissions: {[key: string]: boolean} = {}\n\n /**\n * Checks if a release action can be performed by running a dry run of the given action\n *\n * @param action - any of the actions from the {@link ReleaseOperationStore}, e.g. publishRelease should send in also the needed props\n * @param args - the arguments to pass to the action (release id, etc)\n * @returns true or false depending if the user can perform the action\n */\n const checkWithPermissionGuard = async <\n T extends (...args: any[]) => Promise<void | SingleActionResult>,\n >(\n action: T,\n ...args: Parameters<T>\n ): Promise<boolean> => {\n if (!isContentReleasesEnabled) {\n /**\n * When content releases feature flag is disabled\n * assume allowed permissions to provide upsell\n */\n return true\n }\n\n if (permissions[action.name] === undefined) {\n try {\n await action(...args, {\n dryRun: true,\n skipCrossDatasetReferenceValidation: true,\n })\n permissions = {...permissions, [action.name]: true}\n\n return true\n } catch (e) {\n permissions = {...permissions, [action.name]: false}\n\n return !isReleasePermissionError(e)\n }\n } else {\n return permissions[action.name]\n }\n }\n return {\n checkWithPermissionGuard: checkWithPermissionGuard,\n permissions,\n }\n}\n","import {type SingleActionResult} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {FEATURES, useFeatureEnabled} from '../../hooks/useFeatureEnabled'\nimport {useResourceCache} from '../../store/ResourceCacheProvider'\nimport {createReleasePermissionsStore} from './createReleasePermissionsStore'\n\nconst RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE = 'ReleasePermissions'\n\nexport interface useReleasePermissionsValue {\n checkWithPermissionGuard: <T extends (...args: any[]) => Promise<void | SingleActionResult>>(\n action: T,\n ...args: Parameters<T>\n ) => Promise<boolean>\n permissions: {[key: string]: boolean}\n}\n\n/**\n * @internal\n */\nexport function useReleasePermissions(): useReleasePermissionsValue {\n const resourceCache = useResourceCache()\n const contentReleasesFeature = useFeatureEnabled(FEATURES.contentReleases)\n\n return useMemo(() => {\n const releasePermissionsStore =\n resourceCache.get<useReleasePermissionsValue>({\n dependencies: [contentReleasesFeature],\n namespace: RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE,\n }) || createReleasePermissionsStore(contentReleasesFeature.enabled)\n\n resourceCache.set({\n namespace: RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE,\n value: releasePermissionsStore,\n dependencies: [contentReleasesFeature],\n })\n\n return releasePermissionsStore\n }, [contentReleasesFeature, resourceCache])\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useSetPerspective} from '../../../perspective/useSetPerspective'\nimport {CreatedRelease, type OriginInfo} from '../../__telemetry__/releases.telemetry'\nimport {useCreateReleaseMetadata} from '../../hooks/useCreateReleaseMetadata'\nimport {useGuardWithReleaseLimitUpsell} from '../../hooks/useGuardWithReleaseLimitUpsell'\nimport {useReleaseFormStorage} from '../../hooks/useReleaseFormStorage'\nimport {isReleaseLimitError} from '../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getIsReleaseInvalid} from '../../util/getIsReleaseInvalid'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDefaults} from '../../util/util'\nimport {ReleaseForm} from './ReleaseForm'\n\ninterface CreateReleaseDialogProps {\n onCancel: () => void\n onSubmit: (createdReleaseId: string) => void\n origin?: OriginInfo['origin']\n}\n\nexport function CreateReleaseDialog(props: CreateReleaseDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, origin} = props\n const toast = useToast()\n const {createRelease} = useReleaseOperations()\n const setPerspective = useSetPerspective()\n const {t} = useTranslation()\n const telemetry = useTelemetry()\n const createReleaseMetadata = useCreateReleaseMetadata()\n const {clearReleaseDataFromStorage} = useReleaseFormStorage()\n\n const [release, setRelease] = useState(getReleaseDefaults)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const invalid = getIsReleaseInvalid(release)\n\n const {releasePromise} = useGuardWithReleaseLimitUpsell()\n\n const handleOnSubmit = useCallback(\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n setIsSubmitting(true)\n const inQuota = await releasePromise\n\n if (!inQuota) {\n setIsSubmitting(false)\n return\n }\n\n try {\n const releaseValue = createReleaseMetadata(release)\n\n await createRelease(releaseValue)\n // Close the dialog after creating the release.\n onCancel()\n telemetry.log(CreatedRelease, {origin})\n\n // TODO: Remove this! temporary fix to give some time for the release to be created and the releases store state updated before closing the dialog.\n await new Promise((resolve) => setTimeout(resolve, 1000))\n // TODO: Remove the upper part\n\n setPerspective(getReleaseIdFromReleaseDocumentId(release._id))\n\n onSubmit(getReleaseIdFromReleaseDocumentId(release._id))\n } catch (err) {\n if (isReleaseLimitError(err)) {\n onCancel()\n clearReleaseDataFromStorage()\n } else {\n console.error(err)\n toast.push({\n closable: true,\n status: 'error',\n title: t('release.toast.create-release-error.title'),\n })\n }\n }\n setIsSubmitting(false)\n clearReleaseDataFromStorage()\n },\n [\n releasePromise,\n createReleaseMetadata,\n release,\n createRelease,\n telemetry,\n origin,\n setPerspective,\n onSubmit,\n onCancel,\n toast,\n t,\n clearReleaseDataFromStorage,\n ],\n )\n\n const handleOnChange = useCallback((releaseMetadata: EditableReleaseDocument) => {\n setRelease(releaseMetadata)\n }, [])\n\n const dialogTitle = t('release.dialog.create.title')\n const dialogConfirm = t('release.dialog.create.confirm')\n\n const handleOnClose = useCallback(() => {\n clearReleaseDataFromStorage()\n onCancel()\n }, [clearReleaseDataFromStorage, onCancel])\n\n return (\n <Dialog\n onClickOutside={onCancel}\n header={dialogTitle}\n id=\"create-release-dialog\"\n onClose={handleOnClose}\n width={1}\n padding={false}\n >\n <Card padding={4} borderTop>\n <form onSubmit={handleOnSubmit}>\n <Box paddingBottom={4}>\n <ReleaseForm onChange={handleOnChange} value={release} />\n </Box>\n <Flex justify=\"flex-end\" paddingTop={5}>\n <Button\n size=\"large\"\n disabled={isSubmitting || invalid}\n type=\"submit\"\n text={dialogConfirm}\n loading={isSubmitting}\n data-testid=\"submit-release-button\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n// Parameter interface to distinguish navigation source\ninterface NavigationSourceInfo {\n source: 'menu' | 'view-picker'\n}\n\n// Event when user navigates to releases overview\nexport const NavigatedToReleasesOverview = defineEvent<NavigationSourceInfo>({\n name: 'Navigated to Content Releases',\n version: 1,\n description: 'User navigated to the content releases list view',\n})\n\n// Event when user navigates to scheduled drafts view\nexport const NavigatedToScheduledDrafts = defineEvent<NavigationSourceInfo>({\n name: 'Navigated to Scheduled Drafts',\n version: 1,\n description: 'User navigated to the scheduled drafts list view',\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"navigation.telemetry-DSG23KnM.js","names":["EditableReleaseDocument","useCallback","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","useCreateReleaseMetadata","$","_c","zoneDateToUtc","t0","release","metadata","intendedPublishAt","Date","toISOString","undefined","title","trim","createReleaseMetadata","noop","useEffect","useState","useReleasesUpsell","useGuardWithReleaseLimitUpsell","$","_c","isPendingGuardResponse","setIsPendingGuardResponse","releasePromise","setReleasePromise","guardWithReleaseLimitUpsell","t0","promise","Promise","resolve","hasPassed","t1","t2","ReleaseType","useCallback","RELEASE_FORM_STORAGE_KEY","ReleaseFormDraft","title","description","releaseType","intendedPublishAt","useReleaseFormStorage","$","_c","getStoredReleaseData","_temp","saveReleaseDataToStorage","_temp2","clearReleaseDataFromStorage","_temp3","t0","Symbol","for","localStorage","removeItem","data","setItem","JSON","stringify","stored","getItem","parse","undefined","EditableReleaseDocument","getIsReleaseInvalid","release","metadata","releaseType","intendedPublishAt","EarthGlobeIcon","Flex","format","isValid","parse","useCallback","useMemo","Button","MONTH_PICKER_VARIANT","CalendarLabels","DateTimeInput","getCalendarLabels","useDialogTimeZone","TimeZoneScope","useTimeZone","useTranslation","ScheduleDatePickerProps","value","Date","onChange","date","timeZoneScope","inputDateFormat","ScheduleDatePicker","t0","$","_c","t","timeZone","utcToCurrentZoneDate","zoneDateToUtc","dialogTimeZoneShow","DialogTimeZone","dialogProps","T0","T1","t1","t2","t3","t4","t5","t6","t7","t8","t9","timeZoneAdjustedValue","undefined","t10","handlePublishAtCalendarChange","t11","event","date_0","currentTarget","parsedDate","handlePublishAtInputChange","t12","calendarLabels","carousel","abbreviation","t13","t14","EditableReleaseDocument","useCallback","useEffect","useMemo","useRef","useState","ReleaseFormFields","Pick","UseReleaseFormOptimisticUpdatingOptions","externalValue","id","extractData","value","useReleaseFormOptimisticUpdating","t0","$","_c","t1","incomingFormData","t2","localData","setLocalData","focusedField","setFocusedField","previousIdRef","t3","currentFormData","formFieldNames","Object","keys","Array","unfocusedFieldUpdates","filter","field","reduce","fieldUpdates","field_0","updateUnfocusedFields","t4","t5","_createdAt","isEditingExistingRelease","Boolean","current","t6","Symbol","for","fieldName","createFocusHandler","t7","handleBlur","t8","formDataUpdates","currentFormData_0","updateLocalData","t9","EditableReleaseDocument","Stack","getTheme_v2","ChangeEvent","useCallback","useEffect","useRef","useState","css","styled","useTranslation","useReleaseFormOptimisticUpdating","MAX_DESCRIPTION_HEIGHT","TitleTextArea","textarea","props","color","font","theme","text","family","weights","bold","sizes","fontSize","lineHeight","input","default","enabled","fg","placeholder","DescriptionTextArea","regular","getIsReleaseOpen","release","state","resizeTextarea","element","HTMLTextAreaElement","style","height","scrollHeight","TitleDescriptionForm","t0","$","_c","onChange","disabled","t1","isReleaseOpen","titleRef","descriptionRef","setScrollHeight","t","t2","externalValue","id","_id","extractData","_temp","localData","updateLocalData","createFocusHandler","handleBlur","t3","Symbol","for","current","t4","metadata","title","t5","t6","description","t7","event","preventDefault","target","value","handleTitleChange","t8","event_0","currentTarget","handleDescriptionChange","shouldShowDescription","t9","t10","t11","t12","t13","t14","maxHeight","overflowY","t15","EditableReleaseDocument","ReleaseType","ChevronDownIcon","InfoOutlineIcon","Button","Flex","Menu","MenuItem","Stack","TabPanel","Text","addHours","startOfHour","ComponentType","MouseEventHandler","useCallback","useEffect","useId","useState","MenuButton","Tooltip","useTranslation","CONTENT_RELEASES_TIME_ZONE_SCOPE","useReleaseFormStorage","isReleaseType","DEFAULT_RELEASE_TYPE","RELEASE_TYPES_TONES","ReleaseAvatar","ScheduleDatePicker","TitleDescriptionForm","ReleaseForm","props","$","_c","onChange","value","t0","metadata","releaseType","t1","intendedPublishAt","undefined","t","getStoredReleaseData","saveReleaseDataToStorage","id","_id","t2","t3","storedData","updatedValue","title","description","t4","updatedValue_0","handleOnChangeAndStorage","t5","date","toISOString","handleBundlePublishAtCalendarChange","t6","event","pickedReleaseType","currentTarget","dataset","nextInputValue","Date","handleReleaseTypeChange","t7","updatedRelease","handleTitleDescriptionChange","menuButtonId","menuButton","setMenuButton","t8","t9","t10","Symbol","for","maxWidth","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","placement","matchReferenceWidth","boundaryElement","t25","Object","keys","t26","map","type","t27","t28","outline","t29","t30","t31","t32","t33","ReleaseTypeOption","text","SingleActionResult","isErrorWithDetails","useReleasePermissionsValue","ReleasePermissionError","details","type","isReleasePermissionError","error","createReleasePermissionsStore","isContentReleasesEnabled","permissions","key","checkWithPermissionGuard","args","Promise","action","T","Parameters","name","undefined","dryRun","skipCrossDatasetReferenceValidation","e","SingleActionResult","useMemo","FEATURES","useFeatureEnabled","useResourceCache","createReleasePermissionsStore","RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE","useReleasePermissionsValue","checkWithPermissionGuard","args","Promise","action","T","Parameters","permissions","key","useReleasePermissions","$","_c","resourceCache","contentReleasesFeature","contentReleases","releasePermissionsStore","get","dependencies","namespace","enabled","set","value","EditableReleaseDocument","useTelemetry","Box","Card","Flex","useToast","FormEvent","useCallback","useState","Button","Dialog","useTranslation","useSetPerspective","CreatedRelease","OriginInfo","useCreateReleaseMetadata","useGuardWithReleaseLimitUpsell","useReleaseFormStorage","isReleaseLimitError","useReleaseOperations","getIsReleaseInvalid","getReleaseIdFromReleaseDocumentId","getReleaseDefaults","ReleaseForm","CreateReleaseDialogProps","onCancel","onSubmit","createdReleaseId","origin","CreateReleaseDialog","props","$","_c","toast","createRelease","setPerspective","t","telemetry","createReleaseMetadata","clearReleaseDataFromStorage","release","setRelease","isSubmitting","setIsSubmitting","t0","invalid","releasePromise","t1","event","preventDefault","inQuota","releaseValue","log","Promise","_temp","_id","t2","err","console","error","push","closable","status","title","handleOnSubmit","Symbol","for","releaseMetadata","handleOnChange","t3","dialogTitle","t4","dialogConfirm","t5","handleOnClose","t6","t7","t8","t9","t10","resolve","setTimeout","defineEvent","NavigationSourceInfo","source","NavigatedToReleasesOverview","name","version","description","NavigatedToScheduledDrafts"],"sources":["../src/core/releases/hooks/useCreateReleaseMetadata.ts","../src/core/releases/hooks/useGuardWithReleaseLimitUpsell.ts","../src/core/releases/hooks/useReleaseFormStorage.ts","../src/core/releases/util/getIsReleaseInvalid.ts","../src/core/releases/components/ScheduleDatePicker.tsx","../src/core/releases/hooks/useReleaseFormOptimisticUpdating.ts","../src/core/releases/components/dialog/TitleDescriptionForm.tsx","../src/core/releases/components/dialog/ReleaseForm.tsx","../src/core/releases/store/createReleasePermissionsStore.ts","../src/core/releases/store/useReleasePermissions.ts","../src/core/releases/components/dialog/CreateReleaseDialog.tsx","../src/core/releases/__telemetry__/navigation.telemetry.ts"],"sourcesContent":["import {type EditableReleaseDocument} from '@sanity/client'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../studio/constants'\n\nexport const useCreateReleaseMetadata = () => {\n const {zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n const createReleaseMetadata = useCallback(\n (release: EditableReleaseDocument) => {\n const {metadata} = release\n const intendedPublishAt = metadata.intendedPublishAt\n ? zoneDateToUtc(new Date(metadata.intendedPublishAt)).toISOString()\n : undefined\n\n return {\n ...release,\n metadata: {\n ...metadata,\n intendedPublishAt,\n title: metadata?.title?.trim(),\n },\n }\n },\n [zoneDateToUtc],\n )\n\n return createReleaseMetadata\n}\n","import noop from 'lodash-es/noop.js'\nimport {useEffect, useState} from 'react'\n\nimport {useReleasesUpsell} from '../contexts/upsell/useReleasesUpsell'\n\nexport function useGuardWithReleaseLimitUpsell() {\n const [isPendingGuardResponse, setIsPendingGuardResponse] = useState<boolean>(true)\n const [releasePromise, setReleasePromise] = useState<Promise<boolean> | null>(null)\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setIsPendingGuardResponse(true)\n\n const promise = new Promise<boolean>((resolve) => {\n void guardWithReleaseLimitUpsell(noop, false, (hasPassed: boolean) => {\n resolve(hasPassed)\n })\n })\n\n setReleasePromise(promise)\n }, [guardWithReleaseLimitUpsell, isPendingGuardResponse])\n\n return {\n releasePromise,\n }\n}\n","import {type ReleaseType} from '@sanity/client'\nimport {useCallback} from 'react'\n\nconst RELEASE_FORM_STORAGE_KEY = 'studio.release-form.recovery'\n\ninterface ReleaseFormDraft {\n title?: string\n description?: string\n releaseType?: ReleaseType\n intendedPublishAt?: string\n}\n\n/**\n * This hook is used to store the release form data in localStorage.\n * The main use case is when a user accidentally closes the dialog for a release before it is created .\n *\n * @returns an object with the following methods:\n * - getStoredReleaseData: a function that returns the stored release form data\n * - saveReleaseDataToStorage: a function that saves the release form data to localStorage\n * - clearReleaseDataFromStorage: a function that clears the release form data from localStorage\n */\nexport function useReleaseFormStorage() {\n const getStoredReleaseData = useCallback((): ReleaseFormDraft | undefined => {\n const stored = localStorage.getItem(RELEASE_FORM_STORAGE_KEY)\n return stored ? JSON.parse(stored) : undefined\n }, [])\n\n const saveReleaseDataToStorage = useCallback((data: ReleaseFormDraft) => {\n localStorage.setItem(RELEASE_FORM_STORAGE_KEY, JSON.stringify(data))\n }, [])\n\n const clearReleaseDataFromStorage = useCallback(() => {\n localStorage.removeItem(RELEASE_FORM_STORAGE_KEY)\n }, [])\n\n return {getStoredReleaseData, saveReleaseDataToStorage, clearReleaseDataFromStorage}\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\n\nexport function getIsReleaseInvalid(release: EditableReleaseDocument) {\n return release.metadata?.releaseType === 'scheduled' && !release.metadata?.intendedPublishAt\n}\n","import {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {Flex} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../ui-components/button/Button'\nimport {MONTH_PICKER_VARIANT} from '../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../components/inputs/DateInputs/DateTimeInput'\nimport {getCalendarLabels} from '../../form/inputs/DateInputs'\nimport useDialogTimeZone from '../../hooks/useDialogTimeZone'\nimport {type TimeZoneScope, useTimeZone} from '../../hooks/useTimeZone'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\n\ninterface ScheduleDatePickerProps {\n value: Date | undefined\n onChange: (date: Date) => void\n timeZoneScope: TimeZoneScope\n}\n\nconst inputDateFormat = 'PP HH:mm'\n\nexport const ScheduleDatePicker = ({value, onChange, timeZoneScope}: ScheduleDatePickerProps) => {\n const {t} = useTranslation()\n const {timeZone, utcToCurrentZoneDate, zoneDateToUtc} = useTimeZone(timeZoneScope)\n const {dialogTimeZoneShow, DialogTimeZone, dialogProps} = useDialogTimeZone(timeZoneScope)\n\n const timeZoneAdjustedValue = value ? utcToCurrentZoneDate(value) : undefined\n\n const handlePublishAtCalendarChange = (date: Date | null) => {\n if (!date) return\n\n onChange(zoneDateToUtc(date))\n }\n\n const handlePublishAtInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const date = event.currentTarget.value\n const parsedDate = zoneDateToUtc(parse(date, inputDateFormat, new Date()))\n\n if (isValid(parsedDate)) onChange(parsedDate)\n },\n [onChange, zoneDateToUtc],\n )\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n\n return (\n <Flex flex={1} justify=\"space-between\">\n <DateTimeInput\n selectTime\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n onChange={handlePublishAtCalendarChange}\n onInputChange={handlePublishAtInputChange}\n calendarLabels={calendarLabels}\n value={timeZoneAdjustedValue}\n inputValue={timeZoneAdjustedValue ? format(timeZoneAdjustedValue, inputDateFormat) : ''}\n constrainSize={false}\n padding={0}\n isPastDisabled\n timeZoneScope={timeZoneScope}\n />\n\n <Button\n icon={EarthGlobeIcon}\n mode=\"bleed\"\n size=\"default\"\n text={`${timeZone.abbreviation}`}\n onClick={dialogTimeZoneShow}\n />\n {DialogTimeZone && <DialogTimeZone {...dialogProps} />}\n </Flex>\n )\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\ntype ReleaseFormFields = Pick<EditableReleaseDocument['metadata'], 'title' | 'description'>\n\ninterface UseReleaseFormOptimisticUpdatingOptions {\n /** The external value from props/server */\n externalValue: EditableReleaseDocument\n id: string\n extractData: (value: EditableReleaseDocument) => ReleaseFormFields\n}\n\n/**\n * Hook for managing release form state that syncs with server data while respecting per-field focus.\n *\n * This prevents server updates from overriding user input during typing.\n * Local state syncs with server data on a per-field basis only when the field is not focused.\n *\n * @internal\n */\nexport function useReleaseFormOptimisticUpdating({\n externalValue,\n id,\n extractData,\n}: UseReleaseFormOptimisticUpdatingOptions) {\n const incomingFormData = useMemo(() => extractData(externalValue), [externalValue, extractData])\n const [localData, setLocalData] = useState(() => incomingFormData)\n const [focusedField, setFocusedField] = useState<string | null>(null)\n const previousIdRef = useRef(id)\n\n const updateUnfocusedFields = useCallback(\n (currentFormData: ReleaseFormFields) => {\n const formFieldNames = Object.keys(incomingFormData) as Array<keyof ReleaseFormFields>\n const unfocusedFieldUpdates = formFieldNames\n .filter((field) => field !== focusedField)\n .reduce<Partial<ReleaseFormFields>>((fieldUpdates, field) => {\n fieldUpdates[field] = incomingFormData[field]\n\n return fieldUpdates\n }, {})\n\n return {...currentFormData, ...unfocusedFieldUpdates}\n },\n [incomingFormData, focusedField],\n )\n\n useEffect(() => {\n // New releases don't have _createdAt and should always sync to support local storage\n const isEditingExistingRelease = Boolean(externalValue._createdAt)\n\n // if tracking a new ID\n\n if (previousIdRef.current === id) {\n setLocalData(isEditingExistingRelease ? updateUnfocusedFields : incomingFormData)\n } else {\n previousIdRef.current = id\n setLocalData(incomingFormData)\n setFocusedField(null)\n }\n }, [incomingFormData, id, externalValue._createdAt, updateUnfocusedFields])\n\n const createFocusHandler = useCallback(\n (fieldName: string) => () => setFocusedField(fieldName),\n [],\n )\n\n const handleBlur = useCallback(() => setFocusedField(null), [])\n\n const updateLocalData = useCallback((formDataUpdates: Partial<ReleaseFormFields>) => {\n setLocalData((currentFormData) => ({...currentFormData, ...formDataUpdates}))\n }, [])\n\n return {\n localData,\n updateLocalData,\n createFocusHandler,\n handleBlur,\n focusedField,\n }\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {Stack} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {type ChangeEvent, useCallback, useEffect, useRef, useState} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseFormOptimisticUpdating} from '../../hooks/useReleaseFormOptimisticUpdating'\n\nconst MAX_DESCRIPTION_HEIGHT = 200\n\nconst TitleTextArea = styled.textarea((props) => {\n const {color, font} = getTheme_v2(props.theme)\n return css`\n resize: none;\n overflow: hidden;\n appearance: none;\n background: none;\n border: 0;\n padding: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.text.family};\n font-weight: ${font.text.weights.bold};\n font-size: ${font.text.sizes[4].fontSize}px;\n line-height: ${font.text.sizes[4].lineHeight}px;\n min-height: ${font.text.sizes[4].lineHeight}px;\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n /* NOTE: This is a hack to disable Chrome's autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n color: ${color.input.default.enabled.fg};\n\n &::placeholder {\n color: ${color.input.default.enabled.placeholder};\n }\n `\n})\n\nconst DescriptionTextArea = styled.textarea((props) => {\n const {color, font} = getTheme_v2(props.theme)\n\n return css`\n resize: none;\n overflow: hidden;\n appearance: none;\n background: none;\n border: 0;\n padding: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.text.family};\n font-weight: ${font.text.weights.regular};\n font-size: ${font.text.sizes[2].fontSize}px;\n height: auto;\n line-height: ${font.text.sizes[2].lineHeight}px;\n margin: 0;\n max-width: 624px;\n position: relative;\n z-index: 1;\n display: block;\n color: ${color.input.default.enabled.fg};\n\n &::placeholder {\n color: ${color.input.default.enabled.placeholder};\n }\n `\n})\n\nexport const getIsReleaseOpen = (release: EditableReleaseDocument): boolean =>\n release.state !== 'archived' && release.state !== 'published'\n\nfunction resizeTextarea(element: HTMLTextAreaElement): void {\n element.style.height = 'auto'\n element.style.height = `${element.scrollHeight}px`\n}\n\nexport function TitleDescriptionForm({\n release,\n onChange,\n disabled,\n}: {\n release: EditableReleaseDocument\n onChange: (changedValue: EditableReleaseDocument) => void\n disabled?: boolean\n}): React.JSX.Element {\n const isReleaseOpen = getIsReleaseOpen(release)\n const titleRef = useRef<HTMLTextAreaElement>(null)\n const descriptionRef = useRef<HTMLTextAreaElement>(null)\n const [scrollHeight, setScrollHeight] = useState(46)\n const {t} = useTranslation()\n\n const {localData, updateLocalData, createFocusHandler, handleBlur} =\n useReleaseFormOptimisticUpdating({\n externalValue: release,\n id: release._id,\n extractData: useCallback(\n ({metadata}: EditableReleaseDocument) => ({\n title: metadata.title,\n description: metadata.description,\n }),\n [],\n ),\n })\n\n useEffect(() => {\n if (titleRef.current) {\n resizeTextarea(titleRef.current)\n }\n }, [release.metadata.title])\n\n useEffect(() => {\n if (descriptionRef.current) {\n resizeTextarea(descriptionRef.current)\n setScrollHeight(descriptionRef.current.scrollHeight)\n }\n }, [release.metadata.description])\n\n const handleTitleChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n event.preventDefault()\n const title = event.target.value\n updateLocalData({title})\n onChange({...release, metadata: {...release.metadata, title}})\n if (titleRef.current) {\n resizeTextarea(titleRef.current)\n }\n },\n [onChange, release, updateLocalData],\n )\n\n const handleDescriptionChange = useCallback(\n (event: ChangeEvent<HTMLTextAreaElement>) => {\n event.preventDefault()\n if (!isReleaseOpen) return\n\n const description = event.target.value\n updateLocalData({description})\n onChange({...release, metadata: {...release.metadata, description}})\n\n // Reset to 'auto' first so the textarea can shrink when text is removed\n if (descriptionRef.current) {\n resizeTextarea(descriptionRef.current)\n }\n\n setScrollHeight(event.currentTarget.scrollHeight)\n },\n [isReleaseOpen, onChange, release, updateLocalData],\n )\n\n const shouldShowDescription = isReleaseOpen || localData.description\n\n return (\n <Stack space={3}>\n <TitleTextArea\n ref={titleRef}\n onChange={handleTitleChange}\n onFocus={createFocusHandler('title')}\n onBlur={handleBlur}\n value={localData.title}\n placeholder={t('release.placeholder-untitled-release')}\n data-testid=\"release-form-title\"\n readOnly={!isReleaseOpen}\n disabled={disabled}\n />\n {shouldShowDescription && (\n <DescriptionTextArea\n ref={descriptionRef}\n autoFocus={!localData.title}\n value={localData.description}\n placeholder={t('release.form.placeholder-describe-release')}\n onChange={handleDescriptionChange}\n onFocus={createFocusHandler('description')}\n onBlur={handleBlur}\n style={{\n height: `${scrollHeight}px`,\n maxHeight: MAX_DESCRIPTION_HEIGHT,\n overflowY: scrollHeight > MAX_DESCRIPTION_HEIGHT ? 'auto' : 'hidden',\n }}\n data-testid=\"release-form-description\"\n disabled={disabled}\n readOnly={!isReleaseOpen}\n />\n )}\n </Stack>\n )\n}\n","import {type EditableReleaseDocument, type ReleaseType} from '@sanity/client'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {\n // oxlint-disable-next-line no-restricted-imports -- fine-grained control needed\n Button,\n Flex,\n Menu,\n // oxlint-disable-next-line no-restricted-imports -- fine-grained control needed\n MenuItem,\n Stack,\n TabPanel,\n Text,\n} from '@sanity/ui'\nimport {addHours} from 'date-fns/addHours'\nimport {startOfHour} from 'date-fns/startOfHour'\nimport {\n type ComponentType,\n type MouseEventHandler,\n useCallback,\n useEffect,\n useId,\n useState,\n} from 'react'\n\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useReleaseFormStorage} from '../../hooks/useReleaseFormStorage'\nimport {isReleaseType} from '../../store/types'\nimport {DEFAULT_RELEASE_TYPE, RELEASE_TYPES_TONES} from '../../util/const'\nimport {ReleaseAvatar} from '../ReleaseAvatar'\nimport {ScheduleDatePicker} from '../ScheduleDatePicker'\nimport {TitleDescriptionForm} from './TitleDescriptionForm'\n\n/** @internal */\nexport function ReleaseForm(props: {\n onChange: (params: EditableReleaseDocument) => void\n value: EditableReleaseDocument\n}): React.JSX.Element {\n const {onChange, value} = props\n const {releaseType = DEFAULT_RELEASE_TYPE, intendedPublishAt} = value.metadata || {}\n const {t} = useTranslation()\n const {getStoredReleaseData, saveReleaseDataToStorage} = useReleaseFormStorage()\n\n const id = value._id\n\n useEffect(() => {\n const storedData = getStoredReleaseData()\n if (storedData) {\n const updatedValue = {\n metadata: {\n title: storedData.title,\n description: storedData.description,\n releaseType: storedData.releaseType ?? DEFAULT_RELEASE_TYPE,\n intendedPublishAt: storedData.intendedPublishAt,\n },\n }\n onChange({_id: id, ...updatedValue})\n }\n }, [getStoredReleaseData, id, onChange])\n\n const handleOnChangeAndStorage = useCallback(\n (updatedValue: EditableReleaseDocument) => {\n onChange(updatedValue)\n saveReleaseDataToStorage({\n ...updatedValue.metadata,\n })\n },\n [onChange, saveReleaseDataToStorage],\n )\n\n const handleBundlePublishAtCalendarChange = useCallback(\n (date: Date) => {\n handleOnChangeAndStorage({\n ...value,\n metadata: {...value.metadata, intendedPublishAt: date.toISOString()},\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const handleReleaseTypeChange = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n const pickedReleaseType = event.currentTarget.dataset.value\n\n if (!isReleaseType(pickedReleaseType)) {\n return\n }\n\n // select the start of the next hour\n const nextInputValue = startOfHour(addHours(new Date(), 1))\n\n handleOnChangeAndStorage({\n ...value,\n metadata: {\n ...value.metadata,\n releaseType: pickedReleaseType,\n intendedPublishAt:\n (pickedReleaseType === 'scheduled' && nextInputValue.toISOString()) || undefined,\n },\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const handleTitleDescriptionChange = useCallback(\n (updatedRelease: EditableReleaseDocument) => {\n handleOnChangeAndStorage({\n ...value,\n metadata: {\n ...value.metadata,\n title: updatedRelease.metadata.title,\n description: updatedRelease.metadata.description,\n },\n })\n },\n [handleOnChangeAndStorage, value],\n )\n\n const menuButtonId = useId()\n const [menuButton, setMenuButton] = useState<HTMLElement | null>(null)\n\n return (\n <Stack space={5}>\n <Stack space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"label\" htmlFor={menuButtonId}>\n {t('release.dialog.tooltip.title')}\n </Text>\n <Text muted size={1}>\n <Tooltip\n content={\n <Stack space={3} style={{maxWidth: 320 - 16}}>\n <Text size={1}>{t('release.dialog.tooltip.description')}</Text>\n <Text muted size={1}>\n {t('release.dialog.tooltip.note')}\n </Text>\n </Stack>\n }\n delay={0}\n placement=\"right-start\"\n portal\n >\n <InfoOutlineIcon />\n </Tooltip>\n </Text>\n </Flex>\n <Stack space={3}>\n <MenuButton\n id={menuButtonId}\n ref={setMenuButton}\n button={\n <Button mode=\"ghost\">\n <Flex justify=\"space-between\" align=\"center\">\n <ReleaseTypeOption\n text={t(`release.type.${releaseType}`)}\n releaseType={releaseType}\n />\n <Text size={1}>\n <ChevronDownIcon />\n </Text>\n </Flex>\n </Button>\n }\n popover={{\n placement: 'bottom',\n matchReferenceWidth: true,\n boundaryElement: menuButton,\n }}\n menu={\n <Menu>\n {/* oxlint-disable-next-line typescript/no-unsafe-type-assertion */}\n {(Object.keys(RELEASE_TYPES_TONES) as ReleaseType[]).map((type) => (\n <MenuItem key={type} data-value={type} onClick={handleReleaseTypeChange}>\n <ReleaseTypeOption text={t(`release.type.${type}`)} releaseType={type} />\n </MenuItem>\n ))}\n </Menu>\n }\n />\n <Flex gap={1}>\n {releaseType === 'scheduled' && (\n <TabPanel\n aria-labelledby=\"release-timing-at-time-tab\"\n flex={1}\n id=\"release-timing-at-time\"\n style={{outline: 'none'}}\n tabIndex={-1}\n >\n <ScheduleDatePicker\n value={intendedPublishAt ? new Date(intendedPublishAt) : undefined}\n onChange={handleBundlePublishAtCalendarChange}\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </TabPanel>\n )}\n </Flex>\n </Stack>\n </Stack>\n <TitleDescriptionForm release={value} onChange={handleTitleDescriptionChange} />\n </Stack>\n )\n}\n\nconst ReleaseTypeOption: ComponentType<{\n text: string\n releaseType: ReleaseType\n}> = ({releaseType, text}) => (\n <Flex gap={3} align=\"center\">\n <ReleaseAvatar padding={1} releaseType={releaseType} />\n <Text>{text}</Text>\n </Flex>\n)\n","import {type SingleActionResult} from '@sanity/client'\n\nimport {isErrorWithDetails} from '../../error/types/isErrorWithDetails'\nimport {type useReleasePermissionsValue} from './useReleasePermissions'\n\ntype ReleasePermissionError = {details: {type: 'insufficientPermissionsError'}}\n\n/**\n * Checks if the error is a permission error\n *\n * @param error - the error to check\n * @returns true if the error is a permission error\n */\nconst isReleasePermissionError = (error: unknown): error is ReleasePermissionError =>\n isErrorWithDetails(error) && error.details?.type === 'insufficientPermissionsError'\n\n/**\n * Store that contains if the user has permissions to perform a release action\n * And a guardrail to dry run requests to check if the user has permissions\n *\n * @returns an object with the following properties:\n * * checkWithPermissionGuard - a function that checks if the user has permissions to perform a release action by adding dryRun properties\n * * permissions - an object with the permissions for each action\n *\n * @internal\n */\nexport function createReleasePermissionsStore(\n isContentReleasesEnabled: boolean,\n): useReleasePermissionsValue {\n let permissions: {[key: string]: boolean} = {}\n\n /**\n * Checks if a release action can be performed by running a dry run of the given action\n *\n * @param action - any of the actions from the {@link ReleaseOperationStore}, e.g. publishRelease should send in also the needed props\n * @param args - the arguments to pass to the action (release id, etc)\n * @returns true or false depending if the user can perform the action\n */\n const checkWithPermissionGuard = async <\n T extends (...args: any[]) => Promise<void | SingleActionResult>,\n >(\n action: T,\n ...args: Parameters<T>\n ): Promise<boolean> => {\n if (!isContentReleasesEnabled) {\n /**\n * When content releases feature flag is disabled\n * assume allowed permissions to provide upsell\n */\n return true\n }\n\n if (permissions[action.name] === undefined) {\n try {\n await action(...args, {\n dryRun: true,\n skipCrossDatasetReferenceValidation: true,\n })\n permissions = {...permissions, [action.name]: true}\n\n return true\n } catch (e) {\n permissions = {...permissions, [action.name]: false}\n\n return !isReleasePermissionError(e)\n }\n } else {\n return permissions[action.name]\n }\n }\n return {\n checkWithPermissionGuard: checkWithPermissionGuard,\n permissions,\n }\n}\n","import {type SingleActionResult} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {FEATURES, useFeatureEnabled} from '../../hooks/useFeatureEnabled'\nimport {useResourceCache} from '../../store/ResourceCacheProvider'\nimport {createReleasePermissionsStore} from './createReleasePermissionsStore'\n\nconst RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE = 'ReleasePermissions'\n\nexport interface useReleasePermissionsValue {\n checkWithPermissionGuard: <T extends (...args: any[]) => Promise<void | SingleActionResult>>(\n action: T,\n ...args: Parameters<T>\n ) => Promise<boolean>\n permissions: {[key: string]: boolean}\n}\n\n/**\n * @internal\n */\nexport function useReleasePermissions(): useReleasePermissionsValue {\n const resourceCache = useResourceCache()\n const contentReleasesFeature = useFeatureEnabled(FEATURES.contentReleases)\n\n return useMemo(() => {\n const releasePermissionsStore =\n resourceCache.get<useReleasePermissionsValue>({\n dependencies: [contentReleasesFeature],\n namespace: RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE,\n }) || createReleasePermissionsStore(contentReleasesFeature.enabled)\n\n resourceCache.set({\n namespace: RELEASE_PERMISSIONS_RESOURCE_CACHE_NAMESPACE,\n value: releasePermissionsStore,\n dependencies: [contentReleasesFeature],\n })\n\n return releasePermissionsStore\n }, [contentReleasesFeature, resourceCache])\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, Flex, useToast} from '@sanity/ui'\nimport {type FormEvent, useCallback, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useSetPerspective} from '../../../perspective/useSetPerspective'\nimport {CreatedRelease, type OriginInfo} from '../../__telemetry__/releases.telemetry'\nimport {useCreateReleaseMetadata} from '../../hooks/useCreateReleaseMetadata'\nimport {useGuardWithReleaseLimitUpsell} from '../../hooks/useGuardWithReleaseLimitUpsell'\nimport {useReleaseFormStorage} from '../../hooks/useReleaseFormStorage'\nimport {isReleaseLimitError} from '../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getIsReleaseInvalid} from '../../util/getIsReleaseInvalid'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDefaults} from '../../util/util'\nimport {ReleaseForm} from './ReleaseForm'\n\ninterface CreateReleaseDialogProps {\n onCancel: () => void\n onSubmit: (createdReleaseId: string) => void\n origin?: OriginInfo['origin']\n}\n\nexport function CreateReleaseDialog(props: CreateReleaseDialogProps): React.JSX.Element {\n const {onCancel, onSubmit, origin} = props\n const toast = useToast()\n const {createRelease} = useReleaseOperations()\n const setPerspective = useSetPerspective()\n const {t} = useTranslation()\n const telemetry = useTelemetry()\n const createReleaseMetadata = useCreateReleaseMetadata()\n const {clearReleaseDataFromStorage} = useReleaseFormStorage()\n\n const [release, setRelease] = useState(getReleaseDefaults)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const invalid = getIsReleaseInvalid(release)\n\n const {releasePromise} = useGuardWithReleaseLimitUpsell()\n\n const handleOnSubmit = useCallback(\n async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n setIsSubmitting(true)\n const inQuota = await releasePromise\n\n if (!inQuota) {\n setIsSubmitting(false)\n return\n }\n\n try {\n const releaseValue = createReleaseMetadata(release)\n\n await createRelease(releaseValue)\n // Close the dialog after creating the release.\n onCancel()\n telemetry.log(CreatedRelease, {origin})\n\n // TODO: Remove this! temporary fix to give some time for the release to be created and the releases store state updated before closing the dialog.\n await new Promise((resolve) => setTimeout(resolve, 1000))\n // TODO: Remove the upper part\n\n setPerspective(getReleaseIdFromReleaseDocumentId(release._id))\n\n onSubmit(getReleaseIdFromReleaseDocumentId(release._id))\n } catch (err) {\n if (isReleaseLimitError(err)) {\n onCancel()\n clearReleaseDataFromStorage()\n } else {\n console.error(err)\n toast.push({\n closable: true,\n status: 'error',\n title: t('release.toast.create-release-error.title'),\n })\n }\n }\n setIsSubmitting(false)\n clearReleaseDataFromStorage()\n },\n [\n releasePromise,\n createReleaseMetadata,\n release,\n createRelease,\n telemetry,\n origin,\n setPerspective,\n onSubmit,\n onCancel,\n toast,\n t,\n clearReleaseDataFromStorage,\n ],\n )\n\n const handleOnChange = useCallback((releaseMetadata: EditableReleaseDocument) => {\n setRelease(releaseMetadata)\n }, [])\n\n const dialogTitle = t('release.dialog.create.title')\n const dialogConfirm = t('release.dialog.create.confirm')\n\n const handleOnClose = useCallback(() => {\n clearReleaseDataFromStorage()\n onCancel()\n }, [clearReleaseDataFromStorage, onCancel])\n\n return (\n <Dialog\n onClickOutside={onCancel}\n header={dialogTitle}\n id=\"create-release-dialog\"\n onClose={handleOnClose}\n width={1}\n padding={false}\n >\n <Card padding={4} borderTop>\n <form onSubmit={handleOnSubmit}>\n <Box paddingBottom={4}>\n <ReleaseForm onChange={handleOnChange} value={release} />\n </Box>\n <Flex justify=\"flex-end\" paddingTop={5}>\n <Button\n size=\"large\"\n disabled={isSubmitting || invalid}\n type=\"submit\"\n text={dialogConfirm}\n loading={isSubmitting}\n data-testid=\"submit-release-button\"\n />\n </Flex>\n </form>\n </Card>\n </Dialog>\n )\n}\n","import {defineEvent} from '@sanity/telemetry'\n\n// Parameter interface to distinguish navigation source\ninterface NavigationSourceInfo {\n source: 'menu' | 'view-picker'\n}\n\n// Event when user navigates to releases overview\nexport const NavigatedToReleasesOverview = defineEvent<NavigationSourceInfo>({\n name: 'Navigated to Content Releases',\n version: 1,\n description: 'User navigated to the content releases list view',\n})\n\n// Event when user navigates to scheduled drafts view\nexport const NavigatedToScheduledDrafts = defineEvent<NavigationSourceInfo>({\n name: 'Navigated to Scheduled Drafts',\n version: 1,\n description: 'User navigated to the scheduled drafts list view',\n})\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { t as PaneContainer } from "./PaneContainer-B_cWaSSe.js";
2
+ export { PaneContainer as default };
@@ -0,0 +1,2 @@
1
+ import { p as DocumentPane } from "./structureTool-By2eJI8F.js";
2
+ export { DocumentPane as default };
@@ -1,7 +1,7 @@
1
- import { p as useCurrentUser } from "./datastores-CFWEadl-.js";
1
+ import { p as useCurrentUser } from "./datastores-CrRYBoDP.js";
2
2
  import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
3
- import { Sn as releasesLocaleNamespace, Xn as isGoingToUnpublish, Ya as definePlugin, bo as InsufficientPermissionsMessage, ci as useDocumentPairPermissions, di as getTargetScopeId, fi as useTargetDocumentState, yi as usePerspective } from "./useBundleDocuments-CWvP-dZI.js";
4
- import { i as useVersionOperations, r as DiscardVersionDialog, t as UnpublishVersionDialog } from "./UnpublishVersionDialog-B0kX1dt6.js";
3
+ import { Sn as releasesLocaleNamespace, Xn as isGoingToUnpublish, Ya as definePlugin, bo as InsufficientPermissionsMessage, ci as useDocumentPairPermissions, di as getTargetScopeId, fi as useTargetDocumentState, yi as usePerspective } from "./useBundleDocuments-Dyop3VGZ.js";
4
+ import { i as useVersionOperations, r as DiscardVersionDialog, t as UnpublishVersionDialog } from "./UnpublishVersionDialog-VZflky9U.js";
5
5
  import { useState } from "react";
6
6
  import { c } from "react/compiler-runtime";
7
7
  import { jsx } from "react/jsx-runtime";
@@ -144,4 +144,4 @@ const RELEASES_NAME = "sanity/releases", RELEASES_INTENT = "release", releases =
144
144
  });
145
145
  export { RELEASES_NAME as n, releases as r, RELEASES_INTENT as t };
146
146
 
147
- //# sourceMappingURL=plugin-Cr5EXfrh.js.map
147
+ //# sourceMappingURL=plugin-CLeQ5x8I.js.map