sanity 6.9.2-next.19 → 6.9.2-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.
- package/lib/{AddonDatasetProvider-nJJRR9jT.js → AddonDatasetProvider-B5npf4J4.js} +2 -2
- package/lib/{AddonDatasetProvider-nJJRR9jT.js.map → AddonDatasetProvider-B5npf4J4.js.map} +1 -1
- package/lib/{CalendarFilter-C3qKoMgj.js → CalendarFilter-DYJEZDCP.js} +3 -3
- package/lib/{CalendarFilter-C3qKoMgj.js.map → CalendarFilter-DYJEZDCP.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-CJEb70_X.js → CommentsDocumentLayout-CTL7lt6a.js} +2 -2
- package/lib/{CommentsDocumentLayout-CJEb70_X.js.map → CommentsDocumentLayout-CTL7lt6a.js.map} +1 -1
- package/lib/{CommentsField-CK_xlObT.js → CommentsField-BE_CI2SY.js} +3 -3
- package/lib/{CommentsField-CK_xlObT.js.map → CommentsField-BE_CI2SY.js.map} +1 -1
- package/lib/{CommentsInput-Bqx1QGN9.js → CommentsInput-D_EM-t5a.js} +5 -5
- package/lib/{CommentsInput-Bqx1QGN9.js.map → CommentsInput-D_EM-t5a.js.map} +1 -1
- package/lib/{CommentsInspector-BsScnZ7T.js → CommentsInspector-DtBIUadl.js} +5 -5
- package/lib/{CommentsInspector-BsScnZ7T.js.map → CommentsInspector-DtBIUadl.js.map} +1 -1
- package/lib/{CommentsListItem-B36-iAV4.js → CommentsListItem-BFRqZMJ6.js} +3 -3
- package/lib/{CommentsListItem-B36-iAV4.js.map → CommentsListItem-BFRqZMJ6.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-B7qLbQXm.js → CommentsSelectedPathProvider-CIKpHpK3.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-B7qLbQXm.js.map → CommentsSelectedPathProvider-CIKpHpK3.js.map} +1 -1
- package/lib/{CommentsStudioLayout-DDV5Hn1e.js → CommentsStudioLayout-Dx0jIDle.js} +4 -4
- package/lib/{CommentsStudioLayout-DDV5Hn1e.js.map → CommentsStudioLayout-Dx0jIDle.js.map} +1 -1
- package/lib/{ReleasesMetadataProvider-DQk85oMv.js → ReleasesMetadataProvider-hILX90V4.js} +2 -2
- package/lib/{ReleasesMetadataProvider-DQk85oMv.js.map → ReleasesMetadataProvider-hILX90V4.js.map} +1 -1
- package/lib/{ReleasesNav-89ta88FN.js → ReleasesNav-DIv-1iR7.js} +14 -14
- package/lib/{ReleasesNav-89ta88FN.js.map → ReleasesNav-DIv-1iR7.js.map} +1 -1
- package/lib/{ReleasesStudioLayout-CovMB7K_.js → ReleasesStudioLayout-DW7fJSfG.js} +8 -8
- package/lib/{ReleasesStudioLayout-CovMB7K_.js.map → ReleasesStudioLayout-DW7fJSfG.js.map} +1 -1
- package/lib/{ReleasesTool-GbOPjsdx.js → ReleasesTool-BQjO7osC.js} +15 -15
- package/lib/{ReleasesTool-GbOPjsdx.js.map → ReleasesTool-BQjO7osC.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-BzgWwSQC.js → SchedulePublishingStudioLayout-Cwmdz7HZ.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-BzgWwSQC.js.map → SchedulePublishingStudioLayout-Cwmdz7HZ.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-CSUCA4L0.js → SchedulePublishingUpsellProvider-C5B21VDh.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-CSUCA4L0.js.map → SchedulePublishingUpsellProvider-C5B21VDh.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-B_-NRkQR.js → ScheduledPublishingEnabledProvider-BNMAVqrS.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-B_-NRkQR.js.map → ScheduledPublishingEnabledProvider-BNMAVqrS.js.map} +1 -1
- package/lib/{SearchProvider-Bcl7TUXU.js → SearchProvider-DkGUk8a6.js} +4 -4
- package/lib/{SearchProvider-Bcl7TUXU.js.map → SearchProvider-DkGUk8a6.js.map} +1 -1
- package/lib/{SingleDocReleaseLayout-DyuHFzDr.js → SingleDocReleaseLayout-fW8U-ktp.js} +2 -2
- package/lib/{SingleDocReleaseLayout-DyuHFzDr.js.map → SingleDocReleaseLayout-fW8U-ktp.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-C04uZ6yZ.js → SingleDocReleaseUpsellProvider-BNF2Rj3j.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-C04uZ6yZ.js.map → SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-CFTNStZl.js → TasksStudioActiveToolLayout-CHazNA61.js} +11 -11
- package/lib/{TasksStudioActiveToolLayout-CFTNStZl.js.map → TasksStudioActiveToolLayout-CHazNA61.js.map} +1 -1
- package/lib/{TasksStudioLayout-CwwL73iU.js → TasksStudioLayout-B7bCL28Q.js} +5 -5
- package/lib/{TasksStudioLayout-CwwL73iU.js.map → TasksStudioLayout-B7bCL28Q.js.map} +1 -1
- package/lib/{Tool-BbufMsX6.js → Tool-rkq_tjXo.js} +12 -12
- package/lib/{Tool-BbufMsX6.js.map → Tool-rkq_tjXo.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-BxK4yDRF.js → UnpublishVersionDialog-DWYCXGkz.js} +4 -4
- package/lib/{UnpublishVersionDialog-BxK4yDRF.js.map → UnpublishVersionDialog-DWYCXGkz.js.map} +1 -1
- package/lib/{UpsellDialog-BZquQ9_2.js → UpsellDialog-BiDSVmne.js} +2 -2
- package/lib/{UpsellDialog-BZquQ9_2.js.map → UpsellDialog-BiDSVmne.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-B_gCz-F9.js → VariantsStudioNavbar-Bae9LOIN.js} +7 -7
- package/lib/{VariantsStudioNavbar-B_gCz-F9.js.map → VariantsStudioNavbar-Bae9LOIN.js.map} +1 -1
- package/lib/{VariantsTool-DDbgl8lk.js → VariantsTool-E4ptTHik.js} +7 -7
- package/lib/{VariantsTool-DDbgl8lk.js.map → VariantsTool-E4ptTHik.js.map} +1 -1
- package/lib/{WorkspaceLoader-DcZKnJdd.js → WorkspaceLoader-sdFQ9rkh.js} +21 -21
- package/lib/{WorkspaceLoader-DcZKnJdd.js.map → WorkspaceLoader-sdFQ9rkh.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/{buildTextSelectionFromFragment-CL9uwZFP.js → buildTextSelectionFromFragment-CuXpitEZ.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-CL9uwZFP.js.map → buildTextSelectionFromFragment-CuXpitEZ.js.map} +1 -1
- package/lib/{datastores-BnMHlHos.js → datastores-XTDIa3jc.js} +2 -2
- package/lib/{datastores-BnMHlHos.js.map → datastores-XTDIa3jc.js.map} +1 -1
- package/lib/index.js +81 -79
- package/lib/index.js.map +1 -1
- package/lib/{inputResolver-BekzeVyP.js → inputResolver-DLP8YZcM.js} +4 -4
- package/lib/{inputResolver-BekzeVyP.js.map → inputResolver-DLP8YZcM.js.map} +1 -1
- package/lib/{navigation.telemetry-FenrX1w0.js → navigation.telemetry-4pppJENG.js} +7 -7
- package/lib/{navigation.telemetry-FenrX1w0.js.map → navigation.telemetry-4pppJENG.js.map} +1 -1
- package/lib/{plugin-cPaI6D0U.js → plugin-BRnqEpCl.js} +6 -6
- package/lib/{plugin-cPaI6D0U.js.map → plugin-BRnqEpCl.js.map} +1 -1
- package/lib/{plugin-CWmLikSs.js → plugin-BUox1zeI.js} +3 -3
- package/lib/{plugin-CWmLikSs.js.map → plugin-BUox1zeI.js.map} +1 -1
- package/lib/{plugin-Ddi4AMkt.js → plugin-BmARoHKH.js} +4 -4
- package/lib/{plugin-Ddi4AMkt.js.map → plugin-BmARoHKH.js.map} +1 -1
- package/lib/{plugin-z6OdDBmf.js → plugin-CjN39wwt.js} +5 -5
- package/lib/{plugin-z6OdDBmf.js.map → plugin-CjN39wwt.js.map} +1 -1
- package/lib/{scheduleItem-Cx7NfsM4.js → scheduleItem-Dtb26ejO.js} +8 -8
- package/lib/{scheduleItem-Cx7NfsM4.js.map → scheduleItem-Dtb26ejO.js.map} +1 -1
- package/lib/{schedules-BNxmPZVV.js → schedules-6qsR7E_I.js} +3 -3
- package/lib/{schedules-BNxmPZVV.js.map → schedules-6qsR7E_I.js.map} +1 -1
- package/lib/{searchDocumentRelease-DlMcUHuB.js → searchDocumentRelease-CUk7BiST.js} +4 -4
- package/lib/{searchDocumentRelease-DlMcUHuB.js.map → searchDocumentRelease-CUk7BiST.js.map} +1 -1
- package/lib/{studioClient-jNm9Eruw.js → studioClient-D1Z2zK3C.js} +2 -2
- package/lib/{studioClient-jNm9Eruw.js.map → studioClient-D1Z2zK3C.js.map} +1 -1
- package/lib/{useBundleDocuments-SjvVIyKn.js → useBundleDocuments-BnCBcbdJ.js} +7 -7
- package/lib/{useBundleDocuments-SjvVIyKn.js.map → useBundleDocuments-BnCBcbdJ.js.map} +1 -1
- package/lib/{useComments-DuYF1ld_.js → useComments-Bm-0CwNH.js} +2 -2
- package/lib/{useComments-DuYF1ld_.js.map → useComments-Bm-0CwNH.js.map} +1 -1
- package/lib/{useCommentsTelemetry-D51-BFCf.js → useCommentsTelemetry-D1kYRuPU.js} +3 -3
- package/lib/{useCommentsTelemetry-D51-BFCf.js.map → useCommentsTelemetry-D1kYRuPU.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-CwSiao2Q.js → useDocumentPreviewValues-DJvES8Wi.js} +3 -3
- package/lib/{useDocumentPreviewValues-CwSiao2Q.js.map → useDocumentPreviewValues-DJvES8Wi.js.map} +1 -1
- package/lib/{useFeatureEnabled-CzNzDaOw.js → useFeatureEnabled-g8eZoiLM.js} +2 -2
- package/lib/{useFeatureEnabled-CzNzDaOw.js.map → useFeatureEnabled-g8eZoiLM.js.map} +1 -1
- package/lib/{useFieldActions-ChkXSEAl.js → useFieldActions-BV_qfe65.js} +2 -2
- package/lib/{useFieldActions-ChkXSEAl.js.map → useFieldActions-BV_qfe65.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-DzcosF7X.js → useReleasesToolAvailable-Duu10qV0.js} +3 -3
- package/lib/{useReleasesToolAvailable-DzcosF7X.js.map → useReleasesToolAvailable-Duu10qV0.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-dKjwGzIb.js → useScheduledDraftMenuActions-Byiy3-k3.js} +5 -5
- package/lib/{useScheduledDraftMenuActions-dKjwGzIb.js.map → useScheduledDraftMenuActions-Byiy3-k3.js.map} +1 -1
- package/lib/{useStudioUrl-DoDlcI8E.js → useStudioUrl-BEb30_UK.js} +5 -5
- package/lib/{useStudioUrl-DoDlcI8E.js.map → useStudioUrl-BEb30_UK.js.map} +1 -1
- package/lib/{useTimeZone-CKHOfnZx.js → useTimeZone-zs0ybzXu.js} +2 -2
- package/lib/{useTimeZone-CKHOfnZx.js.map → useTimeZone-zs0ybzXu.js.map} +1 -1
- package/lib/{validationUtils-B_w8oD7s.js → validationUtils-LdwtMTh5.js} +4 -4
- package/lib/{validationUtils-B_w8oD7s.js.map → validationUtils-LdwtMTh5.js.map} +1 -1
- package/lib/{version-5cpvJ3g_.js → version-XEmBTnIh.js} +2 -2
- package/lib/{version-5cpvJ3g_.js.map → version-XEmBTnIh.js.map} +1 -1
- package/package.json +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as DATE_FORMAT } from "./useTimeZone-
|
|
2
|
-
import { i as usePollSchedules, n as useValidationState, r as usePublishedId } from "./validationUtils-
|
|
3
|
-
import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-
|
|
1
|
+
import { r as DATE_FORMAT } from "./useTimeZone-zs0ybzXu.js";
|
|
2
|
+
import { i as usePollSchedules, n as useValidationState, r as usePublishedId } from "./validationUtils-LdwtMTh5.js";
|
|
3
|
+
import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-BNMAVqrS.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";
|
|
@@ -158,4 +158,4 @@ function getRootType(type) {
|
|
|
158
158
|
}
|
|
159
159
|
export { DocumentBannerInput };
|
|
160
160
|
|
|
161
|
-
//# sourceMappingURL=inputResolver-
|
|
161
|
+
//# sourceMappingURL=inputResolver-DLP8YZcM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputResolver-BekzeVyP.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 gap={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 gap={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} gap={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}>{schedule.action}</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-DLP8YZcM.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 gap={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 gap={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} gap={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}>{schedule.action}</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,12 +1,12 @@
|
|
|
1
1
|
import { i as Dialog$1 } from "./ConfirmPopover-CD1rDyuk.js";
|
|
2
2
|
import { a as Button$1, o as Tooltip$1, r as MenuButton$1 } from "./MenuItem-BWdL61CI.js";
|
|
3
|
-
import { _ as useResourceCache, lt as getReleaseIdFromReleaseDocumentId } from "./datastores-
|
|
3
|
+
import { _ as useResourceCache, lt as getReleaseIdFromReleaseDocumentId } from "./datastores-XTDIa3jc.js";
|
|
4
4
|
import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
|
|
5
|
-
import { Ct as DateTimeInput, Fo as getReleaseDefaults, Oo as ReleaseAvatar, Qo as isReleaseType, St as getCalendarLabels, Tt as MONTH_PICKER_VARIANT, Wo as DEFAULT_RELEASE_TYPE, a as isReleaseLimitError, i as useReleaseOperations, jt as useDialogTimeZone, o as isErrorWithDetails, qo as RELEASE_TYPES_TONES, s as useReleasesUpsell } from "./useBundleDocuments-
|
|
6
|
-
import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-
|
|
7
|
-
import { t as useTimeZone } from "./useTimeZone-
|
|
8
|
-
import { s as CreatedRelease, y as useSetPerspective } from "./UnpublishVersionDialog-
|
|
9
|
-
import { r as CONTENT_RELEASES_TIME_ZONE_SCOPE } from "./useScheduledDraftMenuActions-
|
|
5
|
+
import { Ct as DateTimeInput, Fo as getReleaseDefaults, Oo as ReleaseAvatar, Qo as isReleaseType, St as getCalendarLabels, Tt as MONTH_PICKER_VARIANT, Wo as DEFAULT_RELEASE_TYPE, a as isReleaseLimitError, i as useReleaseOperations, jt as useDialogTimeZone, o as isErrorWithDetails, qo as RELEASE_TYPES_TONES, s as useReleasesUpsell } from "./useBundleDocuments-BnCBcbdJ.js";
|
|
6
|
+
import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-g8eZoiLM.js";
|
|
7
|
+
import { t as useTimeZone } from "./useTimeZone-zs0ybzXu.js";
|
|
8
|
+
import { s as CreatedRelease, y as useSetPerspective } from "./UnpublishVersionDialog-DWYCXGkz.js";
|
|
9
|
+
import { r as CONTENT_RELEASES_TIME_ZONE_SCOPE } from "./useScheduledDraftMenuActions-Byiy3-k3.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";
|
|
@@ -705,4 +705,4 @@ const NavigatedToReleasesOverview = defineEvent({
|
|
|
705
705
|
});
|
|
706
706
|
export { RhombusIcon as a, TitleDescriptionForm as c, useReleaseFormStorage as d, useGuardWithReleaseLimitUpsell as f, CreateVariantIcon as i, getIsReleaseOpen as l, NavigatedToScheduledDrafts as n, useReleasePermissions as o, useCreateReleaseMetadata as p, CreateReleaseDialog as r, ReleaseForm as s, NavigatedToReleasesOverview as t, getIsReleaseInvalid as u };
|
|
707
707
|
|
|
708
|
-
//# sourceMappingURL=navigation.telemetry-
|
|
708
|
+
//# sourceMappingURL=navigation.telemetry-4pppJENG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.telemetry-FenrX1w0.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","ComponentType","RefAttributes","SVGProps","RhombusIcon","props","$","_c","ref","rest","t0","Symbol","for","t1","CreateVariantIcon","t2","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/variants/plugin/components/PersonalizationIcons.tsx","../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\n// Cap the description height and let it scroll internally past this point, so the dialog stays a\n// sensible size regardless of how long the description is.\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\n/**\n * The editable title + description form for a release. Used inside the create/edit dialogs — the\n * release detail page itself is a read-only display surface (see ReleaseDetailsEditor), and routes\n * edits here through a dialog so editing is an explicit, intentional action.\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 gap={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 gap={5}>\n <Stack gap={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 gap={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 gap={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 // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\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 ComponentType, type RefAttributes, type SVGProps} from 'react'\n\nexport function RhombusIcon(props: SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>) {\n const {ref, ...rest} = props\n return (\n <svg\n data-sanity-icon=\"rhombus\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n ref={ref}\n >\n <path\n d=\"M10.5 3.78L17.22 10.5L10.5 17.22L3.78 10.5L10.5 3.78Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nexport const CreateVariantIcon: ComponentType = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M17.22 10.5L10.5 3.78003L3.78003 10.5L10.5 17.22\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.7999 13.86H13.8599M13.8599 13.86H10.9199M13.8599 13.86V10.92M13.8599 13.86V16.8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinejoin=\"round\"\n />\n </svg>\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 // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\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-4pppJENG.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","ComponentType","RefAttributes","SVGProps","RhombusIcon","props","$","_c","ref","rest","t0","Symbol","for","t1","CreateVariantIcon","t2","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/variants/plugin/components/PersonalizationIcons.tsx","../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\n// Cap the description height and let it scroll internally past this point, so the dialog stays a\n// sensible size regardless of how long the description is.\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\n/**\n * The editable title + description form for a release. Used inside the create/edit dialogs — the\n * release detail page itself is a read-only display surface (see ReleaseDetailsEditor), and routes\n * edits here through a dialog so editing is an explicit, intentional action.\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 gap={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 gap={5}>\n <Stack gap={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 gap={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 gap={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 // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\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 ComponentType, type RefAttributes, type SVGProps} from 'react'\n\nexport function RhombusIcon(props: SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>) {\n const {ref, ...rest} = props\n return (\n <svg\n data-sanity-icon=\"rhombus\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n ref={ref}\n >\n <path\n d=\"M10.5 3.78L17.22 10.5L10.5 17.22L3.78 10.5L10.5 3.78Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nexport const CreateVariantIcon: ComponentType = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M17.22 10.5L10.5 3.78003L3.78003 10.5L10.5 17.22\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.7999 13.86H13.8599M13.8599 13.86H10.9199M13.8599 13.86V10.92M13.8599 13.86V16.8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinejoin=\"round\"\n />\n </svg>\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 // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\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,9 +1,9 @@
|
|
|
1
1
|
import { s as getDraftId, u as getVersionFromId } from "./draftUtils-D3HJGQaW.js";
|
|
2
|
-
import { i as useDocumentStore, lt as getReleaseIdFromReleaseDocumentId } from "./datastores-
|
|
2
|
+
import { i as useDocumentStore, lt as getReleaseIdFromReleaseDocumentId } from "./datastores-XTDIa3jc.js";
|
|
3
3
|
import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
|
|
4
|
-
import { Xa as definePlugin, Xo as isPausedCardinalityOneRelease, Yo as isCardinalityOneRelease, bi as usePerspective, r as useAllReleases, vi as useDocumentVersions, wo as useActiveReleases } from "./useBundleDocuments-
|
|
5
|
-
import { d as singleDocReleaseUsEnglishLocaleBundle, n as ScheduleDraftDialog, o as useScheduleDraftOperations, t as useScheduledDraftMenuActions, u as singleDocReleaseNamespace } from "./useScheduledDraftMenuActions-
|
|
6
|
-
import { i as useSingleDocReleaseEnabled, n as useSingleDocReleaseUpsell } from "./SingleDocReleaseUpsellProvider-
|
|
4
|
+
import { Xa as definePlugin, Xo as isPausedCardinalityOneRelease, Yo as isCardinalityOneRelease, bi as usePerspective, r as useAllReleases, vi as useDocumentVersions, wo as useActiveReleases } from "./useBundleDocuments-BnCBcbdJ.js";
|
|
5
|
+
import { d as singleDocReleaseUsEnglishLocaleBundle, n as ScheduleDraftDialog, o as useScheduleDraftOperations, t as useScheduledDraftMenuActions, u as singleDocReleaseNamespace } from "./useScheduledDraftMenuActions-Byiy3-k3.js";
|
|
6
|
+
import { i as useSingleDocReleaseEnabled, n as useSingleDocReleaseUpsell } from "./SingleDocReleaseUpsellProvider-BNF2Rj3j.js";
|
|
7
7
|
import { lazy, useContext, useState } from "react";
|
|
8
8
|
import { c } from "react/compiler-runtime";
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -245,7 +245,7 @@ function resolveDocumentActions(existingActions, context) {
|
|
|
245
245
|
}
|
|
246
246
|
return existingActions;
|
|
247
247
|
}
|
|
248
|
-
const SingleDocReleaseLayout = lazy(() => import("./SingleDocReleaseLayout-
|
|
248
|
+
const SingleDocReleaseLayout = lazy(() => import("./SingleDocReleaseLayout-fW8U-ktp.js").then((module) => ({ default: module.SingleDocReleaseLayout }))), SINGLE_DOC_RELEASE_NAME = "sanity/singleDocRelease", RELEASES_SCHEDULED_DRAFTS_INTENT = "releases-scheduled-drafts", singleDocRelease = definePlugin({
|
|
249
249
|
name: SINGLE_DOC_RELEASE_NAME,
|
|
250
250
|
studio: { components: { layout: SingleDocReleaseLayout } },
|
|
251
251
|
i18n: { bundles: [singleDocReleaseUsEnglishLocaleBundle] },
|
|
@@ -253,4 +253,4 @@ const SingleDocReleaseLayout = lazy(() => import("./SingleDocReleaseLayout-DyuHF
|
|
|
253
253
|
});
|
|
254
254
|
export { SingleDocReleaseProvider as a, useClearScheduledDraftPerspectiveOnDelete as i, SINGLE_DOC_RELEASE_NAME as n, useSingleDocRelease as o, singleDocRelease as r, useValidationStatus as s, RELEASES_SCHEDULED_DRAFTS_INTENT as t };
|
|
255
255
|
|
|
256
|
-
//# sourceMappingURL=plugin-
|
|
256
|
+
//# sourceMappingURL=plugin-BRnqEpCl.js.map
|