sanity 6.9.2 → 6.9.3-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/lib/{AddonDatasetProvider-CIq0vehp.js → AddonDatasetProvider-DDQrh5ob.js} +2 -2
  2. package/lib/{AddonDatasetProvider-CIq0vehp.js.map → AddonDatasetProvider-DDQrh5ob.js.map} +1 -1
  3. package/lib/{CalendarFilter-DRKSPTWd.js → CalendarFilter-DYbHmp_x.js} +3 -3
  4. package/lib/{CalendarFilter-DRKSPTWd.js.map → CalendarFilter-DYbHmp_x.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-NGghzPWZ.js → CommentsDocumentLayout-qdF_HKSC.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-NGghzPWZ.js.map → CommentsDocumentLayout-qdF_HKSC.js.map} +1 -1
  7. package/lib/{CommentsField-_QkW9aLe.js → CommentsField-i8xs45PB.js} +3 -3
  8. package/lib/{CommentsField-_QkW9aLe.js.map → CommentsField-i8xs45PB.js.map} +1 -1
  9. package/lib/{CommentsInput-DdtI0Naj.js → CommentsInput-B9iSSi8A.js} +6 -6
  10. package/lib/{CommentsInput-DdtI0Naj.js.map → CommentsInput-B9iSSi8A.js.map} +1 -1
  11. package/lib/{CommentsInspector-BQtqxGsK.js → CommentsInspector-rGGP9buL.js} +5 -5
  12. package/lib/{CommentsInspector-BQtqxGsK.js.map → CommentsInspector-rGGP9buL.js.map} +1 -1
  13. package/lib/{CommentsListItem-B0yR0R5a.js → CommentsListItem-DKS6V_TV.js} +3 -3
  14. package/lib/{CommentsListItem-B0yR0R5a.js.map → CommentsListItem-DKS6V_TV.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js → CommentsSelectedPathProvider-BnZ6GdNc.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js.map → CommentsSelectedPathProvider-BnZ6GdNc.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-DK4W-hTe.js → CommentsStudioLayout-YlpSH_2Y.js} +4 -4
  18. package/lib/{CommentsStudioLayout-DK4W-hTe.js.map → CommentsStudioLayout-YlpSH_2Y.js.map} +1 -1
  19. package/lib/{DateInputs-enUB1fG8.js → DateInputs-DioSKqY0.js} +7 -7
  20. package/lib/{DateInputs-enUB1fG8.js.map → DateInputs-DioSKqY0.js.map} +1 -1
  21. package/lib/{DocumentStatusIndicator-BP3N2GwG.js → DocumentStatusIndicator-BPBTH84U.js} +5 -5
  22. package/lib/{DocumentStatusIndicator-BP3N2GwG.js.map → DocumentStatusIndicator-BPBTH84U.js.map} +1 -1
  23. package/lib/{FormValue-4tVuOoGw.js → FormValue-CJg43LyM.js} +2 -2
  24. package/lib/{FormValue-4tVuOoGw.js.map → FormValue-CJg43LyM.js.map} +1 -1
  25. package/lib/{LoadingBlock-Cy2Pckab.js → LoadingBlock-DPTVJ58M.js} +3 -3
  26. package/lib/{LoadingBlock-Cy2Pckab.js.map → LoadingBlock-DPTVJ58M.js.map} +1 -1
  27. package/lib/{ReleaseTitle-CkEMIfmx.js → ReleaseTitle-ln13W3P1.js} +4 -4
  28. package/lib/{ReleaseTitle-CkEMIfmx.js.map → ReleaseTitle-ln13W3P1.js.map} +1 -1
  29. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js → ReleasesMetadataProvider-DbxROVyw.js} +2 -2
  30. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js.map → ReleasesMetadataProvider-DbxROVyw.js.map} +1 -1
  31. package/lib/{ReleasesNav-DozstCwb.js → ReleasesNav-DNwncim0.js} +15 -15
  32. package/lib/{ReleasesNav-DozstCwb.js.map → ReleasesNav-DNwncim0.js.map} +1 -1
  33. package/lib/{ReleasesStudioLayout-CXoRbIpf.js → ReleasesStudioLayout-gzl7rMMp.js} +8 -8
  34. package/lib/{ReleasesStudioLayout-CXoRbIpf.js.map → ReleasesStudioLayout-gzl7rMMp.js.map} +1 -1
  35. package/lib/{ReleasesTool-Bxru9khS.js → ReleasesTool-CsHniZCP.js} +20 -20
  36. package/lib/{ReleasesTool-Bxru9khS.js.map → ReleasesTool-CsHniZCP.js.map} +1 -1
  37. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js → SchedulePublishingStudioLayout-BzSSDp9x.js} +3 -3
  38. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js.map → SchedulePublishingStudioLayout-BzSSDp9x.js.map} +1 -1
  39. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js → SchedulePublishingUpsellProvider-DQqIZsCc.js} +2 -2
  40. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js.map → SchedulePublishingUpsellProvider-DQqIZsCc.js.map} +1 -1
  41. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js → ScheduledPublishingEnabledProvider-BcWaBJw5.js} +3 -3
  42. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js.map → ScheduledPublishingEnabledProvider-BcWaBJw5.js.map} +1 -1
  43. package/lib/{SearchProvider-DSLbCdgY.js → SearchProvider-D3w4Bvul.js} +10 -10
  44. package/lib/{SearchProvider-DSLbCdgY.js.map → SearchProvider-D3w4Bvul.js.map} +1 -1
  45. package/lib/{SingleDocReleaseLayout-DQicfsKs.js → SingleDocReleaseLayout-CQCkL8-0.js} +2 -2
  46. package/lib/{SingleDocReleaseLayout-DQicfsKs.js.map → SingleDocReleaseLayout-CQCkL8-0.js.map} +1 -1
  47. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js → SingleDocReleaseUpsellProvider-YDBCGrHT.js} +4 -4
  48. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js.map → SingleDocReleaseUpsellProvider-YDBCGrHT.js.map} +1 -1
  49. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js → TasksStudioActiveToolLayout-DAmh3t6t.js} +16 -16
  50. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js.map → TasksStudioActiveToolLayout-DAmh3t6t.js.map} +1 -1
  51. package/lib/{TasksStudioLayout-CnsvBNfw.js → TasksStudioLayout-6qNY69FD.js} +5 -5
  52. package/lib/{TasksStudioLayout-CnsvBNfw.js.map → TasksStudioLayout-6qNY69FD.js.map} +1 -1
  53. package/lib/{TimeZoneButton-DMd-M_ri.js → TimeZoneButton-TmrFye13.js} +4 -4
  54. package/lib/{TimeZoneButton-DMd-M_ri.js.map → TimeZoneButton-TmrFye13.js.map} +1 -1
  55. package/lib/{Tool-VgnYCwyZ.js → Tool-tpq9K4o7.js} +14 -14
  56. package/lib/{Tool-VgnYCwyZ.js.map → Tool-tpq9K4o7.js.map} +1 -1
  57. package/lib/{UnpublishVersionDialog-Fow5nBrc.js → UnpublishVersionDialog-6zyP9rCr.js} +5 -5
  58. package/lib/{UnpublishVersionDialog-Fow5nBrc.js.map → UnpublishVersionDialog-6zyP9rCr.js.map} +1 -1
  59. package/lib/{UpsellDialog-BqP2wmnt.js → UpsellDialog-CM238V3B.js} +3 -3
  60. package/lib/{UpsellDialog-BqP2wmnt.js.map → UpsellDialog-CM238V3B.js.map} +1 -1
  61. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js → VariantsStudioNavbar-lFO2yrMq.js} +7 -7
  62. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js.map → VariantsStudioNavbar-lFO2yrMq.js.map} +1 -1
  63. package/lib/{VariantsTool-CmQqDiwU.js → VariantsTool-B0OS4fku.js} +9 -9
  64. package/lib/{VariantsTool-CmQqDiwU.js.map → VariantsTool-B0OS4fku.js.map} +1 -1
  65. package/lib/{WorkspaceLoader-Ailj0PR9.js → WorkspaceLoader-CiJ6lGBu.js} +32 -32
  66. package/lib/{WorkspaceLoader-Ailj0PR9.js.map → WorkspaceLoader-CiJ6lGBu.js.map} +1 -1
  67. package/lib/_createContext.js +1 -1
  68. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js → buildTextSelectionFromFragment-CFZdgjpp.js} +3 -3
  69. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js.map → buildTextSelectionFromFragment-CFZdgjpp.js.map} +1 -1
  70. package/lib/{datastores-D4iZNSXV.js → datastores-wbjstxMt.js} +2 -2
  71. package/lib/{datastores-D4iZNSXV.js.map → datastores-wbjstxMt.js.map} +1 -1
  72. package/lib/{getTransactionsLogs-C-_o7nGx.js → getTransactionsLogs-Di50JBPB.js} +2 -2
  73. package/lib/{getTransactionsLogs-C-_o7nGx.js.map → getTransactionsLogs-Di50JBPB.js.map} +1 -1
  74. package/lib/index.js +35 -35
  75. package/lib/{inputResolver-Dpo4FxTy.js → inputResolver-DuUEGuH5.js} +4 -4
  76. package/lib/{inputResolver-Dpo4FxTy.js.map → inputResolver-DuUEGuH5.js.map} +1 -1
  77. package/lib/{navigation.telemetry-syjEPEw-.js → navigation.telemetry-EsdzXa34.js} +9 -9
  78. package/lib/{navigation.telemetry-syjEPEw-.js.map → navigation.telemetry-EsdzXa34.js.map} +1 -1
  79. package/lib/{plugin-B8Op6DFi.js → plugin-C_6lw0l3.js} +3 -3
  80. package/lib/{plugin-B8Op6DFi.js.map → plugin-C_6lw0l3.js.map} +1 -1
  81. package/lib/{plugin-CmF53OT5.js → plugin-ClT8-pVM.js} +4 -4
  82. package/lib/{plugin-CmF53OT5.js.map → plugin-ClT8-pVM.js.map} +1 -1
  83. package/lib/{plugin-Bk41RRuC.js → plugin-DRuKGgrO.js} +6 -6
  84. package/lib/{plugin-Bk41RRuC.js.map → plugin-DRuKGgrO.js.map} +1 -1
  85. package/lib/{plugin-BhEK2rZ8.js → plugin-wJP1ECFq.js} +6 -6
  86. package/lib/{plugin-BhEK2rZ8.js.map → plugin-wJP1ECFq.js.map} +1 -1
  87. package/lib/{scheduleItem-sJhB8YzX.js → scheduleItem-9PFIH7_h.js} +15 -15
  88. package/lib/{scheduleItem-sJhB8YzX.js.map → scheduleItem-9PFIH7_h.js.map} +1 -1
  89. package/lib/{schedules-CLC2KygL.js → schedules-DniNrpFJ.js} +3 -3
  90. package/lib/{schedules-CLC2KygL.js.map → schedules-DniNrpFJ.js.map} +1 -1
  91. package/lib/{searchDocumentRelease-CtPYZAZk.js → searchDocumentRelease-TrunKdQg.js} +5 -5
  92. package/lib/{searchDocumentRelease-CtPYZAZk.js.map → searchDocumentRelease-TrunKdQg.js.map} +1 -1
  93. package/lib/{studioClient-WYiCwgfZ.js → studioClient-BpYJ_yYC.js} +2 -2
  94. package/lib/{studioClient-WYiCwgfZ.js.map → studioClient-BpYJ_yYC.js.map} +1 -1
  95. package/lib/{useBundleDocuments-CiRQnzQh.js → useBundleDocuments-C58ExRpX.js} +5 -5
  96. package/lib/{useBundleDocuments-CiRQnzQh.js.map → useBundleDocuments-C58ExRpX.js.map} +1 -1
  97. package/lib/{useComments-CxUK5MNb.js → useComments-BcMCyjIE.js} +2 -2
  98. package/lib/{useComments-CxUK5MNb.js.map → useComments-BcMCyjIE.js.map} +1 -1
  99. package/lib/{useCommentsTelemetry-BWqcsQ1u.js → useCommentsTelemetry-CL97yuwT.js} +4 -4
  100. package/lib/{useCommentsTelemetry-BWqcsQ1u.js.map → useCommentsTelemetry-CL97yuwT.js.map} +1 -1
  101. package/lib/{useDocumentPreviewValues-B4jUnACZ.js → useDocumentPreviewValues-Cy9aUMu2.js} +5 -5
  102. package/lib/{useDocumentPreviewValues-B4jUnACZ.js.map → useDocumentPreviewValues-Cy9aUMu2.js.map} +1 -1
  103. package/lib/{useFeatureEnabled-sRpDeLLJ.js → useFeatureEnabled-C5qTffLc.js} +2 -2
  104. package/lib/{useFeatureEnabled-sRpDeLLJ.js.map → useFeatureEnabled-C5qTffLc.js.map} +1 -1
  105. package/lib/{useFieldActions-CrPgIiyl.js → useFieldActions-MFJIkobn.js} +2 -2
  106. package/lib/{useFieldActions-CrPgIiyl.js.map → useFieldActions-MFJIkobn.js.map} +1 -1
  107. package/lib/{useProjectId-bGwoCAuz.js → useProjectId-BRSQ8kIo.js} +2 -2
  108. package/lib/{useProjectId-bGwoCAuz.js.map → useProjectId-BRSQ8kIo.js.map} +1 -1
  109. package/lib/{useReleasesToolAvailable-BevhFmt9.js → useReleasesToolAvailable-BOlw1HWL.js} +3 -3
  110. package/lib/{useReleasesToolAvailable-BevhFmt9.js.map → useReleasesToolAvailable-BOlw1HWL.js.map} +1 -1
  111. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js → useScheduledDraftMenuActions-DIQYFw0x.js} +6 -6
  112. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js.map → useScheduledDraftMenuActions-DIQYFw0x.js.map} +1 -1
  113. package/lib/{useStudioUrl-DbfIwS1P.js → useStudioUrl-Dc5LnOvR.js} +5 -5
  114. package/lib/{useStudioUrl-DbfIwS1P.js.map → useStudioUrl-Dc5LnOvR.js.map} +1 -1
  115. package/lib/{useTimeZone-DnxQlCGS.js → useTimeZone-Da8WK1q-.js} +2 -2
  116. package/lib/{useTimeZone-DnxQlCGS.js.map → useTimeZone-Da8WK1q-.js.map} +1 -1
  117. package/lib/{validationUtils-Bcu-PkHm.js → validationUtils-B9CLn9F7.js} +4 -4
  118. package/lib/{validationUtils-Bcu-PkHm.js.map → validationUtils-B9CLn9F7.js.map} +1 -1
  119. package/lib/{version-DTqx_kFw.js → version-D7qSwBVE.js} +2 -2
  120. package/lib/{version-DTqx_kFw.js.map → version-D7qSwBVE.js.map} +1 -1
  121. package/package.json +11 -11
@@ -1,8 +1,8 @@
1
1
  import { C as isNonNullable } from "./draftUtils-D3HJGQaW.js";
2
- import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS, o as useSource } from "./studioClient-WYiCwgfZ.js";
3
- import { U as postTask } from "./datastores-D4iZNSXV.js";
4
- import { L as useRenderingContext, R as useProjectOrganizationId, l as useStudioAppIdStore } from "./SearchProvider-DSLbCdgY.js";
5
- import { S as useActiveWorkspace } from "./useBundleDocuments-CiRQnzQh.js";
2
+ import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS, o as useSource } from "./studioClient-BpYJ_yYC.js";
3
+ import { U as postTask } from "./datastores-wbjstxMt.js";
4
+ import { L as useRenderingContext, R as useProjectOrganizationId, l as useStudioAppIdStore } from "./SearchProvider-D3w4Bvul.js";
5
+ import { S as useActiveWorkspace } from "./useBundleDocuments-C58ExRpX.js";
6
6
  import { memo, useEffect, useImperativeHandle, useRef, useState } from "react";
7
7
  import { of } from "rxjs";
8
8
  import { c } from "react/compiler-runtime";
@@ -321,4 +321,4 @@ const getDashboardPath = ({ organizationId, dashboardDomain, appId, workspaceNam
321
321
  };
322
322
  export { Resizable as a, useProjectSubscriptions as i, useEnvAwareSanityWebsiteUrl as n, GetHookCollectionState as o, getIsScheduledDateInPast as r, useThrottledCallback as s, useStudioUrl as t };
323
323
 
324
- //# sourceMappingURL=useStudioUrl-DbfIwS1P.js.map
324
+ //# sourceMappingURL=useStudioUrl-Dc5LnOvR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStudioUrl-DbfIwS1P.js","names":["HookCollectionActionHook","actionIds","WeakMap","counter","getHookId","actionHook","T","K","cachedId","get","id","displayName","name","set","useEffect","HookCollectionActionHook","defineHookStateComponent","hook","useHook","id","Args","State","HookStateComponent","t0","$","_c","args","handleNext","hookState","t1","t2","action","displayName","replace","memo","useMemo","deepEqual","getHookId","defineHookStateComponent","HookCollectionActionHook","HookCollectionStateProps","hooks","Args","State","args","handleNext","id","hookState","HookCollectionStateComponent","t0","$","_c","t1","t2","hook","map","displayName","HookCollectionState","props","React","ReactNode","RenderHook","HookState","throttle","ThrottleSettings","useMemo","useThrottledCallback","callback","wait","options","$","_c","t0","throttledCallback","ThrottleSettings","useCallback","useRef","useState","deepCompare","isNonNullable","postTask","useThrottledCallback","getHookId","GetHookCollectionStateProps","throttleOptions","trailing","mapHooksToStates","states","Map","State","hooks","Pick","Args","map","hook","id","get","filter","useHookCollectionStates","t0","$","_c","_temp","t1","snapshot","setSnapshot","abortControllerRef","t2","current","abort","AbortController","signal","catch","_temp2","updateSnapshot","requestUpdateSnapshot","t3","hookState","shouldUpdateSnapshot","delete","has","prev","set","handleNext","t4","error","name","useImperativeHandle","useMemo","useState","HookCollectionState","GetHookCollectionStateProps","useHookCollectionStates","GetHookCollectionState","props","$","_c","hooks","args","children","resetRef","t0","states","handleNext","t1","result","forceReset","setForceReset","t2","t3","Symbol","for","_temp","t4","t5","t6","n","MouseEvent","useCallback","useRef","css","styled","PositionProps","position","Root","div","Resizer","props","$","_c","onResize","onResizeStart","mouseXRef","t0","event","preventDefault","current","pageX","handleMouseMove","e","controller","AbortController","handleMouseUp","abort","signal","window","addEventListener","handleMouseDown","t1","t2","Symbol","for","t3","Box","BoxProps","ElementType","HTMLProps","useCallback","useMemo","useRef","useState","styled","Resizer","ResizableProps","minWidth","maxWidth","initialWidth","resizerPosition","Root","Resizable","props","$","_c","children","forwardedAs","restProps","t0","as","undefined","element","setElement","elementWidthRef","targetWidth","setTargetWidth","t1","offsetWidth","current","handleResizeStart","t2","deltaX","w","Math","min","max","handleResize","t3","flex","width","style","t4","t5","t6","SanityClient","useMemo","useObservable","Observable","of","catchError","map","shareReplay","startWith","useSource","DEFAULT_STUDIO_CLIENT_OPTIONS","useClient","FeatureAttributes","Record","Feature","id","variantId","name","price","included","attributes","FeatureType","singular","features","Resource","unit","type","quota","custom","overageAllowed","overageChunkSize","overageChunkPrice","maxOverageQuota","Plan","planTypeId","productType","variantOfPlanId","variantName","trialDays","createdAt","supersededAt","default","public","orderable","isBasePlan","pricingModel","resources","featureTypes","ProjectSubscriptionsResponse","projectId","productId","customerId","planId","previousSubscriptionId","status","startedAt","startedBy","endedAt","endedBy","trialUntil","plan","ProjectSubscriptions","error","Error","projectSubscriptions","isLoading","INITIAL_LOADING_STATE","fetchProjectSubscriptions","versionedClient","observable","request","uri","config","tag","cachedProjectSubscriptionsRequest","Map","useProjectSubscriptions","$","_c","get","pipe","set","t0","bb0","projectSubscriptions$","t1","Symbol","for","_temp","_temp2","projectSubscriptionsObservable","cachedSubscriptions","EditableReleaseDocument","isPast","getIsScheduledDateInPast","value","Boolean","metadata","releaseType","intendedPublishAt","Date","useMemo","useWorkspace","useEnvAwareSanityWebsiteUrl","getClient","apiHost","apiVersion","config","endsWith","useCallback","useMemo","useProjectOrganizationId","useRenderingContext","useStudioAppIdStore","useActiveWorkspace","useEnvAwareSanityWebsiteUrl","getDashboardPath","StudioUrlBuilder","url","StudioUrlModifier","coreUi","studio","UseStudioUrlReturnType","studioUrl","buildStudioUrl","modifiers","buildIntentUrl","intentLink","useStudioUrl","defaultUrl","$","_c","renderingContext","t0","Symbol","for","enabled","studioApp","loading","appIdLoading","activeWorkspace","value","organizationId","organizationIdLoading","isLoading","isCoreUi","name","sanityWebsiteUrl","appId","t1","bb0","window","location","origin","t2","dashboardDomain","workspaceName","basePath","t3","urlModifier","slice","length","t4"],"sources":["../src/core/components/hookCollection/actionId.ts","../src/core/components/hookCollection/defineHookStateComponent.tsx","../src/core/components/hookCollection/HookCollectionState.tsx","../src/core/util/useThrottledCallback.ts","../src/core/components/hookCollection/useHookCollectionStates.tsx","../src/core/components/hookCollection/GetHookCollectionState.tsx","../src/core/components/resizer/Resizer.tsx","../src/core/components/resizer/Resizable.tsx","../src/core/hooks/useProjectSubscriptions.ts","../src/core/releases/util/getIsScheduledDateInPast.ts","../src/core/studio/hooks/useEnvAwareSanityWebsiteUrl.ts","../src/core/util/dashboardPath.ts","../src/core/hooks/useStudioUrl.ts"],"sourcesContent":["import {type HookCollectionActionHook} from './types'\n\nconst actionIds = new WeakMap<HookCollectionActionHook<any, any>, string>()\n\nlet counter = 0\n\n/** @internal */\nexport function getHookId<T, K>(actionHook: HookCollectionActionHook<T, K>): string {\n const cachedId = actionIds.get(actionHook)\n\n if (cachedId) return cachedId\n\n const id = `${(actionHook as any).displayName || actionHook.name || '<anonymous>'}-${counter++}`\n\n actionIds.set(actionHook, id)\n\n return id\n}\n","import {useEffect} from 'react'\n\nimport {type HookCollectionActionHook} from './types'\n\nexport function defineHookStateComponent<Args, State>({\n hook: useHook,\n id,\n}: {\n hook: HookCollectionActionHook<Args, State>\n id: string\n}) {\n const HookStateComponent = ({\n args,\n handleNext,\n }: {\n args: Args\n handleNext: (id: string, hookState: State | null) => void\n }) => {\n const hookState = useHook(args)\n\n useEffect(() => {\n if (hookState) {\n handleNext(id, {...hookState, action: useHook.action})\n } else {\n handleNext(id, hookState)\n }\n }, [handleNext, hookState])\n\n return null\n }\n // Massively helps debugging and profiling by setting the display name\n const {displayName = id.replace(/-[0-9]+$/, '')} = useHook\n HookStateComponent.displayName = displayName\n return HookStateComponent\n}\n","import {memo, useMemo} from 'react'\nimport deepEqual from 'react-fast-compare'\n\nimport {getHookId} from './actionId'\nimport {defineHookStateComponent} from './defineHookStateComponent'\nimport {type HookCollectionActionHook} from './types'\n\ninterface HookCollectionStateProps<Args, State> {\n hooks: HookCollectionActionHook<Args, State>[]\n args: Args\n handleNext: (id: string, hookState: State | null) => void\n}\n\nconst HookCollectionStateComponent = <Args, State>({\n hooks,\n args,\n handleNext,\n}: HookCollectionStateProps<Args, State>) => {\n return useMemo(\n () =>\n hooks.map((hook) => {\n const id = getHookId(hook)\n return <RenderHook key={id} args={args} id={id} hook={hook} handleNext={handleNext} />\n }),\n [args, hooks, handleNext],\n )\n}\nHookCollectionStateComponent.displayName = 'HookCollectionState'\n\n/** @internal */\nexport const HookCollectionState = memo(\n HookCollectionStateComponent,\n // react-fast-compare handles react specifis and allows us to bail on `args` values that are still the same as before, like `<>A</>`\n deepEqual,\n) as <Args, State>(props: HookCollectionStateProps<Args, State>) => React.ReactNode\n\nfunction RenderHook<Args, State>({\n args,\n hook,\n id,\n handleNext,\n}: {\n args: Args\n hook: HookCollectionActionHook<Args, State>\n id: string\n handleNext: (id: string, hookState: State | null) => void\n}) {\n const HookState = useMemo(\n () =>\n defineHookStateComponent<Args, State>({\n hook,\n id,\n }),\n [hook, id],\n )\n\n // oxlint-disable-next-line react/react-compiler -- yes this is bad, but we can't fix it without a new document actions API that will be a breaking change\n return <HookState args={args} handleNext={handleNext} />\n}\n","import throttle, {type ThrottleSettings} from 'lodash-es/throttle.js'\nimport {useMemo} from 'react'\n\n/**\n * @internal\n *\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nexport function useThrottledCallback(\n callback: (...args: any[]) => any,\n wait: number,\n options: ThrottleSettings,\n): (...args: any[]) => any {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options),\n [callback, options, wait],\n )\n\n return throttledCallback\n}\n","import {type ThrottleSettings} from 'lodash-es/throttle.js'\nimport {useCallback, useRef, useState} from 'react'\nimport deepCompare from 'react-fast-compare'\n\nimport {isNonNullable} from '../../util/isNonNullable'\nimport {postTask} from '../../util/postTask'\nimport {useThrottledCallback} from '../../util/useThrottledCallback'\nimport {getHookId} from './actionId'\nimport {type GetHookCollectionStateProps} from './types'\n\nconst throttleOptions: ThrottleSettings = {trailing: true}\n\nfunction mapHooksToStates<Args, State>(\n states: Map<string, State>,\n {hooks}: Pick<GetHookCollectionStateProps<Args, State>, 'hooks'>,\n) {\n return hooks\n .map((hook) => {\n const id = getHookId(hook)\n return states.get(id)\n })\n .filter(isNonNullable)\n}\n\nexport function useHookCollectionStates<Args, State>({\n hooks,\n}: Pick<GetHookCollectionStateProps<Args, State>, 'hooks'>) {\n const [states] = useState(() => new Map<string, State>())\n const [snapshot, setSnapshot] = useState<NonNullable<State>[]>(() =>\n mapHooksToStates(states, {hooks}),\n )\n\n const abortControllerRef = useRef<AbortController | null>(null)\n\n const updateSnapshot = useCallback(() => {\n abortControllerRef.current?.abort()\n abortControllerRef.current = new AbortController()\n\n postTask(\n () => {\n setSnapshot(mapHooksToStates(states, {hooks}))\n },\n {signal: abortControllerRef.current.signal},\n )?.catch((error) => {\n if (error.name === 'AbortError') {\n return\n }\n\n throw error\n })\n }, [hooks, states])\n\n const requestUpdateSnapshot = useThrottledCallback(\n updateSnapshot,\n 60,\n throttleOptions,\n ) as typeof updateSnapshot\n\n const handleNext = useCallback(\n (id: string, hookState: State | null) => {\n let shouldUpdateSnapshot = true\n\n if (hookState === null) {\n states.delete(id)\n } else {\n if (states.has(id)) {\n const prev = states.get(id)\n shouldUpdateSnapshot = !deepCompare(prev, hookState)\n }\n states.set(id, hookState)\n }\n\n if (shouldUpdateSnapshot) {\n requestUpdateSnapshot()\n }\n },\n [requestUpdateSnapshot, states],\n )\n\n return {states: snapshot, handleNext}\n}\n","import {useImperativeHandle, useMemo, useState} from 'react'\n\nimport {HookCollectionState} from './HookCollectionState'\nimport {type GetHookCollectionStateProps} from './types'\nimport {useHookCollectionStates} from './useHookCollectionStates'\n\n/** @internal */\nexport function GetHookCollectionState<Args, State>(\n props: GetHookCollectionStateProps<Args, State>,\n) {\n const {hooks, args, children, resetRef} = props\n\n const {states, handleNext} = useHookCollectionStates({hooks})\n\n const result = useMemo(() => children({states}), [children, states])\n\n /**\n * Legacy pattern that should not be used in new code\n */\n const [forceReset, setForceReset] = useState(0)\n useImperativeHandle(resetRef, () => () => setForceReset((n) => n + 1), [])\n\n return (\n <>\n <HookCollectionState<Args, State>\n key={`render-${forceReset}`}\n hooks={hooks}\n args={args}\n handleNext={handleNext}\n />\n {result}\n </>\n )\n}\n","import {type MouseEvent, useCallback, useRef} from 'react'\nimport {css, styled} from 'styled-components'\n\ninterface PositionProps {\n position: 'left' | 'right'\n}\n\nconst Root = styled.div<PositionProps>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: 9px;\n z-index: 201;\n cursor: ew-resize;\n\n ${({position}) =>\n position === 'right'\n ? css`\n right: -4px;\n `\n : css`\n left: -4px;\n `}\n\n /* Border */\n & > span:nth-child(1) {\n display: block;\n border-left: 1px solid var(--card-border-color);\n position: absolute;\n top: 0;\n ${({position}) =>\n position === 'right'\n ? css`\n right: 4px;\n `\n : css`\n left: 4px;\n `}\n bottom: 0;\n transition: opacity 200ms;\n }\n\n /* Hover effect */\n & > span:nth-child(2) {\n display: block;\n position: absolute;\n top: 0;\n ${({position}) =>\n position === 'right'\n ? css`\n right: 0px;\n `\n : css`\n left: 0px;\n `}\n width: 9px;\n bottom: 0;\n background-color: var(--card-border-color);\n opacity: 0;\n transition: opacity 150ms;\n }\n\n @media (hover: hover) {\n &:hover > span:nth-child(2) {\n opacity: 0.2;\n }\n }\n`\n\nexport function Resizer(props: {\n onResize: (delta: number) => void\n onResizeStart: () => void\n position: 'left' | 'right'\n}) {\n const {onResize, onResizeStart, position} = props\n\n const mouseXRef = useRef(0)\n\n const handleMouseDown = useCallback(\n (event: MouseEvent) => {\n event.preventDefault()\n\n mouseXRef.current = event.pageX\n\n onResizeStart()\n\n const handleMouseMove = (e: globalThis.MouseEvent) => {\n e.preventDefault()\n onResize(mouseXRef.current - e.pageX)\n }\n\n const controller = new AbortController()\n const handleMouseUp = () => controller.abort()\n\n const {signal} = controller\n window.addEventListener('mousemove', handleMouseMove, {signal})\n window.addEventListener('mouseup', handleMouseUp, {signal})\n },\n [onResize, onResizeStart],\n )\n\n return (\n <Root onMouseDown={handleMouseDown} position={position}>\n {/* Hover effect */}\n <span />\n\n {/* Border */}\n <span />\n </Root>\n )\n}\n","import {Box, type BoxProps} from '@sanity/ui'\nimport {type ElementType, type HTMLProps, useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Resizer} from './Resizer'\n\ninterface ResizableProps {\n minWidth: number\n maxWidth: number\n initialWidth?: number\n resizerPosition?: 'left' | 'right'\n}\n\nconst Root = styled(Box)`\n position: relative;\n flex: 1;\n padding-left: 1px;\n`\n\n/**\n * @internal\n * Provides a resizable container with a resizer handle.\n */\nexport function Resizable(\n props: ResizableProps & BoxProps<ElementType> & Omit<HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {\n as: forwardedAs,\n children,\n minWidth,\n maxWidth,\n initialWidth,\n resizerPosition = 'right',\n ...restProps\n } = props\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementWidthRef = useRef<number>(undefined)\n const [targetWidth, setTargetWidth] = useState<number | undefined>(initialWidth)\n\n const handleResizeStart = useCallback(() => {\n elementWidthRef.current = element?.offsetWidth\n }, [element])\n\n const handleResize = useCallback(\n (deltaX: number) => {\n const w = elementWidthRef.current\n if (!w) return\n if (resizerPosition === 'right') {\n setTargetWidth(Math.min(Math.max(w - deltaX, minWidth), maxWidth))\n } else {\n setTargetWidth(Math.min(Math.max(w + deltaX, minWidth), maxWidth))\n }\n },\n [minWidth, maxWidth, resizerPosition],\n )\n\n const style = useMemo(\n () => (targetWidth ? {flex: 'none', width: targetWidth} : {minWidth, maxWidth}),\n [minWidth, maxWidth, targetWidth],\n )\n\n return (\n <Root as={forwardedAs} {...restProps} ref={setElement} style={style}>\n {resizerPosition === 'left' && (\n <Resizer onResize={handleResize} onResizeStart={handleResizeStart} position=\"left\" />\n )}\n {children}\n {resizerPosition === 'right' && (\n <Resizer onResize={handleResize} onResizeStart={handleResizeStart} position=\"right\" />\n )}\n </Root>\n )\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, map, shareReplay, startWith} from 'rxjs/operators'\n\nimport {useSource} from '../studio/source'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../studioClient'\nimport {useClient} from './useClient'\n\ntype FeatureAttributes = Record<string, string | number | boolean | null>\n\ninterface Feature {\n id: string\n variantId: string\n name: string\n price: number\n included: boolean\n attributes: FeatureAttributes\n}\n\ninterface FeatureType {\n id: string\n name: string\n singular: boolean\n features: Feature[]\n}\n\ninterface Resource {\n id: string\n name: string\n unit: string\n type: string\n quota: number | null\n custom: boolean\n overageAllowed: boolean\n overageChunkSize: number\n overageChunkPrice: number\n maxOverageQuota: number | null\n}\n\ninterface Plan {\n id: string\n planTypeId: string\n variantId: string | null\n productType: string\n variantOfPlanId: string | null\n name: string\n variantName: string | null\n price: number\n trialDays: number\n createdAt: string\n supersededAt: string | null\n default: boolean\n public: boolean\n orderable: boolean\n isBasePlan: boolean\n pricingModel: string\n resources: Record<string, Resource>\n featureTypes: Record<string, FeatureType>\n}\n\n/**\n * @internal\n */\nexport interface ProjectSubscriptionsResponse {\n id: string\n projectId: string\n productType: string\n productId: string\n customerId: string | null\n planId: string\n previousSubscriptionId: string | null\n status: string\n startedAt: string\n startedBy: string\n endedAt: string\n endedBy: string\n trialUntil: string | null\n plan: Plan\n resources: Record<string, Resource>\n featureTypes: Record<string, FeatureType>\n}\n\ninterface ProjectSubscriptions {\n error: Error | null\n projectSubscriptions: ProjectSubscriptionsResponse | null\n isLoading: boolean\n}\n\nconst INITIAL_LOADING_STATE: ProjectSubscriptions = {\n error: null,\n projectSubscriptions: null,\n isLoading: true,\n}\n\n/**\n * @internal\n * fetches subscriptions for this project\n */\nfunction fetchProjectSubscriptions({\n versionedClient,\n}: {\n versionedClient: SanityClient\n}): Observable<ProjectSubscriptionsResponse> {\n return versionedClient.observable.request<ProjectSubscriptionsResponse>({\n uri: `/subscriptions/project/${versionedClient.config().projectId}`,\n tag: 'project-subscriptions',\n })\n}\n\nconst cachedProjectSubscriptionsRequest = new Map<\n string,\n Observable<ProjectSubscriptionsResponse>\n>()\n\n/** @internal */\nexport function useProjectSubscriptions(): ProjectSubscriptions {\n const versionedClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {projectId} = useSource()\n\n if (!cachedProjectSubscriptionsRequest.get(projectId)) {\n const projectSubscriptions = fetchProjectSubscriptions({versionedClient}).pipe(shareReplay())\n cachedProjectSubscriptionsRequest.set(projectId, projectSubscriptions)\n }\n\n const projectSubscriptionsObservable = useMemo(() => {\n const projectSubscriptions$ = cachedProjectSubscriptionsRequest.get(projectId)\n\n if (!projectSubscriptions$)\n return of<ProjectSubscriptions>({\n isLoading: false,\n error: null,\n projectSubscriptions: null,\n })\n\n return projectSubscriptions$.pipe(\n map((cachedSubscriptions) => ({\n isLoading: false,\n projectSubscriptions: cachedSubscriptions,\n error: null,\n })),\n startWith(INITIAL_LOADING_STATE),\n catchError((error: Error) =>\n of<ProjectSubscriptions>({\n isLoading: false,\n projectSubscriptions: null,\n error,\n }),\n ),\n )\n }, [projectId])\n\n return useObservable(projectSubscriptionsObservable, INITIAL_LOADING_STATE)\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {isPast} from 'date-fns/isPast'\n\n/** @internal */\nexport const getIsScheduledDateInPast = (value: EditableReleaseDocument) =>\n Boolean(\n value.metadata.releaseType === 'scheduled' &&\n value.metadata.intendedPublishAt &&\n isPast(new Date(value.metadata.intendedPublishAt)),\n )\n","import {useMemo} from 'react'\n\nimport {useWorkspace} from '../workspace'\n\nexport function useEnvAwareSanityWebsiteUrl() {\n const {getClient} = useWorkspace()\n return useMemo(() => {\n const apiHost = getClient({apiVersion: '2025-08-15'}).config().apiHost\n return apiHost.endsWith('.work') ? 'https://www.sanity.work' : 'https://www.sanity.io'\n }, [getClient])\n}\n","/**\n * @internal\n */\nexport const getDashboardPath = ({\n organizationId,\n dashboardDomain,\n appId,\n workspaceName,\n}: {\n dashboardDomain: string\n organizationId: string\n appId: string\n workspaceName: string\n}) => `${dashboardDomain}/@${organizationId}/studio/${appId}/${workspaceName}`\n","import {useCallback, useMemo} from 'react'\n\nimport {useProjectOrganizationId} from '../store/project/useProjectOrganizationId'\nimport {useRenderingContext} from '../store/renderingContext/useRenderingContext'\nimport {useStudioAppIdStore} from '../store/studio-app/useStudioAppIdStore'\nimport {useActiveWorkspace} from '../studio/activeWorkspaceMatcher/useActiveWorkspace'\nimport {useEnvAwareSanityWebsiteUrl} from '../studio/hooks/useEnvAwareSanityWebsiteUrl'\nimport {getDashboardPath} from '../util/dashboardPath'\n\ntype StudioUrlBuilder = (url: string) => string\ntype StudioUrlModifier = {coreUi?: StudioUrlBuilder; studio?: StudioUrlBuilder} & (\n | {coreUi: StudioUrlBuilder}\n | {studio: StudioUrlBuilder}\n)\n\ninterface UseStudioUrlReturnType {\n studioUrl: string\n buildStudioUrl: (modifiers: StudioUrlModifier) => string\n buildIntentUrl: (intentLink: string) => string\n}\n\n/**\n * @internal\n */\nexport const useStudioUrl = (defaultUrl?: string): UseStudioUrlReturnType => {\n const renderingContext = useRenderingContext()\n const {studioApp, loading: appIdLoading} = useStudioAppIdStore({\n enabled: true,\n })\n const {activeWorkspace} = useActiveWorkspace()\n const {value: organizationId, loading: organizationIdLoading} = useProjectOrganizationId()\n const isLoading = appIdLoading || organizationIdLoading\n const isCoreUi = renderingContext?.name === 'coreUi'\n const sanityWebsiteUrl = useEnvAwareSanityWebsiteUrl()\n\n const appId = studioApp?.appId || ''\n const studioUrl = useMemo(() => {\n if (!isCoreUi || isLoading || !appId || !organizationId) {\n return defaultUrl || window.location.origin\n }\n\n return getDashboardPath({\n dashboardDomain: sanityWebsiteUrl,\n organizationId,\n appId: appId,\n workspaceName: activeWorkspace.name,\n })\n }, [\n activeWorkspace.name,\n defaultUrl,\n isCoreUi,\n isLoading,\n organizationId,\n appId,\n sanityWebsiteUrl,\n ])\n\n const basePath = activeWorkspace.basePath\n\n const buildStudioUrl = useCallback(\n ({coreUi, studio}: StudioUrlModifier) => {\n const urlModifier = isCoreUi ? coreUi : studio\n\n return urlModifier?.(studioUrl) || studioUrl\n },\n [isCoreUi, studioUrl],\n )\n\n const buildIntentUrl = useCallback(\n (intentLink: string) => {\n if (isCoreUi && basePath !== '/') {\n return `${studioUrl}${intentLink.slice(basePath.length)}`\n }\n return `${studioUrl}${intentLink}`\n },\n [basePath, isCoreUi, studioUrl],\n )\n\n return {\n buildIntentUrl,\n buildStudioUrl,\n studioUrl,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useStudioUrl-Dc5LnOvR.js","names":["HookCollectionActionHook","actionIds","WeakMap","counter","getHookId","actionHook","T","K","cachedId","get","id","displayName","name","set","useEffect","HookCollectionActionHook","defineHookStateComponent","hook","useHook","id","Args","State","HookStateComponent","t0","$","_c","args","handleNext","hookState","t1","t2","action","displayName","replace","memo","useMemo","deepEqual","getHookId","defineHookStateComponent","HookCollectionActionHook","HookCollectionStateProps","hooks","Args","State","args","handleNext","id","hookState","HookCollectionStateComponent","t0","$","_c","t1","t2","hook","map","displayName","HookCollectionState","props","React","ReactNode","RenderHook","HookState","throttle","ThrottleSettings","useMemo","useThrottledCallback","callback","wait","options","$","_c","t0","throttledCallback","ThrottleSettings","useCallback","useRef","useState","deepCompare","isNonNullable","postTask","useThrottledCallback","getHookId","GetHookCollectionStateProps","throttleOptions","trailing","mapHooksToStates","states","Map","State","hooks","Pick","Args","map","hook","id","get","filter","useHookCollectionStates","t0","$","_c","_temp","t1","snapshot","setSnapshot","abortControllerRef","t2","current","abort","AbortController","signal","catch","_temp2","updateSnapshot","requestUpdateSnapshot","t3","hookState","shouldUpdateSnapshot","delete","has","prev","set","handleNext","t4","error","name","useImperativeHandle","useMemo","useState","HookCollectionState","GetHookCollectionStateProps","useHookCollectionStates","GetHookCollectionState","props","$","_c","hooks","args","children","resetRef","t0","states","handleNext","t1","result","forceReset","setForceReset","t2","t3","Symbol","for","_temp","t4","t5","t6","n","MouseEvent","useCallback","useRef","css","styled","PositionProps","position","Root","div","Resizer","props","$","_c","onResize","onResizeStart","mouseXRef","t0","event","preventDefault","current","pageX","handleMouseMove","e","controller","AbortController","handleMouseUp","abort","signal","window","addEventListener","handleMouseDown","t1","t2","Symbol","for","t3","Box","BoxProps","ElementType","HTMLProps","useCallback","useMemo","useRef","useState","styled","Resizer","ResizableProps","minWidth","maxWidth","initialWidth","resizerPosition","Root","Resizable","props","$","_c","children","forwardedAs","restProps","t0","as","undefined","element","setElement","elementWidthRef","targetWidth","setTargetWidth","t1","offsetWidth","current","handleResizeStart","t2","deltaX","w","Math","min","max","handleResize","t3","flex","width","style","t4","t5","t6","SanityClient","useMemo","useObservable","Observable","of","catchError","map","shareReplay","startWith","useSource","DEFAULT_STUDIO_CLIENT_OPTIONS","useClient","FeatureAttributes","Record","Feature","id","variantId","name","price","included","attributes","FeatureType","singular","features","Resource","unit","type","quota","custom","overageAllowed","overageChunkSize","overageChunkPrice","maxOverageQuota","Plan","planTypeId","productType","variantOfPlanId","variantName","trialDays","createdAt","supersededAt","default","public","orderable","isBasePlan","pricingModel","resources","featureTypes","ProjectSubscriptionsResponse","projectId","productId","customerId","planId","previousSubscriptionId","status","startedAt","startedBy","endedAt","endedBy","trialUntil","plan","ProjectSubscriptions","error","Error","projectSubscriptions","isLoading","INITIAL_LOADING_STATE","fetchProjectSubscriptions","versionedClient","observable","request","uri","config","tag","cachedProjectSubscriptionsRequest","Map","useProjectSubscriptions","$","_c","get","pipe","set","t0","bb0","projectSubscriptions$","t1","Symbol","for","_temp","_temp2","projectSubscriptionsObservable","cachedSubscriptions","EditableReleaseDocument","isPast","getIsScheduledDateInPast","value","Boolean","metadata","releaseType","intendedPublishAt","Date","useMemo","useWorkspace","useEnvAwareSanityWebsiteUrl","getClient","apiHost","apiVersion","config","endsWith","useCallback","useMemo","useProjectOrganizationId","useRenderingContext","useStudioAppIdStore","useActiveWorkspace","useEnvAwareSanityWebsiteUrl","getDashboardPath","StudioUrlBuilder","url","StudioUrlModifier","coreUi","studio","UseStudioUrlReturnType","studioUrl","buildStudioUrl","modifiers","buildIntentUrl","intentLink","useStudioUrl","defaultUrl","$","_c","renderingContext","t0","Symbol","for","enabled","studioApp","loading","appIdLoading","activeWorkspace","value","organizationId","organizationIdLoading","isLoading","isCoreUi","name","sanityWebsiteUrl","appId","t1","bb0","window","location","origin","t2","dashboardDomain","workspaceName","basePath","t3","urlModifier","slice","length","t4"],"sources":["../src/core/components/hookCollection/actionId.ts","../src/core/components/hookCollection/defineHookStateComponent.tsx","../src/core/components/hookCollection/HookCollectionState.tsx","../src/core/util/useThrottledCallback.ts","../src/core/components/hookCollection/useHookCollectionStates.tsx","../src/core/components/hookCollection/GetHookCollectionState.tsx","../src/core/components/resizer/Resizer.tsx","../src/core/components/resizer/Resizable.tsx","../src/core/hooks/useProjectSubscriptions.ts","../src/core/releases/util/getIsScheduledDateInPast.ts","../src/core/studio/hooks/useEnvAwareSanityWebsiteUrl.ts","../src/core/util/dashboardPath.ts","../src/core/hooks/useStudioUrl.ts"],"sourcesContent":["import {type HookCollectionActionHook} from './types'\n\nconst actionIds = new WeakMap<HookCollectionActionHook<any, any>, string>()\n\nlet counter = 0\n\n/** @internal */\nexport function getHookId<T, K>(actionHook: HookCollectionActionHook<T, K>): string {\n const cachedId = actionIds.get(actionHook)\n\n if (cachedId) return cachedId\n\n const id = `${(actionHook as any).displayName || actionHook.name || '<anonymous>'}-${counter++}`\n\n actionIds.set(actionHook, id)\n\n return id\n}\n","import {useEffect} from 'react'\n\nimport {type HookCollectionActionHook} from './types'\n\nexport function defineHookStateComponent<Args, State>({\n hook: useHook,\n id,\n}: {\n hook: HookCollectionActionHook<Args, State>\n id: string\n}) {\n const HookStateComponent = ({\n args,\n handleNext,\n }: {\n args: Args\n handleNext: (id: string, hookState: State | null) => void\n }) => {\n const hookState = useHook(args)\n\n useEffect(() => {\n if (hookState) {\n handleNext(id, {...hookState, action: useHook.action})\n } else {\n handleNext(id, hookState)\n }\n }, [handleNext, hookState])\n\n return null\n }\n // Massively helps debugging and profiling by setting the display name\n const {displayName = id.replace(/-[0-9]+$/, '')} = useHook\n HookStateComponent.displayName = displayName\n return HookStateComponent\n}\n","import {memo, useMemo} from 'react'\nimport deepEqual from 'react-fast-compare'\n\nimport {getHookId} from './actionId'\nimport {defineHookStateComponent} from './defineHookStateComponent'\nimport {type HookCollectionActionHook} from './types'\n\ninterface HookCollectionStateProps<Args, State> {\n hooks: HookCollectionActionHook<Args, State>[]\n args: Args\n handleNext: (id: string, hookState: State | null) => void\n}\n\nconst HookCollectionStateComponent = <Args, State>({\n hooks,\n args,\n handleNext,\n}: HookCollectionStateProps<Args, State>) => {\n return useMemo(\n () =>\n hooks.map((hook) => {\n const id = getHookId(hook)\n return <RenderHook key={id} args={args} id={id} hook={hook} handleNext={handleNext} />\n }),\n [args, hooks, handleNext],\n )\n}\nHookCollectionStateComponent.displayName = 'HookCollectionState'\n\n/** @internal */\nexport const HookCollectionState = memo(\n HookCollectionStateComponent,\n // react-fast-compare handles react specifis and allows us to bail on `args` values that are still the same as before, like `<>A</>`\n deepEqual,\n) as <Args, State>(props: HookCollectionStateProps<Args, State>) => React.ReactNode\n\nfunction RenderHook<Args, State>({\n args,\n hook,\n id,\n handleNext,\n}: {\n args: Args\n hook: HookCollectionActionHook<Args, State>\n id: string\n handleNext: (id: string, hookState: State | null) => void\n}) {\n const HookState = useMemo(\n () =>\n defineHookStateComponent<Args, State>({\n hook,\n id,\n }),\n [hook, id],\n )\n\n // oxlint-disable-next-line react/react-compiler -- yes this is bad, but we can't fix it without a new document actions API that will be a breaking change\n return <HookState args={args} handleNext={handleNext} />\n}\n","import throttle, {type ThrottleSettings} from 'lodash-es/throttle.js'\nimport {useMemo} from 'react'\n\n/**\n * @internal\n *\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nexport function useThrottledCallback(\n callback: (...args: any[]) => any,\n wait: number,\n options: ThrottleSettings,\n): (...args: any[]) => any {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options),\n [callback, options, wait],\n )\n\n return throttledCallback\n}\n","import {type ThrottleSettings} from 'lodash-es/throttle.js'\nimport {useCallback, useRef, useState} from 'react'\nimport deepCompare from 'react-fast-compare'\n\nimport {isNonNullable} from '../../util/isNonNullable'\nimport {postTask} from '../../util/postTask'\nimport {useThrottledCallback} from '../../util/useThrottledCallback'\nimport {getHookId} from './actionId'\nimport {type GetHookCollectionStateProps} from './types'\n\nconst throttleOptions: ThrottleSettings = {trailing: true}\n\nfunction mapHooksToStates<Args, State>(\n states: Map<string, State>,\n {hooks}: Pick<GetHookCollectionStateProps<Args, State>, 'hooks'>,\n) {\n return hooks\n .map((hook) => {\n const id = getHookId(hook)\n return states.get(id)\n })\n .filter(isNonNullable)\n}\n\nexport function useHookCollectionStates<Args, State>({\n hooks,\n}: Pick<GetHookCollectionStateProps<Args, State>, 'hooks'>) {\n const [states] = useState(() => new Map<string, State>())\n const [snapshot, setSnapshot] = useState<NonNullable<State>[]>(() =>\n mapHooksToStates(states, {hooks}),\n )\n\n const abortControllerRef = useRef<AbortController | null>(null)\n\n const updateSnapshot = useCallback(() => {\n abortControllerRef.current?.abort()\n abortControllerRef.current = new AbortController()\n\n postTask(\n () => {\n setSnapshot(mapHooksToStates(states, {hooks}))\n },\n {signal: abortControllerRef.current.signal},\n )?.catch((error) => {\n if (error.name === 'AbortError') {\n return\n }\n\n throw error\n })\n }, [hooks, states])\n\n const requestUpdateSnapshot = useThrottledCallback(\n updateSnapshot,\n 60,\n throttleOptions,\n ) as typeof updateSnapshot\n\n const handleNext = useCallback(\n (id: string, hookState: State | null) => {\n let shouldUpdateSnapshot = true\n\n if (hookState === null) {\n states.delete(id)\n } else {\n if (states.has(id)) {\n const prev = states.get(id)\n shouldUpdateSnapshot = !deepCompare(prev, hookState)\n }\n states.set(id, hookState)\n }\n\n if (shouldUpdateSnapshot) {\n requestUpdateSnapshot()\n }\n },\n [requestUpdateSnapshot, states],\n )\n\n return {states: snapshot, handleNext}\n}\n","import {useImperativeHandle, useMemo, useState} from 'react'\n\nimport {HookCollectionState} from './HookCollectionState'\nimport {type GetHookCollectionStateProps} from './types'\nimport {useHookCollectionStates} from './useHookCollectionStates'\n\n/** @internal */\nexport function GetHookCollectionState<Args, State>(\n props: GetHookCollectionStateProps<Args, State>,\n) {\n const {hooks, args, children, resetRef} = props\n\n const {states, handleNext} = useHookCollectionStates({hooks})\n\n const result = useMemo(() => children({states}), [children, states])\n\n /**\n * Legacy pattern that should not be used in new code\n */\n const [forceReset, setForceReset] = useState(0)\n useImperativeHandle(resetRef, () => () => setForceReset((n) => n + 1), [])\n\n return (\n <>\n <HookCollectionState<Args, State>\n key={`render-${forceReset}`}\n hooks={hooks}\n args={args}\n handleNext={handleNext}\n />\n {result}\n </>\n )\n}\n","import {type MouseEvent, useCallback, useRef} from 'react'\nimport {css, styled} from 'styled-components'\n\ninterface PositionProps {\n position: 'left' | 'right'\n}\n\nconst Root = styled.div<PositionProps>`\n position: absolute;\n top: 0;\n bottom: 0;\n width: 9px;\n z-index: 201;\n cursor: ew-resize;\n\n ${({position}) =>\n position === 'right'\n ? css`\n right: -4px;\n `\n : css`\n left: -4px;\n `}\n\n /* Border */\n & > span:nth-child(1) {\n display: block;\n border-left: 1px solid var(--card-border-color);\n position: absolute;\n top: 0;\n ${({position}) =>\n position === 'right'\n ? css`\n right: 4px;\n `\n : css`\n left: 4px;\n `}\n bottom: 0;\n transition: opacity 200ms;\n }\n\n /* Hover effect */\n & > span:nth-child(2) {\n display: block;\n position: absolute;\n top: 0;\n ${({position}) =>\n position === 'right'\n ? css`\n right: 0px;\n `\n : css`\n left: 0px;\n `}\n width: 9px;\n bottom: 0;\n background-color: var(--card-border-color);\n opacity: 0;\n transition: opacity 150ms;\n }\n\n @media (hover: hover) {\n &:hover > span:nth-child(2) {\n opacity: 0.2;\n }\n }\n`\n\nexport function Resizer(props: {\n onResize: (delta: number) => void\n onResizeStart: () => void\n position: 'left' | 'right'\n}) {\n const {onResize, onResizeStart, position} = props\n\n const mouseXRef = useRef(0)\n\n const handleMouseDown = useCallback(\n (event: MouseEvent) => {\n event.preventDefault()\n\n mouseXRef.current = event.pageX\n\n onResizeStart()\n\n const handleMouseMove = (e: globalThis.MouseEvent) => {\n e.preventDefault()\n onResize(mouseXRef.current - e.pageX)\n }\n\n const controller = new AbortController()\n const handleMouseUp = () => controller.abort()\n\n const {signal} = controller\n window.addEventListener('mousemove', handleMouseMove, {signal})\n window.addEventListener('mouseup', handleMouseUp, {signal})\n },\n [onResize, onResizeStart],\n )\n\n return (\n <Root onMouseDown={handleMouseDown} position={position}>\n {/* Hover effect */}\n <span />\n\n {/* Border */}\n <span />\n </Root>\n )\n}\n","import {Box, type BoxProps} from '@sanity/ui'\nimport {type ElementType, type HTMLProps, useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Resizer} from './Resizer'\n\ninterface ResizableProps {\n minWidth: number\n maxWidth: number\n initialWidth?: number\n resizerPosition?: 'left' | 'right'\n}\n\nconst Root = styled(Box)`\n position: relative;\n flex: 1;\n padding-left: 1px;\n`\n\n/**\n * @internal\n * Provides a resizable container with a resizer handle.\n */\nexport function Resizable(\n props: ResizableProps & BoxProps<ElementType> & Omit<HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {\n as: forwardedAs,\n children,\n minWidth,\n maxWidth,\n initialWidth,\n resizerPosition = 'right',\n ...restProps\n } = props\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementWidthRef = useRef<number>(undefined)\n const [targetWidth, setTargetWidth] = useState<number | undefined>(initialWidth)\n\n const handleResizeStart = useCallback(() => {\n elementWidthRef.current = element?.offsetWidth\n }, [element])\n\n const handleResize = useCallback(\n (deltaX: number) => {\n const w = elementWidthRef.current\n if (!w) return\n if (resizerPosition === 'right') {\n setTargetWidth(Math.min(Math.max(w - deltaX, minWidth), maxWidth))\n } else {\n setTargetWidth(Math.min(Math.max(w + deltaX, minWidth), maxWidth))\n }\n },\n [minWidth, maxWidth, resizerPosition],\n )\n\n const style = useMemo(\n () => (targetWidth ? {flex: 'none', width: targetWidth} : {minWidth, maxWidth}),\n [minWidth, maxWidth, targetWidth],\n )\n\n return (\n <Root as={forwardedAs} {...restProps} ref={setElement} style={style}>\n {resizerPosition === 'left' && (\n <Resizer onResize={handleResize} onResizeStart={handleResizeStart} position=\"left\" />\n )}\n {children}\n {resizerPosition === 'right' && (\n <Resizer onResize={handleResize} onResizeStart={handleResizeStart} position=\"right\" />\n )}\n </Root>\n )\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {type Observable, of} from 'rxjs'\nimport {catchError, map, shareReplay, startWith} from 'rxjs/operators'\n\nimport {useSource} from '../studio/source'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../studioClient'\nimport {useClient} from './useClient'\n\ntype FeatureAttributes = Record<string, string | number | boolean | null>\n\ninterface Feature {\n id: string\n variantId: string\n name: string\n price: number\n included: boolean\n attributes: FeatureAttributes\n}\n\ninterface FeatureType {\n id: string\n name: string\n singular: boolean\n features: Feature[]\n}\n\ninterface Resource {\n id: string\n name: string\n unit: string\n type: string\n quota: number | null\n custom: boolean\n overageAllowed: boolean\n overageChunkSize: number\n overageChunkPrice: number\n maxOverageQuota: number | null\n}\n\ninterface Plan {\n id: string\n planTypeId: string\n variantId: string | null\n productType: string\n variantOfPlanId: string | null\n name: string\n variantName: string | null\n price: number\n trialDays: number\n createdAt: string\n supersededAt: string | null\n default: boolean\n public: boolean\n orderable: boolean\n isBasePlan: boolean\n pricingModel: string\n resources: Record<string, Resource>\n featureTypes: Record<string, FeatureType>\n}\n\n/**\n * @internal\n */\nexport interface ProjectSubscriptionsResponse {\n id: string\n projectId: string\n productType: string\n productId: string\n customerId: string | null\n planId: string\n previousSubscriptionId: string | null\n status: string\n startedAt: string\n startedBy: string\n endedAt: string\n endedBy: string\n trialUntil: string | null\n plan: Plan\n resources: Record<string, Resource>\n featureTypes: Record<string, FeatureType>\n}\n\ninterface ProjectSubscriptions {\n error: Error | null\n projectSubscriptions: ProjectSubscriptionsResponse | null\n isLoading: boolean\n}\n\nconst INITIAL_LOADING_STATE: ProjectSubscriptions = {\n error: null,\n projectSubscriptions: null,\n isLoading: true,\n}\n\n/**\n * @internal\n * fetches subscriptions for this project\n */\nfunction fetchProjectSubscriptions({\n versionedClient,\n}: {\n versionedClient: SanityClient\n}): Observable<ProjectSubscriptionsResponse> {\n return versionedClient.observable.request<ProjectSubscriptionsResponse>({\n uri: `/subscriptions/project/${versionedClient.config().projectId}`,\n tag: 'project-subscriptions',\n })\n}\n\nconst cachedProjectSubscriptionsRequest = new Map<\n string,\n Observable<ProjectSubscriptionsResponse>\n>()\n\n/** @internal */\nexport function useProjectSubscriptions(): ProjectSubscriptions {\n const versionedClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {projectId} = useSource()\n\n if (!cachedProjectSubscriptionsRequest.get(projectId)) {\n const projectSubscriptions = fetchProjectSubscriptions({versionedClient}).pipe(shareReplay())\n cachedProjectSubscriptionsRequest.set(projectId, projectSubscriptions)\n }\n\n const projectSubscriptionsObservable = useMemo(() => {\n const projectSubscriptions$ = cachedProjectSubscriptionsRequest.get(projectId)\n\n if (!projectSubscriptions$)\n return of<ProjectSubscriptions>({\n isLoading: false,\n error: null,\n projectSubscriptions: null,\n })\n\n return projectSubscriptions$.pipe(\n map((cachedSubscriptions) => ({\n isLoading: false,\n projectSubscriptions: cachedSubscriptions,\n error: null,\n })),\n startWith(INITIAL_LOADING_STATE),\n catchError((error: Error) =>\n of<ProjectSubscriptions>({\n isLoading: false,\n projectSubscriptions: null,\n error,\n }),\n ),\n )\n }, [projectId])\n\n return useObservable(projectSubscriptionsObservable, INITIAL_LOADING_STATE)\n}\n","import {type EditableReleaseDocument} from '@sanity/client'\nimport {isPast} from 'date-fns/isPast'\n\n/** @internal */\nexport const getIsScheduledDateInPast = (value: EditableReleaseDocument) =>\n Boolean(\n value.metadata.releaseType === 'scheduled' &&\n value.metadata.intendedPublishAt &&\n isPast(new Date(value.metadata.intendedPublishAt)),\n )\n","import {useMemo} from 'react'\n\nimport {useWorkspace} from '../workspace'\n\nexport function useEnvAwareSanityWebsiteUrl() {\n const {getClient} = useWorkspace()\n return useMemo(() => {\n const apiHost = getClient({apiVersion: '2025-08-15'}).config().apiHost\n return apiHost.endsWith('.work') ? 'https://www.sanity.work' : 'https://www.sanity.io'\n }, [getClient])\n}\n","/**\n * @internal\n */\nexport const getDashboardPath = ({\n organizationId,\n dashboardDomain,\n appId,\n workspaceName,\n}: {\n dashboardDomain: string\n organizationId: string\n appId: string\n workspaceName: string\n}) => `${dashboardDomain}/@${organizationId}/studio/${appId}/${workspaceName}`\n","import {useCallback, useMemo} from 'react'\n\nimport {useProjectOrganizationId} from '../store/project/useProjectOrganizationId'\nimport {useRenderingContext} from '../store/renderingContext/useRenderingContext'\nimport {useStudioAppIdStore} from '../store/studio-app/useStudioAppIdStore'\nimport {useActiveWorkspace} from '../studio/activeWorkspaceMatcher/useActiveWorkspace'\nimport {useEnvAwareSanityWebsiteUrl} from '../studio/hooks/useEnvAwareSanityWebsiteUrl'\nimport {getDashboardPath} from '../util/dashboardPath'\n\ntype StudioUrlBuilder = (url: string) => string\ntype StudioUrlModifier = {coreUi?: StudioUrlBuilder; studio?: StudioUrlBuilder} & (\n | {coreUi: StudioUrlBuilder}\n | {studio: StudioUrlBuilder}\n)\n\ninterface UseStudioUrlReturnType {\n studioUrl: string\n buildStudioUrl: (modifiers: StudioUrlModifier) => string\n buildIntentUrl: (intentLink: string) => string\n}\n\n/**\n * @internal\n */\nexport const useStudioUrl = (defaultUrl?: string): UseStudioUrlReturnType => {\n const renderingContext = useRenderingContext()\n const {studioApp, loading: appIdLoading} = useStudioAppIdStore({\n enabled: true,\n })\n const {activeWorkspace} = useActiveWorkspace()\n const {value: organizationId, loading: organizationIdLoading} = useProjectOrganizationId()\n const isLoading = appIdLoading || organizationIdLoading\n const isCoreUi = renderingContext?.name === 'coreUi'\n const sanityWebsiteUrl = useEnvAwareSanityWebsiteUrl()\n\n const appId = studioApp?.appId || ''\n const studioUrl = useMemo(() => {\n if (!isCoreUi || isLoading || !appId || !organizationId) {\n return defaultUrl || window.location.origin\n }\n\n return getDashboardPath({\n dashboardDomain: sanityWebsiteUrl,\n organizationId,\n appId: appId,\n workspaceName: activeWorkspace.name,\n })\n }, [\n activeWorkspace.name,\n defaultUrl,\n isCoreUi,\n isLoading,\n organizationId,\n appId,\n sanityWebsiteUrl,\n ])\n\n const basePath = activeWorkspace.basePath\n\n const buildStudioUrl = useCallback(\n ({coreUi, studio}: StudioUrlModifier) => {\n const urlModifier = isCoreUi ? coreUi : studio\n\n return urlModifier?.(studioUrl) || studioUrl\n },\n [isCoreUi, studioUrl],\n )\n\n const buildIntentUrl = useCallback(\n (intentLink: string) => {\n if (isCoreUi && basePath !== '/') {\n return `${studioUrl}${intentLink.slice(basePath.length)}`\n }\n return `${studioUrl}${intentLink}`\n },\n [basePath, isCoreUi, studioUrl],\n )\n\n return {\n buildIntentUrl,\n buildStudioUrl,\n studioUrl,\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { s as useKeyValueStore } from "./datastores-D4iZNSXV.js";
1
+ import { s as useKeyValueStore } from "./datastores-wbjstxMt.js";
2
2
  import { useEffect, useState } from "react";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -235,4 +235,4 @@ function _temp(timeZone) {
235
235
  }
236
236
  export { DATE_FORMAT as n, debugWithName as r, useTimeZone as t };
237
237
 
238
- //# sourceMappingURL=useTimeZone-DnxQlCGS.js.map
238
+ //# sourceMappingURL=useTimeZone-Da8WK1q-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTimeZone-DnxQlCGS.js","names":["debug","rootName","debugWithName","name","Debugger","namespace","enabled","DATE_FORMAT","SMALL","MEDIUM","LARGE","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","tz","tzHelper","TZDate","ClientError","useToast","sanitizeLocale","format","dateFnsFormat","useCallback","useEffect","useMemo","useState","useSyncObservable","startWith","useKeyValueStore","DATE_FORMAT","ToastDescription","NormalizedTimeZone","debugWithName","createTZDateFromComponents","date","Date","timeZone","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","TimeZoneEvents","update","const","TimeZoneScopeType","NoIdRequiredTypes","IdRequiredTypes","ReleasesOrScheduledPublishingScope","type","defaultTimeZone","InputScope","id","relativeDate","TimeZoneScope","debug","timeZoneLocalStorageNamespace","timeZoneCache","Map","offsetCache","abbreviation","alternativeName","offset","offsetToMinutes","multiplier","startsWith","includes","Number","replace","hours","minutes","split","map","getCachedTimeZoneInfo","locale","canonicalIdentifier","relativeDateForZones","dateKey","toISOString","slice","cacheKey","has","get","formatter","Intl","DateTimeFormat","timeZoneName","shortFormatter","dateToUse","parts","formatToParts","shortParts","rawOffset","in","info","find","value","set","computeAllTimeZones","timeZones","supportedValuesOf","tzName","city","replaceAll","name","namePretty","filter","sort","a","b","getGloballyCachedTimeZones","computedTimeZones","TIME_ZONE_SCOPE_TYPE","scheduledPublishing","contentReleases","input","useTimeZone","scope","$","_c","toast","keyValueStore","currentLocale","navigator","language","keyStoreId","undefined","t0","legacyValue","localStorage","getItem","scheduledPublishingValue","JSON","parse","setKey","removeItem","t1","t2","allTimeZones","t3","normalizedDefaultTimezone","getDefaultTimeZone","t4","getKey","pipe","keyValueTimeZone$","storedTimeZone","t5","run","wholeTimeZone","tz_0","some","tz_1","fallbackTimeZone","tz_2","getStoredTimeZone","t6","localTzName","resolvedOptions","foundLocal","tz_3","gmt","_temp","getLocalTimeZone","t7","getInitialTimeZone","t8","timeZone_0","setTimeZone","t10","t9","t11","t12","handler","window","addEventListener","removeEventListener","t13","t14","t15","includeTimeZone","prefix","LARGE","dateFormat","formatDateTz","getCurrentZoneDate","tzValue","tz_4","getTimeZone","t16","tz_5","prevTz","run_0","dispatchEvent","Event","push","closable","description","duration","status","t17","err","console","error","getErrorMessage","handleNewValue","date_0","utcToCurrentZoneDate","t18","date_1","tzDate","utcDate","zoneDateToUtc","t19","isClientError","e","message","response","statusCode","Error","String"],"sources":["../src/core/studio/timezones/utils/debug.ts","../src/core/studio/timezones/constants.tsx","../src/core/studio/timezones/toastDescription/ToastDescription.tsx","../src/core/hooks/useTimeZone.tsx"],"sourcesContent":["import debug from 'debug'\n\nconst rootName = 'scheduled-publishing:'\n\nexport function debugWithName(name: string): debug.Debugger {\n const namespace = `${rootName}${name}`\n if (debug && debug.enabled(namespace)) {\n return debug(namespace)\n }\n return debug(rootName)\n}\n","// date-fns compatible date formats\n// https://date-fns.org/v2.28.0/docs/format\nexport const DATE_FORMAT = {\n // 1 Oct 22, 10:00 PM\n SMALL: `d MMM yy',' p`,\n // 1 October 2022, 10:00 PM\n MEDIUM: `d MMMM yyyy',' p`,\n // Saturday, 1 October 2022, 10:00 PM\n LARGE: `iiii',' d MMMM yyyy',' p`,\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} gap={3}>\n <Inline gap={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {tz as tzHelper, TZDate} from '@date-fns/tz'\nimport {type ClientError} from '@sanity/client'\nimport {useToast} from '@sanity/ui/toast'\nimport {sanitizeLocale} from '@sanity/util/legacyDateFormat'\nimport {format as dateFnsFormat} from 'date-fns/format'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {startWith} from 'rxjs/operators'\n\nimport {useKeyValueStore} from '../store/datastores'\nimport {DATE_FORMAT} from '../studio/timezones/constants'\nimport ToastDescription from '../studio/timezones/toastDescription/ToastDescription'\nimport {type NormalizedTimeZone} from '../studio/timezones/types'\nimport {debugWithName} from '../studio/timezones/utils/debug'\n\n/**\n * Helper function to create a TZDate from a Date's components in a specific timezone.\n * This is useful for interpreting local date/time values as being in a specific timezone.\n */\nfunction createTZDateFromComponents(date: Date, timeZone: string): TZDate {\n return new TZDate(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n timeZone,\n )\n}\n\nconst TimeZoneEvents = {\n update: 'timeZoneEventUpdate' as const,\n}\n\nexport type TimeZoneScopeType = 'scheduledPublishing' | 'contentReleases' | 'input'\n\ntype NoIdRequiredTypes = 'scheduledPublishing' | 'contentReleases'\ntype IdRequiredTypes = 'input'\n\ntype ReleasesOrScheduledPublishingScope = {\n type: NoIdRequiredTypes\n defaultTimeZone?: string\n}\n\ntype InputScope = {\n type: IdRequiredTypes\n id: string\n defaultTimeZone?: string\n relativeDate?: Date // offsets can change over time, so we use a relative date to get the offset\n}\n\nexport type TimeZoneScope = ReleasesOrScheduledPublishingScope | InputScope\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport const timeZoneLocalStorageNamespace = 'studio.timezone.'\n\nconst timeZoneCache = new Map<string, NormalizedTimeZone[]>()\nconst offsetCache = new Map<\n string,\n {abbreviation: string; alternativeName: string; offset: string}\n>()\n\nconst offsetToMinutes = (offset: string): number => {\n if (!offset) return 0\n const multiplier = offset.startsWith('-') ? -1 : 1\n if (!offset.includes(':')) return multiplier * Number(offset.replace(/[+-]/, '')) * 60\n\n const [hours, minutes] = offset.replace(/[+-]/, '').split(':').map(Number)\n return multiplier * (hours * 60 + minutes)\n}\n\nfunction getCachedTimeZoneInfo(\n locale: string,\n canonicalIdentifier: string,\n relativeDateForZones?: Date,\n): {abbreviation: string; alternativeName: string; offset: string} {\n const dateKey = relativeDateForZones?.toISOString().slice(0, 10) || 'now'\n const cacheKey = `${locale}_${canonicalIdentifier}_${dateKey}`\n // relative date is not used for caching, but it's used to invalidate the cache when it changes\n if (offsetCache.has(cacheKey)) {\n return offsetCache.get(cacheKey)!\n }\n\n const formatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'long',\n })\n\n const shortFormatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'short',\n })\n\n const dateToUse = relativeDateForZones ?? new Date()\n const parts = formatter.formatToParts(dateToUse)\n const shortParts = shortFormatter.formatToParts(dateToUse)\n const rawOffset = dateFnsFormat(dateToUse, 'xxx', {in: tzHelper(canonicalIdentifier)})\n // If the offset is +02:00 then we can just show +2, if it has +13:45 then we should show +13:45, remove the leading +0 and just leave a + if a number under 10, remove the :00 at the end\n const offset = rawOffset\n .replace(/([+-])0(\\d)/, '$1$2')\n .replace(/([+-])0$/, '$1')\n .replace(/:00$/, '')\n .replace(/[+]0$/, '')\n\n const info = {\n abbreviation: shortParts.find(({type}) => type === 'timeZoneName')?.value || '',\n alternativeName: parts.find(({type}) => type === 'timeZoneName')?.value || '',\n offset,\n }\n\n offsetCache.set(cacheKey, info)\n return info\n}\n\nfunction computeAllTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const timeZones = Intl.supportedValuesOf('timeZone')\n .map((tzName): NormalizedTimeZone | null => {\n // Skip if timezone name doesn't contain a city (should have a '/')\n if (!tzName.includes('/')) return null\n\n const {alternativeName, abbreviation, offset} = getCachedTimeZoneInfo(\n locale,\n tzName,\n relativeDate,\n )\n const [, city] = tzName.split('/')\n return {\n abbreviation,\n alternativeName,\n city: city.replaceAll('_', ' '),\n name: tzName,\n namePretty: tzName.replaceAll('_', ' '),\n offset,\n value: `${offset} ${abbreviation} ${tzName} ${alternativeName}`,\n }\n })\n .filter((tz): tz is NormalizedTimeZone => tz !== null)\n .sort(\n (a: NormalizedTimeZone, b: NormalizedTimeZone) =>\n offsetToMinutes(a.offset) - offsetToMinutes(b.offset),\n )\n\n return timeZones\n}\n\nfunction getGloballyCachedTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const cacheKey = `${locale}_${relativeDate?.toISOString().slice(0, 10) || 'now'}`\n\n if (timeZoneCache.has(cacheKey)) {\n return timeZoneCache.get(cacheKey)!\n }\n\n const computedTimeZones = computeAllTimeZones(locale, relativeDate)\n timeZoneCache.set(cacheKey, computedTimeZones)\n return computedTimeZones\n}\n\nexport const TIME_ZONE_SCOPE_TYPE = {\n scheduledPublishing: 'scheduled-publishing',\n contentReleases: 'content-releases',\n input: 'input',\n}\n\nexport const useTimeZone = (scope: TimeZoneScope) => {\n const toast = useToast()\n const keyValueStore = useKeyValueStore()\n const currentLocale = navigator.language\n const {defaultTimeZone} = scope\n\n // used for the key to match formatting in cellar\n const type = TIME_ZONE_SCOPE_TYPE[scope.type]\n const keyStoreId =\n 'id' in scope\n ? `${timeZoneLocalStorageNamespace}${type}.${scope.id}`\n : `${timeZoneLocalStorageNamespace}${type}`\n const relativeDate = 'relativeDate' in scope ? scope.relativeDate : undefined\n\n // Check for legacy localStorage key and migrate if needed\n // fall back for old way of handling timezones\n useEffect(() => {\n if (scope.type === 'scheduledPublishing') {\n const legacyKey = 'scheduled-publishing::time-zone'\n // the original value was kept as an object with the name\n const legacyValue = localStorage.getItem(legacyKey)\n\n if (legacyValue) {\n // Migrate the value to key-value store\n const scheduledPublishingValue = JSON.parse(legacyValue)\n void keyValueStore.setKey(keyStoreId, scheduledPublishingValue.name)\n // Remove the legacy key\n localStorage.removeItem(legacyKey)\n }\n }\n }, [scope.type, keyValueStore, keyStoreId, currentLocale, relativeDate])\n\n const allTimeZones: NormalizedTimeZone[] = useMemo(() => {\n return getGloballyCachedTimeZones(currentLocale, relativeDate)\n }, [currentLocale, relativeDate])\n\n const getDefaultTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n const normalizedDefaultTimezone = defaultTimeZone\n ? allTimeZones.find((tz: NormalizedTimeZone) => tz.name === defaultTimeZone)\n : undefined\n return normalizedDefaultTimezone\n }, [allTimeZones, defaultTimeZone])\n\n const keyValueTimeZone$ = useMemo(\n () => keyValueStore.getKey(keyStoreId).pipe(startWith(null)),\n [keyValueStore, keyStoreId],\n )\n\n // Kept synchronous: `getStoredTimeZone` migrates legacy values by writing\n // back to the key-value store, so a deferred snapshot could trigger stale or\n // redundant writes after the store has already advanced.\n const storedTimeZone = useSyncObservable(keyValueTimeZone$, null)\n\n const getStoredTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n if (!storedTimeZone) return undefined\n\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n const wholeTimeZone = allTimeZones.find((tz) => tz.name === storedTimeZone)\n\n if (\n wholeTimeZone &&\n allTimeZones.some((tz: NormalizedTimeZone) => tz.name === wholeTimeZone.name)\n ) {\n return wholeTimeZone\n }\n\n const fallbackTimeZone = allTimeZones.find((tz) => tz.offset === wholeTimeZone?.offset)\n if (fallbackTimeZone) {\n void keyValueStore.setKey(keyStoreId, fallbackTimeZone.name)\n return fallbackTimeZone\n }\n return undefined\n }\n try {\n return run()\n } catch {\n return undefined\n }\n }, [allTimeZones, keyStoreId, keyValueStore, storedTimeZone])\n\n const getLocalTimeZone = useCallback((): NormalizedTimeZone => {\n const localTzName = Intl.DateTimeFormat().resolvedOptions().timeZone\n const foundLocal = allTimeZones.find((tz) => tz.name === localTzName)\n if (foundLocal) return foundLocal\n\n // Fallback\n const gmt = allTimeZones.find((timeZone) => timeZone.abbreviation === 'GMT')\n if (gmt) return gmt\n\n return allTimeZones[0]\n }, [allTimeZones])\n\n const getInitialTimeZone = useCallback((): NormalizedTimeZone => {\n return getStoredTimeZone() || getDefaultTimeZone() || getLocalTimeZone()\n }, [getStoredTimeZone, getDefaultTimeZone, getLocalTimeZone])\n\n const [timeZone, setTimeZone] = useState<NormalizedTimeZone>(() => getInitialTimeZone())\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler -- @todo fix later\n setTimeZone(getInitialTimeZone())\n }, [getInitialTimeZone])\n\n useEffect(() => {\n const handler = () => {\n setTimeZone(getInitialTimeZone())\n }\n\n window.addEventListener(TimeZoneEvents.update, handler)\n return () => {\n window.removeEventListener(TimeZoneEvents.update, handler)\n }\n }, [getInitialTimeZone])\n\n const formatDateTz = useCallback(\n ({\n date,\n format = DATE_FORMAT.LARGE,\n includeTimeZone,\n prefix,\n }: {\n date: Date\n format?: string\n includeTimeZone?: boolean\n prefix?: string\n }) => {\n let dateFormat = format\n if (prefix) {\n dateFormat = `'${prefix}'${format}`\n }\n if (includeTimeZone) {\n dateFormat = `${format} (zzzz)`\n }\n return dateFnsFormat(date, dateFormat, {\n in: tzHelper(timeZone?.name || getLocalTimeZone()?.name || 'UTC'),\n })\n },\n [timeZone, getLocalTimeZone],\n )\n\n const getCurrentZoneDate = useCallback(() => {\n if (!timeZone) return new Date()\n return new TZDate(new Date(), timeZone.name)\n }, [timeZone])\n\n const getTimeZone = useCallback(\n (tzValue: string): NormalizedTimeZone =>\n allTimeZones.find((tz) => tzValue === tz.value) || getInitialTimeZone(),\n [allTimeZones, getInitialTimeZone],\n )\n\n const handleNewValue = useCallback(\n (tz: NormalizedTimeZone) => {\n debug('handleNewValue:', tz)\n\n setTimeZone((prevTz) => {\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n if (prevTz?.name !== tz.name) {\n void keyValueStore.setKey(keyStoreId, tz.name)\n window.dispatchEvent(new Event(TimeZoneEvents.update))\n }\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={`${tz.alternativeName} (${tz.namePretty})`}\n title=\"Time zone updated\"\n />\n ),\n duration: 15000,\n status: 'info',\n })\n }\n try {\n run()\n } catch (err) {\n console.error(err)\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update time zone\" />\n ),\n status: 'error',\n })\n }\n\n return tz\n })\n },\n [keyStoreId, toast, keyValueStore],\n )\n\n const utcToCurrentZoneDate = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n return new TZDate(date, timeZone.name)\n },\n [timeZone],\n )\n\n const zoneDateToUtc = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n // Create a TZDate by interpreting the date components as being in the timezone\n const tzDate = createTZDateFromComponents(date, timeZone.name)\n // Convert to regular Date to save as UTC instead of preserving timezone offset\n const utcDate = new Date(tzDate)\n return utcDate\n },\n [timeZone],\n )\n\n return useMemo(\n () => ({\n formatDateTz,\n getCurrentZoneDate,\n setTimeZone: handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n }),\n [\n formatDateTz,\n getCurrentZoneDate,\n handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n ],\n )\n}\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nfunction getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = 'Forbidden. Please check that your project has access to the feature.'\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTimeZone-Da8WK1q-.js","names":["debug","rootName","debugWithName","name","Debugger","namespace","enabled","DATE_FORMAT","SMALL","MEDIUM","LARGE","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","tz","tzHelper","TZDate","ClientError","useToast","sanitizeLocale","format","dateFnsFormat","useCallback","useEffect","useMemo","useState","useSyncObservable","startWith","useKeyValueStore","DATE_FORMAT","ToastDescription","NormalizedTimeZone","debugWithName","createTZDateFromComponents","date","Date","timeZone","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","TimeZoneEvents","update","const","TimeZoneScopeType","NoIdRequiredTypes","IdRequiredTypes","ReleasesOrScheduledPublishingScope","type","defaultTimeZone","InputScope","id","relativeDate","TimeZoneScope","debug","timeZoneLocalStorageNamespace","timeZoneCache","Map","offsetCache","abbreviation","alternativeName","offset","offsetToMinutes","multiplier","startsWith","includes","Number","replace","hours","minutes","split","map","getCachedTimeZoneInfo","locale","canonicalIdentifier","relativeDateForZones","dateKey","toISOString","slice","cacheKey","has","get","formatter","Intl","DateTimeFormat","timeZoneName","shortFormatter","dateToUse","parts","formatToParts","shortParts","rawOffset","in","info","find","value","set","computeAllTimeZones","timeZones","supportedValuesOf","tzName","city","replaceAll","name","namePretty","filter","sort","a","b","getGloballyCachedTimeZones","computedTimeZones","TIME_ZONE_SCOPE_TYPE","scheduledPublishing","contentReleases","input","useTimeZone","scope","$","_c","toast","keyValueStore","currentLocale","navigator","language","keyStoreId","undefined","t0","legacyValue","localStorage","getItem","scheduledPublishingValue","JSON","parse","setKey","removeItem","t1","t2","allTimeZones","t3","normalizedDefaultTimezone","getDefaultTimeZone","t4","getKey","pipe","keyValueTimeZone$","storedTimeZone","t5","run","wholeTimeZone","tz_0","some","tz_1","fallbackTimeZone","tz_2","getStoredTimeZone","t6","localTzName","resolvedOptions","foundLocal","tz_3","gmt","_temp","getLocalTimeZone","t7","getInitialTimeZone","t8","timeZone_0","setTimeZone","t10","t9","t11","t12","handler","window","addEventListener","removeEventListener","t13","t14","t15","includeTimeZone","prefix","LARGE","dateFormat","formatDateTz","getCurrentZoneDate","tzValue","tz_4","getTimeZone","t16","tz_5","prevTz","run_0","dispatchEvent","Event","push","closable","description","duration","status","t17","err","console","error","getErrorMessage","handleNewValue","date_0","utcToCurrentZoneDate","t18","date_1","tzDate","utcDate","zoneDateToUtc","t19","isClientError","e","message","response","statusCode","Error","String"],"sources":["../src/core/studio/timezones/utils/debug.ts","../src/core/studio/timezones/constants.tsx","../src/core/studio/timezones/toastDescription/ToastDescription.tsx","../src/core/hooks/useTimeZone.tsx"],"sourcesContent":["import debug from 'debug'\n\nconst rootName = 'scheduled-publishing:'\n\nexport function debugWithName(name: string): debug.Debugger {\n const namespace = `${rootName}${name}`\n if (debug && debug.enabled(namespace)) {\n return debug(namespace)\n }\n return debug(rootName)\n}\n","// date-fns compatible date formats\n// https://date-fns.org/v2.28.0/docs/format\nexport const DATE_FORMAT = {\n // 1 Oct 22, 10:00 PM\n SMALL: `d MMM yy',' p`,\n // 1 October 2022, 10:00 PM\n MEDIUM: `d MMMM yyyy',' p`,\n // Saturday, 1 October 2022, 10:00 PM\n LARGE: `iiii',' d MMMM yyyy',' p`,\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} gap={3}>\n <Inline gap={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {tz as tzHelper, TZDate} from '@date-fns/tz'\nimport {type ClientError} from '@sanity/client'\nimport {useToast} from '@sanity/ui/toast'\nimport {sanitizeLocale} from '@sanity/util/legacyDateFormat'\nimport {format as dateFnsFormat} from 'date-fns/format'\nimport {useCallback, useEffect, useMemo, useState} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {startWith} from 'rxjs/operators'\n\nimport {useKeyValueStore} from '../store/datastores'\nimport {DATE_FORMAT} from '../studio/timezones/constants'\nimport ToastDescription from '../studio/timezones/toastDescription/ToastDescription'\nimport {type NormalizedTimeZone} from '../studio/timezones/types'\nimport {debugWithName} from '../studio/timezones/utils/debug'\n\n/**\n * Helper function to create a TZDate from a Date's components in a specific timezone.\n * This is useful for interpreting local date/time values as being in a specific timezone.\n */\nfunction createTZDateFromComponents(date: Date, timeZone: string): TZDate {\n return new TZDate(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n timeZone,\n )\n}\n\nconst TimeZoneEvents = {\n update: 'timeZoneEventUpdate' as const,\n}\n\nexport type TimeZoneScopeType = 'scheduledPublishing' | 'contentReleases' | 'input'\n\ntype NoIdRequiredTypes = 'scheduledPublishing' | 'contentReleases'\ntype IdRequiredTypes = 'input'\n\ntype ReleasesOrScheduledPublishingScope = {\n type: NoIdRequiredTypes\n defaultTimeZone?: string\n}\n\ntype InputScope = {\n type: IdRequiredTypes\n id: string\n defaultTimeZone?: string\n relativeDate?: Date // offsets can change over time, so we use a relative date to get the offset\n}\n\nexport type TimeZoneScope = ReleasesOrScheduledPublishingScope | InputScope\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport const timeZoneLocalStorageNamespace = 'studio.timezone.'\n\nconst timeZoneCache = new Map<string, NormalizedTimeZone[]>()\nconst offsetCache = new Map<\n string,\n {abbreviation: string; alternativeName: string; offset: string}\n>()\n\nconst offsetToMinutes = (offset: string): number => {\n if (!offset) return 0\n const multiplier = offset.startsWith('-') ? -1 : 1\n if (!offset.includes(':')) return multiplier * Number(offset.replace(/[+-]/, '')) * 60\n\n const [hours, minutes] = offset.replace(/[+-]/, '').split(':').map(Number)\n return multiplier * (hours * 60 + minutes)\n}\n\nfunction getCachedTimeZoneInfo(\n locale: string,\n canonicalIdentifier: string,\n relativeDateForZones?: Date,\n): {abbreviation: string; alternativeName: string; offset: string} {\n const dateKey = relativeDateForZones?.toISOString().slice(0, 10) || 'now'\n const cacheKey = `${locale}_${canonicalIdentifier}_${dateKey}`\n // relative date is not used for caching, but it's used to invalidate the cache when it changes\n if (offsetCache.has(cacheKey)) {\n return offsetCache.get(cacheKey)!\n }\n\n const formatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'long',\n })\n\n const shortFormatter = new Intl.DateTimeFormat(sanitizeLocale(locale), {\n timeZone: canonicalIdentifier,\n timeZoneName: 'short',\n })\n\n const dateToUse = relativeDateForZones ?? new Date()\n const parts = formatter.formatToParts(dateToUse)\n const shortParts = shortFormatter.formatToParts(dateToUse)\n const rawOffset = dateFnsFormat(dateToUse, 'xxx', {in: tzHelper(canonicalIdentifier)})\n // If the offset is +02:00 then we can just show +2, if it has +13:45 then we should show +13:45, remove the leading +0 and just leave a + if a number under 10, remove the :00 at the end\n const offset = rawOffset\n .replace(/([+-])0(\\d)/, '$1$2')\n .replace(/([+-])0$/, '$1')\n .replace(/:00$/, '')\n .replace(/[+]0$/, '')\n\n const info = {\n abbreviation: shortParts.find(({type}) => type === 'timeZoneName')?.value || '',\n alternativeName: parts.find(({type}) => type === 'timeZoneName')?.value || '',\n offset,\n }\n\n offsetCache.set(cacheKey, info)\n return info\n}\n\nfunction computeAllTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const timeZones = Intl.supportedValuesOf('timeZone')\n .map((tzName): NormalizedTimeZone | null => {\n // Skip if timezone name doesn't contain a city (should have a '/')\n if (!tzName.includes('/')) return null\n\n const {alternativeName, abbreviation, offset} = getCachedTimeZoneInfo(\n locale,\n tzName,\n relativeDate,\n )\n const [, city] = tzName.split('/')\n return {\n abbreviation,\n alternativeName,\n city: city.replaceAll('_', ' '),\n name: tzName,\n namePretty: tzName.replaceAll('_', ' '),\n offset,\n value: `${offset} ${abbreviation} ${tzName} ${alternativeName}`,\n }\n })\n .filter((tz): tz is NormalizedTimeZone => tz !== null)\n .sort(\n (a: NormalizedTimeZone, b: NormalizedTimeZone) =>\n offsetToMinutes(a.offset) - offsetToMinutes(b.offset),\n )\n\n return timeZones\n}\n\nfunction getGloballyCachedTimeZones(locale: string, relativeDate?: Date): NormalizedTimeZone[] {\n const cacheKey = `${locale}_${relativeDate?.toISOString().slice(0, 10) || 'now'}`\n\n if (timeZoneCache.has(cacheKey)) {\n return timeZoneCache.get(cacheKey)!\n }\n\n const computedTimeZones = computeAllTimeZones(locale, relativeDate)\n timeZoneCache.set(cacheKey, computedTimeZones)\n return computedTimeZones\n}\n\nexport const TIME_ZONE_SCOPE_TYPE = {\n scheduledPublishing: 'scheduled-publishing',\n contentReleases: 'content-releases',\n input: 'input',\n}\n\nexport const useTimeZone = (scope: TimeZoneScope) => {\n const toast = useToast()\n const keyValueStore = useKeyValueStore()\n const currentLocale = navigator.language\n const {defaultTimeZone} = scope\n\n // used for the key to match formatting in cellar\n const type = TIME_ZONE_SCOPE_TYPE[scope.type]\n const keyStoreId =\n 'id' in scope\n ? `${timeZoneLocalStorageNamespace}${type}.${scope.id}`\n : `${timeZoneLocalStorageNamespace}${type}`\n const relativeDate = 'relativeDate' in scope ? scope.relativeDate : undefined\n\n // Check for legacy localStorage key and migrate if needed\n // fall back for old way of handling timezones\n useEffect(() => {\n if (scope.type === 'scheduledPublishing') {\n const legacyKey = 'scheduled-publishing::time-zone'\n // the original value was kept as an object with the name\n const legacyValue = localStorage.getItem(legacyKey)\n\n if (legacyValue) {\n // Migrate the value to key-value store\n const scheduledPublishingValue = JSON.parse(legacyValue)\n void keyValueStore.setKey(keyStoreId, scheduledPublishingValue.name)\n // Remove the legacy key\n localStorage.removeItem(legacyKey)\n }\n }\n }, [scope.type, keyValueStore, keyStoreId, currentLocale, relativeDate])\n\n const allTimeZones: NormalizedTimeZone[] = useMemo(() => {\n return getGloballyCachedTimeZones(currentLocale, relativeDate)\n }, [currentLocale, relativeDate])\n\n const getDefaultTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n const normalizedDefaultTimezone = defaultTimeZone\n ? allTimeZones.find((tz: NormalizedTimeZone) => tz.name === defaultTimeZone)\n : undefined\n return normalizedDefaultTimezone\n }, [allTimeZones, defaultTimeZone])\n\n const keyValueTimeZone$ = useMemo(\n () => keyValueStore.getKey(keyStoreId).pipe(startWith(null)),\n [keyValueStore, keyStoreId],\n )\n\n // Kept synchronous: `getStoredTimeZone` migrates legacy values by writing\n // back to the key-value store, so a deferred snapshot could trigger stale or\n // redundant writes after the store has already advanced.\n const storedTimeZone = useSyncObservable(keyValueTimeZone$, null)\n\n const getStoredTimeZone = useCallback((): NormalizedTimeZone | undefined => {\n if (!storedTimeZone) return undefined\n\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n const wholeTimeZone = allTimeZones.find((tz) => tz.name === storedTimeZone)\n\n if (\n wholeTimeZone &&\n allTimeZones.some((tz: NormalizedTimeZone) => tz.name === wholeTimeZone.name)\n ) {\n return wholeTimeZone\n }\n\n const fallbackTimeZone = allTimeZones.find((tz) => tz.offset === wholeTimeZone?.offset)\n if (fallbackTimeZone) {\n void keyValueStore.setKey(keyStoreId, fallbackTimeZone.name)\n return fallbackTimeZone\n }\n return undefined\n }\n try {\n return run()\n } catch {\n return undefined\n }\n }, [allTimeZones, keyStoreId, keyValueStore, storedTimeZone])\n\n const getLocalTimeZone = useCallback((): NormalizedTimeZone => {\n const localTzName = Intl.DateTimeFormat().resolvedOptions().timeZone\n const foundLocal = allTimeZones.find((tz) => tz.name === localTzName)\n if (foundLocal) return foundLocal\n\n // Fallback\n const gmt = allTimeZones.find((timeZone) => timeZone.abbreviation === 'GMT')\n if (gmt) return gmt\n\n return allTimeZones[0]\n }, [allTimeZones])\n\n const getInitialTimeZone = useCallback((): NormalizedTimeZone => {\n return getStoredTimeZone() || getDefaultTimeZone() || getLocalTimeZone()\n }, [getStoredTimeZone, getDefaultTimeZone, getLocalTimeZone])\n\n const [timeZone, setTimeZone] = useState<NormalizedTimeZone>(() => getInitialTimeZone())\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler -- @todo fix later\n setTimeZone(getInitialTimeZone())\n }, [getInitialTimeZone])\n\n useEffect(() => {\n const handler = () => {\n setTimeZone(getInitialTimeZone())\n }\n\n window.addEventListener(TimeZoneEvents.update, handler)\n return () => {\n window.removeEventListener(TimeZoneEvents.update, handler)\n }\n }, [getInitialTimeZone])\n\n const formatDateTz = useCallback(\n ({\n date,\n format = DATE_FORMAT.LARGE,\n includeTimeZone,\n prefix,\n }: {\n date: Date\n format?: string\n includeTimeZone?: boolean\n prefix?: string\n }) => {\n let dateFormat = format\n if (prefix) {\n dateFormat = `'${prefix}'${format}`\n }\n if (includeTimeZone) {\n dateFormat = `${format} (zzzz)`\n }\n return dateFnsFormat(date, dateFormat, {\n in: tzHelper(timeZone?.name || getLocalTimeZone()?.name || 'UTC'),\n })\n },\n [timeZone, getLocalTimeZone],\n )\n\n const getCurrentZoneDate = useCallback(() => {\n if (!timeZone) return new Date()\n return new TZDate(new Date(), timeZone.name)\n }, [timeZone])\n\n const getTimeZone = useCallback(\n (tzValue: string): NormalizedTimeZone =>\n allTimeZones.find((tz) => tzValue === tz.value) || getInitialTimeZone(),\n [allTimeZones, getInitialTimeZone],\n )\n\n const handleNewValue = useCallback(\n (tz: NormalizedTimeZone) => {\n debug('handleNewValue:', tz)\n\n setTimeZone((prevTz) => {\n // The try/catch wrapper instead of doing it inline in try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = () => {\n if (prevTz?.name !== tz.name) {\n void keyValueStore.setKey(keyStoreId, tz.name)\n window.dispatchEvent(new Event(TimeZoneEvents.update))\n }\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={`${tz.alternativeName} (${tz.namePretty})`}\n title=\"Time zone updated\"\n />\n ),\n duration: 15000,\n status: 'info',\n })\n }\n try {\n run()\n } catch (err) {\n console.error(err)\n\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update time zone\" />\n ),\n status: 'error',\n })\n }\n\n return tz\n })\n },\n [keyStoreId, toast, keyValueStore],\n )\n\n const utcToCurrentZoneDate = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n return new TZDate(date, timeZone.name)\n },\n [timeZone],\n )\n\n const zoneDateToUtc = useCallback(\n (date: Date) => {\n if (!timeZone) return date\n // Create a TZDate by interpreting the date components as being in the timezone\n const tzDate = createTZDateFromComponents(date, timeZone.name)\n // Convert to regular Date to save as UTC instead of preserving timezone offset\n const utcDate = new Date(tzDate)\n return utcDate\n },\n [timeZone],\n )\n\n return useMemo(\n () => ({\n formatDateTz,\n getCurrentZoneDate,\n setTimeZone: handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n }),\n [\n formatDateTz,\n getCurrentZoneDate,\n handleNewValue,\n timeZone,\n allTimeZones,\n getLocalTimeZone,\n getTimeZone,\n utcToCurrentZoneDate,\n zoneDateToUtc,\n ],\n )\n}\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nfunction getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = 'Forbidden. Please check that your project has access to the feature.'\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { i as useClient } from "./studioClient-WYiCwgfZ.js";
2
- import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-Bvx140h2.js";
3
- import { r as debugWithName, t as useTimeZone } from "./useTimeZone-DnxQlCGS.js";
1
+ import { i as useClient } from "./studioClient-BpYJ_yYC.js";
2
+ import { n as useScheduledPublishingEnabled } from "./ScheduledPublishingEnabledProvider-BcWaBJw5.js";
3
+ import { r as debugWithName, t as useTimeZone } from "./useTimeZone-Da8WK1q-.js";
4
4
  import { useEffect } from "react";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -429,4 +429,4 @@ function useValidationState(markers) {
429
429
  }
430
430
  export { TOOL_TITLE as _, useScheduleOperation as a, DOCUMENT_HAS_ERRORS_TEXT as c, SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE as d, SCHEDULED_PUBLISHING_TOOL_NAME as f, SCHEDULE_STATE_DICTIONARY as g, SCHEDULE_FILTERS as h, usePollSchedules as i, DOCUMENT_HAS_WARNINGS_TEXT as l, SCHEDULE_FAILED_TEXT as m, useValidationState as n, sortByExecuteDate as o, SCHEDULE_ACTION_DICTIONARY as p, usePublishedId as r, getLastExecuteDate as s, EMPTY_VALIDATION_STATUS as t, RELEASES_DOCS_URL as u };
431
431
 
432
- //# sourceMappingURL=validationUtils-Bcu-PkHm.js.map
432
+ //# sourceMappingURL=validationUtils-B9CLn9F7.js.map