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,6 +1,6 @@
1
1
  import { l as getPublishedId } from "./draftUtils-D3HJGQaW.js";
2
- import { o as useSource } from "./studioClient-WYiCwgfZ.js";
3
- import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-sRpDeLLJ.js";
2
+ import { o as useSource } from "./studioClient-BpYJ_yYC.js";
3
+ import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-C5qTffLc.js";
4
4
  import { memo, useState } from "react";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { jsx } from "react/jsx-runtime";
@@ -87,4 +87,4 @@ const CommentsEnabledProvider = memo(function CommentsEnabledProvider(props) {
87
87
  });
88
88
  export { CommentsEnabledProvider as n, CommentsAuthoringPathProvider as r, CommentsSelectedPathProvider as t };
89
89
 
90
- //# sourceMappingURL=CommentsSelectedPathProvider-BYZ2OmJ9.js.map
90
+ //# sourceMappingURL=CommentsSelectedPathProvider-BnZ6GdNc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommentsSelectedPathProvider-BYZ2OmJ9.js","names":["ReactNode","useCallback","useMemo","useState","CommentsAuthoringPathContext","CommentsAuthoringPathContextValue","CommentsAuthoringPathProviderProps","children","CommentsAuthoringPathProvider","props","$","_c","authoringPath","setAuthoringPath","t0","Symbol","for","nextAuthoringPath","handleSetAuthoringPath","t1","value","t2","useMemo","useFeatureEnabled","FEATURES","useSource","getPublishedId","CommentsUIMode","ResolveCommentsEnabled","enabled","mode","useResolveCommentsEnabled","documentId","documentType","$","_c","featureEnabled","isLoading","error","studioComments","document","comments","enabledFromConfig","t0","bb0","t1","Symbol","for","t2","value","memo","ReactNode","CommentsEnabledContext","useResolveCommentsEnabled","CommentsEnabledProviderProps","children","documentId","documentType","CommentsEnabledProvider","props","$","_c","value","t0","isEqual","memo","useCallback","useMemo","useState","CommentsSelectedPathContext","CommentsSelectedPath","CommentsSelectedPathContextValue","CommentsSelectedPathProviderProps","children","React","ReactNode","CommentsSelectedPathProvider","props","$","_c","selectedPath","setSelectedPath","t0","nextPath","handleSelectPath","t1","ctxValue","t2"],"sources":["../src/core/comments/context/authoring-path/CommentsAuthoringPathProvider.tsx","../src/core/comments/hooks/useResolveCommentsEnabled.ts","../src/core/comments/context/enabled/CommentsEnabledProvider.tsx","../src/core/comments/context/selected-path/CommentsSelectedPathProvider.tsx"],"sourcesContent":["import {type ReactNode, useCallback, useMemo, useState} from 'react'\nimport {CommentsAuthoringPathContext} from 'sanity/_singletons'\n\nimport {type CommentsAuthoringPathContextValue} from './types'\n\ninterface CommentsAuthoringPathProviderProps {\n children: ReactNode\n}\n\n/**\n * @beta\n * @hidden\n * This provider keeps track of the path that the user is currently authoring a comment for.\n * This is needed to make sure that we consistently keep the editor open when the user is\n * authoring a comment. The state is kept in a context to make sure that it is preserved\n * across re-renders. If this state was kept in a component, it would be reset every time\n * the component re-renders, for example, when the form is temporarily set to `readOnly`\n * while reconnecting.\n */\nexport function CommentsAuthoringPathProvider(props: CommentsAuthoringPathProviderProps) {\n const {children} = props\n const [authoringPath, setAuthoringPath] = useState<string | null>(null)\n\n const handleSetAuthoringPath = useCallback((nextAuthoringPath: string | null) => {\n setAuthoringPath(nextAuthoringPath)\n }, [])\n\n const value = useMemo(\n (): CommentsAuthoringPathContextValue => ({\n authoringPath,\n setAuthoringPath: handleSetAuthoringPath,\n }),\n [authoringPath, handleSetAuthoringPath],\n )\n\n return (\n <CommentsAuthoringPathContext.Provider value={value}>\n {children}\n </CommentsAuthoringPathContext.Provider>\n )\n}\n","import {useMemo} from 'react'\n\nimport {useFeatureEnabled, FEATURES} from '../../hooks/useFeatureEnabled'\nimport {useSource} from '../../studio/source'\nimport {getPublishedId} from '../../util/draftUtils'\nimport {type CommentsUIMode} from '../types'\n\ntype ResolveCommentsEnabled =\n | {\n enabled: false\n mode: null\n }\n | {\n enabled: true\n mode: CommentsUIMode\n }\n\n/**\n * @internal\n * A hook that resolves if comments are enabled for the current document and document type\n * and if the feature is enabled for the current project.\n */\nexport function useResolveCommentsEnabled(\n documentId: string,\n documentType: string,\n): ResolveCommentsEnabled {\n // Check if the projects plan has the feature enabled\n const {enabled: featureEnabled, isLoading, error} = useFeatureEnabled(FEATURES.studioComments)\n\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {enabled} = useSource().document.comments\n // Check if the feature is enabled for the current document in the config\n const enabledFromConfig = useMemo(\n () => enabled({documentType, documentId: getPublishedId(documentId)}),\n [documentId, documentType, enabled],\n )\n\n const value: ResolveCommentsEnabled = useMemo(() => {\n // The feature is not enabled if:\n // - the feature is loading (`isLoading` is true)\n // - the feature is not enabled in the project (`enabledFromConfig` is false)\n // - there's an error when fetching the list of enabled features (`error` is set)\n if (isLoading || !enabledFromConfig || error) {\n return {enabled: false, mode: null}\n }\n\n return {\n enabled: true,\n mode: featureEnabled ? 'default' : 'upsell',\n }\n }, [isLoading, enabledFromConfig, error, featureEnabled])\n\n return value\n}\n","import {memo, type ReactNode} from 'react'\nimport {CommentsEnabledContext} from 'sanity/_singletons'\n\nimport {useResolveCommentsEnabled} from '../../hooks/useResolveCommentsEnabled'\n\ninterface CommentsEnabledProviderProps {\n children: ReactNode\n documentId: string\n documentType: string\n}\n\n/**\n * @beta\n * @hidden\n */\nexport const CommentsEnabledProvider = memo(function CommentsEnabledProvider(\n props: CommentsEnabledProviderProps,\n) {\n const {children, documentId, documentType} = props\n\n const value = useResolveCommentsEnabled(documentId, documentType)\n\n return <CommentsEnabledContext.Provider value={value}>{children}</CommentsEnabledContext.Provider>\n})\n","import isEqual from 'lodash-es/isEqual.js'\nimport {memo, useCallback, useMemo, useState} from 'react'\nimport {CommentsSelectedPathContext} from 'sanity/_singletons'\n\nimport {type CommentsSelectedPath, type CommentsSelectedPathContextValue} from './types'\n\ninterface CommentsSelectedPathProviderProps {\n children: React.ReactNode\n}\n\n/**\n * @internal\n */\nexport const CommentsSelectedPathProvider = memo(function CommentsSelectedPathProvider(\n props: CommentsSelectedPathProviderProps,\n) {\n const {children} = props\n const [selectedPath, setSelectedPath] = useState<CommentsSelectedPath | null>(null)\n\n const handleSelectPath = useCallback(\n (nextPath: CommentsSelectedPath | null) => {\n if (isEqual(selectedPath, nextPath)) return\n\n setSelectedPath(nextPath)\n },\n [selectedPath],\n )\n\n const ctxValue = useMemo(\n (): CommentsSelectedPathContextValue => ({\n selectedPath,\n setSelectedPath: handleSelectPath,\n }),\n [selectedPath, handleSelectPath],\n )\n\n return (\n <CommentsSelectedPathContext.Provider value={ctxValue}>\n {children}\n </CommentsSelectedPathContext.Provider>\n )\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"CommentsSelectedPathProvider-BnZ6GdNc.js","names":["ReactNode","useCallback","useMemo","useState","CommentsAuthoringPathContext","CommentsAuthoringPathContextValue","CommentsAuthoringPathProviderProps","children","CommentsAuthoringPathProvider","props","$","_c","authoringPath","setAuthoringPath","t0","Symbol","for","nextAuthoringPath","handleSetAuthoringPath","t1","value","t2","useMemo","useFeatureEnabled","FEATURES","useSource","getPublishedId","CommentsUIMode","ResolveCommentsEnabled","enabled","mode","useResolveCommentsEnabled","documentId","documentType","$","_c","featureEnabled","isLoading","error","studioComments","document","comments","enabledFromConfig","t0","bb0","t1","Symbol","for","t2","value","memo","ReactNode","CommentsEnabledContext","useResolveCommentsEnabled","CommentsEnabledProviderProps","children","documentId","documentType","CommentsEnabledProvider","props","$","_c","value","t0","isEqual","memo","useCallback","useMemo","useState","CommentsSelectedPathContext","CommentsSelectedPath","CommentsSelectedPathContextValue","CommentsSelectedPathProviderProps","children","React","ReactNode","CommentsSelectedPathProvider","props","$","_c","selectedPath","setSelectedPath","t0","nextPath","handleSelectPath","t1","ctxValue","t2"],"sources":["../src/core/comments/context/authoring-path/CommentsAuthoringPathProvider.tsx","../src/core/comments/hooks/useResolveCommentsEnabled.ts","../src/core/comments/context/enabled/CommentsEnabledProvider.tsx","../src/core/comments/context/selected-path/CommentsSelectedPathProvider.tsx"],"sourcesContent":["import {type ReactNode, useCallback, useMemo, useState} from 'react'\nimport {CommentsAuthoringPathContext} from 'sanity/_singletons'\n\nimport {type CommentsAuthoringPathContextValue} from './types'\n\ninterface CommentsAuthoringPathProviderProps {\n children: ReactNode\n}\n\n/**\n * @beta\n * @hidden\n * This provider keeps track of the path that the user is currently authoring a comment for.\n * This is needed to make sure that we consistently keep the editor open when the user is\n * authoring a comment. The state is kept in a context to make sure that it is preserved\n * across re-renders. If this state was kept in a component, it would be reset every time\n * the component re-renders, for example, when the form is temporarily set to `readOnly`\n * while reconnecting.\n */\nexport function CommentsAuthoringPathProvider(props: CommentsAuthoringPathProviderProps) {\n const {children} = props\n const [authoringPath, setAuthoringPath] = useState<string | null>(null)\n\n const handleSetAuthoringPath = useCallback((nextAuthoringPath: string | null) => {\n setAuthoringPath(nextAuthoringPath)\n }, [])\n\n const value = useMemo(\n (): CommentsAuthoringPathContextValue => ({\n authoringPath,\n setAuthoringPath: handleSetAuthoringPath,\n }),\n [authoringPath, handleSetAuthoringPath],\n )\n\n return (\n <CommentsAuthoringPathContext.Provider value={value}>\n {children}\n </CommentsAuthoringPathContext.Provider>\n )\n}\n","import {useMemo} from 'react'\n\nimport {useFeatureEnabled, FEATURES} from '../../hooks/useFeatureEnabled'\nimport {useSource} from '../../studio/source'\nimport {getPublishedId} from '../../util/draftUtils'\nimport {type CommentsUIMode} from '../types'\n\ntype ResolveCommentsEnabled =\n | {\n enabled: false\n mode: null\n }\n | {\n enabled: true\n mode: CommentsUIMode\n }\n\n/**\n * @internal\n * A hook that resolves if comments are enabled for the current document and document type\n * and if the feature is enabled for the current project.\n */\nexport function useResolveCommentsEnabled(\n documentId: string,\n documentType: string,\n): ResolveCommentsEnabled {\n // Check if the projects plan has the feature enabled\n const {enabled: featureEnabled, isLoading, error} = useFeatureEnabled(FEATURES.studioComments)\n\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {enabled} = useSource().document.comments\n // Check if the feature is enabled for the current document in the config\n const enabledFromConfig = useMemo(\n () => enabled({documentType, documentId: getPublishedId(documentId)}),\n [documentId, documentType, enabled],\n )\n\n const value: ResolveCommentsEnabled = useMemo(() => {\n // The feature is not enabled if:\n // - the feature is loading (`isLoading` is true)\n // - the feature is not enabled in the project (`enabledFromConfig` is false)\n // - there's an error when fetching the list of enabled features (`error` is set)\n if (isLoading || !enabledFromConfig || error) {\n return {enabled: false, mode: null}\n }\n\n return {\n enabled: true,\n mode: featureEnabled ? 'default' : 'upsell',\n }\n }, [isLoading, enabledFromConfig, error, featureEnabled])\n\n return value\n}\n","import {memo, type ReactNode} from 'react'\nimport {CommentsEnabledContext} from 'sanity/_singletons'\n\nimport {useResolveCommentsEnabled} from '../../hooks/useResolveCommentsEnabled'\n\ninterface CommentsEnabledProviderProps {\n children: ReactNode\n documentId: string\n documentType: string\n}\n\n/**\n * @beta\n * @hidden\n */\nexport const CommentsEnabledProvider = memo(function CommentsEnabledProvider(\n props: CommentsEnabledProviderProps,\n) {\n const {children, documentId, documentType} = props\n\n const value = useResolveCommentsEnabled(documentId, documentType)\n\n return <CommentsEnabledContext.Provider value={value}>{children}</CommentsEnabledContext.Provider>\n})\n","import isEqual from 'lodash-es/isEqual.js'\nimport {memo, useCallback, useMemo, useState} from 'react'\nimport {CommentsSelectedPathContext} from 'sanity/_singletons'\n\nimport {type CommentsSelectedPath, type CommentsSelectedPathContextValue} from './types'\n\ninterface CommentsSelectedPathProviderProps {\n children: React.ReactNode\n}\n\n/**\n * @internal\n */\nexport const CommentsSelectedPathProvider = memo(function CommentsSelectedPathProvider(\n props: CommentsSelectedPathProviderProps,\n) {\n const {children} = props\n const [selectedPath, setSelectedPath] = useState<CommentsSelectedPath | null>(null)\n\n const handleSelectPath = useCallback(\n (nextPath: CommentsSelectedPath | null) => {\n if (isEqual(selectedPath, nextPath)) return\n\n setSelectedPath(nextPath)\n },\n [selectedPath],\n )\n\n const ctxValue = useMemo(\n (): CommentsSelectedPathContextValue => ({\n selectedPath,\n setSelectedPath: handleSelectPath,\n }),\n [selectedPath, handleSelectPath],\n )\n\n return (\n <CommentsSelectedPathContext.Provider value={ctxValue}>\n {children}\n </CommentsSelectedPathContext.Provider>\n )\n})\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-sRpDeLLJ.js";
2
- import { n as getDialogPropsFromContext, r as useUpsellContext, t as UpsellDialog } from "./UpsellDialog-BqP2wmnt.js";
3
- import { t as AddonDatasetProvider } from "./AddonDatasetProvider-CIq0vehp.js";
1
+ import { n as useFeatureEnabled, t as FEATURES } from "./useFeatureEnabled-C5qTffLc.js";
2
+ import { n as getDialogPropsFromContext, r as useUpsellContext, t as UpsellDialog } from "./UpsellDialog-CM238V3B.js";
3
+ import { t as AddonDatasetProvider } from "./AddonDatasetProvider-DDQrh5ob.js";
4
4
  import { useState } from "react";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -65,4 +65,4 @@ function CommentsStudioLayout(props) {
65
65
  }
66
66
  export { CommentsStudioLayout };
67
67
 
68
- //# sourceMappingURL=CommentsStudioLayout-DK4W-hTe.js.map
68
+ //# sourceMappingURL=CommentsStudioLayout-YlpSH_2Y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommentsStudioLayout-DK4W-hTe.js","names":["ReactNode","useCallback","useMemo","useState","CommentsOnboardingContext","CommentsOnboardingContextValue","VERSION","LOCAL_STORAGE_KEY","setLocalStorage","value","window","localStorage","setItem","JSON","stringify","getLocalStorage","getItem","parse","CommentsOnboardingProviderProps","children","CommentsOnboardingProvider","props","$","_c","t0","Symbol","for","dismissed","setDismissed","t1","handleDismiss","t2","isDismissed","ctxValue","t3","CommentsUpsellContext","getDialogPropsFromContext","useUpsellContext","UpsellDialog","CommentsUpsellProvider","props","$","_c","t0","Symbol","for","dataUri","feature","contextValue","t1","children","t2","t3","t4","LayoutProps","useFeatureEnabled","FEATURES","AddonDatasetProvider","CommentsOnboardingProvider","CommentsUpsellProvider","CommentsStudioLayout","props","$","_c","enabled","isLoading","studioComments","t0","renderDefault","children","t1","t2"],"sources":["../src/core/comments/context/onboarding/CommentsOnboardingProvider.tsx","../src/core/comments/context/upsell/CommentsUpsellProvider.tsx","../src/core/comments/plugin/studio-layout/CommentsStudioLayout.tsx"],"sourcesContent":["import {type ReactNode, useCallback, useMemo, useState} from 'react'\nimport {CommentsOnboardingContext} from 'sanity/_singletons'\n\nimport {type CommentsOnboardingContextValue} from './types'\n\nconst VERSION = 1\nconst LOCAL_STORAGE_KEY = `sanityStudio:comments:inspector:onboarding:dismissed:v${VERSION}`\n\nconst setLocalStorage = (value: boolean) => {\n try {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(value))\n } catch {\n // Fail silently\n }\n}\n\nconst getLocalStorage = (): boolean => {\n try {\n const value = window.localStorage.getItem(LOCAL_STORAGE_KEY)\n return value ? JSON.parse(value) : false\n } catch {\n return false\n }\n}\n\ninterface CommentsOnboardingProviderProps {\n children: ReactNode\n}\n\nexport function CommentsOnboardingProvider(props: CommentsOnboardingProviderProps) {\n const {children} = props\n const [dismissed, setDismissed] = useState<boolean>(getLocalStorage())\n\n const handleDismiss = useCallback(() => {\n setDismissed(true)\n setLocalStorage(true)\n }, [setDismissed])\n\n const ctxValue = useMemo(\n (): CommentsOnboardingContextValue => ({\n setDismissed: handleDismiss,\n isDismissed: dismissed,\n }),\n [handleDismiss, dismissed],\n )\n\n return (\n <CommentsOnboardingContext.Provider value={ctxValue}>\n {children}\n </CommentsOnboardingContext.Provider>\n )\n}\n","import {CommentsUpsellContext} from 'sanity/_singletons'\n\nimport {getDialogPropsFromContext, useUpsellContext} from '../../../hooks/useUpsellContext'\nimport {UpsellDialog} from '../../../studio/upsell/UpsellDialog'\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentsUpsellProvider(props: {children: React.ReactNode}) {\n const contextValue = useUpsellContext({\n dataUri: '/journey/comments',\n feature: 'comments',\n })\n\n return (\n <CommentsUpsellContext.Provider value={contextValue}>\n {props.children}\n <UpsellDialog {...getDialogPropsFromContext(contextValue)} />\n </CommentsUpsellContext.Provider>\n )\n}\n","import {type LayoutProps} from '../../../config/studio/types'\nimport {useFeatureEnabled, FEATURES} from '../../../hooks/useFeatureEnabled'\nimport {AddonDatasetProvider} from '../../../studio/addonDataset/AddonDatasetProvider'\nimport {CommentsOnboardingProvider} from '../../context/onboarding/CommentsOnboardingProvider'\nimport {CommentsUpsellProvider} from '../../context/upsell/CommentsUpsellProvider'\n\nexport function CommentsStudioLayout(props: LayoutProps) {\n const {enabled, isLoading} = useFeatureEnabled(FEATURES.studioComments)\n const children = props.renderDefault(props)\n\n return (\n <AddonDatasetProvider>\n <CommentsOnboardingProvider>\n {!enabled && !isLoading ? (\n <CommentsUpsellProvider>{children}</CommentsUpsellProvider>\n ) : (\n children\n )}\n </CommentsOnboardingProvider>\n </AddonDatasetProvider>\n )\n}\n"],"mappings":";;;;;;;AAMA,MAAMO,oBAAoB,2DAEpBC,mBAAmBC,UAAmB;CAC1C,IAAI;EACFC,OAAOC,aAAaC,QAAQL,mBAAmBM,KAAKC,UAAUL,KAAK,CAAC;CACtE,QAAQ,CACN;AAEJ,GAEMM,wBAAiC;CACrC,IAAI;EACF,IAAMN,QAAQC,OAAOC,aAAaK,QAAQT,iBAAiB;EAC3D,OAAOE,QAAQI,KAAKI,MAAMR,KAAK,IAAI;CACrC,QAAQ;EACN,OAAO;CACT;AACF;AAMA,SAAOW,2BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAJ,aAAmBE,OAAKG;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAC4BF,KAAAT,gBAAgB,GAACO,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAArE,IAAA,CAAAK,WAAAC,gBAAkCzB,SAAkBqB,EAAiB,GAACK;CAAA,AAAAP,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAEpCG,WAAA;EAEhCrB,AADAoB,aAAa,EAAI,GACjBpB,gBAAgB,EAAI;CAAC,GACtBc,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAHD,IAAAQ,gBAAsBD,IAGJE;CAAA,AAAAT,EAAA,OAAAK,YAMfI,KAAAT,EAAA,MAHsCS,KAAA;EAAAH,cACvBE;EAAaE,aACdL;CACf,GAACL,EAAA,KAAAK,WAAAL,EAAA,KAAAS;CAJH,IAAAE,WACyCF,IAKxCG;CAKsC,OALtCZ,EAAA,OAAAH,YAAAG,EAAA,OAAAW,YAGCC,KAAA,oBAAA,0BAAA,UAAA;EAA2CD,OAAAA;EACxCd;CACH,CAAA,GAAqCG,EAAA,KAAAH,UAAAG,EAAA,KAAAW,UAAAX,EAAA,KAAAY,MAAAA,KAAAZ,EAAA,IAFrCY;AAEqC;;;;;ACxCzC,SAAOK,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KACiCF,KAAA;EAAAG,SAC3B;EAAmBC,SACnB;CACX,GAACN,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAHD,IAAAO,eAAqBX,iBAAiBM,EAGrC,GAIIM,KAAAT,MAAKU,UAASC;CAAA,AAAAV,EAAA,OAAAO,eAC0CG,KAAAV,EAAA,MAAvCU,KAAAf,0BAA0BY,YAAY,GAACP,EAAA,KAAAO,cAAAP,EAAA,KAAAU;CAAA,IAAAC;CAAA,AAAAX,EAAA,OAAAU,KAAIC,KAAAX,EAAA,MAA7DW,KAAA,oBAAC,cAAD,EAAa,GAAKD,GAAuC,CAAA,GAAIV,EAAA,KAAAU,IAAAV,EAAA,KAAAW;CAAA,IAAAC;CAC9B,OAD8BZ,EAAA,OAAAO,gBAAAP,EAAA,OAAAD,MAAAU,YAAAT,EAAA,OAAAW,MAF/DC,KAAA,qBAAA,sBAAA,UAAA;EAAuCL,OAAAA;EAAvC,UAAA,CACGC,IACDG,EACF;KAAiCX,EAAA,KAAAO,cAAAP,EAAA,KAAAD,MAAAU,UAAAT,EAAA,KAAAW,IAAAX,EAAA,KAAAY,MAAAA,KAAAZ,EAAA,IAHjCY;AAGiC;ACbrC,SAAOO,qBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,SAAAC,cAA6BV,kBAAkBC,SAAQU,cAAe,GAACC;CAAA,AAAAL,EAAA,OAAAD,QAC5BM,KAAAL,EAAA,MAA1BK,KAAAN,MAAKO,cAAeP,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAK;CAA3C,IAAAE,WAAiBF,IAA0BG;CAAA,AAAAR,EAAA,OAAAO,YAAAP,EAAA,OAAAE,WAAAF,EAAA,OAAAG,aAKpCK,KAAA,CAACN,WAAD,CAAaC,YACZ,oBAAC,wBAAD,EAAyBI,SAAF,CAAA,IADxBA,UAIAP,EAAA,KAAAO,UAAAP,EAAA,KAAAE,SAAAF,EAAA,KAAAG,WAAAH,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAS;CAEkB,OAFlBT,EAAA,OAAAQ,KAEkBC,KAAAT,EAAA,MARvBS,KAAA,oBAAC,sBAAD,EAAA,UACE,oBAAC,4BAAD,EAAA,UACGD,GADwB,CAAA,EADR,CAAA,GAQER,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,KARvBA;AAQuB"}
1
+ {"version":3,"file":"CommentsStudioLayout-YlpSH_2Y.js","names":["ReactNode","useCallback","useMemo","useState","CommentsOnboardingContext","CommentsOnboardingContextValue","VERSION","LOCAL_STORAGE_KEY","setLocalStorage","value","window","localStorage","setItem","JSON","stringify","getLocalStorage","getItem","parse","CommentsOnboardingProviderProps","children","CommentsOnboardingProvider","props","$","_c","t0","Symbol","for","dismissed","setDismissed","t1","handleDismiss","t2","isDismissed","ctxValue","t3","CommentsUpsellContext","getDialogPropsFromContext","useUpsellContext","UpsellDialog","CommentsUpsellProvider","props","$","_c","t0","Symbol","for","dataUri","feature","contextValue","t1","children","t2","t3","t4","LayoutProps","useFeatureEnabled","FEATURES","AddonDatasetProvider","CommentsOnboardingProvider","CommentsUpsellProvider","CommentsStudioLayout","props","$","_c","enabled","isLoading","studioComments","t0","renderDefault","children","t1","t2"],"sources":["../src/core/comments/context/onboarding/CommentsOnboardingProvider.tsx","../src/core/comments/context/upsell/CommentsUpsellProvider.tsx","../src/core/comments/plugin/studio-layout/CommentsStudioLayout.tsx"],"sourcesContent":["import {type ReactNode, useCallback, useMemo, useState} from 'react'\nimport {CommentsOnboardingContext} from 'sanity/_singletons'\n\nimport {type CommentsOnboardingContextValue} from './types'\n\nconst VERSION = 1\nconst LOCAL_STORAGE_KEY = `sanityStudio:comments:inspector:onboarding:dismissed:v${VERSION}`\n\nconst setLocalStorage = (value: boolean) => {\n try {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(value))\n } catch {\n // Fail silently\n }\n}\n\nconst getLocalStorage = (): boolean => {\n try {\n const value = window.localStorage.getItem(LOCAL_STORAGE_KEY)\n return value ? JSON.parse(value) : false\n } catch {\n return false\n }\n}\n\ninterface CommentsOnboardingProviderProps {\n children: ReactNode\n}\n\nexport function CommentsOnboardingProvider(props: CommentsOnboardingProviderProps) {\n const {children} = props\n const [dismissed, setDismissed] = useState<boolean>(getLocalStorage())\n\n const handleDismiss = useCallback(() => {\n setDismissed(true)\n setLocalStorage(true)\n }, [setDismissed])\n\n const ctxValue = useMemo(\n (): CommentsOnboardingContextValue => ({\n setDismissed: handleDismiss,\n isDismissed: dismissed,\n }),\n [handleDismiss, dismissed],\n )\n\n return (\n <CommentsOnboardingContext.Provider value={ctxValue}>\n {children}\n </CommentsOnboardingContext.Provider>\n )\n}\n","import {CommentsUpsellContext} from 'sanity/_singletons'\n\nimport {getDialogPropsFromContext, useUpsellContext} from '../../../hooks/useUpsellContext'\nimport {UpsellDialog} from '../../../studio/upsell/UpsellDialog'\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentsUpsellProvider(props: {children: React.ReactNode}) {\n const contextValue = useUpsellContext({\n dataUri: '/journey/comments',\n feature: 'comments',\n })\n\n return (\n <CommentsUpsellContext.Provider value={contextValue}>\n {props.children}\n <UpsellDialog {...getDialogPropsFromContext(contextValue)} />\n </CommentsUpsellContext.Provider>\n )\n}\n","import {type LayoutProps} from '../../../config/studio/types'\nimport {useFeatureEnabled, FEATURES} from '../../../hooks/useFeatureEnabled'\nimport {AddonDatasetProvider} from '../../../studio/addonDataset/AddonDatasetProvider'\nimport {CommentsOnboardingProvider} from '../../context/onboarding/CommentsOnboardingProvider'\nimport {CommentsUpsellProvider} from '../../context/upsell/CommentsUpsellProvider'\n\nexport function CommentsStudioLayout(props: LayoutProps) {\n const {enabled, isLoading} = useFeatureEnabled(FEATURES.studioComments)\n const children = props.renderDefault(props)\n\n return (\n <AddonDatasetProvider>\n <CommentsOnboardingProvider>\n {!enabled && !isLoading ? (\n <CommentsUpsellProvider>{children}</CommentsUpsellProvider>\n ) : (\n children\n )}\n </CommentsOnboardingProvider>\n </AddonDatasetProvider>\n )\n}\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { n as Tooltip } from "./Button-CGZ3ETwD.js";
2
2
  import { l as getPublishedId } from "./draftUtils-D3HJGQaW.js";
3
- import "./datastores-D4iZNSXV.js";
3
+ import "./datastores-wbjstxMt.js";
4
4
  import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
5
- import { t as useFieldActions } from "./useFieldActions-CrPgIiyl.js";
6
- import { n as FormFieldHeaderText, r as FormFieldBaseHeader, t as TimeZoneButton, v as useChangeIndicatorsReporter } from "./TimeZoneButton-DMd-M_ri.js";
5
+ import { t as useFieldActions } from "./useFieldActions-MFJIkobn.js";
6
+ import { n as FormFieldHeaderText, r as FormFieldBaseHeader, t as TimeZoneButton, v as useChangeIndicatorsReporter } from "./TimeZoneButton-TmrFye13.js";
7
7
  import { t as Translate } from "./Translate-0HIWr1eF.js";
8
- import { n as useFormValue } from "./FormValue-4tVuOoGw.js";
9
- import { c as DateTimeInput$1, o as getCalendarLabels, s as isValidDate } from "./useScheduledDraftMenuActions-DqsFlU0p.js";
10
- import { t as useTimeZone } from "./useTimeZone-DnxQlCGS.js";
8
+ import { n as useFormValue } from "./FormValue-CJg43LyM.js";
9
+ import { c as DateTimeInput$1, o as getCalendarLabels, s as isValidDate } from "./useScheduledDraftMenuActions-DIQYFw0x.js";
10
+ import { t as useTimeZone } from "./useTimeZone-Da8WK1q-.js";
11
11
  import { memo, useContext, useEffect, useImperativeHandle, useRef, useState } from "react";
12
12
  import { c } from "react/compiler-runtime";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -632,4 +632,4 @@ function DateTimeInput(props) {
632
632
  }
633
633
  export { unset as _, ParseErrorsProvider as a, EMPTY_OBJECT as b, useReportParseError as c, diffMatchPatch as d, inc as f, setIfMissing as g, set as h, DateInput as i, SANITY_PATCH_TYPE as l, prefixPath as m, FormFieldStatus as n, useParseErrorForPath as o, insert as p, TimeZoneButtonElementQuery as r, useParseErrors as s, DateTimeInput as t, dec as u, ChangeIndicator as v, EMPTY_ARRAY as y };
634
634
 
635
- //# sourceMappingURL=DateInputs-enUB1fG8.js.map
635
+ //# sourceMappingURL=DateInputs-DioSKqY0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateInputs-enUB1fG8.js","names":["EMPTY_OBJECT","Record","Object","freeze","EMPTY_ARRAY","clsx","ComponentProps","changeBar","changeBarButton","changeBarButtonInteractive","changeBarButtonWithHoverEffect","changeBarMarker","changeBarWrapper","changeBarWrapperDisabled","changeBarWrapperFocused","changeBarWrapperNotChanged","changeBarWrapperReviewOpen","fieldWrapper","ChangeBarWrapper","props","$","_c","changed","className","disabled","hasFocus","isReviewChangeOpen","restProps","t0","t1","t2","t3","t4","t5","FieldWrapper","ChangeBar","style","zIndex","ChangeBarMarker","ChangeBarButton","isInteractive","withHoverEffect","useLayer","ReactNode","useContext","useMemo","ReviewChangesContext","Tooltip","useTranslation","ChangeBar","ChangeBarButton","ChangeBarMarker","ChangeBarWrapper","FieldWrapper","ElementWithChangeBar","props","$","_c","children","disabled","hasFocus","isChanged","withHoverEffect","t0","isInteractive","t1","undefined","onOpenReviewChanges","isReviewChangesOpen","zIndex","t","t2","changeBar","t3","t4","Path","Text","useLayer","PathUtils","ComponentProps","HTMLProps","memo","MouseEvent","useCallback","useContext","useMemo","useState","deepCompare","ReviewChangesContext","EMPTY_ARRAY","pathToString","DEBUG","ElementWithChangeBar","useChangeIndicatorsReporter","ChangeBarWrapper","props","$","_c","children","disabled","hasFocus","isChanged","isInteractive","onMouseEnterProp","onMouseLeaveProp","restProps","t0","withHoverEffect","onMouseEnter","onMouseLeave","path","undefined","layer","hasHover","setHover","t1","event","t2","event_0","element","setElement","t3","toString","reporterId","t4","zIndex","Boolean","hasRevertHover","reporterGetSnapshot","t5","t6","t7","ChangeIndicatorProps","ChangeIndicator","Path","PathSegment","FormDecPatch","FormDiffMatchPatch","FormIncPatch","FormInsertPatch","FormInsertPatchPosition","FormSetIfMissingPatch","FormSetPatch","FormUnsetPatch","SANITY_PATCH_TYPE","Symbol","for","setIfMissing","value","path","patchType","type","insert","items","position","set","unset","diffMatchPatch","inc","amount","dec","prefixPath","patch","T","segment","Path","toString","pathToString","ReactNode","useCallback","useContext","useEffect","useMemo","useState","ParseErrorsContext","SetParseError","ParseError","ParseErrorsProvider","props","$","_c","t0","Symbol","for","errors","setErrors","t1","pathKey","value","prev","next","existing","message","set","t2","value_0","t3","children","useParseErrors","useParseErrorForPath","path","useReportParseError","error","FocusEvent","useCallback","useEffect","useImperativeHandle","useRef","useState","RefAttributes","CalendarLabels","DateTimeInput","TimeZoneScope","useTranslation","ParseResult","CommonDateTimeInputProps","id","deserialize","value","formatInputValue","date","Date","onChange","nextDate","onParseError","error","parseInputValue","inputValue","placeholder","readOnly","selectTime","serialize","timeStep","calendarLabels","timeZoneScope","validationError","DEFAULT_PLACEHOLDER_TIME","CommonDateTimeInput","props","$","_c","forwardedRef","restProps","ref","localValue","setLocalValue","t","t0","Symbol","for","t1","t2","event","nextInputValue","currentTarget","result","isValid","handleDatePickerInputChange","t3","handleDatePickerChange","t4","current","parseResult","t5","parseError","t6","t7","t8","t9","example","t10","t11","t12","Boolean","t13","t14","DEFAULT_DATE_FORMAT","format","parse","useCallback","useMemo","useState","CalendarLabels","TimeZoneScope","useTranslation","set","unset","useReportParseError","StringInputProps","CommonDateTimeInput","getCalendarLabels","DateInputProps","deserialize","value","serialize","date","Date","DateInput","props","$","_c","readOnly","onChange","schemaType","elementProps","id","path","validationError","dateFormat","options","t","t0","type","timeZoneScope","parseError","setParseError","t1","nextDate","handleChange","t2","formatInputValue","t3","inputValue","parseInputValue","t4","calendarLabels","t5","placeholder","ElementQuery","styled","TimeZoneButtonElementQuery","ReactNode","styled","FieldStatusProps","children","maxAvatars","position","Root","div","FormFieldStatus","t0","$","_c","t1","undefined","t2","isKeySegment","Box","Card","Flex","Stack","DEFAULT_DATE_FORMAT","DEFAULT_TIME_FORMAT","format","isValidTimeZoneString","parse","ParseResult","fromString","pathFromString","getMinutes","parseISO","setMinutes","useCallback","useMemo","useState","styled","ChangeIndicator","CalendarLabels","TimeZoneButton","TimeZoneButtonElementQuery","FormFieldHeaderText","TimeZoneScopeType","useTimeZone","useTranslation","Translate","getPublishedId","EMPTY_ARRAY","FormFieldBaseHeader","FormFieldStatus","useFormValue","useFieldActions","set","unset","useReportParseError","StringInputProps","CommonDateTimeInput","getCalendarLabels","isValidDate","sanitizeTimeZoneKeyId","id","segments","map","segment","_key","join","replace","Root","ParsedOptions","dateFormat","timeFormat","timeStep","displayTimeZone","allowTimeZoneSwitch","SchemaOptions","DateTimeInputProps","serialize","date","Date","toISOString","parseOptions","options","undefined","console","warn","Number","getDeserializer","timeZoneName","isoString","deserialized","isValid","error","enforceTimeStep","dateString","minutes","leftOver","DateTimeInput","props","$","_c","onChange","schemaType","value","elementProps","validation","validationError","changed","path","presence","t0","parseError","setParseError","focused","__internal_comments","comments","hovered","onMouseEnter","onMouseLeave","actions","__internal_slot","slot","t1","t2","title","t","t3","Symbol","for","_id","t4","t5","published","t6","t7","t8","t9","type","defaultTimeZone","relativeDate","timeZoneScope","timeZone","t10","nextDate","handleChange","t11","name","date_0","formatInputValue","t12","deserialize","t13","inputValue","parseInputValue","t14","calendarLabels","t15","t16","Boolean","t17","alternativeName","offset","t18","deprecated","description","t19","t20","t21","t22","placeholder","t23","t24","t25"],"sources":["../src/core/util/empty.ts","../src/core/changeIndicators/ElementWithChangeBar.css.ts","../src/core/changeIndicators/ElementWithChangeBar.styled.tsx","../src/core/changeIndicators/ElementWithChangeBar.tsx","../src/core/changeIndicators/ChangeIndicator.tsx","../src/core/form/patch/patch.ts","../src/core/form/studio/contexts/ParseErrors.tsx","../src/core/form/inputs/DateInputs/CommonDateTimeInput.tsx","../src/core/form/inputs/DateInputs/DateInput.tsx","../src/core/components/timeZone/timeZoneButton/TimeZoneButtonElementQuery.tsx","../src/core/form/components/formField/FormFieldStatus.tsx","../src/core/form/inputs/DateInputs/DateTimeInput.tsx"],"sourcesContent":["/** @internal */\nexport const EMPTY_OBJECT: Record<string, unknown> = Object.freeze({})\n\n/** @internal */\nexport const EMPTY_ARRAY: never[] = Object.freeze([]) as never[]\n","import {style} from '@vanilla-extract/css'\n\nexport const changeBarWrapper = style({\n 'vars': {\n '--change-bar-offset': '4px',\n },\n 'display': 'flex',\n 'position': 'relative',\n '@media': {\n '(hover: hover)': {\n selectors: {\n '&:hover': {\n zIndex: 10,\n },\n },\n },\n },\n})\n\nexport const changeBarWrapperDisabled = style({})\nexport const changeBarWrapperFocused = style({})\nexport const changeBarWrapperNotChanged = style({})\nexport const changeBarWrapperReviewOpen = style({})\n\nexport const changeBarMarker = style({\n 'position': 'absolute',\n 'top': '-1px',\n 'left': 'var(--change-bar-offset)',\n 'width': '1px',\n 'bottom': '-1px',\n 'backgroundColor': 'var(--card-bg-color)',\n 'selectors': {\n '&::after': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: '1px',\n left: 0,\n width: '1px',\n bottom: '1px',\n backgroundColor: 'var(--card-badge-caution-dot-color)',\n borderRadius: '0.5px',\n },\n [`${changeBarWrapper} &::after`]: {\n opacity: 0.5,\n },\n [`${changeBarWrapperFocused} &::after`]: {\n opacity: 1,\n },\n /* hide when field is not changed */\n [`${changeBarWrapperNotChanged} &::after`]: {\n opacity: 0,\n pointerEvents: 'none',\n },\n [`${changeBarWrapperDisabled} &::after`]: {\n display: 'none',\n },\n },\n '@media': {\n '(hover: hover)': {\n selectors: {\n [`${changeBarWrapper}:hover &::after`]: {\n opacity: 1,\n },\n },\n },\n },\n})\n\nexport const changeBarButton = style({\n appearance: 'none',\n border: 0,\n outline: 0,\n display: 'block',\n padding: 0,\n background: 'transparent',\n opacity: 0,\n position: 'absolute',\n height: '100%',\n left: 'calc(-0.25rem + var(--change-bar-offset))',\n width: 'calc(1rem - 1px)',\n transition: 'opacity 250ms',\n selectors: {\n '&:focus': {\n border: 0,\n outline: 0,\n },\n /* hide the change bar button when review changes is open */\n [`${changeBarWrapperReviewOpen} &`]: {\n opacity: 0,\n },\n },\n})\n\nexport const changeBarButtonInteractive = style({\n cursor: 'pointer',\n pointerEvents: 'all',\n})\n\nexport const changeBarButtonWithHoverEffect = style({\n '@media': {\n '(hover: hover)': {\n selectors: {\n '&:hover': {\n opacity: 0.2,\n },\n },\n },\n },\n})\n\nexport const fieldWrapper = style({\n flexGrow: 1,\n minWidth: 0,\n})\n\nexport const changeBar = style({\n position: 'relative',\n opacity: 1,\n transition: 'opacity 100ms',\n})\n","import {clsx} from 'clsx'\nimport {type ComponentProps} from 'react'\n\nimport {\n changeBar,\n changeBarButton,\n changeBarButtonInteractive,\n changeBarButtonWithHoverEffect,\n changeBarMarker,\n changeBarWrapper,\n changeBarWrapperDisabled,\n changeBarWrapperFocused,\n changeBarWrapperNotChanged,\n changeBarWrapperReviewOpen,\n fieldWrapper,\n} from './ElementWithChangeBar.css'\n\nexport function ChangeBarWrapper(\n props: ComponentProps<'div'> & {\n changed?: boolean\n disabled?: boolean\n hasFocus?: boolean\n isReviewChangeOpen: boolean\n },\n) {\n const {changed, className, disabled, hasFocus, isReviewChangeOpen, ...restProps} = props\n\n return (\n <div\n {...restProps}\n className={clsx(\n changeBarWrapper,\n disabled && changeBarWrapperDisabled,\n hasFocus && changeBarWrapperFocused,\n !changed && changeBarWrapperNotChanged,\n isReviewChangeOpen && changeBarWrapperReviewOpen,\n className,\n )}\n />\n )\n}\n\nexport function FieldWrapper(props: ComponentProps<'div'>) {\n const {className, ...restProps} = props\n\n return <div {...restProps} className={clsx(fieldWrapper, className)} />\n}\n\nexport function ChangeBar(props: ComponentProps<'div'> & {zIndex: number}) {\n const {className, style, zIndex, ...restProps} = props\n\n return <div {...restProps} className={clsx(changeBar, className)} style={{...style, zIndex}} />\n}\n\nexport function ChangeBarMarker(props: ComponentProps<'div'>) {\n const {className, ...restProps} = props\n\n return <div {...restProps} className={clsx(changeBarMarker, className)} />\n}\n\nexport function ChangeBarButton(\n props: ComponentProps<'button'> & {isInteractive?: boolean; withHoverEffect?: boolean},\n) {\n const {className, isInteractive, withHoverEffect, ...restProps} = props\n\n return (\n <button\n {...restProps}\n className={clsx(\n changeBarButton,\n withHoverEffect && changeBarButtonWithHoverEffect,\n isInteractive && changeBarButtonInteractive,\n className,\n )}\n />\n )\n}\n","import {useLayer} from '@sanity/ui'\nimport {type ReactNode, useContext, useMemo} from 'react'\nimport {ReviewChangesContext} from 'sanity/_singletons'\n\nimport {Tooltip} from '../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../i18n/hooks/useTranslation'\nimport {\n ChangeBar,\n ChangeBarButton,\n ChangeBarMarker,\n ChangeBarWrapper,\n FieldWrapper,\n} from './ElementWithChangeBar.styled'\n\nexport function ElementWithChangeBar(props: {\n children: ReactNode\n disabled?: boolean\n hasFocus?: boolean\n isChanged?: boolean\n withHoverEffect?: boolean\n isInteractive?: boolean\n}) {\n const {\n children,\n disabled,\n hasFocus,\n isChanged,\n withHoverEffect = true,\n isInteractive = true,\n } = props\n\n const {onOpenReviewChanges, isReviewChangesOpen} = useContext(ReviewChangesContext)\n const {zIndex} = useLayer()\n const {t} = useTranslation()\n\n const changeBar = useMemo(\n () =>\n disabled || !isChanged ? null : (\n <ChangeBar data-testid=\"change-bar\" zIndex={zIndex}>\n <ChangeBarMarker data-testid=\"change-bar__marker\" />\n <Tooltip content={t('changes.change-bar.aria-label')} portal disabled={!isInteractive}>\n <ChangeBarButton\n aria-label={t('changes.change-bar.aria-label')}\n data-testid=\"change-bar__button\"\n onClick={isReviewChangesOpen ? undefined : onOpenReviewChanges}\n tabIndex={-1}\n type=\"button\"\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n />\n </Tooltip>\n </ChangeBar>\n ),\n [\n disabled,\n isChanged,\n isInteractive,\n isReviewChangesOpen,\n onOpenReviewChanges,\n t,\n withHoverEffect,\n zIndex,\n ],\n )\n\n return (\n <ChangeBarWrapper\n data-testid=\"change-bar-wrapper\"\n changed={isChanged}\n disabled={disabled}\n hasFocus={hasFocus}\n isReviewChangeOpen={isReviewChangesOpen}\n >\n <FieldWrapper data-testid=\"change-bar__field-wrapper\">{children}</FieldWrapper>\n {changeBar}\n </ChangeBarWrapper>\n )\n}\n","import {type Path} from '@sanity/types'\nimport {Text, useLayer} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {\n type ComponentProps,\n type HTMLProps,\n memo,\n type MouseEvent,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport deepCompare from 'react-fast-compare'\nimport {ReviewChangesContext} from 'sanity/_singletons'\n\nimport {EMPTY_ARRAY} from '../util/empty'\nimport {pathToString} from '../validation/util/pathToString'\nimport {DEBUG} from './constants'\nimport {ElementWithChangeBar} from './ElementWithChangeBar'\nimport {useChangeIndicatorsReporter} from './tracker'\n\nconst ChangeBarWrapper = memo(function ChangeBarWrapper(\n props: Omit<ComponentProps<'div'>, 'onChange'> & {\n disabled?: boolean\n path: Path\n hasFocus: boolean\n isChanged?: boolean\n withHoverEffect?: boolean\n isInteractive?: boolean\n },\n) {\n const {\n children,\n disabled,\n hasFocus,\n isChanged,\n onMouseEnter: onMouseEnterProp,\n onMouseLeave: onMouseLeaveProp,\n path = EMPTY_ARRAY,\n withHoverEffect,\n isInteractive,\n ...restProps\n } = props\n const layer = useLayer()\n const [hasHover, setHover] = useState(false)\n const onMouseEnter = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n onMouseEnterProp?.(event)\n setHover(true)\n },\n [onMouseEnterProp],\n )\n const onMouseLeave = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n onMouseLeaveProp?.(event)\n setHover(false)\n },\n [onMouseLeaveProp],\n )\n\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const reporterId = useMemo(\n () => (disabled || !element ? null : `field-${PathUtils.toString(path)}`),\n [disabled, element, path],\n )\n const reporterGetSnapshot = useCallback(\n () => ({\n element,\n path: path,\n isChanged: Boolean(isChanged),\n hasFocus: hasFocus,\n hasHover: hasHover,\n hasRevertHover: false,\n zIndex: layer.zIndex,\n }),\n [element, hasFocus, hasHover, isChanged, layer.zIndex, path],\n )\n useChangeIndicatorsReporter(\n reporterId,\n reporterGetSnapshot,\n deepCompare, // note: deepCompare should be ok here since we're not comparing deep values\n )\n\n return (\n <div {...restProps} ref={setElement} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <ElementWithChangeBar\n hasFocus={hasFocus}\n isChanged={isChanged}\n disabled={disabled}\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n >\n {DEBUG && (\n <Text size={1} weight=\"medium\">\n {pathToString(path)}\n </Text>\n )}\n {children}\n </ElementWithChangeBar>\n </div>\n )\n})\n\n/** @internal */\nexport interface ChangeIndicatorProps {\n path: Path\n hasFocus: boolean\n isChanged: boolean\n withHoverEffect?: boolean\n}\n\n/** @internal */\nexport function ChangeIndicator(\n props: ChangeIndicatorProps & Omit<HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {children, hasFocus, isChanged, path, withHoverEffect, ...restProps} = props\n const {isInteractive} = useContext(ReviewChangesContext)\n\n return (\n <ChangeBarWrapper\n {...restProps}\n path={path}\n hasFocus={hasFocus}\n isChanged={isChanged}\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n >\n {children}\n </ChangeBarWrapper>\n )\n}\n","import {type Path, type PathSegment} from '@sanity/types'\n\nimport {\n type FormDecPatch,\n type FormDiffMatchPatch,\n type FormIncPatch,\n type FormInsertPatch,\n type FormInsertPatchPosition,\n type FormSetIfMissingPatch,\n type FormSetPatch,\n type FormUnsetPatch,\n} from './types'\n\n/** @internal */\nexport const SANITY_PATCH_TYPE = Symbol.for('sanity.patch')\n\n/**\n * @hidden\n * @beta */\nexport function setIfMissing(value: any, path: Path = []): FormSetIfMissingPatch {\n return {\n patchType: SANITY_PATCH_TYPE,\n type: 'setIfMissing',\n path,\n value,\n }\n}\n\n/**\n * @hidden\n * @beta */\nexport function insert(\n items: any[],\n position: FormInsertPatchPosition,\n path: Path = [],\n): FormInsertPatch {\n return {\n patchType: SANITY_PATCH_TYPE,\n type: 'insert',\n path,\n position,\n items,\n }\n}\n\n/**\n * @hidden\n * @beta */\nexport function set(value: any, path: Path = []): FormSetPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'set', path, value}\n}\n\n/**\n * @hidden\n * @beta */\nexport function unset(path: Path = []): FormUnsetPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'unset', path}\n}\n\n/**\n * @hidden\n * @beta */\nexport function diffMatchPatch(value: string, path: Path = []): FormDiffMatchPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'diffMatchPatch', path, value}\n}\n\n/**\n * @hidden\n * @beta */\nexport function inc(amount = 1, path: Path = []): FormIncPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'inc', path, value: amount}\n}\n\n/**\n * @hidden\n * @beta */\nexport function dec(amount = 1, path: Path = []): FormDecPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'dec', path, value: amount}\n}\n\n/** @internal */\nexport function prefixPath<T extends {path: Path}>(patch: T, segment: PathSegment): T {\n return {\n ...patch,\n path: [segment, ...patch.path],\n }\n}\n","import {type Path} from '@sanity/types'\nimport {toString as pathToString} from '@sanity/util/paths'\nimport {type ReactNode, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {ParseErrorsContext, type SetParseError} from 'sanity/_singletons'\n\nimport {type ParseError} from '../../store/utils/mergeParseErrors'\n\n/**\n * Owns transient parse-error state for a document subtree and exposes it via\n * {@link ParseErrorsContext}. Inputs report errors with {@link useReportParseError};\n * consumers (field tooltip, validation panel) read the current map with\n * {@link useParseErrors} and merge it locally with their validation. The state\n * intentionally lives outside the form/validation pipeline so writes never\n * feed back into `useDocumentForm`.\n *\n * @internal\n */\nexport function ParseErrorsProvider(props: {children: ReactNode}) {\n const [errors, setErrors] = useState<Record<string, ParseError>>({})\n\n const set = useCallback<SetParseError>((pathKey, value) => {\n setErrors((prev) => {\n if (value === null) {\n if (!(pathKey in prev)) return prev\n const next = {...prev}\n delete next[pathKey]\n return next\n }\n const existing = prev[pathKey]\n if (existing && existing.message === value.message) return prev\n return {...prev, [pathKey]: value}\n })\n }, [])\n\n const value = useMemo(() => ({errors, set}), [errors, set])\n\n return <ParseErrorsContext.Provider value={value}>{props.children}</ParseErrorsContext.Provider>\n}\n\n/**\n * Returns the current parse-errors map for the surrounding document subtree.\n * Keys are stringified paths produced by `@sanity/util/paths` `toString`.\n *\n * @internal\n */\nexport function useParseErrors(): Record<string, ParseError> {\n return useContext(ParseErrorsContext).errors\n}\n\n/**\n * Returns the parse-error message reported for `path`, if any. Use this from\n * field-level consumers (e.g. `PrimitiveField`) that only care about a single\n * path.\n *\n * @internal\n */\nexport function useParseErrorForPath(path: Path): string | undefined {\n const pathKey = pathToString(path)\n return useContext(ParseErrorsContext).errors[pathKey]?.message\n}\n\n/**\n * Hook for primitive inputs that hold malformed text they cannot commit to the\n * document (e.g. a date input whose value does not match `dateFormat`). The\n * reported error is registered against `path` in the parse-errors context, so\n * consumers (field tooltip, validation panel) can surface it. Pass `null` to\n * clear.\n *\n * Outside a `ParseErrorsProvider` (e.g. in isolated component renders) the\n * hook is a no-op.\n *\n * @internal\n */\nexport function useReportParseError(path: Path, error: string | null): void {\n const {set} = useContext(ParseErrorsContext)\n const pathKey = pathToString(path)\n\n useEffect(() => {\n if (error === null) {\n set(pathKey, null)\n return undefined\n }\n set(pathKey, {message: error})\n return () => set(pathKey, null)\n }, [set, pathKey, error])\n}\n","import {\n type FocusEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\n\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../../components/inputs/DateInputs/DateTimeInput'\nimport {type TimeZoneScope} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type ParseResult} from './types'\n\nexport interface CommonDateTimeInputProps {\n id: string\n deserialize: (value: string) => ParseResult\n formatInputValue: (date: Date) => string\n onChange: (nextDate: string | null) => void\n /**\n * Called when the parser's error state changes. Receives the error message\n * while the typed input cannot be parsed (e.g. doesn't match the configured\n * `dateFormat`), and `null` once it becomes parseable or empty. Used by the\n * wrapping date/datetime input to surface parse errors separately from the\n * document validation graph.\n */\n onParseError?: (error: string | null) => void\n parseInputValue: (inputValue: string) => ParseResult\n placeholder?: string\n readOnly: boolean | undefined\n selectTime?: boolean\n serialize: (date: Date) => string\n timeStep?: number\n value: string | undefined\n calendarLabels: CalendarLabels\n timeZoneScope: TimeZoneScope\n validationError?: string\n}\n\nconst DEFAULT_PLACEHOLDER_TIME = new Date()\n\nexport function CommonDateTimeInput(\n props: CommonDateTimeInputProps & RefAttributes<HTMLInputElement>,\n) {\n const {\n ref: forwardedRef,\n id,\n deserialize,\n formatInputValue,\n onChange,\n onParseError,\n parseInputValue,\n placeholder,\n readOnly,\n selectTime,\n serialize,\n timeStep,\n timeZoneScope,\n value,\n validationError,\n ...restProps\n } = props\n\n const [localValue, setLocalValue] = useState<string | null>(null)\n\n const {t} = useTranslation()\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setLocalValue(null)\n }, [value])\n\n const handleDatePickerInputChange = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const nextInputValue = event.currentTarget.value\n const result = nextInputValue === '' ? null : parseInputValue(nextInputValue)\n\n if (result === null) {\n onChange(null)\n\n // If the field value is undefined and we are clearing the invalid value\n // the above useEffect won't trigger, so we do some extra clean up here\n if (typeof value === 'undefined' && localValue) {\n setLocalValue(null)\n }\n } else if (result.isValid) {\n onChange(serialize(result.date))\n } else {\n setLocalValue(nextInputValue)\n }\n },\n [parseInputValue, onChange, value, localValue, serialize],\n )\n\n const handleDatePickerChange = useCallback(\n (nextDate: Date | null) => {\n onChange(nextDate ? serialize(nextDate) : null)\n },\n [serialize, onChange],\n )\n\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n const parseResult = localValue ? parseInputValue(localValue) : value ? deserialize(value) : null\n\n const inputValue = localValue\n ? localValue\n : parseResult?.isValid\n ? formatInputValue(parseResult.date)\n : value\n\n // Forward parse errors to the wrapping field. Invalid input never reaches\n // `onChange`, so without this they'd be swallowed and validators would\n // continue to run against an undefined value.\n const parseError = parseResult?.error ?? null\n useEffect(() => {\n onParseError?.(parseError)\n }, [onParseError, parseError])\n\n return (\n <DateTimeInput\n {...restProps}\n calendarLabels={props.calendarLabels}\n id={id}\n selectTime={selectTime}\n timeStep={timeStep}\n timeZoneScope={timeZoneScope}\n placeholder={\n placeholder ||\n t('inputs.datetime.placeholder', {\n example: formatInputValue(DEFAULT_PLACEHOLDER_TIME),\n })\n }\n ref={ref}\n value={parseResult?.date}\n inputValue={inputValue || ''}\n readOnly={Boolean(readOnly)}\n onInputChange={handleDatePickerInputChange}\n onChange={handleDatePickerChange}\n customValidity={parseError || validationError}\n />\n )\n}\n","import {DEFAULT_DATE_FORMAT, format, parse} from '@sanity/util/legacyDateFormat'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {type TimeZoneScope} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {set, unset} from '../../patch/patch'\nimport {useReportParseError} from '../../studio/contexts/ParseErrors'\nimport {type StringInputProps} from '../../types/inputProps'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {getCalendarLabels} from './utils'\n\n/**\n * @hidden\n * @beta */\nexport type DateInputProps = StringInputProps\n\nconst deserialize = (value: string) => parse(value, DEFAULT_DATE_FORMAT)\nconst serialize = (date: Date) => format(date, DEFAULT_DATE_FORMAT)\n\n/**\n * @hidden\n * @beta */\nexport function DateInput(props: DateInputProps) {\n const {readOnly, onChange, schemaType, elementProps, value, id, path, validationError} = props\n const dateFormat = schemaType.options?.dateFormat || DEFAULT_DATE_FORMAT\n const {t} = useTranslation()\n const timeZoneScope: TimeZoneScope = {type: 'input', id}\n\n const [parseError, setParseError] = useState<string | null>(null)\n useReportParseError(path, parseError)\n\n const handleChange = useCallback(\n (nextDate: string | null) => {\n onChange(nextDate === null ? unset() : set(nextDate))\n },\n [onChange],\n )\n\n const formatInputValue = useCallback((date: Date) => format(date, dateFormat), [dateFormat])\n\n const parseInputValue = useCallback(\n (inputValue: string) => parse(inputValue, dateFormat),\n [dateFormat],\n )\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n return (\n <CommonDateTimeInput\n {...elementProps}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n onChange={handleChange}\n onParseError={setParseError}\n parseInputValue={parseInputValue}\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n placeholder={schemaType.placeholder}\n calendarLabels={calendarLabels}\n readOnly={readOnly}\n selectTime={false}\n serialize={serialize}\n value={value}\n timeZoneScope={timeZoneScope}\n validationError={validationError}\n />\n )\n}\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst TimeZoneButtonElementQuery = styled(ElementQuery)`\n .button-small {\n display: block;\n }\n .button-large {\n display: none;\n }\n\n &[data-eq-min~='2'] {\n .button-small {\n display: none;\n }\n .button-large {\n display: block;\n }\n }\n`\n\nexport default TimeZoneButtonElementQuery\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n/** @internal */\nexport interface FieldStatusProps {\n children?: ReactNode\n maxAvatars?: number\n position?: 'top' | 'bottom'\n}\n\nconst Root = styled.div`\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n min-height: var(--avatar-height);\n width: 77px;\n margin-left: var(--small-padding);\n\n &[data-max-avatars='1'] {\n max-width: 23px;\n }\n\n &[data-position='top'] {\n align-self: flex-start;\n }\n\n &[data-position='bottom'] {\n align-self: flex-end;\n }\n`\n\n/** @internal */\nexport function FormFieldStatus({children, maxAvatars, position = 'bottom'}: FieldStatusProps) {\n return (\n <Root data-max-avatars={maxAvatars} data-position={position}>\n {children}\n </Root>\n )\n}\n","import {isKeySegment} from '@sanity/types'\nimport {Box, Card, Flex, Stack} from '@sanity/ui'\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_TIME_FORMAT,\n format,\n isValidTimeZoneString,\n parse,\n type ParseResult,\n} from '@sanity/util/legacyDateFormat'\nimport {fromString as pathFromString} from '@sanity/util/paths'\nimport {getMinutes} from 'date-fns/getMinutes'\nimport {parseISO} from 'date-fns/parseISO'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {useCallback, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ChangeIndicator} from '../../../changeIndicators/ChangeIndicator'\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {TimeZoneButton} from '../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport TimeZoneButtonElementQuery from '../../../components/timeZone/timeZoneButton/TimeZoneButtonElementQuery'\nimport {FormFieldHeaderText} from '../../../form/components/formField/FormFieldHeaderText'\nimport {type TimeZoneScopeType, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {EMPTY_ARRAY} from '../../../util/empty'\nimport {FormFieldBaseHeader} from '../../components/formField/FormFieldBaseHeader'\nimport {FormFieldStatus} from '../../components/formField/FormFieldStatus'\nimport {useFormValue} from '../../contexts/FormValue'\nimport {useFieldActions} from '../../field/actions/useFieldActions'\nimport {set, unset} from '../../patch/patch'\nimport {useReportParseError} from '../../studio/contexts/ParseErrors'\nimport {type StringInputProps} from '../../types/inputProps'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {getCalendarLabels, isValidDate} from './utils'\n\n/**\n * Sanitizes an input ID for use in timezone storage keys.\n * The backend key-value API rejects keys containing special characters like `[`, `]`, `=`, and `\"`.\n * This function parses the path string and converts it to a safe format using dots and \"key-\" prefix.\n *\n * @internal\n */\nexport function sanitizeTimeZoneKeyId(id: string): string {\n try {\n const segments = pathFromString(id)\n return segments\n .map((segment) => {\n if (isKeySegment(segment)) {\n return `key-${segment._key}`\n }\n if (typeof segment === 'number') {\n return `idx_${segment}`\n }\n return segment\n })\n .join('.')\n } catch {\n // Fallback: if parsing fails, strip problematic characters\n return id.replace(/[[\\]=\"']/g, '-')\n }\n}\n\nconst Root = styled(Card)`\n line-height: 1;\n`\n\ninterface ParsedOptions {\n dateFormat: string\n timeFormat: string\n timeStep: number\n displayTimeZone?: string\n allowTimeZoneSwitch?: boolean\n}\n\ninterface SchemaOptions {\n dateFormat?: string\n timeFormat?: string\n timeStep?: number\n displayTimeZone?: string\n allowTimeZoneSwitch?: boolean\n}\n\n/**\n * @hidden\n * @beta */\nexport type DateTimeInputProps = StringInputProps\n\nconst serialize = (date: Date) => {\n return date.toISOString()\n}\n\nfunction parseOptions(options: SchemaOptions = {}): ParsedOptions {\n const displayTimeZone =\n options.displayTimeZone && isValidTimeZoneString(options.displayTimeZone)\n ? options.displayTimeZone\n : undefined\n if (options.displayTimeZone && !displayTimeZone) {\n console.warn(\n `Invalid time zone \"${options.displayTimeZone}\" supplied to datetime input, defaulting to local time zone or a previously stored preference`,\n )\n }\n return {\n dateFormat: options.dateFormat || DEFAULT_DATE_FORMAT,\n timeFormat: options.timeFormat || DEFAULT_TIME_FORMAT,\n timeStep: ('timeStep' in options && Number(options.timeStep)) || 1,\n displayTimeZone,\n allowTimeZoneSwitch:\n options.allowTimeZoneSwitch === undefined ? true : options.allowTimeZoneSwitch,\n }\n}\n\nconst getDeserializer =\n (timeZoneName?: string) =>\n (isoString: string): ParseResult => {\n // create a date object respecting the time zone\n const {date: deserialized} = parse(isoString, undefined, timeZoneName)\n if (deserialized && isValidDate(deserialized)) {\n return {isValid: true, date: deserialized}\n }\n return {isValid: false, error: `Invalid date value: \"${isoString}\"`}\n }\n\n// enforceTimeStep takes a dateString and datetime schema options and enforces the time\n// to be within the configured timeStep\nfunction enforceTimeStep(dateString: string, timeStep: number) {\n if (!timeStep || timeStep === 1) {\n return dateString\n }\n\n const date = parseISO(dateString)\n const minutes = getMinutes(date)\n const leftOver = minutes % timeStep\n if (leftOver !== 0) {\n return serialize(setMinutes(date, minutes - leftOver))\n }\n\n return serialize(date)\n}\n\n/**\n * @hidden\n * @beta */\nexport function DateTimeInput(props: DateTimeInputProps) {\n const {\n onChange,\n schemaType,\n value,\n elementProps,\n id,\n validation,\n validationError,\n changed,\n path,\n presence = EMPTY_ARRAY,\n } = props\n\n const [parseError, setParseError] = useState<string | null>(null)\n useReportParseError(path, parseError)\n\n const {\n focused,\n __internal_comments: comments,\n hovered,\n onMouseEnter,\n onMouseLeave,\n actions,\n __internal_slot: slot,\n } = useFieldActions()\n const {\n dateFormat,\n timeFormat,\n timeStep,\n displayTimeZone,\n allowTimeZoneSwitch = true,\n } = parseOptions(schemaType.options)\n const {title} = schemaType\n const {t} = useTranslation()\n const _id = useFormValue(['_id'])\n const published = getPublishedId(_id as string)\n const timeZoneScope = useMemo(\n () => ({\n type: 'input' as TimeZoneScopeType,\n defaultTimeZone: displayTimeZone,\n // we want to make sure that if allowTimeZoneSwitch is switched to false that we respect the default only\n // sanitize the id to remove special characters that the backend key-value API rejects\n id: `${published}.${sanitizeTimeZoneKeyId(id)}${allowTimeZoneSwitch ? '' : '.fixed'}`,\n relativeDate: value ? new Date(value) : undefined,\n }),\n [allowTimeZoneSwitch, displayTimeZone, id, published, value],\n )\n\n const {timeZone} = useTimeZone(timeZoneScope)\n\n const handleChange = useCallback(\n (nextDate: string | null) => {\n let date = nextDate\n if (date !== null && timeStep > 1) {\n date = enforceTimeStep(date, timeStep)\n }\n\n onChange(date === null ? unset() : set(date))\n },\n [onChange, timeStep],\n )\n\n const formatInputValue = useCallback(\n (date: Date) => format(date, `${dateFormat} ${timeFormat}`, {timeZone: timeZone.name}),\n [dateFormat, timeFormat, timeZone],\n )\n\n const deserialize = useMemo(() => getDeserializer(timeZone.name), [timeZone.name])\n\n const parseInputValue = useCallback(\n (inputValue: string): ParseResult =>\n parse(inputValue, `${dateFormat} ${timeFormat}`, timeZone.name),\n [dateFormat, timeFormat, timeZone],\n )\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n return (\n <Root\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-testid={`field-${id}`}\n radius={2}\n >\n <Flex direction={'column'}>\n <Box flex={1} paddingY={2}>\n <FormFieldBaseHeader\n __internal_comments={comments}\n __internal_slot={slot}\n actions={actions}\n fieldFocused={Boolean(focused)}\n fieldHovered={hovered}\n presence={presence}\n inputId={id}\n content={\n <Stack gap={2}>\n <FormFieldHeaderText\n deprecated={schemaType.deprecated}\n description={schemaType.description}\n inputId={id}\n validation={validation}\n title={schemaType.title}\n suffix={\n // Check raw schema options for allowTimeZoneSwitch since the parsed value\n // defaults to true - we only want to show the button when explicitly configured\n (displayTimeZone || schemaType.options?.allowTimeZoneSwitch === true) && (\n <TimeZoneButtonElementQuery>\n <TimeZoneButton\n tooltipContent={\n <Translate\n t={t}\n i18nKey={'time-zone.time-zone-tooltip-input'}\n values={{\n title,\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n }}\n />\n }\n allowTimeZoneSwitch={allowTimeZoneSwitch}\n useElementQueries\n timeZoneScope={timeZoneScope}\n />\n </TimeZoneButtonElementQuery>\n )\n }\n />\n </Stack>\n }\n />\n </Box>\n <FormFieldStatus maxAvatars={1} position=\"top\" />\n <ChangeIndicator hasFocus={Boolean(focused)} isChanged={changed} path={path}>\n <div data-testid=\"change-bar-wrapper\">\n <div data-testid=\"change-bar__field-wrapper\">\n <CommonDateTimeInput\n {...elementProps}\n calendarLabels={calendarLabels}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n onChange={handleChange}\n onParseError={setParseError}\n parseInputValue={parseInputValue}\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n placeholder={schemaType.placeholder}\n serialize={serialize}\n timeStep={timeStep}\n selectTime\n value={value}\n timeZoneScope={timeZoneScope}\n validationError={validationError}\n />\n </div>\n </div>\n </ChangeIndicator>\n </Flex>\n </Root>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAaA,eAAwCE,OAAOC,OAAO,CAAC,CAAC,GAGxDC,cAAuBF,OAAOC,OAAO,CAAA,CAAE;;AEapD,SAAOe,mBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,SAAAC,WAAAC,UAAAC,UAAAC,oBAAAC;CAAA,AAAAP,EAAA,OAAAD,SAQmFG,UAAAF,EAAA,IAAAG,YAAAH,EAAA,IAAAI,WAAAJ,EAAA,IAAAK,WAAAL,EAAA,IAAAM,qBAAAN,EAAA,IAAAO,YAAAP,EAAA,OAAxF,CAAAE,SAAAC,WAAAC,UAAAC,UAAAC,uBAAAC,aAAmFR,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,SAAAF,EAAA,KAAAG,WAAAH,EAAA,KAAAI,UAAAJ,EAAA,KAAAK,UAAAL,EAAA,KAAAM,oBAAAN,EAAA,KAAAO;CAOlF,IAAAC,KAAAJ,YAAAA,YACAK,KAAAJ,YAAAA,YACAK,KAAA,CAACR,WAAAA,YACDS,KAAAL,sBAAAA,YAAgDM;CAAA,AAAAZ,EAAA,OAAAG,aAAAH,EAAA,OAAAQ,MAAAR,EAAA,OAAAS,MAAAT,EAAA,QAAAU,MAAAV,EAAA,QAAAW,MALvCC,KAAA3B,KACTO,kBACAgB,IACAC,IACAC,IACAC,IACAR,SACF,GAACH,EAAA,KAAAG,WAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,IAAAT,EAAA,MAAAU,IAAAV,EAAA,MAAAW,IAAAX,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAa;CACD,OADCb,EAAA,QAAAO,aAAAP,EAAA,QAAAY,MATHC,KAAA,oBAAA,OAAA;EAUE,GATIN;EACO,WAAAK;CAOV,CAAA,GACDZ,EAAA,MAAAO,WAAAP,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,MAAAA,KAAAb,EAAA,KAVFa;AAUE;AAIN,SAAOC,aAAAf,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAE,WAAAI;CAAA,AAAAP,EAAA,OAAAD,SACkCI,YAAAH,EAAA,IAAAO,YAAAP,EAAA,OAAvC,CAAAG,cAAAI,aAAkCR,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAG,WAAAH,EAAA,KAAAO;CAAA,IAAAC;CAAA,AAAAR,EAAA,OAAAG,YAE4BK,KAAAR,EAAA,MAA7BQ,KAAAvB,KAAKY,cAAcM,SAAS,GAACH,EAAA,KAAAG,WAAAH,EAAA,KAAAQ;CAAA,IAAAC;CAAI,OAAJT,EAAA,OAAAO,aAAAP,EAAA,OAAAQ,MAA5DC,KAAA,oBAAA,OAAA;EAAgE,GAAvDF;EAAsB,WAAAC;CAA6B,CAAA,GAAIR,EAAA,KAAAO,WAAAP,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAAhES;AAAgE;AAGzE,SAAOM,UAAAhB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAE,WAAAI,WAAAS,OAAAC;CAAA,AAAAjB,EAAA,OAAAD,SACiDI,YAAAH,EAAA,IAAAO,YAAAP,EAAA,IAAAgB,QAAAhB,EAAA,IAAAiB,SAAAjB,EAAA,OAAtD,CAAAG,WAAAa,OAAAC,WAAAV,aAAiDR,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAG,WAAAH,EAAA,KAAAO,WAAAP,EAAA,KAAAgB,OAAAhB,EAAA,KAAAiB;CAAA,IAAAT;CAAA,AAAAR,EAAA,OAAAG,YAEUK,KAAAR,EAAA,MAA1BQ,KAAAvB,KAAKE,WAAWgB,SAAS,GAACH,EAAA,KAAAG,WAAAH,EAAA,KAAAQ;CAAA,IAAAC;CAAA,AAAAT,EAAA,OAAAgB,SAAAhB,EAAA,OAAAiB,UAASR,KAAA;EAAA,GAAIO;EAAKC;CAAQ,GAACjB,EAAA,KAAAgB,OAAAhB,EAAA,KAAAiB,QAAAjB,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAU;CAAI,OAAJV,EAAA,QAAAO,aAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAS,MAApFC,KAAA,oBAAA,OAAA;EAAwF,GAA/EH;EAAsB,WAAAC;EAAmC,OAAAC;CAAkB,CAAA,GAAIT,EAAA,MAAAO,WAAAP,EAAA,MAAAQ,IAAAR,EAAA,MAAAS,IAAAT,EAAA,MAAAU,MAAAA,KAAAV,EAAA,KAAxFU;AAAwF;AAGjG,SAAOQ,gBAAAnB,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAE,WAAAI;CAAA,AAAAP,EAAA,OAAAD,SACkCI,YAAAH,EAAA,IAAAO,YAAAP,EAAA,OAAvC,CAAAG,cAAAI,aAAkCR,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAG,WAAAH,EAAA,KAAAO;CAAA,IAAAC;CAAA,AAAAR,EAAA,OAAAG,YAE+BK,KAAAR,EAAA,MAAhCQ,KAAAvB,KAAKM,iBAAiBY,SAAS,GAACH,EAAA,KAAAG,WAAAH,EAAA,KAAAQ;CAAA,IAAAC;CAAI,OAAJT,EAAA,OAAAO,aAAAP,EAAA,OAAAQ,MAA/DC,KAAA,oBAAA,OAAA;EAAmE,GAA1DF;EAAsB,WAAAC;CAAgC,CAAA,GAAIR,EAAA,KAAAO,WAAAP,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAAnES;AAAmE;AAG5E,SAAOU,gBAAApB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAE,WAAAiB,eAAAb,WAAAc;CAAA,AAAArB,EAAA,OAAAD,SAGkEI,YAAAH,EAAA,IAAAoB,gBAAApB,EAAA,IAAAO,YAAAP,EAAA,IAAAqB,kBAAArB,EAAA,OAAvE,CAAAG,WAAAiB,eAAAC,oBAAAd,aAAkER,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAG,WAAAH,EAAA,KAAAoB,eAAApB,EAAA,KAAAO,WAAAP,EAAA,KAAAqB;CAOjE,IAAAb,KAAAa,mBAAAA,YACAZ,KAAAW,iBAAAA,YAA2CV;CAAA,AAAAV,EAAA,OAAAG,aAAAH,EAAA,OAAAQ,MAAAR,EAAA,OAAAS,MAHlCC,KAAAzB,KACTG,iBACAoB,IACAC,IACAN,SACF,GAACH,EAAA,KAAAG,WAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,IAAAT,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAW;CACD,OADCX,EAAA,OAAAO,aAAAP,EAAA,QAAAU,MAPHC,KAAA,oBAAA,UAAA;EAQE,GAPIJ;EACO,WAAAG;CAKV,CAAA,GACDV,EAAA,KAAAO,WAAAP,EAAA,MAAAU,IAAAV,EAAA,MAAAW,MAAAA,KAAAX,EAAA,KARFW;AAQE;AC5DN,SAAOuB,qBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAQL,EAAAC,UAAAC,UAAAC,UAAAC,WAAAC,iBAAAC,IAAAC,eAAAC,OAOIV,OAFFO,kBAAAC,OAAAG,KAAAA,KAAAH,IACAC,gBAAAC,OAAAC,KAAAA,KAAAD,IAGF,EAAAE,qBAAAC,wBAAmDxB,WAAWE,oBAAoB,GAClF,EAAAuB,WAAiB3B,SAAS,GAC1B,EAAA4B,MAAYtB,eAAe,GAACuB;CAAA,AAAAf,EAAA,OAAAG,YAAAH,EAAA,OAAAK,aAAAL,EAAA,OAAAQ,iBAAAR,EAAA,OAAAY,uBAAAZ,EAAA,OAAAW,uBAAAX,EAAA,OAAAc,KAAAd,EAAA,OAAAM,mBAAAN,EAAA,OAAAa,UAIxBE,KAAAZ,YAAA,CAAaE,YAAb,OACE,qBAAC,WAAD;EAAuB,eAAA;EAAqBQ;EAA5C,UAAA,CACE,oBAAC,iBAAD,EAA6B,eAAA,qBAAoB,CAAA,GACjD,oBAAC,SAAD;GAAkB,SAAAC,EAAE,+BAA+B;GAAG,QAAA;GAAiB,UAAA,CAACN;GACtE,UAAA,oBAAC,iBAAD;IACc,cAAAM,EAAE,+BAA+B;IACjC,eAAA;IACH,SAAAF,sBAAAF,KAAAA,IAAAC;IACC,UAAA;IACL,MAAA;IACYL;IACFE;GAAa,CAAA;EARxB,CAAA,CAFA;KAcXR,EAAA,KAAAG,UAAAH,EAAA,KAAAK,WAAAL,EAAA,KAAAQ,eAAAR,EAAA,KAAAY,qBAAAZ,EAAA,KAAAW,qBAAAX,EAAA,KAAAc,GAAAd,EAAA,KAAAM,iBAAAN,EAAA,KAAAa,QAAAb,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAjBL,IAAAgB,YAEID,IA0BHE;CAAA,AAAAjB,EAAA,OAAAE,WAUkFe,KAAAjB,EAAA,OAA/EiB,KAAA,oBAAC,cAAD;EAA0B,eAAA;EAA6Bf;CAA1C,CAAA,GAAkEF,EAAA,KAAAE,UAAAF,EAAA,MAAAiB;CAAA,IAAAC;CAE9D,OAF8DlB,EAAA,QAAAgB,aAAAhB,EAAA,QAAAG,YAAAH,EAAA,QAAAI,YAAAJ,EAAA,QAAAK,aAAAL,EAAA,QAAAY,uBAAAZ,EAAA,QAAAiB,MAPjFC,KAAA,qBAAC,oBAAD;EACc,eAAA;EACHb,SAAAA;EACCF;EACAC;EACUQ,oBAAAA;EALtB,UAAA,CAOEK,IACCD,SARc;KASEhB,EAAA,MAAAgB,WAAAhB,EAAA,MAAAG,UAAAH,EAAA,MAAAI,UAAAJ,EAAA,MAAAK,WAAAL,EAAA,MAAAY,qBAAAZ,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA,KATnBkB;AASmB;ACrDvB,MAAMoB,mBAAmBb,KAAK,SAAAa,iBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,UAAAC,UAAAC,UAAAC,WAAAC,eAAAC,kBAAAC,kBAAAC,WAAAC,IAAAC;CAAA,AAAAX,EAAA,OAAAD,SAqBnBG,WAAAF,EAAA,IAAAG,WAAAH,EAAA,IAAAI,WAAAJ,EAAA,IAAAK,YAAAL,EAAA,IAAAM,gBAAAN,EAAA,IAAAO,mBAAAP,EAAA,IAAAQ,mBAAAR,EAAA,IAAAS,YAAAT,EAAA,IAAAU,KAAAV,EAAA,IAAAW,kBAAAX,EAAA,QAXT,CAAAE,UAAAC,UAAAC,UAAAC,WAAAO,cAAAL,kBAAAM,cAAAL,kBAAAM,MAAAJ,IAAAC,iBAAAL,kBAAAG,aAWIV,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,UAAAF,EAAA,KAAAG,UAAAH,EAAA,KAAAI,UAAAJ,EAAA,KAAAK,WAAAL,EAAA,KAAAM,eAAAN,EAAA,KAAAO,kBAAAP,EAAA,KAAAQ,kBAAAR,EAAA,KAAAS,WAAAT,EAAA,KAAAU,IAAAV,EAAA,MAAAW;CAJP,IAAAG,OAAAJ,OAAAK,KAAAA,IAAAtB,cAAAiB,IAKFM,QAAcnC,SAAS,GACvB,CAAAoC,UAAAC,YAA6B5B,SAAS,EAAK,GAAC6B;CAAA,AAAAnB,EAAA,QAAAO,mBAKzCY,KAAAnB,EAAA,OAHDmB,MAAAC,UAAA;EAEEF,AADAX,mBAAmBa,KAAK,GACxBF,SAAS,EAAI;CAAC,GACflB,EAAA,MAAAO,kBAAAP,EAAA,MAAAmB;CAJH,IAAAP,eAAqBO,IAMpBE;CAAA,AAAArB,EAAA,QAAAQ,mBAKEa,KAAArB,EAAA,OAHDqB,MAAAC,YAAA;EAEEJ,AADAV,mBAAmBY,OAAK,GACxBF,SAAS,EAAK;CAAC,GAChBlB,EAAA,MAAAQ,kBAAAR,EAAA,MAAAqB;CAJH,IAAAR,eAAqBQ,IAQrB,CAAAE,SAAAC,cAA8BlC,SAAgC,IAAI,GAACmC;CAAA,AAAAzB,EAAA,QAAAG,YAAAH,EAAA,QAAAuB,WAAAvB,EAAA,QAAAc,QAE1DW,KAAAtB,YAAA,CAAaoB,UAAb,OAAA,SAAuCzC,UAAS4C,SAAUZ,IAAI,KAAGd,EAAA,MAAAG,UAAAH,EAAA,MAAAuB,SAAAvB,EAAA,MAAAc,MAAAd,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAD1E,IAAA2B,aACSF,IAERG;CAaD/B,AAbCG,EAAA,QAAAuB,WAAAvB,EAAA,QAAAI,YAAAJ,EAAA,QAAAiB,YAAAjB,EAAA,QAAAK,aAAAL,EAAA,QAAAgB,MAAAa,UAAA7B,EAAA,QAAAc,QAECc,YAAO;EAAAL;EAAAT;EAAAT,WAGMyB,EAAQzB;EAAUD;EAAAa;EAAAc,gBAGb;EAAKF,QACbb,MAAKa;CACf,IAAE7B,EAAA,MAAAuB,SAAAvB,EAAA,MAAAI,UAAAJ,EAAA,MAAAiB,UAAAjB,EAAA,MAAAK,WAAAL,EAAA,MAAAgB,MAAAa,QAAA7B,EAAA,MAAAc,MAAAd,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA,KAGJH,4BACE8B,YACAK,IACAzC,UACF;CAAC,IAAA0C;CAAA,AAAAjC,EAAA,QAAAc,OAeMmB,KAAAjC,EAAA,OAJAiC,KAAAA,IAIAjC,EAAA,MAAAc,MAAAd,EAAA,MAAAiC;CAAA,IAAAC;CAAA,AAAAlC,EAAA,QAAAE,YAAAF,EAAA,QAAAG,YAAAH,EAAA,QAAAI,YAAAJ,EAAA,QAAAK,aAAAL,EAAA,QAAAM,iBAAAN,EAAA,QAAAiC,MAAAjC,EAAA,QAAAW,mBAXHuB,KAAA,qBAAC,sBAAD;EACY9B;EACCC;EACDF;EACOQ;EACFL;EALjB,UAAA,CAOG2B,IAKA/B,QAZkB;KAaEF,EAAA,MAAAE,UAAAF,EAAA,MAAAG,UAAAH,EAAA,MAAAI,UAAAJ,EAAA,MAAAK,WAAAL,EAAA,MAAAM,eAAAN,EAAA,MAAAiC,IAAAjC,EAAA,MAAAW,iBAAAX,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CACnB,OADmBnC,EAAA,QAAAY,gBAAAZ,EAAA,QAAAa,gBAAAb,EAAA,QAAAS,aAAAT,EAAA,QAAAkC,MAdzBC,KAAA,oBAAA,OAAA;EAeM,GAfG1B;EAAgBe,KAAAA;EAA0BZ;EAA4BC;EAC7EqB,UAAAA;CAcI,CAAA,GAAAlC,EAAA,MAAAY,cAAAZ,EAAA,MAAAa,cAAAb,EAAA,MAAAS,WAAAT,EAAA,MAAAkC,IAAAlC,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA,KAfNmC;AAeM,CAET;;AAWD,SAAOE,gBAAAtC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,UAAAE,UAAAC,WAAAS,MAAAL,WAAAE;CAAA,AAAAX,EAAA,OAAAD,SAG6EG,WAAAF,EAAA,IAAAI,WAAAJ,EAAA,IAAAK,YAAAL,EAAA,IAAAc,OAAAd,EAAA,IAAAS,YAAAT,EAAA,IAAAW,kBAAAX,EAAA,OAAlF,CAAAE,UAAAE,UAAAC,WAAAS,MAAAH,oBAAAF,aAA6EV,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,UAAAF,EAAA,KAAAI,UAAAJ,EAAA,KAAAK,WAAAL,EAAA,KAAAc,MAAAd,EAAA,KAAAS,WAAAT,EAAA,KAAAW;CAClF,IAAA,EAAAL,kBAAwBlB,WAAWI,oBAAoB,GAACkB;CAYnC,OAZmCV,EAAA,OAAAE,YAAAF,EAAA,OAAAI,YAAAJ,EAAA,OAAAK,aAAAL,EAAA,QAAAM,iBAAAN,EAAA,QAAAc,QAAAd,EAAA,QAAAS,aAAAT,EAAA,QAAAW,mBAGtDD,KAAA,oBAAC,kBAAD;EAAiB,GACXD;EACEK;EACIV;EACCC;EACMM;EACFL;EAEdJ;CARc,CAAA,GASEF,EAAA,KAAAE,UAAAF,EAAA,KAAAI,UAAAJ,EAAA,KAAAK,WAAAL,EAAA,MAAAM,eAAAN,EAAA,MAAAc,MAAAd,EAAA,MAAAS,WAAAT,EAAA,MAAAW,iBAAAX,EAAA,MAAAU,MAAAA,KAAAV,EAAA,KATnBU;AASmB;;ACnHvB,MAAasC,oBAAoBC,OAAOC,IAAI,cAAc;;;;AAK1D,SAAgBC,aAAaC,OAAYC,OAAa,CAAA,GAA2B;CAC/E,OAAO;EACLC,WAAWN;EACXO,MAAM;EACNF;EACAD;CACF;AACF;;;;AAKA,SAAgBI,OACdC,OACAC,UACAL,OAAa,CAAA,GACI;CACjB,OAAO;EACLC,WAAWN;EACXO,MAAM;EACNF;EACAK;EACAD;CACF;AACF;;;;AAKA,SAAgBE,IAAIP,OAAYC,OAAa,CAAA,GAAkB;CAC7D,OAAO;EAACC,WAAWN;EAAmBO,MAAM;EAAOF;EAAMD;CAAK;AAChE;;;;AAKA,SAAgBQ,MAAMP,OAAa,CAAA,GAAoB;CACrD,OAAO;EAACC,WAAWN;EAAmBO,MAAM;EAASF;CAAI;AAC3D;;;;AAKA,SAAgBQ,eAAeT,OAAeC,OAAa,CAAA,GAAwB;CACjF,OAAO;EAACC,WAAWN;EAAmBO,MAAM;EAAkBF;EAAMD;CAAK;AAC3E;;;;AAKA,SAAgBU,IAAIC,SAAS,GAAGV,OAAa,CAAA,GAAkB;CAC7D,OAAO;EAACC,WAAWN;EAAmBO,MAAM;EAAOF;EAAMD,OAAOW;CAAM;AACxE;;;;AAKA,SAAgBC,IAAID,SAAS,GAAGV,OAAa,CAAA,GAAkB;CAC7D,OAAO;EAACC,WAAWN;EAAmBO,MAAM;EAAOF;EAAMD,OAAOW;CAAM;AACxE;;AAGA,SAAgBE,WAAmCC,OAAUE,SAAyB;CACpF,OAAO;EACL,GAAGF;EACHb,MAAM,CAACe,SAAS,GAAGF,MAAMb,IAAI;CAC/B;AACF;;;;;;;;;;;ACrEA,SAAO4B,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAC4DF,KAAA,CAAC,GAACF,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAnE,IAAA,CAAAK,QAAAC,aAA4BZ,SAAqCQ,EAAE,GAACK;CAAA,AAAAP,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAE7BG,MAAAC,SAAAC,UAAA;EACrCH,WAAUI,SAAA;GACR,IAAID,UAAU,MAAI;IAChB,IAAI,EAAED,WAAWE,OAAK,OAASA;IAC/B,IAAAC,OAAa,EAAA,GAAID,KAAI;IACD,OAApB,OAAOC,KAAKH,UACLG;GAAI;GAEb,IAAAC,WAAiBF,KAAKF;GACyC,OAA3DI,YAAYA,SAAQC,YAAaJ,MAAKI,UAAiBH,OACpD;IAAA,GAAIA;KAAOF,UAAUC;GAAK;EAAC,CACnC;CAAC,GACHT,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAZD,IAAAc,MAAYP,IAYNQ;CAAA,AAAAf,EAAA,OAAAK,SAEoCU,KAAAf,EAAA,MAAbe,KAAA;EAAAV;EAAAS;CAAY,GAACd,EAAA,KAAAK,QAAAL,EAAA,KAAAe;CAA1C,IAAAC,UAA6BD,IAA8BE;CAEqC,OAFrCjB,EAAA,OAAAD,MAAAmB,YAAAlB,EAAA,OAAAgB,WAEpDC,KAAA,oBAAA,mBAAA,UAAA;EAAoCR,OAAAA;EAAQV,UAAAA,MAAKmB;CAAU,CAAA,GAA8BlB,EAAA,KAAAD,MAAAmB,UAAAlB,EAAA,KAAAgB,SAAAhB,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA,IAAzFiB;AAAyF;;;;;;;AASlG,SAAOE,iBAAA;CAAA,OACE5B,WAAWI,kBAAkB,CAAC,CAAAU;AAAO;;;;;;;;AAU9C,SAAOe,qBAAAC,MAAA;CACL,IAAAb,UAAgBpB,SAAaiC,IAAI;CAAC,OAC3B9B,WAAWI,kBAAkB,CAAC,CAAAU,OAAQG,QAAiB,EAAAK;AAAA;;;;;;;;;;;;;AAehE,SAAOS,oBAAAD,MAAAE,OAAA;CAAA,IAAAvB,IAAAC,EAAA,CAAA,GACL,EAAAa,QAAcvB,WAAWI,kBAAkB,GAACO;CAAA,AAAAF,EAAA,OAAAqB,OACVnB,KAAAF,EAAA,MAAlBE,KAAAd,SAAaiC,IAAI,GAACrB,EAAA,KAAAqB,MAAArB,EAAA,KAAAE;CAAlC,IAAAM,UAAgBN,IAAkBK,IAAAQ;CAElCvB,AAFkCQ,EAAA,OAAAuB,SAAAvB,EAAA,OAAAQ,WAAAR,EAAA,OAAAc,OAExBP,WAAA;EACR,IAAIgB,UAAU,MAAI;GAChBT,IAAIN,SAAS,IAAI;GAAC;EAAA;EAGU,OAA9BM,IAAIN,SAAS,EAAAK,SAAUU,MAAK,CAAC,SAChBT,IAAIN,SAAS,IAAI;CAAC,GAC9BO,KAAA;EAACD;EAAKN;EAASe;CAAK,GAACvB,EAAA,KAAAuB,OAAAvB,EAAA,KAAAQ,SAAAR,EAAA,KAAAc,KAAAd,EAAA,KAAAO,IAAAP,EAAA,KAAAe,OAAAR,KAAAP,EAAA,IAAAe,KAAAf,EAAA,KAPxBR,UAAUe,IAOPQ,EAAqB;AAAC;AC3C3B,MAAM0C,2CAA2B,IAAIf,KAAK;AAE1C,SAAOgB,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAvB,aAAAE,kBAAAsB,cAAAzB,IAAAM,UAAAE,cAAAE,iBAAAE,aAAAC,UAAAa,WAAAZ,YAAAC,WAAAC,UAAAE,eAAAC,iBAAAjB;CAAA,AAAAqB,EAAA,OAAAD,SAoBIrB,cAAAsB,EAAA,IAAApB,mBAAAoB,EAAA,IAAAE,eAAAF,EAAA,IAAAvB,KAAAuB,EAAA,IAAAjB,WAAAiB,EAAA,IAAAf,eAAAe,EAAA,IAAAb,kBAAAa,EAAA,IAAAX,cAAAW,EAAA,IAAAV,WAAAU,EAAA,IAAAG,YAAAH,EAAA,KAAAT,aAAAS,EAAA,KAAAR,YAAAQ,EAAA,KAAAP,WAAAO,EAAA,KAAAL,gBAAAK,EAAA,KAAAJ,kBAAAI,EAAA,KAAArB,QAAAqB,EAAA,QAjBT,CAAAI,KAAAF,cAAAzB,IAAAC,aAAAE,kBAAAG,UAAAE,cAAAE,iBAAAE,aAAAC,UAAAC,YAAAC,WAAAC,UAAAE,eAAAhB,OAAAiB,oBAAAO,aAiBIJ,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAtB,aAAAsB,EAAA,KAAApB,kBAAAoB,EAAA,KAAAE,cAAAF,EAAA,KAAAvB,IAAAuB,EAAA,KAAAjB,UAAAiB,EAAA,KAAAf,cAAAe,EAAA,KAAAb,iBAAAa,EAAA,KAAAX,aAAAW,EAAA,KAAAV,UAAAU,EAAA,MAAAG,WAAAH,EAAA,MAAAT,YAAAS,EAAA,MAAAR,WAAAQ,EAAA,MAAAP,UAAAO,EAAA,MAAAL,eAAAK,EAAA,MAAAJ,iBAAAI,EAAA,MAAArB;CAET,IAAA,CAAA0B,YAAAC,iBAAoCrC,SAAwB,IAAI,GAEhE,EAAAsC,MAAYjC,eAAe,GAACkC;CAAA,AAAAR,EAAA,QAAAS,OAAAC,IAAA,2BAAA,KAElBF,WAAA;EAERF,cAAc,IAAI;CAAC,GACpBN,EAAA,MAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAHD7C,AAGCkC,EAAA,QAAArB,QAASgC,KAAAX,EAAA,OAAPW,KAAA,CAAChC,KAAK,GAACqB,EAAA,MAAArB,OAAAqB,EAAA,MAAAW,KAHV7C,UAAU0C,IAGPG,EAAO;CAAC,IAAAC;CAAA,AAAAZ,EAAA,QAAAK,cAAAL,EAAA,QAAAjB,YAAAiB,EAAA,QAAAb,mBAAAa,EAAA,QAAAR,aAAAQ,EAAA,QAAArB,SAGTiC,MAAAC,UAAA;EACE,IAAAC,iBAAuBD,MAAKE,cAAcpC,OAC1CqC,SAAeF,mBAAmB,KAAnB,OAA+B3B,gBAAgB2B,cAAc;EAE5E,AAAIE,WAAW,QACbjC,SAAS,IAAI,GAIFJ,UAAU,UAAjB0B,cACFC,cAAc,IAAI,KAEXU,OAAMC,UACflC,SAASS,UAAUwB,OAAMnC,IAAK,CAAC,IAE/ByB,cAAcQ,cAAc;CAC7B,GACFd,EAAA,MAAAK,YAAAL,EAAA,MAAAjB,UAAAiB,EAAA,MAAAb,iBAAAa,EAAA,MAAAR,WAAAQ,EAAA,MAAArB,OAAAqB,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;CAlBH,IAAAkB,8BAAoCN,IAoBnCO;CAAA,AAAAnB,EAAA,QAAAjB,YAAAiB,EAAA,QAAAR,aAGC2B,MAAAnC,aAAA;EACED,SAASC,WAAWQ,UAAUR,QAAe,IAApC,IAAqC;CAAC,GAChDgB,EAAA,MAAAjB,UAAAiB,EAAA,MAAAR,WAAAQ,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;CAHH,IAAAoB,yBAA+BD,IAO/Bf,MAAYpC,OAAgC,IAAI,GAACqD;CAEjDtD,AAFiDiC,EAAA,QAAAS,OAAAC,IAAA,2BAAA,KAI/CW,WAAMjB,IAAGkB,SAAQtB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA,KAFnBjC,oBACEmC,cACAmB,EACF;CAAC,IAAAE,aAAAC;CAAA,AAAAxB,EAAA,QAAAtB,eAAAsB,EAAA,QAAApB,oBAAAoB,EAAA,QAAAK,cAAAL,EAAA,QAAAb,mBAAAa,EAAA,QAAArB,SACD4C,cAAoBlB,aAAalB,gBAAgBkB,UAA8C,IAAhC1B,QAAQD,YAAYC,KAAY,IAAhC,MAE5C6C,KAAAnB,eAEfkB,aAAWN,UACTrC,iBAAiB2C,YAAW1C,IACxB,IAFNF,QAEOqB,EAAA,MAAAtB,aAAAsB,EAAA,MAAApB,kBAAAoB,EAAA,MAAAK,YAAAL,EAAA,MAAAb,iBAAAa,EAAA,MAAArB,OAAAqB,EAAA,MAAAuB,aAAAvB,EAAA,MAAAwB,OAAAD,cAAAvB,EAAA,KAAAwB,KAAAxB,EAAA;CAJX,IAAAZ,aAAmBoC,IASnBC,aAAmBF,aAAWrC,SAAX,MAA0BwC,IAAAC;CAC7C7D,AAD6CkC,EAAA,QAAAf,gBAAAe,EAAA,QAAAyB,cACnCC,WAAA;EACRzC,eAAewC,UAAU;CAAC,GACzBE,KAAA,CAAC1C,cAAcwC,UAAU,GAACzB,EAAA,MAAAf,cAAAe,EAAA,MAAAyB,YAAAzB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,OAAAD,KAAA1B,EAAA,KAAA2B,KAAA3B,EAAA,MAF7BlC,UAAU4D,IAEPC,EAA0B;CAKT,IAAAC,KAAA7B,MAAKL,gBAAemC;CAAA,AAAA7B,EAAA,QAAApB,oBAAAoB,EAAA,QAAAX,eAAAW,EAAA,QAAAO,KAMlCsB,KAAAxC,eACAkB,EAAE,+BAA+B,EAAAuB,SACtBlD,iBAAiBiB,wBAAwB,EACpD,CAAC,GAACG,EAAA,MAAApB,kBAAAoB,EAAA,MAAAX,aAAAW,EAAA,MAAAO,GAAAP,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAGG,IAAA+B,MAAAR,aAAW1C,MACNmD,MAAA5C,cAAA,IACF6C,MAAAC,EAAQ5C,UAGF6C,MAAAV,cAAA7B,iBAA6BwC;CAC7C,OAD6CpC,EAAA,QAAAoB,0BAAApB,EAAA,QAAAkB,+BAAAlB,EAAA,QAAAvB,MAAAuB,EAAA,QAAAD,MAAAL,kBAAAM,EAAA,QAAAG,aAAAH,EAAA,QAAAT,cAAAS,EAAA,QAAA+B,OAAA/B,EAAA,QAAAgC,OAAAhC,EAAA,QAAAiC,OAAAjC,EAAA,QAAAmC,OAAAnC,EAAA,QAAA6B,MAAA7B,EAAA,QAAAP,YAAAO,EAAA,QAAAL,iBAnB/CyC,MAAA,oBAAC,iBAAD;EAAc,GACRjC;EACY,gBAAAyB;EACZnD;EACQc;EACFE;EACKE;EAEb,aAAAkC;EAKGzB;EACE,OAAA2B;EACK,YAAAC;EACF,UAAAC;EACKf,eAAAA;EACLE,UAAAA;EACM,gBAAAe;CAA6B,CAAA,GAC7CnC,EAAA,MAAAoB,wBAAApB,EAAA,MAAAkB,6BAAAlB,EAAA,MAAAvB,IAAAuB,EAAA,MAAAD,MAAAL,gBAAAM,EAAA,MAAAG,WAAAH,EAAA,MAAAT,YAAAS,EAAA,MAAA+B,KAAA/B,EAAA,MAAAgC,KAAAhC,EAAA,MAAAiC,KAAAjC,EAAA,MAAAmC,KAAAnC,EAAA,MAAA6B,IAAA7B,EAAA,MAAAP,UAAAO,EAAA,MAAAL,eAAAK,EAAA,MAAAoC,OAAAA,MAAApC,EAAA,KApBFoC;AAoBE;ACjIN,MAAMiB,eAAeC,UAAkBf,MAAMe,OAAOjB,mBAAmB,GACjEkB,eAAaC,SAAelB,OAAOkB,MAAMnB,mBAAmB;;;;AAKlE,SAAOqB,UAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,UAAAC,UAAAC,YAAAC,cAAAX,OAAAY,IAAAC,MAAAC,oBAAyFT,OACzFU,aAAmBL,WAAUM,SAAoBD,cAA9BhC,qBACnB,EAAAkC,MAAY1B,eAAe,GAAC2B;CAAA,AAAAZ,EAAA,OAAAM,KAC4BM,KAAAZ,EAAA,MAAnBY,KAAA;EAAAC,MAAO;EAAOP;CAAI,GAACN,EAAA,KAAAM,IAAAN,EAAA,KAAAY;CAAxD,IAAAE,gBAAqCF,IAErC,CAAAG,YAAAC,iBAAoClC,SAAwB,IAAI;CAChEM,oBAAoBmB,MAAMQ,UAAU;CAAC,IAAAE;CAAA,AAAAjB,EAAA,OAAAG,WAKlCc,KAAAjB,EAAA,MAFDiB,MAAAC,aAAA;EACEf,SAASe,aAAa,OAAO/B,MAAsB,IAAZD,IAAIgC,QAAQ,CAAC;CAAC,GACtDlB,EAAA,KAAAG,UAAAH,EAAA,KAAAiB;CAHH,IAAAE,eAAqBF,IAKpBG;CAAA,AAAApB,EAAA,OAAAS,aAE4EW,KAAApB,EAAA,MAAxCoB,MAAAxB,SAAgBlB,OAAOkB,MAAMa,UAAU,GAACT,EAAA,KAAAS,YAAAT,EAAA,KAAAoB;CAA7E,IAAAC,mBAAyBD,IAAmEE;CAAA,AAAAtB,EAAA,OAAAS,aAGrCa,KAAAtB,EAAA,MAArDsB,MAAAC,eAAwB5C,MAAM4C,YAAYd,UAAU,GAACT,EAAA,KAAAS,YAAAT,EAAA,KAAAsB;CADvD,IAAAE,kBAAwBF,IAGvBG;CAAA,AAAAzB,EAAA,OAAAW,IAEwEc,KAAAzB,EAAA,MAApByB,KAAAlC,kBAAkBoB,CAAC,GAACX,EAAA,KAAAW,GAAAX,EAAA,KAAAyB;CAAzE,IAAAC,iBAAqDD,IAA0BE;CAkB3E,OAlB2E3B,EAAA,QAAA0B,kBAAA1B,EAAA,QAAAK,gBAAAL,EAAA,QAAAqB,oBAAArB,EAAA,QAAAmB,gBAAAnB,EAAA,QAAAwB,mBAAAxB,EAAA,QAAAE,YAAAF,EAAA,QAAAI,WAAAwB,eAAA5B,EAAA,QAAAc,iBAAAd,EAAA,QAAAQ,mBAAAR,EAAA,QAAAN,SAE7EiC,KAAA,oBAAC,qBAAD;EAAoB,GACdtB;EACSZ;EACK4B;EACRF,UAAAA;EACIH,cAAAA;EACGQ;EAEJ,aAAApB,WAAUwB;EACPF;EACNxB;EACE,YAAA;EACDP,WAAAA;EACJD;EACQoB;EACEN;CAAe,CAAA,GAChCR,EAAA,MAAA0B,gBAAA1B,EAAA,MAAAK,cAAAL,EAAA,MAAAqB,kBAAArB,EAAA,MAAAmB,cAAAnB,EAAA,MAAAwB,iBAAAxB,EAAA,MAAAE,UAAAF,EAAA,MAAAI,WAAAwB,aAAA5B,EAAA,MAAAc,eAAAd,EAAA,MAAAQ,iBAAAR,EAAA,MAAAN,OAAAM,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KAhBF2B;AAgBE;AC7DN,MAAMI,6BAA6BD,OAAOD,YAAY,CAAC,CAAA,WAAA;;;6ICOjDS,SAAOL,OAAOM,IAAAA,WAAAA;;;AAAG,CAAA,CAAA;;AAsBvB,SAAOC,gBAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAyB,EAAAR,UAAAC,YAAAC,UAAAO,OAAAH,IAAuBJ,WAAAO,OAAAC,KAAAA,IAAA,WAAAD,IAAmBE;CAI/D,OAJ+DJ,EAAA,OAAAP,YAAAO,EAAA,OAAAN,cAAAM,EAAA,OAAAL,YAEtES,KAAA,oBAAC,QAAD;EAAwBV,oBAAAA;EAA2BC,iBAAAA;EAChDF;CADE,CAAA,GAEEO,EAAA,KAAAP,UAAAO,EAAA,KAAAN,YAAAM,EAAA,KAAAL,UAAAK,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAFPI;AAEO;;;;;;;;ACQX,SAAgB2C,sBAAsBC,IAAoB;CACxD,IAAI;EAEF,OADiB/B,WAAe+B,EACzBC,CAAQ,CACZC,KAAKC,YACA9C,aAAa8C,OAAO,IACf,OAAOA,QAAQC,SAEpB,OAAOD,WAAY,WACd,OAAOA,YAETA,OACR,CAAC,CACDE,KAAK,GAAG;CACb,QAAQ;EAEN,OAAOL,GAAGM,QAAQ,aAAa,GAAG;CACpC;AACF;AAEA,MAAMC,OAAO/B,OAAOjB,IAAI,CAAC,CAAA,WAAA;;;oBAyBnByD,aAAaC,SACVA,KAAKE,YAAY;AAG1B,SAASC,aAAaC,UAAyB,CAAC,GAAkB;CAChE,IAAMT,kBACJS,QAAQT,mBAAmB/C,sBAAsBwD,QAAQT,eAAe,IACpES,QAAQT,kBACRU,KAAAA;CAMN,OALID,QAAQT,mBAAmB,CAACA,mBAC9BW,QAAQC,KACN,sBAAsBH,QAAQT,gBAAe,8FAC/C,GAEK;EACLH,YAAYY,QAAQZ,cAAc/C;EAClCgD,YAAYW,QAAQX,cAAc/C;EAClCgD,UAAW,cAAcU,WAAWI,OAAOJ,QAAQV,QAAQ,KAAM;EACjEC;EACAC,qBACEQ,QAAQR,wBAAwBS,KAAAA,KAAmBD,QAAQR;CAC/D;AACF;AAEA,MAAMa,mBACHC,kBACAC,cAAmC;CAElC,IAAM,EAACX,MAAMY,iBAAgB/D,MAAM8D,WAAWN,KAAAA,GAAWK,YAAY;CAIrE,OAHIE,gBAAgB/B,YAAY+B,YAAY,IACnC;EAACC,SAAS;EAAMb,MAAMY;CAAY,IAEpC;EAACC,SAAS;EAAOC,OAAO,wBAAwBH,UAAS;CAAG;AACrE;AAIF,SAASI,gBAAgBC,YAAoBtB,UAAkB;CAC7D,IAAI,CAACA,YAAYA,aAAa,GAC5B,OAAOsB;CAGT,IAAMhB,OAAO9C,SAAS8D,UAAU,GAC1BC,UAAUhE,WAAW+C,IAAI,GACzBkB,WAAWD,UAAUvB;CAK3B,OAAOK,UAJHmB,aAAa,IAIAlB,OAHE7C,WAAW6C,MAAMiB,UAAUC,QAAQ,CAAC;AAIzD;;;;AAKA,SAAOC,cAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,UAAAC,YAAAC,OAAAC,cAAA3C,IAAA4C,YAAAC,iBAAAC,SAAAC,MAAAC,UAAAC,OAWIZ,OADFW,WAAAC,OAAA3B,KAAAA,IAAAnC,cAAA8D,IAGF,CAAAC,YAAAC,iBAAoC5E,SAAwB,IAAI;CAChEmB,oBAAoBqD,MAAMG,UAAU;CAEpC,IAAA,EAAAE,SAAAC,qBAAAC,UAAAC,SAAAC,cAAAC,cAAAC,SAAAC,iBAAAC,SAQIrE,gBAAgB,GAACsE;CAAA,AAAAvB,EAAA,OAAAG,WAAApB,UAOewC,KAAAvB,EAAA,MAAhCuB,KAAAzC,aAAaqB,WAAUpB,OAAQ,GAACiB,EAAA,KAAAG,WAAApB,SAAAiB,EAAA,KAAAuB;CANpC,IAAA,EAAApD,YAAAC,YAAAC,UAAAC,iBAAAC,qBAAAiD,OAMID,IADFhD,sBAAAiD,OAAAxC,KAAAA,KAAAwC,IAEF,EAAAC,UAAgBtB,YAChB,EAAAuB,MAAYhF,eAAe,GAACiF;CAAA,AAAA3B,EAAA,OAAA4B,OAAAC,IAAA,2BAAA,KACHF,KAAA,CAAC,KAAK,GAAC3B,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CACC,IAAA+B,KADrB/E,aAAa2E,EACQG,GAAaE;CAAA,AAAAhC,EAAA,OAAA+B,KAACC,KAAAhC,EAAA,MAA7BgC,KAAApF,eAAemF,EAAa,GAAC/B,EAAA,KAAA+B,IAAA/B,EAAA,KAAAgC;CAA/C,IAAAC,YAAkBD,IAA6BE;CAAA,AAAAlC,EAAA,OAAAtC,KAOEwE,KAAAlC,EAAA,MAAzBkC,KAAAzE,sBAAsBC,EAAE,GAACsC,EAAA,KAAAtC,IAAAsC,EAAA,KAAAkC;CAAzC,IAAAC,KAAA,GAAGF,UAAS,GAAIC,KAA4B3D,sBAAA,KAAA,YAAqC6D;CAAA,AAAApC,EAAA,OAAAI,QACpCgC,KAAApC,EAAA,MAAnCoC,KAAAhC,QAAA,IAAYxB,KAAKwB,KAAiB,IAAlCpB,KAAAA,GAAmCgB,EAAA,KAAAI,OAAAJ,EAAA,KAAAoC;CAAA,IAAAC;CAAA,AAAArC,EAAA,OAAA1B,mBAAA0B,EAAA,QAAAmC,MAAAnC,EAAA,QAAAoC,MAN5CC,KAAA;EAAAC,MACC;EAA4BC,iBACjBjE;EAAeZ,IAG5ByE;EAAiFK,cACvEJ;CAChB,GAACpC,EAAA,KAAA1B,iBAAA0B,EAAA,MAAAmC,IAAAnC,EAAA,MAAAoC,IAAApC,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CARH,IAAAyC,gBACSJ,IAWT,EAAAK,aAAmBjG,YAAYgG,aAAa,GAACE;CAAA,AAAA3C,EAAA,QAAAE,YAAAF,EAAA,QAAA3B,YAG3CsE,OAAAC,aAAA;EACE,IAAAjE,OAAWiE;EAKX1C,AAJIvB,SAAS,QAAQN,WAAW,MAC9BM,OAAOe,gBAAgBf,MAAMN,QAAQ,IAGvC6B,SAASvB,SAAS,OAAOxB,MAAkB,IAARD,IAAIyB,IAAI,CAAC;CAAC,GAC9CqB,EAAA,MAAAE,UAAAF,EAAA,MAAA3B,UAAA2B,EAAA,MAAA2C,OAAAA,MAAA3C,EAAA;CARH,IAAA6C,eAAqBF,KAUpBG;CAAA,AAAA9C,EAAA,QAAA7B,cAAA6B,EAAA,QAAA5B,cAAA4B,EAAA,QAAA0C,SAAAK,QAGCD,OAAAE,WAAgB1H,OAAOqD,QAAM,GAAGR,WAAU,GAAIC,cAAc,EAAAsE,UAAWA,SAAQK,KAAK,CAAC,GAAC/C,EAAA,MAAA7B,YAAA6B,EAAA,MAAA5B,YAAA4B,EAAA,MAAA0C,SAAAK,MAAA/C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CADxF,IAAAiD,mBAAyBH,KAGxBI;CAAA,AAAAlD,EAAA,QAAA0C,SAAAK,OAE+DG,MAAAlD,EAAA,OAA9BkD,MAAA9D,gBAAgBsD,SAAQK,IAAK,GAAC/C,EAAA,MAAA0C,SAAAK,MAAA/C,EAAA,MAAAkD;CAAhE,IAAAC,cAAkCD,KAAgDE;CAAA,AAAApD,EAAA,QAAA7B,cAAA6B,EAAA,QAAA5B,cAAA4B,EAAA,QAAA0C,SAAAK,QAGhFK,OAAAC,eACE7H,MAAM6H,YAAY,GAAGlF,WAAU,GAAIC,cAAcsE,SAAQK,IAAK,GAAC/C,EAAA,MAAA7B,YAAA6B,EAAA,MAAA5B,YAAA4B,EAAA,MAAA0C,SAAAK,MAAA/C,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAFnE,IAAAsD,kBAAwBF,KAIvBG;CAAA,AAAAvD,EAAA,QAAA0B,IACwE6B,MAAAvD,EAAA,OAApBuD,MAAAhG,kBAAkBmE,CAAC,GAAC1B,EAAA,MAAA0B,GAAA1B,EAAA,MAAAuD;CAAzE,IAAAC,iBAAqDD,KAKpCE,MAAA,SAAS/F,MASFgG,MAAAC,EAAQ7C,SAAQ8C;CAAA,AAAA5D,EAAA,QAAAzB,uBAAAyB,EAAA,QAAA1B,mBAAA0B,EAAA,QAAAG,WAAApB,SAAAR,uBAAAyB,EAAA,QAAA0B,KAAA1B,EAAA,QAAA0C,SAAAmB,mBAAA7D,EAAA,QAAA0C,SAAAoB,UAAA9D,EAAA,QAAAyC,iBAAAzC,EAAA,QAAAyB,SAetBmC,OAACtF,mBAAmB6B,WAAUpB,SAA6BR,wBAAK,OAC9D,oBAAC,4BAAD,EAAA,UACE,oBAAC,gBAAD;EAEI,gBAAA,oBAAC,WAAD;GACKmD;GACM,SAAA;GACD,QAAA;IAAAD;IAAAoC,iBAEWnB,SAAQmB;IAAgBC,QACjCpB,SAAQoB;GAClB;EAAC,CAAA;EAGgBvF;EACrB,mBAAA;EACekE;CAAa,CAAA,EAfL,CAAA,GAkB5BzC,EAAA,MAAAzB,qBAAAyB,EAAA,MAAA1B,iBAAA0B,EAAA,MAAAG,WAAApB,SAAAR,qBAAAyB,EAAA,MAAA0B,GAAA1B,EAAA,MAAA0C,SAAAmB,iBAAA7D,EAAA,MAAA0C,SAAAoB,QAAA9D,EAAA,MAAAyC,eAAAzC,EAAA,MAAAyB,OAAAzB,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAAtC,MAAAsC,EAAA,QAAAG,WAAA6D,cAAAhE,EAAA,QAAAG,WAAA8D,eAAAjE,EAAA,QAAAG,WAAAsB,SAAAzB,EAAA,QAAA4D,OAAA5D,EAAA,QAAAM,cA7BPyD,MAAA,oBAAC,OAAD;EAAY,KAAA;EACV,UAAA,oBAAC,qBAAD;GACc,YAAA5D,WAAU6D;GACT,aAAA7D,WAAU8D;GACdvG,SAAAA;GACG4C;GACL,OAAAH,WAAUsB;GAIf,QAAAmC;EAmBC,CAAA;CA7BD,CAAA,GAgCE5D,EAAA,MAAAtC,IAAAsC,EAAA,MAAAG,WAAA6D,YAAAhE,EAAA,MAAAG,WAAA8D,aAAAjE,EAAA,MAAAG,WAAAsB,OAAAzB,EAAA,MAAA4D,KAAA5D,EAAA,MAAAM,YAAAN,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAAA,IAAAkE;CAAA,AAAAlE,EAAA,QAAAoB,WAAApB,EAAA,QAAAgB,YAAAhB,EAAA,QAAAiB,WAAAjB,EAAA,QAAAtC,MAAAsC,EAAA,QAAAU,YAAAV,EAAA,QAAAsB,QAAAtB,EAAA,QAAA0D,OAAA1D,EAAA,QAAA+D,OA1CdG,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAa,UAAA;EACtB,UAAA,oBAAC,qBAAD;GACuBlD,qBAAAA;GACJM,iBAAAA;GACRF;GACK,cAAAsC;GACAzC,cAAAA;GACJP;GACDhD,SAAAA;GAEP,SAAAqG;EAgCQ,CAAA;CA1CV,CAAA,GA6CE/D,EAAA,MAAAoB,SAAApB,EAAA,MAAAgB,UAAAhB,EAAA,MAAAiB,SAAAjB,EAAA,MAAAtC,IAAAsC,EAAA,MAAAU,UAAAV,EAAA,MAAAsB,MAAAtB,EAAA,MAAA0D,KAAA1D,EAAA,MAAA+D,KAAA/D,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAAA,IAAAmE;CAAA,AAAAnE,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,KACNsC,MAAA,oBAAC,iBAAD;EAA6B,YAAA;EAAY,UAAA;CAAK,CAAA,GAAGnE,EAAA,MAAAmE,OAAAA,MAAAnE,EAAA;CACtB,IAAAoE,MAAAT,EAAQ7C,SAAQuD;CAAA,AAAArE,EAAA,QAAAwD,kBAAAxD,EAAA,QAAAmD,eAAAnD,EAAA,QAAAK,gBAAAL,EAAA,QAAAiD,oBAAAjD,EAAA,QAAA6C,gBAAA7C,EAAA,QAAAsD,mBAAAtD,EAAA,QAAAG,WAAAmE,eAAAtE,EAAA,QAAA3B,YAAA2B,EAAA,QAAAyC,iBAAAzC,EAAA,QAAAO,mBAAAP,EAAA,QAAAI,SACzCiE,MAAA,oBAAA,OAAA;EAAiB,eAAA;EACf,UAAA,oBAAA,OAAA;GAAiB,eAAA;GACf,UAAA,oBAAC,qBAAD;IAAoB,GACdhE;IACYmD;IACHL;IACKF;IACRJ,UAAAA;IACIhC,cAAAA;IACGyC;IAEJ,aAAAnD,WAAUmE;IACZ5F;IACDL;IACV,YAAA;IACO+B;IACQqC;IACElC;GAAe,CAAA;EAE9B,CAAA;CACF,CAAA,GAAAP,EAAA,MAAAwD,gBAAAxD,EAAA,MAAAmD,aAAAnD,EAAA,MAAAK,cAAAL,EAAA,MAAAiD,kBAAAjD,EAAA,MAAA6C,cAAA7C,EAAA,MAAAsD,iBAAAtD,EAAA,MAAAG,WAAAmE,aAAAtE,EAAA,MAAA3B,UAAA2B,EAAA,MAAAyC,eAAAzC,EAAA,MAAAO,iBAAAP,EAAA,MAAAI,OAAAJ,EAAA,MAAAqE,OAAAA,MAAArE,EAAA;CAAA,IAAAuE;CAAA,AAAAvE,EAAA,QAAAQ,WAAAR,EAAA,QAAAS,QAAAT,EAAA,QAAAoE,OAAApE,EAAA,QAAAqE,OArBRE,MAAA,oBAAC,iBAAD;EAA2B,UAAAH;EAA6B5D,WAAAA;EAAeC;EACrE4D,UAAAA;CADc,CAAA,GAsBErE,EAAA,MAAAQ,SAAAR,EAAA,MAAAS,MAAAT,EAAA,MAAAoE,KAAApE,EAAA,MAAAqE,KAAArE,EAAA,MAAAuE,OAAAA,MAAAvE,EAAA;CAAA,IAAAwE;CAAA,AAAAxE,EAAA,QAAAkE,OAAAlE,EAAA,QAAAuE,OAtEpBC,MAAA,qBAAC,MAAD;EAAiB,WAAA;EAAjB,UAAA;GACEN;GA8CAC;GACAI;EAhDG;KAuEEvE,EAAA,MAAAkE,KAAAlE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAwE,OAAAA,MAAAxE,EAAA;CAAA,IAAAyE;CACF,OADEzE,EAAA,QAAAkB,gBAAAlB,EAAA,QAAAmB,gBAAAnB,EAAA,QAAAyD,OAAAzD,EAAA,QAAAwE,OA7ETC,MAAA,oBAAC,MAAD;EACgBvD;EACAC;EACD,eAAAsC;EACL,QAAA;EAERe,UAAAA;CANG,CAAA,GA8EExE,EAAA,MAAAkB,cAAAlB,EAAA,MAAAmB,cAAAnB,EAAA,MAAAyD,KAAAzD,EAAA,MAAAwE,KAAAxE,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA,KA9EPyE;AA8EO"}
1
+ {"version":3,"file":"DateInputs-DioSKqY0.js","names":["EMPTY_OBJECT","Record","Object","freeze","EMPTY_ARRAY","clsx","ComponentProps","changeBar","changeBarButton","changeBarButtonInteractive","changeBarButtonWithHoverEffect","changeBarMarker","changeBarWrapper","changeBarWrapperDisabled","changeBarWrapperFocused","changeBarWrapperNotChanged","changeBarWrapperReviewOpen","fieldWrapper","ChangeBarWrapper","props","$","_c","changed","className","disabled","hasFocus","isReviewChangeOpen","restProps","t0","t1","t2","t3","t4","t5","FieldWrapper","ChangeBar","style","zIndex","ChangeBarMarker","ChangeBarButton","isInteractive","withHoverEffect","useLayer","ReactNode","useContext","useMemo","ReviewChangesContext","Tooltip","useTranslation","ChangeBar","ChangeBarButton","ChangeBarMarker","ChangeBarWrapper","FieldWrapper","ElementWithChangeBar","props","$","_c","children","disabled","hasFocus","isChanged","withHoverEffect","t0","isInteractive","t1","undefined","onOpenReviewChanges","isReviewChangesOpen","zIndex","t","t2","changeBar","t3","t4","Path","Text","useLayer","PathUtils","ComponentProps","HTMLProps","memo","MouseEvent","useCallback","useContext","useMemo","useState","deepCompare","ReviewChangesContext","EMPTY_ARRAY","pathToString","DEBUG","ElementWithChangeBar","useChangeIndicatorsReporter","ChangeBarWrapper","props","$","_c","children","disabled","hasFocus","isChanged","isInteractive","onMouseEnterProp","onMouseLeaveProp","restProps","t0","withHoverEffect","onMouseEnter","onMouseLeave","path","undefined","layer","hasHover","setHover","t1","event","t2","event_0","element","setElement","t3","toString","reporterId","t4","zIndex","Boolean","hasRevertHover","reporterGetSnapshot","t5","t6","t7","ChangeIndicatorProps","ChangeIndicator","Path","PathSegment","FormDecPatch","FormDiffMatchPatch","FormIncPatch","FormInsertPatch","FormInsertPatchPosition","FormSetIfMissingPatch","FormSetPatch","FormUnsetPatch","SANITY_PATCH_TYPE","Symbol","for","setIfMissing","value","path","patchType","type","insert","items","position","set","unset","diffMatchPatch","inc","amount","dec","prefixPath","patch","T","segment","Path","toString","pathToString","ReactNode","useCallback","useContext","useEffect","useMemo","useState","ParseErrorsContext","SetParseError","ParseError","ParseErrorsProvider","props","$","_c","t0","Symbol","for","errors","setErrors","t1","pathKey","value","prev","next","existing","message","set","t2","value_0","t3","children","useParseErrors","useParseErrorForPath","path","useReportParseError","error","FocusEvent","useCallback","useEffect","useImperativeHandle","useRef","useState","RefAttributes","CalendarLabels","DateTimeInput","TimeZoneScope","useTranslation","ParseResult","CommonDateTimeInputProps","id","deserialize","value","formatInputValue","date","Date","onChange","nextDate","onParseError","error","parseInputValue","inputValue","placeholder","readOnly","selectTime","serialize","timeStep","calendarLabels","timeZoneScope","validationError","DEFAULT_PLACEHOLDER_TIME","CommonDateTimeInput","props","$","_c","forwardedRef","restProps","ref","localValue","setLocalValue","t","t0","Symbol","for","t1","t2","event","nextInputValue","currentTarget","result","isValid","handleDatePickerInputChange","t3","handleDatePickerChange","t4","current","parseResult","t5","parseError","t6","t7","t8","t9","example","t10","t11","t12","Boolean","t13","t14","DEFAULT_DATE_FORMAT","format","parse","useCallback","useMemo","useState","CalendarLabels","TimeZoneScope","useTranslation","set","unset","useReportParseError","StringInputProps","CommonDateTimeInput","getCalendarLabels","DateInputProps","deserialize","value","serialize","date","Date","DateInput","props","$","_c","readOnly","onChange","schemaType","elementProps","id","path","validationError","dateFormat","options","t","t0","type","timeZoneScope","parseError","setParseError","t1","nextDate","handleChange","t2","formatInputValue","t3","inputValue","parseInputValue","t4","calendarLabels","t5","placeholder","ElementQuery","styled","TimeZoneButtonElementQuery","ReactNode","styled","FieldStatusProps","children","maxAvatars","position","Root","div","FormFieldStatus","t0","$","_c","t1","undefined","t2","isKeySegment","Box","Card","Flex","Stack","DEFAULT_DATE_FORMAT","DEFAULT_TIME_FORMAT","format","isValidTimeZoneString","parse","ParseResult","fromString","pathFromString","getMinutes","parseISO","setMinutes","useCallback","useMemo","useState","styled","ChangeIndicator","CalendarLabels","TimeZoneButton","TimeZoneButtonElementQuery","FormFieldHeaderText","TimeZoneScopeType","useTimeZone","useTranslation","Translate","getPublishedId","EMPTY_ARRAY","FormFieldBaseHeader","FormFieldStatus","useFormValue","useFieldActions","set","unset","useReportParseError","StringInputProps","CommonDateTimeInput","getCalendarLabels","isValidDate","sanitizeTimeZoneKeyId","id","segments","map","segment","_key","join","replace","Root","ParsedOptions","dateFormat","timeFormat","timeStep","displayTimeZone","allowTimeZoneSwitch","SchemaOptions","DateTimeInputProps","serialize","date","Date","toISOString","parseOptions","options","undefined","console","warn","Number","getDeserializer","timeZoneName","isoString","deserialized","isValid","error","enforceTimeStep","dateString","minutes","leftOver","DateTimeInput","props","$","_c","onChange","schemaType","value","elementProps","validation","validationError","changed","path","presence","t0","parseError","setParseError","focused","__internal_comments","comments","hovered","onMouseEnter","onMouseLeave","actions","__internal_slot","slot","t1","t2","title","t","t3","Symbol","for","_id","t4","t5","published","t6","t7","t8","t9","type","defaultTimeZone","relativeDate","timeZoneScope","timeZone","t10","nextDate","handleChange","t11","name","date_0","formatInputValue","t12","deserialize","t13","inputValue","parseInputValue","t14","calendarLabels","t15","t16","Boolean","t17","alternativeName","offset","t18","deprecated","description","t19","t20","t21","t22","placeholder","t23","t24","t25"],"sources":["../src/core/util/empty.ts","../src/core/changeIndicators/ElementWithChangeBar.css.ts","../src/core/changeIndicators/ElementWithChangeBar.styled.tsx","../src/core/changeIndicators/ElementWithChangeBar.tsx","../src/core/changeIndicators/ChangeIndicator.tsx","../src/core/form/patch/patch.ts","../src/core/form/studio/contexts/ParseErrors.tsx","../src/core/form/inputs/DateInputs/CommonDateTimeInput.tsx","../src/core/form/inputs/DateInputs/DateInput.tsx","../src/core/components/timeZone/timeZoneButton/TimeZoneButtonElementQuery.tsx","../src/core/form/components/formField/FormFieldStatus.tsx","../src/core/form/inputs/DateInputs/DateTimeInput.tsx"],"sourcesContent":["/** @internal */\nexport const EMPTY_OBJECT: Record<string, unknown> = Object.freeze({})\n\n/** @internal */\nexport const EMPTY_ARRAY: never[] = Object.freeze([]) as never[]\n","import {style} from '@vanilla-extract/css'\n\nexport const changeBarWrapper = style({\n 'vars': {\n '--change-bar-offset': '4px',\n },\n 'display': 'flex',\n 'position': 'relative',\n '@media': {\n '(hover: hover)': {\n selectors: {\n '&:hover': {\n zIndex: 10,\n },\n },\n },\n },\n})\n\nexport const changeBarWrapperDisabled = style({})\nexport const changeBarWrapperFocused = style({})\nexport const changeBarWrapperNotChanged = style({})\nexport const changeBarWrapperReviewOpen = style({})\n\nexport const changeBarMarker = style({\n 'position': 'absolute',\n 'top': '-1px',\n 'left': 'var(--change-bar-offset)',\n 'width': '1px',\n 'bottom': '-1px',\n 'backgroundColor': 'var(--card-bg-color)',\n 'selectors': {\n '&::after': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: '1px',\n left: 0,\n width: '1px',\n bottom: '1px',\n backgroundColor: 'var(--card-badge-caution-dot-color)',\n borderRadius: '0.5px',\n },\n [`${changeBarWrapper} &::after`]: {\n opacity: 0.5,\n },\n [`${changeBarWrapperFocused} &::after`]: {\n opacity: 1,\n },\n /* hide when field is not changed */\n [`${changeBarWrapperNotChanged} &::after`]: {\n opacity: 0,\n pointerEvents: 'none',\n },\n [`${changeBarWrapperDisabled} &::after`]: {\n display: 'none',\n },\n },\n '@media': {\n '(hover: hover)': {\n selectors: {\n [`${changeBarWrapper}:hover &::after`]: {\n opacity: 1,\n },\n },\n },\n },\n})\n\nexport const changeBarButton = style({\n appearance: 'none',\n border: 0,\n outline: 0,\n display: 'block',\n padding: 0,\n background: 'transparent',\n opacity: 0,\n position: 'absolute',\n height: '100%',\n left: 'calc(-0.25rem + var(--change-bar-offset))',\n width: 'calc(1rem - 1px)',\n transition: 'opacity 250ms',\n selectors: {\n '&:focus': {\n border: 0,\n outline: 0,\n },\n /* hide the change bar button when review changes is open */\n [`${changeBarWrapperReviewOpen} &`]: {\n opacity: 0,\n },\n },\n})\n\nexport const changeBarButtonInteractive = style({\n cursor: 'pointer',\n pointerEvents: 'all',\n})\n\nexport const changeBarButtonWithHoverEffect = style({\n '@media': {\n '(hover: hover)': {\n selectors: {\n '&:hover': {\n opacity: 0.2,\n },\n },\n },\n },\n})\n\nexport const fieldWrapper = style({\n flexGrow: 1,\n minWidth: 0,\n})\n\nexport const changeBar = style({\n position: 'relative',\n opacity: 1,\n transition: 'opacity 100ms',\n})\n","import {clsx} from 'clsx'\nimport {type ComponentProps} from 'react'\n\nimport {\n changeBar,\n changeBarButton,\n changeBarButtonInteractive,\n changeBarButtonWithHoverEffect,\n changeBarMarker,\n changeBarWrapper,\n changeBarWrapperDisabled,\n changeBarWrapperFocused,\n changeBarWrapperNotChanged,\n changeBarWrapperReviewOpen,\n fieldWrapper,\n} from './ElementWithChangeBar.css'\n\nexport function ChangeBarWrapper(\n props: ComponentProps<'div'> & {\n changed?: boolean\n disabled?: boolean\n hasFocus?: boolean\n isReviewChangeOpen: boolean\n },\n) {\n const {changed, className, disabled, hasFocus, isReviewChangeOpen, ...restProps} = props\n\n return (\n <div\n {...restProps}\n className={clsx(\n changeBarWrapper,\n disabled && changeBarWrapperDisabled,\n hasFocus && changeBarWrapperFocused,\n !changed && changeBarWrapperNotChanged,\n isReviewChangeOpen && changeBarWrapperReviewOpen,\n className,\n )}\n />\n )\n}\n\nexport function FieldWrapper(props: ComponentProps<'div'>) {\n const {className, ...restProps} = props\n\n return <div {...restProps} className={clsx(fieldWrapper, className)} />\n}\n\nexport function ChangeBar(props: ComponentProps<'div'> & {zIndex: number}) {\n const {className, style, zIndex, ...restProps} = props\n\n return <div {...restProps} className={clsx(changeBar, className)} style={{...style, zIndex}} />\n}\n\nexport function ChangeBarMarker(props: ComponentProps<'div'>) {\n const {className, ...restProps} = props\n\n return <div {...restProps} className={clsx(changeBarMarker, className)} />\n}\n\nexport function ChangeBarButton(\n props: ComponentProps<'button'> & {isInteractive?: boolean; withHoverEffect?: boolean},\n) {\n const {className, isInteractive, withHoverEffect, ...restProps} = props\n\n return (\n <button\n {...restProps}\n className={clsx(\n changeBarButton,\n withHoverEffect && changeBarButtonWithHoverEffect,\n isInteractive && changeBarButtonInteractive,\n className,\n )}\n />\n )\n}\n","import {useLayer} from '@sanity/ui'\nimport {type ReactNode, useContext, useMemo} from 'react'\nimport {ReviewChangesContext} from 'sanity/_singletons'\n\nimport {Tooltip} from '../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../i18n/hooks/useTranslation'\nimport {\n ChangeBar,\n ChangeBarButton,\n ChangeBarMarker,\n ChangeBarWrapper,\n FieldWrapper,\n} from './ElementWithChangeBar.styled'\n\nexport function ElementWithChangeBar(props: {\n children: ReactNode\n disabled?: boolean\n hasFocus?: boolean\n isChanged?: boolean\n withHoverEffect?: boolean\n isInteractive?: boolean\n}) {\n const {\n children,\n disabled,\n hasFocus,\n isChanged,\n withHoverEffect = true,\n isInteractive = true,\n } = props\n\n const {onOpenReviewChanges, isReviewChangesOpen} = useContext(ReviewChangesContext)\n const {zIndex} = useLayer()\n const {t} = useTranslation()\n\n const changeBar = useMemo(\n () =>\n disabled || !isChanged ? null : (\n <ChangeBar data-testid=\"change-bar\" zIndex={zIndex}>\n <ChangeBarMarker data-testid=\"change-bar__marker\" />\n <Tooltip content={t('changes.change-bar.aria-label')} portal disabled={!isInteractive}>\n <ChangeBarButton\n aria-label={t('changes.change-bar.aria-label')}\n data-testid=\"change-bar__button\"\n onClick={isReviewChangesOpen ? undefined : onOpenReviewChanges}\n tabIndex={-1}\n type=\"button\"\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n />\n </Tooltip>\n </ChangeBar>\n ),\n [\n disabled,\n isChanged,\n isInteractive,\n isReviewChangesOpen,\n onOpenReviewChanges,\n t,\n withHoverEffect,\n zIndex,\n ],\n )\n\n return (\n <ChangeBarWrapper\n data-testid=\"change-bar-wrapper\"\n changed={isChanged}\n disabled={disabled}\n hasFocus={hasFocus}\n isReviewChangeOpen={isReviewChangesOpen}\n >\n <FieldWrapper data-testid=\"change-bar__field-wrapper\">{children}</FieldWrapper>\n {changeBar}\n </ChangeBarWrapper>\n )\n}\n","import {type Path} from '@sanity/types'\nimport {Text, useLayer} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {\n type ComponentProps,\n type HTMLProps,\n memo,\n type MouseEvent,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport deepCompare from 'react-fast-compare'\nimport {ReviewChangesContext} from 'sanity/_singletons'\n\nimport {EMPTY_ARRAY} from '../util/empty'\nimport {pathToString} from '../validation/util/pathToString'\nimport {DEBUG} from './constants'\nimport {ElementWithChangeBar} from './ElementWithChangeBar'\nimport {useChangeIndicatorsReporter} from './tracker'\n\nconst ChangeBarWrapper = memo(function ChangeBarWrapper(\n props: Omit<ComponentProps<'div'>, 'onChange'> & {\n disabled?: boolean\n path: Path\n hasFocus: boolean\n isChanged?: boolean\n withHoverEffect?: boolean\n isInteractive?: boolean\n },\n) {\n const {\n children,\n disabled,\n hasFocus,\n isChanged,\n onMouseEnter: onMouseEnterProp,\n onMouseLeave: onMouseLeaveProp,\n path = EMPTY_ARRAY,\n withHoverEffect,\n isInteractive,\n ...restProps\n } = props\n const layer = useLayer()\n const [hasHover, setHover] = useState(false)\n const onMouseEnter = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n onMouseEnterProp?.(event)\n setHover(true)\n },\n [onMouseEnterProp],\n )\n const onMouseLeave = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n onMouseLeaveProp?.(event)\n setHover(false)\n },\n [onMouseLeaveProp],\n )\n\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const reporterId = useMemo(\n () => (disabled || !element ? null : `field-${PathUtils.toString(path)}`),\n [disabled, element, path],\n )\n const reporterGetSnapshot = useCallback(\n () => ({\n element,\n path: path,\n isChanged: Boolean(isChanged),\n hasFocus: hasFocus,\n hasHover: hasHover,\n hasRevertHover: false,\n zIndex: layer.zIndex,\n }),\n [element, hasFocus, hasHover, isChanged, layer.zIndex, path],\n )\n useChangeIndicatorsReporter(\n reporterId,\n reporterGetSnapshot,\n deepCompare, // note: deepCompare should be ok here since we're not comparing deep values\n )\n\n return (\n <div {...restProps} ref={setElement} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <ElementWithChangeBar\n hasFocus={hasFocus}\n isChanged={isChanged}\n disabled={disabled}\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n >\n {DEBUG && (\n <Text size={1} weight=\"medium\">\n {pathToString(path)}\n </Text>\n )}\n {children}\n </ElementWithChangeBar>\n </div>\n )\n})\n\n/** @internal */\nexport interface ChangeIndicatorProps {\n path: Path\n hasFocus: boolean\n isChanged: boolean\n withHoverEffect?: boolean\n}\n\n/** @internal */\nexport function ChangeIndicator(\n props: ChangeIndicatorProps & Omit<HTMLProps<HTMLDivElement>, 'as'>,\n) {\n const {children, hasFocus, isChanged, path, withHoverEffect, ...restProps} = props\n const {isInteractive} = useContext(ReviewChangesContext)\n\n return (\n <ChangeBarWrapper\n {...restProps}\n path={path}\n hasFocus={hasFocus}\n isChanged={isChanged}\n withHoverEffect={withHoverEffect}\n isInteractive={isInteractive}\n >\n {children}\n </ChangeBarWrapper>\n )\n}\n","import {type Path, type PathSegment} from '@sanity/types'\n\nimport {\n type FormDecPatch,\n type FormDiffMatchPatch,\n type FormIncPatch,\n type FormInsertPatch,\n type FormInsertPatchPosition,\n type FormSetIfMissingPatch,\n type FormSetPatch,\n type FormUnsetPatch,\n} from './types'\n\n/** @internal */\nexport const SANITY_PATCH_TYPE = Symbol.for('sanity.patch')\n\n/**\n * @hidden\n * @beta */\nexport function setIfMissing(value: any, path: Path = []): FormSetIfMissingPatch {\n return {\n patchType: SANITY_PATCH_TYPE,\n type: 'setIfMissing',\n path,\n value,\n }\n}\n\n/**\n * @hidden\n * @beta */\nexport function insert(\n items: any[],\n position: FormInsertPatchPosition,\n path: Path = [],\n): FormInsertPatch {\n return {\n patchType: SANITY_PATCH_TYPE,\n type: 'insert',\n path,\n position,\n items,\n }\n}\n\n/**\n * @hidden\n * @beta */\nexport function set(value: any, path: Path = []): FormSetPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'set', path, value}\n}\n\n/**\n * @hidden\n * @beta */\nexport function unset(path: Path = []): FormUnsetPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'unset', path}\n}\n\n/**\n * @hidden\n * @beta */\nexport function diffMatchPatch(value: string, path: Path = []): FormDiffMatchPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'diffMatchPatch', path, value}\n}\n\n/**\n * @hidden\n * @beta */\nexport function inc(amount = 1, path: Path = []): FormIncPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'inc', path, value: amount}\n}\n\n/**\n * @hidden\n * @beta */\nexport function dec(amount = 1, path: Path = []): FormDecPatch {\n return {patchType: SANITY_PATCH_TYPE, type: 'dec', path, value: amount}\n}\n\n/** @internal */\nexport function prefixPath<T extends {path: Path}>(patch: T, segment: PathSegment): T {\n return {\n ...patch,\n path: [segment, ...patch.path],\n }\n}\n","import {type Path} from '@sanity/types'\nimport {toString as pathToString} from '@sanity/util/paths'\nimport {type ReactNode, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {ParseErrorsContext, type SetParseError} from 'sanity/_singletons'\n\nimport {type ParseError} from '../../store/utils/mergeParseErrors'\n\n/**\n * Owns transient parse-error state for a document subtree and exposes it via\n * {@link ParseErrorsContext}. Inputs report errors with {@link useReportParseError};\n * consumers (field tooltip, validation panel) read the current map with\n * {@link useParseErrors} and merge it locally with their validation. The state\n * intentionally lives outside the form/validation pipeline so writes never\n * feed back into `useDocumentForm`.\n *\n * @internal\n */\nexport function ParseErrorsProvider(props: {children: ReactNode}) {\n const [errors, setErrors] = useState<Record<string, ParseError>>({})\n\n const set = useCallback<SetParseError>((pathKey, value) => {\n setErrors((prev) => {\n if (value === null) {\n if (!(pathKey in prev)) return prev\n const next = {...prev}\n delete next[pathKey]\n return next\n }\n const existing = prev[pathKey]\n if (existing && existing.message === value.message) return prev\n return {...prev, [pathKey]: value}\n })\n }, [])\n\n const value = useMemo(() => ({errors, set}), [errors, set])\n\n return <ParseErrorsContext.Provider value={value}>{props.children}</ParseErrorsContext.Provider>\n}\n\n/**\n * Returns the current parse-errors map for the surrounding document subtree.\n * Keys are stringified paths produced by `@sanity/util/paths` `toString`.\n *\n * @internal\n */\nexport function useParseErrors(): Record<string, ParseError> {\n return useContext(ParseErrorsContext).errors\n}\n\n/**\n * Returns the parse-error message reported for `path`, if any. Use this from\n * field-level consumers (e.g. `PrimitiveField`) that only care about a single\n * path.\n *\n * @internal\n */\nexport function useParseErrorForPath(path: Path): string | undefined {\n const pathKey = pathToString(path)\n return useContext(ParseErrorsContext).errors[pathKey]?.message\n}\n\n/**\n * Hook for primitive inputs that hold malformed text they cannot commit to the\n * document (e.g. a date input whose value does not match `dateFormat`). The\n * reported error is registered against `path` in the parse-errors context, so\n * consumers (field tooltip, validation panel) can surface it. Pass `null` to\n * clear.\n *\n * Outside a `ParseErrorsProvider` (e.g. in isolated component renders) the\n * hook is a no-op.\n *\n * @internal\n */\nexport function useReportParseError(path: Path, error: string | null): void {\n const {set} = useContext(ParseErrorsContext)\n const pathKey = pathToString(path)\n\n useEffect(() => {\n if (error === null) {\n set(pathKey, null)\n return undefined\n }\n set(pathKey, {message: error})\n return () => set(pathKey, null)\n }, [set, pathKey, error])\n}\n","import {\n type FocusEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\n\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../../components/inputs/DateInputs/DateTimeInput'\nimport {type TimeZoneScope} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type ParseResult} from './types'\n\nexport interface CommonDateTimeInputProps {\n id: string\n deserialize: (value: string) => ParseResult\n formatInputValue: (date: Date) => string\n onChange: (nextDate: string | null) => void\n /**\n * Called when the parser's error state changes. Receives the error message\n * while the typed input cannot be parsed (e.g. doesn't match the configured\n * `dateFormat`), and `null` once it becomes parseable or empty. Used by the\n * wrapping date/datetime input to surface parse errors separately from the\n * document validation graph.\n */\n onParseError?: (error: string | null) => void\n parseInputValue: (inputValue: string) => ParseResult\n placeholder?: string\n readOnly: boolean | undefined\n selectTime?: boolean\n serialize: (date: Date) => string\n timeStep?: number\n value: string | undefined\n calendarLabels: CalendarLabels\n timeZoneScope: TimeZoneScope\n validationError?: string\n}\n\nconst DEFAULT_PLACEHOLDER_TIME = new Date()\n\nexport function CommonDateTimeInput(\n props: CommonDateTimeInputProps & RefAttributes<HTMLInputElement>,\n) {\n const {\n ref: forwardedRef,\n id,\n deserialize,\n formatInputValue,\n onChange,\n onParseError,\n parseInputValue,\n placeholder,\n readOnly,\n selectTime,\n serialize,\n timeStep,\n timeZoneScope,\n value,\n validationError,\n ...restProps\n } = props\n\n const [localValue, setLocalValue] = useState<string | null>(null)\n\n const {t} = useTranslation()\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setLocalValue(null)\n }, [value])\n\n const handleDatePickerInputChange = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n const nextInputValue = event.currentTarget.value\n const result = nextInputValue === '' ? null : parseInputValue(nextInputValue)\n\n if (result === null) {\n onChange(null)\n\n // If the field value is undefined and we are clearing the invalid value\n // the above useEffect won't trigger, so we do some extra clean up here\n if (typeof value === 'undefined' && localValue) {\n setLocalValue(null)\n }\n } else if (result.isValid) {\n onChange(serialize(result.date))\n } else {\n setLocalValue(nextInputValue)\n }\n },\n [parseInputValue, onChange, value, localValue, serialize],\n )\n\n const handleDatePickerChange = useCallback(\n (nextDate: Date | null) => {\n onChange(nextDate ? serialize(nextDate) : null)\n },\n [serialize, onChange],\n )\n\n const ref = useRef<HTMLInputElement | null>(null)\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n forwardedRef,\n () => ref.current,\n )\n const parseResult = localValue ? parseInputValue(localValue) : value ? deserialize(value) : null\n\n const inputValue = localValue\n ? localValue\n : parseResult?.isValid\n ? formatInputValue(parseResult.date)\n : value\n\n // Forward parse errors to the wrapping field. Invalid input never reaches\n // `onChange`, so without this they'd be swallowed and validators would\n // continue to run against an undefined value.\n const parseError = parseResult?.error ?? null\n useEffect(() => {\n onParseError?.(parseError)\n }, [onParseError, parseError])\n\n return (\n <DateTimeInput\n {...restProps}\n calendarLabels={props.calendarLabels}\n id={id}\n selectTime={selectTime}\n timeStep={timeStep}\n timeZoneScope={timeZoneScope}\n placeholder={\n placeholder ||\n t('inputs.datetime.placeholder', {\n example: formatInputValue(DEFAULT_PLACEHOLDER_TIME),\n })\n }\n ref={ref}\n value={parseResult?.date}\n inputValue={inputValue || ''}\n readOnly={Boolean(readOnly)}\n onInputChange={handleDatePickerInputChange}\n onChange={handleDatePickerChange}\n customValidity={parseError || validationError}\n />\n )\n}\n","import {DEFAULT_DATE_FORMAT, format, parse} from '@sanity/util/legacyDateFormat'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {type TimeZoneScope} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {set, unset} from '../../patch/patch'\nimport {useReportParseError} from '../../studio/contexts/ParseErrors'\nimport {type StringInputProps} from '../../types/inputProps'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {getCalendarLabels} from './utils'\n\n/**\n * @hidden\n * @beta */\nexport type DateInputProps = StringInputProps\n\nconst deserialize = (value: string) => parse(value, DEFAULT_DATE_FORMAT)\nconst serialize = (date: Date) => format(date, DEFAULT_DATE_FORMAT)\n\n/**\n * @hidden\n * @beta */\nexport function DateInput(props: DateInputProps) {\n const {readOnly, onChange, schemaType, elementProps, value, id, path, validationError} = props\n const dateFormat = schemaType.options?.dateFormat || DEFAULT_DATE_FORMAT\n const {t} = useTranslation()\n const timeZoneScope: TimeZoneScope = {type: 'input', id}\n\n const [parseError, setParseError] = useState<string | null>(null)\n useReportParseError(path, parseError)\n\n const handleChange = useCallback(\n (nextDate: string | null) => {\n onChange(nextDate === null ? unset() : set(nextDate))\n },\n [onChange],\n )\n\n const formatInputValue = useCallback((date: Date) => format(date, dateFormat), [dateFormat])\n\n const parseInputValue = useCallback(\n (inputValue: string) => parse(inputValue, dateFormat),\n [dateFormat],\n )\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n return (\n <CommonDateTimeInput\n {...elementProps}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n onChange={handleChange}\n onParseError={setParseError}\n parseInputValue={parseInputValue}\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n placeholder={schemaType.placeholder}\n calendarLabels={calendarLabels}\n readOnly={readOnly}\n selectTime={false}\n serialize={serialize}\n value={value}\n timeZoneScope={timeZoneScope}\n validationError={validationError}\n />\n )\n}\n","import {ElementQuery} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nconst TimeZoneButtonElementQuery = styled(ElementQuery)`\n .button-small {\n display: block;\n }\n .button-large {\n display: none;\n }\n\n &[data-eq-min~='2'] {\n .button-small {\n display: none;\n }\n .button-large {\n display: block;\n }\n }\n`\n\nexport default TimeZoneButtonElementQuery\n","import {type ReactNode} from 'react'\nimport {styled} from 'styled-components'\n\n/** @internal */\nexport interface FieldStatusProps {\n children?: ReactNode\n maxAvatars?: number\n position?: 'top' | 'bottom'\n}\n\nconst Root = styled.div`\n display: flex;\n justify-content: flex-end;\n box-sizing: border-box;\n min-height: var(--avatar-height);\n width: 77px;\n margin-left: var(--small-padding);\n\n &[data-max-avatars='1'] {\n max-width: 23px;\n }\n\n &[data-position='top'] {\n align-self: flex-start;\n }\n\n &[data-position='bottom'] {\n align-self: flex-end;\n }\n`\n\n/** @internal */\nexport function FormFieldStatus({children, maxAvatars, position = 'bottom'}: FieldStatusProps) {\n return (\n <Root data-max-avatars={maxAvatars} data-position={position}>\n {children}\n </Root>\n )\n}\n","import {isKeySegment} from '@sanity/types'\nimport {Box, Card, Flex, Stack} from '@sanity/ui'\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_TIME_FORMAT,\n format,\n isValidTimeZoneString,\n parse,\n type ParseResult,\n} from '@sanity/util/legacyDateFormat'\nimport {fromString as pathFromString} from '@sanity/util/paths'\nimport {getMinutes} from 'date-fns/getMinutes'\nimport {parseISO} from 'date-fns/parseISO'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {useCallback, useMemo, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {ChangeIndicator} from '../../../changeIndicators/ChangeIndicator'\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {TimeZoneButton} from '../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport TimeZoneButtonElementQuery from '../../../components/timeZone/timeZoneButton/TimeZoneButtonElementQuery'\nimport {FormFieldHeaderText} from '../../../form/components/formField/FormFieldHeaderText'\nimport {type TimeZoneScopeType, useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {EMPTY_ARRAY} from '../../../util/empty'\nimport {FormFieldBaseHeader} from '../../components/formField/FormFieldBaseHeader'\nimport {FormFieldStatus} from '../../components/formField/FormFieldStatus'\nimport {useFormValue} from '../../contexts/FormValue'\nimport {useFieldActions} from '../../field/actions/useFieldActions'\nimport {set, unset} from '../../patch/patch'\nimport {useReportParseError} from '../../studio/contexts/ParseErrors'\nimport {type StringInputProps} from '../../types/inputProps'\nimport {CommonDateTimeInput} from './CommonDateTimeInput'\nimport {getCalendarLabels, isValidDate} from './utils'\n\n/**\n * Sanitizes an input ID for use in timezone storage keys.\n * The backend key-value API rejects keys containing special characters like `[`, `]`, `=`, and `\"`.\n * This function parses the path string and converts it to a safe format using dots and \"key-\" prefix.\n *\n * @internal\n */\nexport function sanitizeTimeZoneKeyId(id: string): string {\n try {\n const segments = pathFromString(id)\n return segments\n .map((segment) => {\n if (isKeySegment(segment)) {\n return `key-${segment._key}`\n }\n if (typeof segment === 'number') {\n return `idx_${segment}`\n }\n return segment\n })\n .join('.')\n } catch {\n // Fallback: if parsing fails, strip problematic characters\n return id.replace(/[[\\]=\"']/g, '-')\n }\n}\n\nconst Root = styled(Card)`\n line-height: 1;\n`\n\ninterface ParsedOptions {\n dateFormat: string\n timeFormat: string\n timeStep: number\n displayTimeZone?: string\n allowTimeZoneSwitch?: boolean\n}\n\ninterface SchemaOptions {\n dateFormat?: string\n timeFormat?: string\n timeStep?: number\n displayTimeZone?: string\n allowTimeZoneSwitch?: boolean\n}\n\n/**\n * @hidden\n * @beta */\nexport type DateTimeInputProps = StringInputProps\n\nconst serialize = (date: Date) => {\n return date.toISOString()\n}\n\nfunction parseOptions(options: SchemaOptions = {}): ParsedOptions {\n const displayTimeZone =\n options.displayTimeZone && isValidTimeZoneString(options.displayTimeZone)\n ? options.displayTimeZone\n : undefined\n if (options.displayTimeZone && !displayTimeZone) {\n console.warn(\n `Invalid time zone \"${options.displayTimeZone}\" supplied to datetime input, defaulting to local time zone or a previously stored preference`,\n )\n }\n return {\n dateFormat: options.dateFormat || DEFAULT_DATE_FORMAT,\n timeFormat: options.timeFormat || DEFAULT_TIME_FORMAT,\n timeStep: ('timeStep' in options && Number(options.timeStep)) || 1,\n displayTimeZone,\n allowTimeZoneSwitch:\n options.allowTimeZoneSwitch === undefined ? true : options.allowTimeZoneSwitch,\n }\n}\n\nconst getDeserializer =\n (timeZoneName?: string) =>\n (isoString: string): ParseResult => {\n // create a date object respecting the time zone\n const {date: deserialized} = parse(isoString, undefined, timeZoneName)\n if (deserialized && isValidDate(deserialized)) {\n return {isValid: true, date: deserialized}\n }\n return {isValid: false, error: `Invalid date value: \"${isoString}\"`}\n }\n\n// enforceTimeStep takes a dateString and datetime schema options and enforces the time\n// to be within the configured timeStep\nfunction enforceTimeStep(dateString: string, timeStep: number) {\n if (!timeStep || timeStep === 1) {\n return dateString\n }\n\n const date = parseISO(dateString)\n const minutes = getMinutes(date)\n const leftOver = minutes % timeStep\n if (leftOver !== 0) {\n return serialize(setMinutes(date, minutes - leftOver))\n }\n\n return serialize(date)\n}\n\n/**\n * @hidden\n * @beta */\nexport function DateTimeInput(props: DateTimeInputProps) {\n const {\n onChange,\n schemaType,\n value,\n elementProps,\n id,\n validation,\n validationError,\n changed,\n path,\n presence = EMPTY_ARRAY,\n } = props\n\n const [parseError, setParseError] = useState<string | null>(null)\n useReportParseError(path, parseError)\n\n const {\n focused,\n __internal_comments: comments,\n hovered,\n onMouseEnter,\n onMouseLeave,\n actions,\n __internal_slot: slot,\n } = useFieldActions()\n const {\n dateFormat,\n timeFormat,\n timeStep,\n displayTimeZone,\n allowTimeZoneSwitch = true,\n } = parseOptions(schemaType.options)\n const {title} = schemaType\n const {t} = useTranslation()\n const _id = useFormValue(['_id'])\n const published = getPublishedId(_id as string)\n const timeZoneScope = useMemo(\n () => ({\n type: 'input' as TimeZoneScopeType,\n defaultTimeZone: displayTimeZone,\n // we want to make sure that if allowTimeZoneSwitch is switched to false that we respect the default only\n // sanitize the id to remove special characters that the backend key-value API rejects\n id: `${published}.${sanitizeTimeZoneKeyId(id)}${allowTimeZoneSwitch ? '' : '.fixed'}`,\n relativeDate: value ? new Date(value) : undefined,\n }),\n [allowTimeZoneSwitch, displayTimeZone, id, published, value],\n )\n\n const {timeZone} = useTimeZone(timeZoneScope)\n\n const handleChange = useCallback(\n (nextDate: string | null) => {\n let date = nextDate\n if (date !== null && timeStep > 1) {\n date = enforceTimeStep(date, timeStep)\n }\n\n onChange(date === null ? unset() : set(date))\n },\n [onChange, timeStep],\n )\n\n const formatInputValue = useCallback(\n (date: Date) => format(date, `${dateFormat} ${timeFormat}`, {timeZone: timeZone.name}),\n [dateFormat, timeFormat, timeZone],\n )\n\n const deserialize = useMemo(() => getDeserializer(timeZone.name), [timeZone.name])\n\n const parseInputValue = useCallback(\n (inputValue: string): ParseResult =>\n parse(inputValue, `${dateFormat} ${timeFormat}`, timeZone.name),\n [dateFormat, timeFormat, timeZone],\n )\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n return (\n <Root\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-testid={`field-${id}`}\n radius={2}\n >\n <Flex direction={'column'}>\n <Box flex={1} paddingY={2}>\n <FormFieldBaseHeader\n __internal_comments={comments}\n __internal_slot={slot}\n actions={actions}\n fieldFocused={Boolean(focused)}\n fieldHovered={hovered}\n presence={presence}\n inputId={id}\n content={\n <Stack gap={2}>\n <FormFieldHeaderText\n deprecated={schemaType.deprecated}\n description={schemaType.description}\n inputId={id}\n validation={validation}\n title={schemaType.title}\n suffix={\n // Check raw schema options for allowTimeZoneSwitch since the parsed value\n // defaults to true - we only want to show the button when explicitly configured\n (displayTimeZone || schemaType.options?.allowTimeZoneSwitch === true) && (\n <TimeZoneButtonElementQuery>\n <TimeZoneButton\n tooltipContent={\n <Translate\n t={t}\n i18nKey={'time-zone.time-zone-tooltip-input'}\n values={{\n title,\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n }}\n />\n }\n allowTimeZoneSwitch={allowTimeZoneSwitch}\n useElementQueries\n timeZoneScope={timeZoneScope}\n />\n </TimeZoneButtonElementQuery>\n )\n }\n />\n </Stack>\n }\n />\n </Box>\n <FormFieldStatus maxAvatars={1} position=\"top\" />\n <ChangeIndicator hasFocus={Boolean(focused)} isChanged={changed} path={path}>\n <div data-testid=\"change-bar-wrapper\">\n <div data-testid=\"change-bar__field-wrapper\">\n <CommonDateTimeInput\n {...elementProps}\n calendarLabels={calendarLabels}\n deserialize={deserialize}\n formatInputValue={formatInputValue}\n onChange={handleChange}\n onParseError={setParseError}\n parseInputValue={parseInputValue}\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n placeholder={schemaType.placeholder}\n serialize={serialize}\n timeStep={timeStep}\n selectTime\n value={value}\n timeZoneScope={timeZoneScope}\n validationError={validationError}\n />\n </div>\n </div>\n </ChangeIndicator>\n </Flex>\n </Root>\n )\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { c as useWorkspace } from "./studioClient-WYiCwgfZ.js";
2
- import { ot as getReleaseIdFromReleaseDocumentId } from "./datastores-D4iZNSXV.js";
1
+ import { c as useWorkspace } from "./studioClient-BpYJ_yYC.js";
2
+ import { ot as getReleaseIdFromReleaseDocumentId } from "./datastores-wbjstxMt.js";
3
3
  import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
4
4
  import { n as useRelativeTime } from "./ContextMenuButton-PNi9pxWs.js";
5
- import { It as RELEASE_TYPES_TONES, ht as useActiveReleases } from "./useBundleDocuments-CiRQnzQh.js";
6
- import { c as ReleaseAvatar } from "./ReleaseTitle-CkEMIfmx.js";
5
+ import { It as RELEASE_TYPES_TONES, ht as useActiveReleases } from "./useBundleDocuments-C58ExRpX.js";
6
+ import { c as ReleaseAvatar } from "./ReleaseTitle-ln13W3P1.js";
7
7
  import { c } from "react/compiler-runtime";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { Flex, Text } from "@sanity/ui";
@@ -172,4 +172,4 @@ function _temp(t0) {
172
172
  }
173
173
  export { DocumentStatus as n, DocumentStatusIndicator as t };
174
174
 
175
- //# sourceMappingURL=DocumentStatusIndicator-BP3N2GwG.js.map
175
+ //# sourceMappingURL=DocumentStatusIndicator-BPBTH84U.js.map