sanity 6.9.2-next.20 → 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-CV-U_KIH.js → AddonDatasetProvider-B5npf4J4.js} +2 -2
- package/lib/{AddonDatasetProvider-CV-U_KIH.js.map → AddonDatasetProvider-B5npf4J4.js.map} +1 -1
- package/lib/{CalendarFilter-j59Y77CD.js → CalendarFilter-DYJEZDCP.js} +3 -3
- package/lib/{CalendarFilter-j59Y77CD.js.map → CalendarFilter-DYJEZDCP.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-Cb-LKOmj.js → CommentsDocumentLayout-CTL7lt6a.js} +2 -2
- package/lib/{CommentsDocumentLayout-Cb-LKOmj.js.map → CommentsDocumentLayout-CTL7lt6a.js.map} +1 -1
- package/lib/{CommentsField-BHAQjUyR.js → CommentsField-BE_CI2SY.js} +3 -3
- package/lib/{CommentsField-BHAQjUyR.js.map → CommentsField-BE_CI2SY.js.map} +1 -1
- package/lib/{CommentsInput-CB5RUrIi.js → CommentsInput-D_EM-t5a.js} +5 -5
- package/lib/{CommentsInput-CB5RUrIi.js.map → CommentsInput-D_EM-t5a.js.map} +1 -1
- package/lib/{CommentsInspector-B7M2QxR2.js → CommentsInspector-DtBIUadl.js} +5 -5
- package/lib/{CommentsInspector-B7M2QxR2.js.map → CommentsInspector-DtBIUadl.js.map} +1 -1
- package/lib/{CommentsListItem-CEpLMePM.js → CommentsListItem-BFRqZMJ6.js} +3 -3
- package/lib/{CommentsListItem-CEpLMePM.js.map → CommentsListItem-BFRqZMJ6.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-DznhPdxI.js → CommentsSelectedPathProvider-CIKpHpK3.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-DznhPdxI.js.map → CommentsSelectedPathProvider-CIKpHpK3.js.map} +1 -1
- package/lib/{CommentsStudioLayout-BoXa16ia.js → CommentsStudioLayout-Dx0jIDle.js} +4 -4
- package/lib/{CommentsStudioLayout-BoXa16ia.js.map → CommentsStudioLayout-Dx0jIDle.js.map} +1 -1
- package/lib/{ReleasesMetadataProvider-CWH3_eG9.js → ReleasesMetadataProvider-hILX90V4.js} +2 -2
- package/lib/{ReleasesMetadataProvider-CWH3_eG9.js.map → ReleasesMetadataProvider-hILX90V4.js.map} +1 -1
- package/lib/{ReleasesNav-CfGnfOHd.js → ReleasesNav-DIv-1iR7.js} +14 -14
- package/lib/{ReleasesNav-CfGnfOHd.js.map → ReleasesNav-DIv-1iR7.js.map} +1 -1
- package/lib/{ReleasesStudioLayout-BkCC9W7a.js → ReleasesStudioLayout-DW7fJSfG.js} +8 -8
- package/lib/{ReleasesStudioLayout-BkCC9W7a.js.map → ReleasesStudioLayout-DW7fJSfG.js.map} +1 -1
- package/lib/{ReleasesTool-D2NmesiP.js → ReleasesTool-BQjO7osC.js} +15 -15
- package/lib/{ReleasesTool-D2NmesiP.js.map → ReleasesTool-BQjO7osC.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-C4e4OuST.js → SchedulePublishingStudioLayout-Cwmdz7HZ.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-C4e4OuST.js.map → SchedulePublishingStudioLayout-Cwmdz7HZ.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-BV7JVIDN.js → SchedulePublishingUpsellProvider-C5B21VDh.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-BV7JVIDN.js.map → SchedulePublishingUpsellProvider-C5B21VDh.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-Dw04ZZwf.js → ScheduledPublishingEnabledProvider-BNMAVqrS.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-Dw04ZZwf.js.map → ScheduledPublishingEnabledProvider-BNMAVqrS.js.map} +1 -1
- package/lib/{SearchProvider-DdG2QzPT.js → SearchProvider-DkGUk8a6.js} +4 -4
- package/lib/{SearchProvider-DdG2QzPT.js.map → SearchProvider-DkGUk8a6.js.map} +1 -1
- package/lib/{SingleDocReleaseLayout-CtJIgW4L.js → SingleDocReleaseLayout-fW8U-ktp.js} +2 -2
- package/lib/{SingleDocReleaseLayout-CtJIgW4L.js.map → SingleDocReleaseLayout-fW8U-ktp.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-BeQYxpmc.js → SingleDocReleaseUpsellProvider-BNF2Rj3j.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-BeQYxpmc.js.map → SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-xaEWt-uA.js → TasksStudioActiveToolLayout-CHazNA61.js} +11 -11
- package/lib/{TasksStudioActiveToolLayout-xaEWt-uA.js.map → TasksStudioActiveToolLayout-CHazNA61.js.map} +1 -1
- package/lib/{TasksStudioLayout-DSKrYQAK.js → TasksStudioLayout-B7bCL28Q.js} +5 -5
- package/lib/{TasksStudioLayout-DSKrYQAK.js.map → TasksStudioLayout-B7bCL28Q.js.map} +1 -1
- package/lib/{Tool-c9e3HT3x.js → Tool-rkq_tjXo.js} +12 -12
- package/lib/{Tool-c9e3HT3x.js.map → Tool-rkq_tjXo.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-BgCVm562.js → UnpublishVersionDialog-DWYCXGkz.js} +4 -4
- package/lib/{UnpublishVersionDialog-BgCVm562.js.map → UnpublishVersionDialog-DWYCXGkz.js.map} +1 -1
- package/lib/{UpsellDialog-BlsjdTJ5.js → UpsellDialog-BiDSVmne.js} +2 -2
- package/lib/{UpsellDialog-BlsjdTJ5.js.map → UpsellDialog-BiDSVmne.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-CITwIqT4.js → VariantsStudioNavbar-Bae9LOIN.js} +7 -7
- package/lib/{VariantsStudioNavbar-CITwIqT4.js.map → VariantsStudioNavbar-Bae9LOIN.js.map} +1 -1
- package/lib/{VariantsTool-C2-mCbDU.js → VariantsTool-E4ptTHik.js} +7 -7
- package/lib/{VariantsTool-C2-mCbDU.js.map → VariantsTool-E4ptTHik.js.map} +1 -1
- package/lib/{WorkspaceLoader-DvPaRVsD.js → WorkspaceLoader-sdFQ9rkh.js} +21 -21
- package/lib/{WorkspaceLoader-DvPaRVsD.js.map → WorkspaceLoader-sdFQ9rkh.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/{buildTextSelectionFromFragment-DTYxC8zv.js → buildTextSelectionFromFragment-CuXpitEZ.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-DTYxC8zv.js.map → buildTextSelectionFromFragment-CuXpitEZ.js.map} +1 -1
- package/lib/{datastores-BKPUa-oX.js → datastores-XTDIa3jc.js} +2 -2
- package/lib/{datastores-BKPUa-oX.js.map → datastores-XTDIa3jc.js.map} +1 -1
- package/lib/index.js +28 -28
- package/lib/{inputResolver-YXTUB1af.js → inputResolver-DLP8YZcM.js} +4 -4
- package/lib/{inputResolver-YXTUB1af.js.map → inputResolver-DLP8YZcM.js.map} +1 -1
- package/lib/{navigation.telemetry-DRwUiurs.js → navigation.telemetry-4pppJENG.js} +7 -7
- package/lib/{navigation.telemetry-DRwUiurs.js.map → navigation.telemetry-4pppJENG.js.map} +1 -1
- package/lib/{plugin-2hVe07Dd.js → plugin-BRnqEpCl.js} +6 -6
- package/lib/{plugin-2hVe07Dd.js.map → plugin-BRnqEpCl.js.map} +1 -1
- package/lib/{plugin-G8hWhEki.js → plugin-BUox1zeI.js} +3 -3
- package/lib/{plugin-G8hWhEki.js.map → plugin-BUox1zeI.js.map} +1 -1
- package/lib/{plugin-BBpCRQeY.js → plugin-BmARoHKH.js} +4 -4
- package/lib/{plugin-BBpCRQeY.js.map → plugin-BmARoHKH.js.map} +1 -1
- package/lib/{plugin-CF8rdLgw.js → plugin-CjN39wwt.js} +5 -5
- package/lib/{plugin-CF8rdLgw.js.map → plugin-CjN39wwt.js.map} +1 -1
- package/lib/{scheduleItem-Di-U4U5S.js → scheduleItem-Dtb26ejO.js} +8 -8
- package/lib/{scheduleItem-Di-U4U5S.js.map → scheduleItem-Dtb26ejO.js.map} +1 -1
- package/lib/{schedules-vdS--I5b.js → schedules-6qsR7E_I.js} +3 -3
- package/lib/{schedules-vdS--I5b.js.map → schedules-6qsR7E_I.js.map} +1 -1
- package/lib/{searchDocumentRelease-BdHG8UuT.js → searchDocumentRelease-CUk7BiST.js} +4 -4
- package/lib/{searchDocumentRelease-BdHG8UuT.js.map → searchDocumentRelease-CUk7BiST.js.map} +1 -1
- package/lib/{studioClient-BwxgmLhi.js → studioClient-D1Z2zK3C.js} +2 -2
- package/lib/{studioClient-BwxgmLhi.js.map → studioClient-D1Z2zK3C.js.map} +1 -1
- package/lib/{useBundleDocuments-DQo9TiWp.js → useBundleDocuments-BnCBcbdJ.js} +7 -7
- package/lib/{useBundleDocuments-DQo9TiWp.js.map → useBundleDocuments-BnCBcbdJ.js.map} +1 -1
- package/lib/{useComments-dgt5MtDt.js → useComments-Bm-0CwNH.js} +2 -2
- package/lib/{useComments-dgt5MtDt.js.map → useComments-Bm-0CwNH.js.map} +1 -1
- package/lib/{useCommentsTelemetry-tsY98PEt.js → useCommentsTelemetry-D1kYRuPU.js} +3 -3
- package/lib/{useCommentsTelemetry-tsY98PEt.js.map → useCommentsTelemetry-D1kYRuPU.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-6ZF0YWW7.js → useDocumentPreviewValues-DJvES8Wi.js} +3 -3
- package/lib/{useDocumentPreviewValues-6ZF0YWW7.js.map → useDocumentPreviewValues-DJvES8Wi.js.map} +1 -1
- package/lib/{useFeatureEnabled-CjakjPiy.js → useFeatureEnabled-g8eZoiLM.js} +2 -2
- package/lib/{useFeatureEnabled-CjakjPiy.js.map → useFeatureEnabled-g8eZoiLM.js.map} +1 -1
- package/lib/{useFieldActions-CnldzBM0.js → useFieldActions-BV_qfe65.js} +2 -2
- package/lib/{useFieldActions-CnldzBM0.js.map → useFieldActions-BV_qfe65.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-CMbq6a40.js → useReleasesToolAvailable-Duu10qV0.js} +3 -3
- package/lib/{useReleasesToolAvailable-CMbq6a40.js.map → useReleasesToolAvailable-Duu10qV0.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-LOI8hKEc.js → useScheduledDraftMenuActions-Byiy3-k3.js} +5 -5
- package/lib/{useScheduledDraftMenuActions-LOI8hKEc.js.map → useScheduledDraftMenuActions-Byiy3-k3.js.map} +1 -1
- package/lib/{useStudioUrl-DGru3FP7.js → useStudioUrl-BEb30_UK.js} +5 -5
- package/lib/{useStudioUrl-DGru3FP7.js.map → useStudioUrl-BEb30_UK.js.map} +1 -1
- package/lib/{useTimeZone-B0ZhF1i9.js → useTimeZone-zs0ybzXu.js} +2 -2
- package/lib/{useTimeZone-B0ZhF1i9.js.map → useTimeZone-zs0ybzXu.js.map} +1 -1
- package/lib/{validationUtils-o0P-Hm5O.js → validationUtils-LdwtMTh5.js} +4 -4
- package/lib/{validationUtils-o0P-Hm5O.js.map → validationUtils-LdwtMTh5.js.map} +1 -1
- package/lib/{version-CdlwC8TG.js → version-XEmBTnIh.js} +2 -2
- package/lib/{version-CdlwC8TG.js.map → version-XEmBTnIh.js.map} +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.telemetry-DRwUiurs.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-CtJIg
|
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-2hVe07Dd.js","names":["useMemo","useSyncObservable","useDocumentStore","ValidationStatus","INITIAL","validation","isValidating","useValidationStatus","validationTargetId","docTypeName","requirePublishedReferences","$","_c","documentStore","t0","pair","observable","useContext","SingleDocReleaseContext","SingleDocReleaseContextValue","SingleDocReleaseProviderProps","children","React","ReactNode","onSetScheduledDraftPerspective","releaseId","SingleDocReleaseProvider","t0","$","_c","t1","t2","useSingleDocRelease","context","Error","ReleaseDocument","useCallback","usePerspective","getReleaseIdFromReleaseDocumentId","useSingleDocRelease","useClearScheduledDraftPerspectiveOnDelete","release","$","_c","onSetScheduledDraftPerspective","selectedPerspectiveName","t0","_id","ReleaseDocument","DocumentActionComponent","DocumentActionDescription","DocumentActionProps","useAllReleases","getReleaseIdFromReleaseDocumentId","isPausedCardinalityOneRelease","useClearScheduledDraftPerspectiveOnDelete","useScheduledDraftMenuActions","UseScheduledDraftMenuActionsReturn","createScheduledDraftAction","actionKey","visibilityCheck","release","useScheduledDraftAction","props","$","_c","type","id","data","t0","loading","t1","undefined","releases","t2","t3","r","_id","find","releaseDocument","onDeleteComplete","t4","documentType","documentId","actions","dialogs","actionProps","t5","disabled","t6","component","t7","icon","onClick","text","tone","label","title","dialog","onHandle","PublishScheduledDraftAction","EditScheduledDraftAction","DeleteScheduledDraftAction","displayName","action","useMemo","useDocumentVersions","useActiveReleases","getReleaseIdFromReleaseDocumentId","getVersionFromId","isCardinalityOneRelease","useHasCardinalityOneReleaseVersions","documentId","$","_c","data","allReleases","t0","documentVersions","t1","bb0","t2","documentReleaseIds","map","filter","Boolean","some","release","releaseId","_id","includes","CalendarIcon","isValidationErrorMarker","useToast","useCallback","useMemo","useState","DocumentActionComponent","DocumentActionDescription","DocumentActionProps","useValidationStatus","useTranslation","usePerspective","useActiveReleases","getReleaseIdFromReleaseDocumentId","getDraftId","isPausedCardinalityOneRelease","ScheduleDraftDialog","useSingleDocReleaseEnabled","useSingleDocRelease","useSingleDocReleaseUpsell","useHasCardinalityOneReleaseVersions","useScheduleDraftOperations","singleDocReleaseNamespace","useSchedulePublishAction","props","$","_c","id","type","draft","t","createScheduledDraft","rescheduleScheduledDraft","toast","enabled","singleDocReleaseEnabled","mode","handleOpenDialog","handleOpenUpsellDialog","t0","validationStatus","t1","validation","some","hasValidationErrors","hasCardinalityOneReleaseVersions","dialogOpen","setDialogOpen","isScheduling","setIsScheduling","onSetScheduledDraftPerspective","data","t2","t3","undefined","releases","perspective","isVariantSelected","Boolean","selectedVariantName","t4","selectedReleaseId","t5","r","_id","find","currentRelease","isPaused","t6","metadata","intendedPublishAt","Date","initialDate","t7","t8","Symbol","for","handleCloseDialog","t9","publishAt","run","releaseDocumentId","t10","error","console","push","closable","status","title","description","Error","message","handleSchedule","disabled","bb0","t11","t12","t13","component","t14","icon","label","tone","onHandle","dialog","action","displayName","DocumentActionComponent","DocumentActionsContext","DeleteScheduledDraftAction","EditScheduledDraftAction","PublishScheduledDraftAction","useSchedulePublishAction","resolveDocumentActions","existingActions","context","versionType","actionsExcludingOriginalSchedule","filter","action","publishActionIndex","findIndex","nextAfterPublishIndex","hasPublishAction","actionsBeforePublish","slice","actionsAfterPublish","lazy","definePlugin","singleDocReleaseUsEnglishLocaleBundle","resolveDocumentActions","SingleDocReleaseLayout","then","module","default","SINGLE_DOC_RELEASE_NAME","RELEASES_SCHEDULED_DRAFTS_INTENT","singleDocRelease","name","studio","components","layout","i18n","bundles","document","actions"],"sources":["../src/core/hooks/useValidationStatus.ts","../src/core/singleDocRelease/context/SingleDocReleaseProvider.tsx","../src/core/singleDocRelease/hooks/useClearScheduledDraftPerspectiveOnDelete.ts","../src/core/singleDocRelease/plugin/documentActions/ScheduledDraftDocumentActions.tsx","../src/core/singleDocRelease/hooks/useHasCardinalityOneReleaseVersions.ts","../src/core/singleDocRelease/plugin/documentActions/SchedulePublishAction.tsx","../src/core/singleDocRelease/plugin/documentActions/index.ts","../src/core/singleDocRelease/plugin/index.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\n\nimport {useDocumentStore} from '../store/datastores'\nimport {type ValidationStatus} from '../validation'\n\nconst INITIAL: ValidationStatus = {validation: [], isValidating: false}\n\n/** @internal */\nexport function useValidationStatus(\n validationTargetId: string,\n docTypeName: string,\n requirePublishedReferences: boolean,\n): ValidationStatus {\n const documentStore = useDocumentStore()\n\n const observable = useMemo(\n () =>\n documentStore.pair.validation(validationTargetId, docTypeName, requirePublishedReferences),\n [docTypeName, documentStore.pair, validationTargetId, requirePublishedReferences],\n )\n\n // Kept synchronous: consumers use this as a write-side gate, not just for\n // display. PublishAction enables publish from `hasValidationErrors` and\n // fires `doPublish()` once `isValidating` is false and `revision` matches\n // the live edit revision — and reference-driven revalidation re-runs\n // validation without changing the document revision, so a deferred (stale\n // but revision-matching) \"valid\" snapshot could publish before live errors\n // catch up. Identity-coherent deferral cannot help there: the observable\n // identity is stable while the pane is mounted; only the value lags.\n // Proof: hooks/__tests__/useValidationStatus.test.tsx.\n return useSyncObservable(observable, INITIAL)\n}\n","import {useContext} from 'react'\nimport {SingleDocReleaseContext, type SingleDocReleaseContextValue} from 'sanity/_singletons'\n\ninterface SingleDocReleaseProviderProps {\n children: React.ReactNode\n onSetScheduledDraftPerspective: (releaseId: string) => void\n}\n\n/**\n * Provider for the single doc release context.\n * @internal\n */\nexport function SingleDocReleaseProvider({\n children,\n onSetScheduledDraftPerspective,\n}: SingleDocReleaseProviderProps) {\n return (\n <SingleDocReleaseContext.Provider value={{onSetScheduledDraftPerspective}}>\n {children}\n </SingleDocReleaseContext.Provider>\n )\n}\n\n/**\n * Hook to get the single doc release context\n * @internal\n */\nexport function useSingleDocRelease(): SingleDocReleaseContextValue {\n const context = useContext(SingleDocReleaseContext)\n if (!context) {\n throw new Error('SingleDocReleaseContext not found')\n }\n return context\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useCallback} from 'react'\n\nimport {usePerspective} from '../../perspective/usePerspective'\nimport {getReleaseIdFromReleaseDocumentId} from '../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {useSingleDocRelease} from '../context/SingleDocReleaseProvider'\n\n/**\n * Returns a callback that clears the pane-local scheduled draft perspective when\n * the document pane is currently viewing the given release. Used after deleting\n * a scheduled draft so stale release UI is not left visible.\n *\n * Must be used within a document pane (requires `SingleDocReleaseProvider`).\n *\n * @internal\n */\nexport function useClearScheduledDraftPerspectiveOnDelete(\n release: ReleaseDocument | undefined,\n): () => void {\n const {onSetScheduledDraftPerspective} = useSingleDocRelease()\n const {selectedPerspectiveName} = usePerspective()\n\n return useCallback(() => {\n if (!release) return\n\n if (selectedPerspectiveName === getReleaseIdFromReleaseDocumentId(release._id)) {\n onSetScheduledDraftPerspective('')\n }\n }, [release, selectedPerspectiveName, onSetScheduledDraftPerspective])\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n} from '../../../config/document/actions'\nimport {useAllReleases} from '../../../releases/store/useAllReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {useClearScheduledDraftPerspectiveOnDelete} from '../../hooks/useClearScheduledDraftPerspectiveOnDelete'\nimport {\n useScheduledDraftMenuActions,\n type UseScheduledDraftMenuActionsReturn,\n} from '../../hooks/useScheduledDraftMenuActions'\n\n/**\n * Higher-order function that creates a scheduled draft document action\n * @internal\n */\nconst createScheduledDraftAction = (\n actionKey: keyof UseScheduledDraftMenuActionsReturn['actions'],\n visibilityCheck?: (release: ReleaseDocument | undefined) => boolean,\n): DocumentActionComponent => {\n // Using hook naming conventions is required for React Compiler to detect this function and memoize it\n const useScheduledDraftAction: DocumentActionComponent = (\n props: DocumentActionProps,\n ): DocumentActionDescription | null => {\n const {type, release, id} = props\n const {data: releases = [], loading} = useAllReleases()\n\n const releaseDocument = releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === release,\n )\n\n const onDeleteComplete = useClearScheduledDraftPerspectiveOnDelete(\n actionKey === 'deleteSchedule' ? releaseDocument : undefined,\n )\n\n const {actions, dialogs} = useScheduledDraftMenuActions({\n release: releaseDocument,\n documentType: type,\n documentId: id,\n onDeleteComplete: actionKey === 'deleteSchedule' ? onDeleteComplete : undefined,\n })\n\n if (visibilityCheck && !visibilityCheck(releaseDocument)) {\n return null\n }\n\n // This action is only shown for scheduled-draft version type\n if (!releaseDocument) {\n return null\n }\n\n if (!actions || !actions[actionKey]) {\n return null\n }\n\n const actionProps = actions[actionKey]\n\n return {\n disabled: actionProps.disabled || loading,\n icon: actionProps.icon,\n label: actionProps.text,\n title: actionProps.text,\n tone: actionProps.tone,\n dialog: dialogs\n ? {\n type: 'custom',\n component: dialogs,\n }\n : false,\n onHandle: actionProps.onClick,\n }\n }\n return useScheduledDraftAction\n}\n\n/**\n * Document action for publishing a scheduled draft immediately\n * @internal\n */\nexport const PublishScheduledDraftAction = createScheduledDraftAction('publishNow')\n\n/**\n * Document action for editing schedule of a scheduled draft\n * Only visible when the draft is NOT paused\n * @internal\n */\nexport const EditScheduledDraftAction = createScheduledDraftAction(\n 'editSchedule',\n (release) => !isPausedCardinalityOneRelease(release), // Hide when paused\n)\n\n/**\n * Document action for deleting a scheduled draft\n * @internal\n */\nexport const DeleteScheduledDraftAction = createScheduledDraftAction('deleteSchedule')\n\nPublishScheduledDraftAction.displayName = 'PublishScheduledDraftAction'\nPublishScheduledDraftAction.action = 'publish'\n\nEditScheduledDraftAction.displayName = 'EditScheduledDraftAction'\nEditScheduledDraftAction.action = 'schedule'\n\nDeleteScheduledDraftAction.displayName = 'DeleteScheduledDraftAction'\nDeleteScheduledDraftAction.action = 'discardVersion'\n","import {useMemo} from 'react'\n\nimport {useDocumentVersions} from '../../releases/hooks/useDocumentVersions'\nimport {useActiveReleases} from '../../releases/store/useActiveReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {isCardinalityOneRelease} from '../../util/releaseUtils'\n\n/**\n * Checks if a document has any versions in scheduled draft (`metadata.cardinality: 'one'`) releases.\n *\n * @param documentId - The ID of the document to check\n * @returns boolean - true if the document has versions in any cardinality one releases\n * @internal\n */\nexport function useHasCardinalityOneReleaseVersions(documentId: string): boolean {\n const {data: allReleases} = useActiveReleases()\n const {data: documentVersions} = useDocumentVersions({documentId})\n\n return useMemo(() => {\n if (!allReleases || !documentVersions) return false\n\n const documentReleaseIds = documentVersions.map(getVersionFromId).filter(Boolean)\n\n return allReleases.some((release) => {\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return documentReleaseIds.includes(releaseId) && isCardinalityOneRelease(release)\n })\n }, [allReleases, documentVersions])\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n} from '../../../config/document/actions'\nimport {useValidationStatus} from '../../../hooks/useValidationStatus'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {getDraftId} from '../../../util/draftUtils'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {ScheduleDraftDialog} from '../../components/ScheduleDraftDialog'\nimport {useSingleDocReleaseEnabled} from '../../context/SingleDocReleaseEnabledProvider'\nimport {useSingleDocRelease} from '../../context/SingleDocReleaseProvider'\nimport {useSingleDocReleaseUpsell} from '../../context/SingleDocReleaseUpsellProvider'\nimport {useHasCardinalityOneReleaseVersions} from '../../hooks/useHasCardinalityOneReleaseVersions'\nimport {useScheduleDraftOperations} from '../../hooks/useScheduleDraftOperations'\nimport {singleDocReleaseNamespace} from '../../i18n'\n\n// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useSchedulePublishAction: DocumentActionComponent = (\n props: DocumentActionProps,\n): DocumentActionDescription | null => {\n const {id, type, draft} = props\n const {t} = useTranslation(singleDocReleaseNamespace)\n const {createScheduledDraft, rescheduleScheduledDraft} = useScheduleDraftOperations()\n const toast = useToast()\n const {enabled: singleDocReleaseEnabled, mode} = useSingleDocReleaseEnabled()\n const {handleOpenDialog: handleOpenUpsellDialog} = useSingleDocReleaseUpsell()\n // Check validation status.\n // No `getTargetScopeId(useTargetDocumentState())` here: scheduling a draft publish deliberately validates the\n // explicit draft of the document, independent of the selected perspective. This is safe because\n // the action is disabled while a variant is selected (see `isVariantSelected` below).\n // TODO: this will be supported in the future, look for SAPP-3986 and SAPP-3987.\n const validationStatus = useValidationStatus(getDraftId(id), type, true)\n const hasValidationErrors = validationStatus.validation.some(isValidationErrorMarker)\n\n // Check if document has versions in cardinality one releases\n const hasCardinalityOneReleaseVersions = useHasCardinalityOneReleaseVersions(id)\n\n const [dialogOpen, setDialogOpen] = useState(false)\n const [isScheduling, setIsScheduling] = useState(false)\n const {onSetScheduledDraftPerspective} = useSingleDocRelease()\n\n // Check if current release is a paused scheduled draft\n const {data: releases = []} = useActiveReleases()\n const perspective = usePerspective()\n\n // Scheduling operates on the base draft, so it is not available while a variant is selected —\n // it would silently schedule the base document instead of the variant (SAPP-3986).\n const isVariantSelected = Boolean(perspective.selectedVariantName)\n\n const currentRelease = useMemo(\n () =>\n releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === perspective.selectedReleaseId,\n ),\n [releases, perspective.selectedReleaseId],\n )\n\n const isPaused = isPausedCardinalityOneRelease(currentRelease)\n const initialDate =\n isPaused && currentRelease?.metadata.intendedPublishAt\n ? new Date(currentRelease.metadata.intendedPublishAt)\n : undefined\n const handleOpenDialog = useCallback(() => {\n if (mode === 'upsell') {\n handleOpenUpsellDialog('document_action')\n } else {\n setDialogOpen(true)\n }\n }, [mode, handleOpenUpsellDialog])\n\n const handleCloseDialog = useCallback(() => {\n setDialogOpen(false)\n }, [])\n\n const handleSchedule = useCallback(\n async (publishAt: Date) => {\n setIsScheduling(true)\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n if (isPaused && currentRelease) {\n // Resume paused draft: reschedule with new date\n await rescheduleScheduledDraft(currentRelease, publishAt)\n } else {\n // Normal flow: create new scheduled draft\n const releaseDocumentId = await createScheduledDraft(id, publishAt)\n onSetScheduledDraftPerspective(getReleaseIdFromReleaseDocumentId(releaseDocumentId))\n }\n\n setDialogOpen(false)\n }\n try {\n await run()\n } catch (error) {\n console.error('Failed to schedule document publish:', error)\n\n toast.push({\n closable: true,\n status: 'error',\n title: t('action.schedule-publish-error'),\n description: error instanceof Error ? error.message : 'An unknown error occurred',\n })\n }\n setIsScheduling(false)\n },\n [\n id,\n createScheduledDraft,\n toast,\n t,\n onSetScheduledDraftPerspective,\n isPaused,\n currentRelease,\n rescheduleScheduledDraft,\n ],\n )\n\n const disabled =\n isVariantSelected ||\n (isPaused\n ? hasValidationErrors // Only check validation errors for paused drafts\n : hasCardinalityOneReleaseVersions || hasValidationErrors) // Full check for regular drafts\n\n const title = useMemo(() => {\n if (isVariantSelected) {\n return t('action.schedule-publish.disabled.variant')\n }\n\n if (isPaused && hasValidationErrors) {\n return t('action.schedule-publish.disabled.validation-issues')\n }\n\n if (hasCardinalityOneReleaseVersions) {\n return t('action.schedule-publish.disabled.cardinality-one')\n }\n\n if (hasValidationErrors) {\n return t('action.schedule-publish.disabled.validation-issues')\n }\n\n return t('action.schedule-publish')\n }, [isVariantSelected, isPaused, hasValidationErrors, hasCardinalityOneReleaseVersions, t])\n\n if (!singleDocReleaseEnabled) {\n return null\n }\n\n // Show for drafts OR paused scheduled drafts\n if (!draft && !isPaused) {\n return null\n }\n\n return {\n icon: CalendarIcon,\n disabled,\n label: t('action.schedule-publish'),\n title,\n tone: isPaused ? 'primary' : undefined, // Add primary tone when paused\n onHandle: handleOpenDialog,\n dialog: dialogOpen && {\n type: 'custom',\n component: (\n <ScheduleDraftDialog\n onClose={handleCloseDialog}\n onSchedule={handleSchedule}\n variant=\"schedule\"\n loading={isScheduling}\n initialDate={initialDate}\n />\n ),\n },\n }\n}\n\nuseSchedulePublishAction.action = 'schedule'\nuseSchedulePublishAction.displayName = 'SchedulePublishAction'\n","import {type DocumentActionComponent} from '../../../config/document/actions'\nimport {type DocumentActionsContext} from '../../../config/types'\nimport {\n DeleteScheduledDraftAction,\n EditScheduledDraftAction,\n PublishScheduledDraftAction,\n} from './ScheduledDraftDocumentActions'\nimport {useSchedulePublishAction} from './SchedulePublishAction'\n\nexport default function resolveDocumentActions(\n existingActions: DocumentActionComponent[],\n context: DocumentActionsContext,\n): DocumentActionComponent[] {\n if (context.versionType === 'scheduled-draft') {\n // For paused scheduled drafts: Schedule (primary), Publish Now, Delete Schedule\n // For active scheduled drafts: Publish Now (primary), Edit Schedule, Delete Schedule\n return [\n useSchedulePublishAction, // Shows only when paused\n PublishScheduledDraftAction, // Always shows\n EditScheduledDraftAction, // Shows only when NOT paused\n DeleteScheduledDraftAction, // Always shows\n ]\n }\n\n // Add SchedulePublishAction only for draft documents\n if (context.versionType === 'draft') {\n const actionsExcludingOriginalSchedule = existingActions.filter(\n ({action}) => action !== 'schedule',\n )\n const publishActionIndex = actionsExcludingOriginalSchedule.findIndex(\n ({action}) => action === 'publish',\n )\n const nextAfterPublishIndex = publishActionIndex + 1\n const hasPublishAction = publishActionIndex >= 0\n\n const actionsBeforePublish = hasPublishAction\n ? actionsExcludingOriginalSchedule.slice(0, nextAfterPublishIndex)\n : []\n const actionsAfterPublish = hasPublishAction\n ? actionsExcludingOriginalSchedule.slice(nextAfterPublishIndex)\n : actionsExcludingOriginalSchedule\n\n return [...actionsBeforePublish, useSchedulePublishAction, ...actionsAfterPublish]\n }\n return existingActions\n}\n","import {lazy} from 'react'\n\nimport {definePlugin} from '../../config/definePlugin'\nimport {singleDocReleaseUsEnglishLocaleBundle} from '../i18n'\nimport resolveDocumentActions from './documentActions'\n\nconst SingleDocReleaseLayout = lazy(() =>\n import('./SingleDocReleaseLayout').then((module) => ({default: module.SingleDocReleaseLayout})),\n)\n\n/**\n * @internal\n */\nexport const SINGLE_DOC_RELEASE_NAME = 'sanity/singleDocRelease'\n\n/**\n * @internal\n */\nexport const RELEASES_SCHEDULED_DRAFTS_INTENT = 'releases-scheduled-drafts'\n\n/**\n * @internal\n */\nexport const singleDocRelease = definePlugin({\n name: SINGLE_DOC_RELEASE_NAME,\n studio: {\n components: {\n layout: SingleDocReleaseLayout,\n },\n },\n i18n: {\n bundles: [singleDocReleaseUsEnglishLocaleBundle],\n },\n document: {\n actions: resolveDocumentActions,\n },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-BRnqEpCl.js","names":["useMemo","useSyncObservable","useDocumentStore","ValidationStatus","INITIAL","validation","isValidating","useValidationStatus","validationTargetId","docTypeName","requirePublishedReferences","$","_c","documentStore","t0","pair","observable","useContext","SingleDocReleaseContext","SingleDocReleaseContextValue","SingleDocReleaseProviderProps","children","React","ReactNode","onSetScheduledDraftPerspective","releaseId","SingleDocReleaseProvider","t0","$","_c","t1","t2","useSingleDocRelease","context","Error","ReleaseDocument","useCallback","usePerspective","getReleaseIdFromReleaseDocumentId","useSingleDocRelease","useClearScheduledDraftPerspectiveOnDelete","release","$","_c","onSetScheduledDraftPerspective","selectedPerspectiveName","t0","_id","ReleaseDocument","DocumentActionComponent","DocumentActionDescription","DocumentActionProps","useAllReleases","getReleaseIdFromReleaseDocumentId","isPausedCardinalityOneRelease","useClearScheduledDraftPerspectiveOnDelete","useScheduledDraftMenuActions","UseScheduledDraftMenuActionsReturn","createScheduledDraftAction","actionKey","visibilityCheck","release","useScheduledDraftAction","props","$","_c","type","id","data","t0","loading","t1","undefined","releases","t2","t3","r","_id","find","releaseDocument","onDeleteComplete","t4","documentType","documentId","actions","dialogs","actionProps","t5","disabled","t6","component","t7","icon","onClick","text","tone","label","title","dialog","onHandle","PublishScheduledDraftAction","EditScheduledDraftAction","DeleteScheduledDraftAction","displayName","action","useMemo","useDocumentVersions","useActiveReleases","getReleaseIdFromReleaseDocumentId","getVersionFromId","isCardinalityOneRelease","useHasCardinalityOneReleaseVersions","documentId","$","_c","data","allReleases","t0","documentVersions","t1","bb0","t2","documentReleaseIds","map","filter","Boolean","some","release","releaseId","_id","includes","CalendarIcon","isValidationErrorMarker","useToast","useCallback","useMemo","useState","DocumentActionComponent","DocumentActionDescription","DocumentActionProps","useValidationStatus","useTranslation","usePerspective","useActiveReleases","getReleaseIdFromReleaseDocumentId","getDraftId","isPausedCardinalityOneRelease","ScheduleDraftDialog","useSingleDocReleaseEnabled","useSingleDocRelease","useSingleDocReleaseUpsell","useHasCardinalityOneReleaseVersions","useScheduleDraftOperations","singleDocReleaseNamespace","useSchedulePublishAction","props","$","_c","id","type","draft","t","createScheduledDraft","rescheduleScheduledDraft","toast","enabled","singleDocReleaseEnabled","mode","handleOpenDialog","handleOpenUpsellDialog","t0","validationStatus","t1","validation","some","hasValidationErrors","hasCardinalityOneReleaseVersions","dialogOpen","setDialogOpen","isScheduling","setIsScheduling","onSetScheduledDraftPerspective","data","t2","t3","undefined","releases","perspective","isVariantSelected","Boolean","selectedVariantName","t4","selectedReleaseId","t5","r","_id","find","currentRelease","isPaused","t6","metadata","intendedPublishAt","Date","initialDate","t7","t8","Symbol","for","handleCloseDialog","t9","publishAt","run","releaseDocumentId","t10","error","console","push","closable","status","title","description","Error","message","handleSchedule","disabled","bb0","t11","t12","t13","component","t14","icon","label","tone","onHandle","dialog","action","displayName","DocumentActionComponent","DocumentActionsContext","DeleteScheduledDraftAction","EditScheduledDraftAction","PublishScheduledDraftAction","useSchedulePublishAction","resolveDocumentActions","existingActions","context","versionType","actionsExcludingOriginalSchedule","filter","action","publishActionIndex","findIndex","nextAfterPublishIndex","hasPublishAction","actionsBeforePublish","slice","actionsAfterPublish","lazy","definePlugin","singleDocReleaseUsEnglishLocaleBundle","resolveDocumentActions","SingleDocReleaseLayout","then","module","default","SINGLE_DOC_RELEASE_NAME","RELEASES_SCHEDULED_DRAFTS_INTENT","singleDocRelease","name","studio","components","layout","i18n","bundles","document","actions"],"sources":["../src/core/hooks/useValidationStatus.ts","../src/core/singleDocRelease/context/SingleDocReleaseProvider.tsx","../src/core/singleDocRelease/hooks/useClearScheduledDraftPerspectiveOnDelete.ts","../src/core/singleDocRelease/plugin/documentActions/ScheduledDraftDocumentActions.tsx","../src/core/singleDocRelease/hooks/useHasCardinalityOneReleaseVersions.ts","../src/core/singleDocRelease/plugin/documentActions/SchedulePublishAction.tsx","../src/core/singleDocRelease/plugin/documentActions/index.ts","../src/core/singleDocRelease/plugin/index.ts"],"sourcesContent":["import {useMemo} from 'react'\nimport {useSyncObservable} from 'react-rx'\n\nimport {useDocumentStore} from '../store/datastores'\nimport {type ValidationStatus} from '../validation'\n\nconst INITIAL: ValidationStatus = {validation: [], isValidating: false}\n\n/** @internal */\nexport function useValidationStatus(\n validationTargetId: string,\n docTypeName: string,\n requirePublishedReferences: boolean,\n): ValidationStatus {\n const documentStore = useDocumentStore()\n\n const observable = useMemo(\n () =>\n documentStore.pair.validation(validationTargetId, docTypeName, requirePublishedReferences),\n [docTypeName, documentStore.pair, validationTargetId, requirePublishedReferences],\n )\n\n // Kept synchronous: consumers use this as a write-side gate, not just for\n // display. PublishAction enables publish from `hasValidationErrors` and\n // fires `doPublish()` once `isValidating` is false and `revision` matches\n // the live edit revision — and reference-driven revalidation re-runs\n // validation without changing the document revision, so a deferred (stale\n // but revision-matching) \"valid\" snapshot could publish before live errors\n // catch up. Identity-coherent deferral cannot help there: the observable\n // identity is stable while the pane is mounted; only the value lags.\n // Proof: hooks/__tests__/useValidationStatus.test.tsx.\n return useSyncObservable(observable, INITIAL)\n}\n","import {useContext} from 'react'\nimport {SingleDocReleaseContext, type SingleDocReleaseContextValue} from 'sanity/_singletons'\n\ninterface SingleDocReleaseProviderProps {\n children: React.ReactNode\n onSetScheduledDraftPerspective: (releaseId: string) => void\n}\n\n/**\n * Provider for the single doc release context.\n * @internal\n */\nexport function SingleDocReleaseProvider({\n children,\n onSetScheduledDraftPerspective,\n}: SingleDocReleaseProviderProps) {\n return (\n <SingleDocReleaseContext.Provider value={{onSetScheduledDraftPerspective}}>\n {children}\n </SingleDocReleaseContext.Provider>\n )\n}\n\n/**\n * Hook to get the single doc release context\n * @internal\n */\nexport function useSingleDocRelease(): SingleDocReleaseContextValue {\n const context = useContext(SingleDocReleaseContext)\n if (!context) {\n throw new Error('SingleDocReleaseContext not found')\n }\n return context\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useCallback} from 'react'\n\nimport {usePerspective} from '../../perspective/usePerspective'\nimport {getReleaseIdFromReleaseDocumentId} from '../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {useSingleDocRelease} from '../context/SingleDocReleaseProvider'\n\n/**\n * Returns a callback that clears the pane-local scheduled draft perspective when\n * the document pane is currently viewing the given release. Used after deleting\n * a scheduled draft so stale release UI is not left visible.\n *\n * Must be used within a document pane (requires `SingleDocReleaseProvider`).\n *\n * @internal\n */\nexport function useClearScheduledDraftPerspectiveOnDelete(\n release: ReleaseDocument | undefined,\n): () => void {\n const {onSetScheduledDraftPerspective} = useSingleDocRelease()\n const {selectedPerspectiveName} = usePerspective()\n\n return useCallback(() => {\n if (!release) return\n\n if (selectedPerspectiveName === getReleaseIdFromReleaseDocumentId(release._id)) {\n onSetScheduledDraftPerspective('')\n }\n }, [release, selectedPerspectiveName, onSetScheduledDraftPerspective])\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n} from '../../../config/document/actions'\nimport {useAllReleases} from '../../../releases/store/useAllReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {useClearScheduledDraftPerspectiveOnDelete} from '../../hooks/useClearScheduledDraftPerspectiveOnDelete'\nimport {\n useScheduledDraftMenuActions,\n type UseScheduledDraftMenuActionsReturn,\n} from '../../hooks/useScheduledDraftMenuActions'\n\n/**\n * Higher-order function that creates a scheduled draft document action\n * @internal\n */\nconst createScheduledDraftAction = (\n actionKey: keyof UseScheduledDraftMenuActionsReturn['actions'],\n visibilityCheck?: (release: ReleaseDocument | undefined) => boolean,\n): DocumentActionComponent => {\n // Using hook naming conventions is required for React Compiler to detect this function and memoize it\n const useScheduledDraftAction: DocumentActionComponent = (\n props: DocumentActionProps,\n ): DocumentActionDescription | null => {\n const {type, release, id} = props\n const {data: releases = [], loading} = useAllReleases()\n\n const releaseDocument = releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === release,\n )\n\n const onDeleteComplete = useClearScheduledDraftPerspectiveOnDelete(\n actionKey === 'deleteSchedule' ? releaseDocument : undefined,\n )\n\n const {actions, dialogs} = useScheduledDraftMenuActions({\n release: releaseDocument,\n documentType: type,\n documentId: id,\n onDeleteComplete: actionKey === 'deleteSchedule' ? onDeleteComplete : undefined,\n })\n\n if (visibilityCheck && !visibilityCheck(releaseDocument)) {\n return null\n }\n\n // This action is only shown for scheduled-draft version type\n if (!releaseDocument) {\n return null\n }\n\n if (!actions || !actions[actionKey]) {\n return null\n }\n\n const actionProps = actions[actionKey]\n\n return {\n disabled: actionProps.disabled || loading,\n icon: actionProps.icon,\n label: actionProps.text,\n title: actionProps.text,\n tone: actionProps.tone,\n dialog: dialogs\n ? {\n type: 'custom',\n component: dialogs,\n }\n : false,\n onHandle: actionProps.onClick,\n }\n }\n return useScheduledDraftAction\n}\n\n/**\n * Document action for publishing a scheduled draft immediately\n * @internal\n */\nexport const PublishScheduledDraftAction = createScheduledDraftAction('publishNow')\n\n/**\n * Document action for editing schedule of a scheduled draft\n * Only visible when the draft is NOT paused\n * @internal\n */\nexport const EditScheduledDraftAction = createScheduledDraftAction(\n 'editSchedule',\n (release) => !isPausedCardinalityOneRelease(release), // Hide when paused\n)\n\n/**\n * Document action for deleting a scheduled draft\n * @internal\n */\nexport const DeleteScheduledDraftAction = createScheduledDraftAction('deleteSchedule')\n\nPublishScheduledDraftAction.displayName = 'PublishScheduledDraftAction'\nPublishScheduledDraftAction.action = 'publish'\n\nEditScheduledDraftAction.displayName = 'EditScheduledDraftAction'\nEditScheduledDraftAction.action = 'schedule'\n\nDeleteScheduledDraftAction.displayName = 'DeleteScheduledDraftAction'\nDeleteScheduledDraftAction.action = 'discardVersion'\n","import {useMemo} from 'react'\n\nimport {useDocumentVersions} from '../../releases/hooks/useDocumentVersions'\nimport {useActiveReleases} from '../../releases/store/useActiveReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {getVersionFromId} from '../../util/draftUtils'\nimport {isCardinalityOneRelease} from '../../util/releaseUtils'\n\n/**\n * Checks if a document has any versions in scheduled draft (`metadata.cardinality: 'one'`) releases.\n *\n * @param documentId - The ID of the document to check\n * @returns boolean - true if the document has versions in any cardinality one releases\n * @internal\n */\nexport function useHasCardinalityOneReleaseVersions(documentId: string): boolean {\n const {data: allReleases} = useActiveReleases()\n const {data: documentVersions} = useDocumentVersions({documentId})\n\n return useMemo(() => {\n if (!allReleases || !documentVersions) return false\n\n const documentReleaseIds = documentVersions.map(getVersionFromId).filter(Boolean)\n\n return allReleases.some((release) => {\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n return documentReleaseIds.includes(releaseId) && isCardinalityOneRelease(release)\n })\n }, [allReleases, documentVersions])\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {isValidationErrorMarker} from '@sanity/types'\nimport {useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {\n type DocumentActionComponent,\n type DocumentActionDescription,\n type DocumentActionProps,\n} from '../../../config/document/actions'\nimport {useValidationStatus} from '../../../hooks/useValidationStatus'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useActiveReleases} from '../../../releases/store/useActiveReleases'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../releases/util/getReleaseIdFromReleaseDocumentId'\nimport {getDraftId} from '../../../util/draftUtils'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {ScheduleDraftDialog} from '../../components/ScheduleDraftDialog'\nimport {useSingleDocReleaseEnabled} from '../../context/SingleDocReleaseEnabledProvider'\nimport {useSingleDocRelease} from '../../context/SingleDocReleaseProvider'\nimport {useSingleDocReleaseUpsell} from '../../context/SingleDocReleaseUpsellProvider'\nimport {useHasCardinalityOneReleaseVersions} from '../../hooks/useHasCardinalityOneReleaseVersions'\nimport {useScheduleDraftOperations} from '../../hooks/useScheduleDraftOperations'\nimport {singleDocReleaseNamespace} from '../../i18n'\n\n// React Compiler needs functions that are hooks to have the `use` prefix, pascal case are treated as a component, these are hooks even though they're confusingly named `DocumentActionComponent`\n/** @internal */\nexport const useSchedulePublishAction: DocumentActionComponent = (\n props: DocumentActionProps,\n): DocumentActionDescription | null => {\n const {id, type, draft} = props\n const {t} = useTranslation(singleDocReleaseNamespace)\n const {createScheduledDraft, rescheduleScheduledDraft} = useScheduleDraftOperations()\n const toast = useToast()\n const {enabled: singleDocReleaseEnabled, mode} = useSingleDocReleaseEnabled()\n const {handleOpenDialog: handleOpenUpsellDialog} = useSingleDocReleaseUpsell()\n // Check validation status.\n // No `getTargetScopeId(useTargetDocumentState())` here: scheduling a draft publish deliberately validates the\n // explicit draft of the document, independent of the selected perspective. This is safe because\n // the action is disabled while a variant is selected (see `isVariantSelected` below).\n // TODO: this will be supported in the future, look for SAPP-3986 and SAPP-3987.\n const validationStatus = useValidationStatus(getDraftId(id), type, true)\n const hasValidationErrors = validationStatus.validation.some(isValidationErrorMarker)\n\n // Check if document has versions in cardinality one releases\n const hasCardinalityOneReleaseVersions = useHasCardinalityOneReleaseVersions(id)\n\n const [dialogOpen, setDialogOpen] = useState(false)\n const [isScheduling, setIsScheduling] = useState(false)\n const {onSetScheduledDraftPerspective} = useSingleDocRelease()\n\n // Check if current release is a paused scheduled draft\n const {data: releases = []} = useActiveReleases()\n const perspective = usePerspective()\n\n // Scheduling operates on the base draft, so it is not available while a variant is selected —\n // it would silently schedule the base document instead of the variant (SAPP-3986).\n const isVariantSelected = Boolean(perspective.selectedVariantName)\n\n const currentRelease = useMemo(\n () =>\n releases.find(\n (r) => getReleaseIdFromReleaseDocumentId(r._id) === perspective.selectedReleaseId,\n ),\n [releases, perspective.selectedReleaseId],\n )\n\n const isPaused = isPausedCardinalityOneRelease(currentRelease)\n const initialDate =\n isPaused && currentRelease?.metadata.intendedPublishAt\n ? new Date(currentRelease.metadata.intendedPublishAt)\n : undefined\n const handleOpenDialog = useCallback(() => {\n if (mode === 'upsell') {\n handleOpenUpsellDialog('document_action')\n } else {\n setDialogOpen(true)\n }\n }, [mode, handleOpenUpsellDialog])\n\n const handleCloseDialog = useCallback(() => {\n setDialogOpen(false)\n }, [])\n\n const handleSchedule = useCallback(\n async (publishAt: Date) => {\n setIsScheduling(true)\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n if (isPaused && currentRelease) {\n // Resume paused draft: reschedule with new date\n await rescheduleScheduledDraft(currentRelease, publishAt)\n } else {\n // Normal flow: create new scheduled draft\n const releaseDocumentId = await createScheduledDraft(id, publishAt)\n onSetScheduledDraftPerspective(getReleaseIdFromReleaseDocumentId(releaseDocumentId))\n }\n\n setDialogOpen(false)\n }\n try {\n await run()\n } catch (error) {\n console.error('Failed to schedule document publish:', error)\n\n toast.push({\n closable: true,\n status: 'error',\n title: t('action.schedule-publish-error'),\n description: error instanceof Error ? error.message : 'An unknown error occurred',\n })\n }\n setIsScheduling(false)\n },\n [\n id,\n createScheduledDraft,\n toast,\n t,\n onSetScheduledDraftPerspective,\n isPaused,\n currentRelease,\n rescheduleScheduledDraft,\n ],\n )\n\n const disabled =\n isVariantSelected ||\n (isPaused\n ? hasValidationErrors // Only check validation errors for paused drafts\n : hasCardinalityOneReleaseVersions || hasValidationErrors) // Full check for regular drafts\n\n const title = useMemo(() => {\n if (isVariantSelected) {\n return t('action.schedule-publish.disabled.variant')\n }\n\n if (isPaused && hasValidationErrors) {\n return t('action.schedule-publish.disabled.validation-issues')\n }\n\n if (hasCardinalityOneReleaseVersions) {\n return t('action.schedule-publish.disabled.cardinality-one')\n }\n\n if (hasValidationErrors) {\n return t('action.schedule-publish.disabled.validation-issues')\n }\n\n return t('action.schedule-publish')\n }, [isVariantSelected, isPaused, hasValidationErrors, hasCardinalityOneReleaseVersions, t])\n\n if (!singleDocReleaseEnabled) {\n return null\n }\n\n // Show for drafts OR paused scheduled drafts\n if (!draft && !isPaused) {\n return null\n }\n\n return {\n icon: CalendarIcon,\n disabled,\n label: t('action.schedule-publish'),\n title,\n tone: isPaused ? 'primary' : undefined, // Add primary tone when paused\n onHandle: handleOpenDialog,\n dialog: dialogOpen && {\n type: 'custom',\n component: (\n <ScheduleDraftDialog\n onClose={handleCloseDialog}\n onSchedule={handleSchedule}\n variant=\"schedule\"\n loading={isScheduling}\n initialDate={initialDate}\n />\n ),\n },\n }\n}\n\nuseSchedulePublishAction.action = 'schedule'\nuseSchedulePublishAction.displayName = 'SchedulePublishAction'\n","import {type DocumentActionComponent} from '../../../config/document/actions'\nimport {type DocumentActionsContext} from '../../../config/types'\nimport {\n DeleteScheduledDraftAction,\n EditScheduledDraftAction,\n PublishScheduledDraftAction,\n} from './ScheduledDraftDocumentActions'\nimport {useSchedulePublishAction} from './SchedulePublishAction'\n\nexport default function resolveDocumentActions(\n existingActions: DocumentActionComponent[],\n context: DocumentActionsContext,\n): DocumentActionComponent[] {\n if (context.versionType === 'scheduled-draft') {\n // For paused scheduled drafts: Schedule (primary), Publish Now, Delete Schedule\n // For active scheduled drafts: Publish Now (primary), Edit Schedule, Delete Schedule\n return [\n useSchedulePublishAction, // Shows only when paused\n PublishScheduledDraftAction, // Always shows\n EditScheduledDraftAction, // Shows only when NOT paused\n DeleteScheduledDraftAction, // Always shows\n ]\n }\n\n // Add SchedulePublishAction only for draft documents\n if (context.versionType === 'draft') {\n const actionsExcludingOriginalSchedule = existingActions.filter(\n ({action}) => action !== 'schedule',\n )\n const publishActionIndex = actionsExcludingOriginalSchedule.findIndex(\n ({action}) => action === 'publish',\n )\n const nextAfterPublishIndex = publishActionIndex + 1\n const hasPublishAction = publishActionIndex >= 0\n\n const actionsBeforePublish = hasPublishAction\n ? actionsExcludingOriginalSchedule.slice(0, nextAfterPublishIndex)\n : []\n const actionsAfterPublish = hasPublishAction\n ? actionsExcludingOriginalSchedule.slice(nextAfterPublishIndex)\n : actionsExcludingOriginalSchedule\n\n return [...actionsBeforePublish, useSchedulePublishAction, ...actionsAfterPublish]\n }\n return existingActions\n}\n","import {lazy} from 'react'\n\nimport {definePlugin} from '../../config/definePlugin'\nimport {singleDocReleaseUsEnglishLocaleBundle} from '../i18n'\nimport resolveDocumentActions from './documentActions'\n\nconst SingleDocReleaseLayout = lazy(() =>\n import('./SingleDocReleaseLayout').then((module) => ({default: module.SingleDocReleaseLayout})),\n)\n\n/**\n * @internal\n */\nexport const SINGLE_DOC_RELEASE_NAME = 'sanity/singleDocRelease'\n\n/**\n * @internal\n */\nexport const RELEASES_SCHEDULED_DRAFTS_INTENT = 'releases-scheduled-drafts'\n\n/**\n * @internal\n */\nexport const singleDocRelease = definePlugin({\n name: SINGLE_DOC_RELEASE_NAME,\n studio: {\n components: {\n layout: SingleDocReleaseLayout,\n },\n },\n i18n: {\n bundles: [singleDocReleaseUsEnglishLocaleBundle],\n },\n document: {\n actions: resolveDocumentActions,\n },\n})\n"],"mappings":";;;;;;;;;;;;;;AAMA,MAAMI,UAA4B;CAACC,YAAY,CAAA;CAAIC,cAAc;AAAK;;AAGtE,SAAOC,oBAAAC,oBAAAC,aAAAC,4BAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAKLC,gBAAsBX,iBAAiB,GAACY;CAMvC,OANuCH,EAAA,OAAAF,eAAAE,EAAA,OAAAE,cAAAE,QAAAJ,EAAA,OAAAD,8BAAAC,EAAA,OAAAH,sBAIpCM,KAAAD,cAAaE,KAAKV,WAAYG,oBAAoBC,aAAaC,0BAA0B,GAACC,EAAA,KAAAF,aAAAE,EAAA,KAAAE,cAAAE,MAAAJ,EAAA,KAAAD,4BAAAC,EAAA,KAAAH,oBAAAG,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAavFV,kBAAkBe,IAAYZ,OAAO;AAAC;;;;;ACnB/C,SAAOsB,yBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAkC,EAAAR,UAAAG,mCAAAG,IAGTG;CAAA,AAAAF,EAAA,OAAAJ,iCAE6CM,KAAAF,EAAA,MAAhCE,KAAA,EAAAN,+BAA+B,GAACI,EAAA,KAAAJ,gCAAAI,EAAA,KAAAE;CAAA,IAAAC;CAEtC,OAFsCH,EAAA,OAAAP,YAAAO,EAAA,OAAAE,MAAzEC,KAAA,oBAAA,wBAAA,UAAA;EAAyC,OAAAD;EACtCT;CACH,CAAA,GAAmCO,EAAA,KAAAP,UAAAO,EAAA,KAAAE,IAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFnCG;AAEmC;;;;;AAQvC,SAAOC,sBAAA;CACL,IAAAC,UAAgBhB,WAAWC,uBAAuB;CAClD,IAAI,CAACe,SACH,MAAUC,MAAM,mCAAmC;CACpD,OACMD;AAAO;;;;;;;;;;AChBhB,SAAOO,0CAAAC,SAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAGL,EAAAC,mCAAyCL,oBAAoB,GAC7D,EAAAM,4BAAkCR,eAAe,GAACS;CAQjD,OARiDJ,EAAA,OAAAE,kCAAAF,EAAA,OAAAD,WAAAC,EAAA,OAAAG,2BAE/BC,WAAA;EACZL,WAEDI,4BAA4BP,kCAAkCG,QAAOM,GAAI,KAC3EH,+BAA+B,EAAE;CAClC,GACFF,EAAA,KAAAE,gCAAAF,EAAA,KAAAD,SAAAC,EAAA,KAAAG,yBAAAH,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IANMI;AAM+D;;;;;ACRxE,MAAMY,8BACJC,WACAC,oBAC4B;CAE5B,IAAME,2BAAmDC,UAAA;EAAA,IAAAC,IAAAC,EAAA,EAAA,GAGvD,EAAAC,MAAAL,SAAAM,OAA4BJ,OAC5B,EAAAK,MAAAC,IAAAC,YAAuClB,eAAe,GAACmB;EAAA,AAAAP,EAAA,OAAAK,KAA7BE,KAAAP,EAAA,MAAbO,KAAAF,OAAAG,KAAAA,IAAA,CAAA,IAAAH,IAAaL,EAAA,KAAAK,IAAAL,EAAA,KAAAO;EAAb,IAAAE,WAAAF,IAAaG;EAAA,IAAAV,EAAA,OAAAH,WAAAG,EAAA,OAAAS,UAAA;GAAA,IAAAE;GAIzBX,AAJyBA,EAAA,OAAAH,UAGmCc,KAAAX,EAAA,MAA3DW,MAAAC,MAAOvB,kCAAkCuB,EAACC,GAAI,MAAMhB,SAAOG,EAAA,KAAAH,SAAAG,EAAA,KAAAW,KADrCD,KAAAD,SAAQK,KAC9BH,EACF,GAACX,EAAA,KAAAH,SAAAG,EAAA,KAAAS,UAAAT,EAAA,KAAAU;EAAA,OAAAA,KAAAV,EAAA;EAFD,IAAAe,kBAAwBL,IAIxBM,mBAAyBzB,0CACvBI,cAAc,mBAAdoB,kBAAAP,KAAAA,CACF,GAMoBG,KAAAhB,cAAc,mBAAdqB,mBAAAR,KAAAA,GAA6DS;EAAA,AAAAjB,EAAA,OAAAG,MAAAH,EAAA,OAAAe,mBAAAf,EAAA,OAAAW,MAAAX,EAAA,QAAAE,QAJzBe,KAAA;GAAApB,SAC7CkB;GAAeG,cACVhB;GAAIiB,YACNhB;GAAEa,kBACIL;EACpB,GAACX,EAAA,KAAAG,IAAAH,EAAA,KAAAe,iBAAAf,EAAA,KAAAW,IAAAX,EAAA,MAAAE,MAAAF,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA;EALD,IAAA,EAAAoB,SAAAC,YAA2B7B,6BAA6ByB,EAKvD;EAWD,IATIrB,mBAAA,CAAoBA,gBAAgBmB,eAAe,KAKnD,CAACA,mBAID,CAACK,WAAD,CAAaA,QAAQzB,YAAU,OAC1B;EAGT,IAAA2B,cAAoBF,QAAQzB,YAGhB4B,KAAAD,YAAWE,YAAXlB,SAA+BmB;EAAA,AAAAzB,EAAA,QAAAqB,UAUhCI,KAAAzB,EAAA,OALDyB,KAAAJ,UAAA;GAAAnB,MAEI;GAAQwB,WACHL;EAET,IALA,IAKCrB,EAAA,MAAAqB,SAAArB,EAAA,MAAAyB;EAAA,IAAAE;EAEV,OAFU3B,EAAA,QAAAsB,YAAAM,QAAA5B,EAAA,QAAAsB,YAAAO,WAAA7B,EAAA,QAAAsB,YAAAQ,QAAA9B,EAAA,QAAAsB,YAAAS,QAAA/B,EAAA,QAAAuB,MAAAvB,EAAA,QAAAyB,MAXJE,KAAA;GAAAH,UACKD;GAA+BK,MACnCN,YAAWM;GAAKI,OACfV,YAAWQ;GAAKG,OAChBX,YAAWQ;GAAKC,MACjBT,YAAWS;GAAKG,QACdT;GAKCU,UACCb,YAAWO;EACvB,GAAC7B,EAAA,MAAAsB,YAAAM,MAAA5B,EAAA,MAAAsB,YAAAO,SAAA7B,EAAA,MAAAsB,YAAAQ,MAAA9B,EAAA,MAAAsB,YAAAS,MAAA/B,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KAbM2B;CAaN;CAEH,OAAO7B;AACT,GAMasC,8BAA8B1C,2BAA2B,YAAY,GAOrE2C,2BAA2B3C,2BACtC,iBACCG,YAAY,CAACP,8BAA8BO,OAAO,CACrD,GAMayC,6BAA6B5C,2BAA2B,gBAAgB;AAErF0C,4BAA4BG,cAAc,+BAC1CH,4BAA4BI,SAAS,WAErCH,yBAAyBE,cAAc,4BACvCF,yBAAyBG,SAAS,YAElCF,2BAA2BC,cAAc,8BACzCD,2BAA2BE,SAAS;;;;;;;;AC7FpC,SAAOO,oCAAAC,YAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,MAAAC,gBAA4BT,kBAAkB,GAACU;CAAA,AAAAJ,EAAA,OAAAD,aACkBK,KAAAJ,EAAA,MAAZI,KAAA,EAAAL,WAAW,GAACC,EAAA,KAAAD,YAAAC,EAAA,KAAAI;CAAjE,IAAA,EAAAF,MAAAG,qBAAiCZ,oBAAoBW,EAAY,GAACE;CAAAC,KAAA;EAGhE,IAAI,CAACJ,eAAD,CAAiBE,kBAAgB;GAAEC,KAAO;GAAP,MAAAC;EAAY;EAAA,IAAAC;EAAA,IAAAR,EAAA,OAAAG,eAAAH,EAAA,OAAAK,kBAAA;GAEnD,IAAAI,qBAA2BJ,iBAAgBK,IAAKd,gBAAgB,CAAC,CAAAe,OAAQC,OAAO;GAM9EZ,AAJKQ,KAAAL,YAAWU,MAAMC,YAAA;IACtB,IAAAC,YAAkBpB,kCAAkCmB,QAAOE,GAAI;IAAC,OAEzDP,mBAAkBQ,SAAUF,SAA6C,KAA/BlB,wBAAwBiB,OAAO;GAAC,CAClF,GAACd,EAAA,KAAAG,aAAAH,EAAA,KAAAK,kBAAAL,EAAA,KAAAQ;EAAA,OAAAA,KAAAR,EAAA;EAJFM,KAAOE;CAIL;CAAA,OATGF;AAU4B;;ACFrC,MAAamC,4BAAoDC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAG/D,EAAAC,IAAAC,MAAAC,UAA0BL,OAC1B,EAAAM,MAAYpB,eAAeY,yBAAyB,GACpD,EAAAS,sBAAAC,6BAAyDX,2BAA2B,GACpFY,QAAc/B,SAAS,GACvB,EAAAgC,SAAAC,yBAAAC,SAAiDnB,2BAA2B,GAC5E,EAAAoB,kBAAAC,2BAAmDnB,0BAA0B,GAACoB;CAAA,AAAAd,EAAA,OAAAE,KAMnBY,KAAAd,EAAA,MAAdc,KAAAzB,WAAWa,EAAE,GAACF,EAAA,KAAAE,IAAAF,EAAA,KAAAc;CAA3D,IAAAC,mBAAyB/B,oBAAoB8B,IAAgBX,MAAM,EAAI,GAACa;CAAA,AAAAhB,EAAA,OAAAe,iBAAAE,aACaD,KAAAhB,EAAA,MAAzDgB,KAAAD,iBAAgBE,WAAWC,KAAM1C,uBAAuB,GAACwB,EAAA,KAAAe,iBAAAE,YAAAjB,EAAA,KAAAgB;CAArF,IAAAG,sBAA4BH,IAG5BI,mCAAyCzB,oCAAoCO,EAAE,GAE/E,CAAAmB,YAAAC,iBAAoC1C,SAAS,EAAK,GAClD,CAAA2C,cAAAC,mBAAwC5C,SAAS,EAAK,GACtD,EAAA6C,mCAAyChC,oBAAoB,GAG7D,EAAAiC,MAAAC,OAA8BxC,kBAAkB,GAACyC;CAAA,AAAA5B,EAAA,OAAA2B,KAAvBC,KAAA5B,EAAA,MAAb4B,KAAAD,OAAAE,KAAAA,IAAA,CAAA,IAAAF,IAAa3B,EAAA,KAAA2B,IAAA3B,EAAA,KAAA4B;CAAb,IAAAE,WAAAF,IACbG,cAAoB7C,eAAe,GAInC8C,oBAA0BC,EAAQF,YAAWG,qBAAqBC;CAAA,IAAAnC,EAAA,OAAA+B,YAAAK,qBAAApC,EAAA,OAAA8B,UAAA;EAAA,IAAAO;EAM7DrC,AAN6DA,EAAA,OAAA+B,YAAAK,oBAKqBC,KAAArC,EAAA,OAAjFqC,MAAAC,MAAOlD,kCAAkCkD,EAACC,GAAI,MAAMR,YAAWK,mBAAkBpC,EAAA,KAAA+B,YAAAK,mBAAApC,EAAA,MAAAqC,KADnFF,KAAAL,SAAQU,KACNH,EACF,GAACrC,EAAA,KAAA+B,YAAAK,mBAAApC,EAAA,KAAA8B,UAAA9B,EAAA,KAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAJL,IAAAyC,iBAEIN,IAIHE;CAAA,AAAArC,EAAA,QAAAyC,iBAE6DJ,KAAArC,EAAA,OAA7CqC,KAAA/C,8BAA8BmD,cAAc,GAACzC,EAAA,MAAAyC,gBAAAzC,EAAA,MAAAqC;CAA9D,IAAAK,WAAiBL,IAA6CM;CAAA,AAAA3C,EAAA,QAAAyC,kBAAAzC,EAAA,QAAA0C,YAE5DC,KAAAD,YAAYD,gBAAcG,SAA4BC,oBAAtD,IACQC,KAAKL,eAAcG,SAASC,iBACxB,IAFZhB,KAAAA,GAEa7B,EAAA,MAAAyC,gBAAAzC,EAAA,MAAA0C,UAAA1C,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CAHf,IAAA+C,cACEJ,IAEaK;CAAA,AAAAhD,EAAA,QAAAa,0BAAAb,EAAA,QAAAW,QACsBqC,WAAA;EACnC,AAAIrC,SAAS,WACXE,uBAAuB,iBAAiB,IAExCS,cAAc,EAAI;CACnB,GACFtB,EAAA,MAAAa,wBAAAb,EAAA,MAAAW,MAAAX,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAND,IAAAY,mBAAyBoC,IAMSC;CAAA,AAAAjD,EAAA,QAAAkD,OAAAC,IAAA,2BAAA,KAEIF,WAAA;EACpC3B,cAAc,EAAK;CAAC,GACrBtB,EAAA,MAAAiD,MAAAA,KAAAjD,EAAA;CAFD,IAAAoD,oBAA0BH,IAEpBI;CAAA,AAAArD,EAAA,QAAAM,wBAAAN,EAAA,QAAAyC,kBAAAzC,EAAA,QAAAE,MAAAF,EAAA,QAAA0C,YAAA1C,EAAA,QAAAyB,kCAAAzB,EAAA,QAAAO,4BAAAP,EAAA,QAAAK,KAAAL,EAAA,QAAAQ,SAGJ6C,KAAA,OAAAC,cAAA;EACE9B,gBAAgB,EAAI;EAEpB,IAAA+B,MAAY,YAAA;GACV,IAAIb,YAAAD,gBAEF,MAAMlC,yBAAyBkC,gBAAgBa,SAAS;QAAC;IAGzD,IAAAE,oBAA0B,MAAMlD,qBAAqBJ,IAAIoD,SAAS;IAClE7B,+BAA+BrC,kCAAkCoE,iBAAiB,CAAC;GAAC;GAGtFlC,cAAc,EAAK;EAAC;EAEtB,IAAA;GACE,MAAMiC,IAAI;EAAC,SAAAE,KAAA;GACJC,IAAAA,QAAAA;GAGPlD,AAFAmD,QAAOD,MAAO,wCAAwCA,KAAK,GAE3DlD,MAAKoD,KAAM;IAAAC,UACC;IAAIC,QACN;IAAOC,OACR1D,EAAE,+BAA+B;IAAC2D,aAC5BN,iBAAiBO,QAAQP,MAAKQ,UAA9B;GACf,CAAC;EAAC;EAEJ1C,gBAAgB,EAAK;CAAC,GACvBxB,EAAA,MAAAM,sBAAAN,EAAA,MAAAyC,gBAAAzC,EAAA,MAAAE,IAAAF,EAAA,MAAA0C,UAAA1C,EAAA,MAAAyB,gCAAAzB,EAAA,MAAAO,0BAAAP,EAAA,MAAAK,GAAAL,EAAA,MAAAQ,OAAAR,EAAA,MAAAqD,MAAAA,KAAArD,EAAA;CA7BH,IAAAmE,iBAAuBd,IA0CvBe,WACEpC,sBACCU,WAAAvB,sBAEGC,oCAAAD,sBAAwDsC;CAAAY,KAAA;EAG5D,IAAIrC,mBAAiB;GAAA,IAAAsC;GACnBb,AADmBzD,EAAA,QAAAK,IACiCiE,MAAAtE,EAAA,OAA7CsE,MAAAjE,EAAE,0CAA0C,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE,MAApDb,MAAOa;GAAP,MAAAD;EAAoD;EAGtD,IAAI3B,YAAAvB,qBAA+B;GAAA,IAAAmD;GACjCb,AADiCzD,EAAA,QAAAK,IAC6BiE,MAAAtE,EAAA,OAAvDsE,MAAAjE,EAAE,oDAAoD,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE,MAA9Db,MAAOa;GAAP,MAAAD;EAA8D;EAGhE,IAAIjD,kCAAgC;GAAA,IAAAkD;GAClCb,AADkCzD,EAAA,QAAAK,IAC0BiE,MAAAtE,EAAA,OAArDsE,MAAAjE,EAAE,kDAAkD,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE,MAA5Db,MAAOa;GAAP,MAAAD;EAA4D;EAG9D,IAAIlD,qBAAmB;GAAA,IAAAmD;GACrBb,AADqBzD,EAAA,QAAAK,IACyCiE,MAAAtE,EAAA,OAAvDsE,MAAAjE,EAAE,oDAAoD,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE,MAA9Db,MAAOa;GAAP,MAAAD;EAA8D;EAC/D,IAAAC;EAEDb,AAFCzD,EAAA,QAAAK,IAEkCiE,MAAAtE,EAAA,OAA5BsE,MAAAjE,EAAE,yBAAyB,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE,MAAnCb,MAAOa;CAA4B;CAjBrC,IAAAP,QAAcN;CAyBd,IALI,CAAC/C,2BAKD,CAACN,SAAD,CAAWsC,UAAQ,OACd;CACR,IAAA4B;CAAA,AAAAtE,EAAA,QAAAK,IAKoCiE,MAAAtE,EAAA,OAA5BsE,MAAAjE,EAAE,yBAAyB,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE;CAE7B,IAAAC,MAAA7B,WAAA,YAAAb,KAAAA,GAAgC2C;CAAA,AAAAxE,EAAA,QAAAqB,cAAArB,EAAA,QAAAmE,kBAAAnE,EAAA,QAAA+C,eAAA/C,EAAA,QAAAuB,gBAE9BiD,MAAAnD,cAAA;EAAAlB,MACA;EAAQsE,WAEZ,oBAAC,qBAAD;GACWrB,SAAAA;GACGe,YAAAA;GACJ,SAAA;GACC5C,SAAAA;GACIwB;EAAW,CAAA;CAG9B,GAAC/C,EAAA,MAAAqB,YAAArB,EAAA,MAAAmE,gBAAAnE,EAAA,MAAA+C,aAAA/C,EAAA,MAAAuB,cAAAvB,EAAA,MAAAwE,OAAAA,MAAAxE,EAAA;CAAA,IAAA0E;CACF,OADE1E,EAAA,QAAAoE,YAAApE,EAAA,QAAAY,oBAAAZ,EAAA,QAAAsE,OAAAtE,EAAA,QAAAuE,OAAAvE,EAAA,QAAAwE,OAAAxE,EAAA,QAAA+D,SAlBIW,MAAA;EAAAC,MACCpG;EAAY6F;EAAAQ,OAEXN;EAA4BP;EAAAc,MAE7BN;EAAgCO,UAC5BlE;EAAgBmE,QAClBP;CAYV,GAACxE,EAAA,MAAAoE,UAAApE,EAAA,MAAAY,kBAAAZ,EAAA,MAAAsE,KAAAtE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAwE,KAAAxE,EAAA,MAAA+D,OAAA/D,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA,KAnBM0E;AAmBN;AAGH5E,yBAAyBkF,SAAS,YAClClF,yBAAyBmF,cAAc;AC/KvC,SAAwBO,uBACtBC,iBACAC,SAC2B;CAC3B,IAAIA,QAAQC,gBAAgB,mBAG1B,OAAO;EACLJ;EACAD;EACAD;EACAD;CAA4B;CAKhC,IAAIM,QAAQC,gBAAgB,SAAS;EACnC,IAAMC,mCAAmCH,gBAAgBI,QACtD,EAACC,aAAYA,WAAW,UAC3B,GACMC,qBAAqBH,iCAAiCI,WACzD,EAACF,aAAYA,WAAW,SAC3B,GACMG,wBAAwBF,qBAAqB,GAC7CG,mBAAmBH,sBAAsB,GAEzCI,uBAAuBD,mBACzBN,iCAAiCQ,MAAM,GAAGH,qBAAqB,IAC/D,CAAA,GACEI,sBAAsBH,mBACxBN,iCAAiCQ,MAAMH,qBAAqB,IAC5DL;EAEJ,OAAO;GAAC,GAAGO;GAAsBZ;GAA0B,GAAGc;EAAmB;CACnF;CACA,OAAOZ;AACT;ACvCA,MAAMiB,yBAAyBJ,WAC7B,OAAO,uCAA2B,CAACK,MAAMC,YAAY,EAACC,SAASD,OAAOF,uBAAsB,EAAE,CAChG,GAKaI,0BAA0B,2BAK1BC,mCAAmC,6BAKnCC,mBAAmBT,aAAa;CAC3CU,MAAMH;CACNI,QAAQ,EACNC,YAAY,EACVC,QAAQV,uBACV,EACF;CACAW,MAAM,EACJC,SAAS,CAACd,qCAAqC,EACjD;CACAe,UAAU,EACRC,SAASf,uBACX;AACF,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Xa as definePlugin } from "./useBundleDocuments-
|
|
1
|
+
import { Xa as definePlugin } from "./useBundleDocuments-BnCBcbdJ.js";
|
|
2
2
|
import { n as variantsUsEnglishLocaleBundle } from "./i18n-BWMyMJpf.js";
|
|
3
3
|
import { lazy } from "react";
|
|
4
4
|
import { route } from "sanity/router";
|
|
5
|
-
const VariantsTool = lazy(() => import("./VariantsTool-
|
|
5
|
+
const VariantsTool = lazy(() => import("./VariantsTool-E4ptTHik.js").then((module) => ({ default: module.VariantsTool }))), VariantsStudioNavbar = lazy(() => import("./VariantsStudioNavbar-Bae9LOIN.js").then((module) => ({ default: module.VariantsStudioNavbar }))), VARIANTS_NAME = "sanity/variants", VARIANTS_INTENT = "variant", variants = definePlugin({
|
|
6
6
|
name: VARIANTS_NAME,
|
|
7
7
|
studio: { components: { navbar: VariantsStudioNavbar } },
|
|
8
8
|
tools: [{
|
|
@@ -20,4 +20,4 @@ const VariantsTool = lazy(() => import("./VariantsTool-C2-mCbDU.js").then((modul
|
|
|
20
20
|
});
|
|
21
21
|
export { VARIANTS_NAME as n, variants as r, VARIANTS_INTENT as t };
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=plugin-
|
|
23
|
+
//# sourceMappingURL=plugin-BUox1zeI.js.map
|