sanity 6.9.0 → 6.9.1-next.10

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 (196) hide show
  1. package/lib/{AddonDatasetProvider-BNzAv5cF.js → AddonDatasetProvider-C8r1w5ec.js} +2 -2
  2. package/lib/{AddonDatasetProvider-BNzAv5cF.js.map → AddonDatasetProvider-C8r1w5ec.js.map} +1 -1
  3. package/lib/{CalendarFilter-CnHl_Wxj.js → CalendarFilter-DgVEUPXa.js} +59 -58
  4. package/lib/CalendarFilter-DgVEUPXa.js.map +1 -0
  5. package/lib/{CommandList-CjmwJGX8.js → CommandList-B7noXKqO.js} +26 -13
  6. package/lib/CommandList-B7noXKqO.js.map +1 -0
  7. package/lib/{CommentsDocumentLayout-cIjOckd4.js → CommentsDocumentLayout-C5_1PzCN.js} +2 -2
  8. package/lib/{CommentsDocumentLayout-cIjOckd4.js.map → CommentsDocumentLayout-C5_1PzCN.js.map} +1 -1
  9. package/lib/{CommentsField-Dc-OnqMB.js → CommentsField-x9mJhhcf.js} +5 -5
  10. package/lib/{CommentsField-Dc-OnqMB.js.map → CommentsField-x9mJhhcf.js.map} +1 -1
  11. package/lib/{CommentsInput-Dct2uTnB.js → CommentsInput-CbZvgAfD.js} +8 -8
  12. package/lib/CommentsInput-CbZvgAfD.js.map +1 -0
  13. package/lib/{CommentsInspector-PbvOqPmn.js → CommentsInspector-D7liIycd.js} +15 -13
  14. package/lib/CommentsInspector-D7liIycd.js.map +1 -0
  15. package/lib/{CommentsListItem-D4eaCu0g.js → CommentsListItem-DjakGzaw.js} +18 -15
  16. package/lib/CommentsListItem-DjakGzaw.js.map +1 -0
  17. package/lib/{CommentsSelectedPathProvider-DvYcXgnK.js → CommentsSelectedPathProvider-BmDQh7Gc.js} +3 -3
  18. package/lib/{CommentsSelectedPathProvider-DvYcXgnK.js.map → CommentsSelectedPathProvider-BmDQh7Gc.js.map} +1 -1
  19. package/lib/{CommentsStudioLayout-D-bs3orG.js → CommentsStudioLayout-4Waa_d0W.js} +4 -4
  20. package/lib/{CommentsStudioLayout-D-bs3orG.js.map → CommentsStudioLayout-4Waa_d0W.js.map} +1 -1
  21. package/lib/{ConfirmPopover-CMrDD2xD.js → ConfirmPopover-CD1rDyuk.js} +33 -18
  22. package/lib/ConfirmPopover-CD1rDyuk.js.map +1 -0
  23. package/lib/{ContextMenuButton-BrT0XfTD.js → ContextMenuButton-CruB3rT2.js} +21 -19
  24. package/lib/ContextMenuButton-CruB3rT2.js.map +1 -0
  25. package/lib/{MenuItem-DEAYBMOb.js → MenuItem-BWdL61CI.js} +112 -61
  26. package/lib/MenuItem-BWdL61CI.js.map +1 -0
  27. package/lib/{PaneContainer-DOlV1RFb.js → PaneContainer-s7lXX_Ae.js} +5 -5
  28. package/lib/{PaneContainer-DOlV1RFb.js.map → PaneContainer-s7lXX_Ae.js.map} +1 -1
  29. package/lib/{PresentationToolGrantsCheck-BUlTzVYK.js → PresentationToolGrantsCheck-hAdqjcmd.js} +77 -70
  30. package/lib/PresentationToolGrantsCheck-hAdqjcmd.js.map +1 -0
  31. package/lib/{RelativeTime-CwaKm8vm.js → RelativeTime-eow0hl8e.js} +2 -2
  32. package/lib/{RelativeTime-CwaKm8vm.js.map → RelativeTime-eow0hl8e.js.map} +1 -1
  33. package/lib/{ReleasesMetadataProvider-BMCgib0B.js → ReleasesMetadataProvider-Cs461Rdd.js} +2 -2
  34. package/lib/{ReleasesMetadataProvider-BMCgib0B.js.map → ReleasesMetadataProvider-Cs461Rdd.js.map} +1 -1
  35. package/lib/{ReleasesNav-nEtGHxFh.js → ReleasesNav-iW6YP3BK.js} +64 -79
  36. package/lib/ReleasesNav-iW6YP3BK.js.map +1 -0
  37. package/lib/{ReleasesStudioLayout-BeZvlZJf.js → ReleasesStudioLayout-CfI79gqp.js} +9 -9
  38. package/lib/{ReleasesStudioLayout-BeZvlZJf.js.map → ReleasesStudioLayout-CfI79gqp.js.map} +1 -1
  39. package/lib/{ReleasesTool-DwkMrY4t.js → ReleasesTool-CpQdrip2.js} +2525 -1557
  40. package/lib/ReleasesTool-CpQdrip2.js.map +1 -0
  41. package/lib/{SchedulePublishingStudioLayout-Bt952IXi.js → SchedulePublishingStudioLayout-BIfHvYDM.js} +3 -3
  42. package/lib/{SchedulePublishingStudioLayout-Bt952IXi.js.map → SchedulePublishingStudioLayout-BIfHvYDM.js.map} +1 -1
  43. package/lib/{SchedulePublishingUpsellProvider-CbX_0wqo.js → SchedulePublishingUpsellProvider-D-KiPRH6.js} +2 -2
  44. package/lib/{SchedulePublishingUpsellProvider-CbX_0wqo.js.map → SchedulePublishingUpsellProvider-D-KiPRH6.js.map} +1 -1
  45. package/lib/{ScheduledPublishingEnabledProvider-BwH39kpd.js → ScheduledPublishingEnabledProvider-BdGgMxqZ.js} +3 -3
  46. package/lib/{ScheduledPublishingEnabledProvider-BwH39kpd.js.map → ScheduledPublishingEnabledProvider-BdGgMxqZ.js.map} +1 -1
  47. package/lib/{SearchProvider-DngcOvui.js → SearchProvider-C_uUDF2Z.js} +52 -37
  48. package/lib/SearchProvider-C_uUDF2Z.js.map +1 -0
  49. package/lib/{SingleDocReleaseLayout-DCmUPdw0.js → SingleDocReleaseLayout-Dg3r0C5j.js} +2 -2
  50. package/lib/{SingleDocReleaseLayout-DCmUPdw0.js.map → SingleDocReleaseLayout-Dg3r0C5j.js.map} +1 -1
  51. package/lib/{SingleDocReleaseUpsellProvider-intNbJMQ.js → SingleDocReleaseUpsellProvider-fRZwr9-w.js} +4 -4
  52. package/lib/{SingleDocReleaseUpsellProvider-intNbJMQ.js.map → SingleDocReleaseUpsellProvider-fRZwr9-w.js.map} +1 -1
  53. package/lib/{TasksFooterOpenTasks-CcMvxb1S.js → TasksFooterOpenTasks-ZhYq4VPL.js} +2 -2
  54. package/lib/{TasksFooterOpenTasks-CcMvxb1S.js.map → TasksFooterOpenTasks-ZhYq4VPL.js.map} +1 -1
  55. package/lib/{TasksStudioActiveToolLayout-AHJDWlBs.js → TasksStudioActiveToolLayout-IDbC8eVL.js} +41 -40
  56. package/lib/TasksStudioActiveToolLayout-IDbC8eVL.js.map +1 -0
  57. package/lib/{TasksStudioLayout-CvmYGNpG.js → TasksStudioLayout-sTs-Fmp8.js} +5 -5
  58. package/lib/{TasksStudioLayout-CvmYGNpG.js.map → TasksStudioLayout-sTs-Fmp8.js.map} +1 -1
  59. package/lib/{TasksStudioNavbar-B2y8eBnJ.js → TasksStudioNavbar-DPzNhLwC.js} +2 -2
  60. package/lib/{TasksStudioNavbar-B2y8eBnJ.js.map → TasksStudioNavbar-DPzNhLwC.js.map} +1 -1
  61. package/lib/{Tool-CqeGxdwu.js → Tool-emThHB47.js} +15 -15
  62. package/lib/{Tool-CqeGxdwu.js.map → Tool-emThHB47.js.map} +1 -1
  63. package/lib/{UnpublishVersionDialog-D7ti1pvw.js → UnpublishVersionDialog-DrAS3rpY.js} +5 -5
  64. package/lib/{UnpublishVersionDialog-D7ti1pvw.js.map → UnpublishVersionDialog-DrAS3rpY.js.map} +1 -1
  65. package/lib/{UpsellDialog-whgrf_jd.js → UpsellDialog-uX44GfRz.js} +4 -4
  66. package/lib/{UpsellDialog-whgrf_jd.js.map → UpsellDialog-uX44GfRz.js.map} +1 -1
  67. package/lib/{UpsellPanel-D4A_J_mQ.js → UpsellPanel-dmz9-L2H.js} +2 -2
  68. package/lib/{UpsellPanel-D4A_J_mQ.js.map → UpsellPanel-dmz9-L2H.js.map} +1 -1
  69. package/lib/{VariantsStudioNavbar-QWklTgaC.js → VariantsStudioNavbar-BP8spK8K.js} +15 -14
  70. package/lib/VariantsStudioNavbar-BP8spK8K.js.map +1 -0
  71. package/lib/VariantsTool-CwlBImO1.js +3376 -0
  72. package/lib/VariantsTool-CwlBImO1.js.map +1 -0
  73. package/lib/{WorkspaceLoader-D-AE4jC9.js → WorkspaceLoader-BZ3g2DUN.js} +36 -35
  74. package/lib/WorkspaceLoader-BZ3g2DUN.js.map +1 -0
  75. package/lib/_createContext.js +1 -1
  76. package/lib/_singletons.d.ts +2 -2
  77. package/lib/{buildTextSelectionFromFragment-DK2sGkxp.js → buildTextSelectionFromFragment-Dx8kbGll.js} +26 -19
  78. package/lib/buildTextSelectionFromFragment-Dx8kbGll.js.map +1 -0
  79. package/lib/{constants-CAieNzGb.js → constants-CNsOCcFZ.js} +9 -9
  80. package/lib/constants-CNsOCcFZ.js.map +1 -0
  81. package/lib/{datastores-CAN9gF_N.js → datastores-BIDUr2We.js} +45 -3
  82. package/lib/datastores-BIDUr2We.js.map +1 -0
  83. package/lib/desk.d.ts +1 -1
  84. package/lib/desk.js +3 -3
  85. package/lib/{i18n-CZ3Xx4ce.js → i18n-BWMyMJpf.js} +2 -2
  86. package/lib/{i18n-CZ3Xx4ce.js.map → i18n-BWMyMJpf.js.map} +1 -1
  87. package/lib/{index-2eck_tQd.d.ts → index-DLGpPgPg.d.ts} +64 -53
  88. package/lib/index.d.ts +1 -1
  89. package/lib/index.js +113 -93
  90. package/lib/index.js.map +1 -1
  91. package/lib/{inputResolver-pBBLZPO8.js → inputResolver-BcCDN-Fc.js} +4 -4
  92. package/lib/{inputResolver-pBBLZPO8.js.map → inputResolver-BcCDN-Fc.js.map} +1 -1
  93. package/lib/{list-CG-DNx76.js → list-DnARg9L8.js} +5 -5
  94. package/lib/{list-CG-DNx76.js.map → list-DnARg9L8.js.map} +1 -1
  95. package/lib/media-library.d.ts +1 -1
  96. package/lib/{navigation.telemetry-_-oYsYEZ.js → navigation.telemetry-BUeluBSO.js} +64 -12
  97. package/lib/navigation.telemetry-BUeluBSO.js.map +1 -0
  98. package/lib/pane-CFiCojMa.js +2 -0
  99. package/lib/pane-CnMeqhDJ.js +2 -0
  100. package/lib/{plugin-BU45VUGg.js → plugin-DAnmAf5f.js} +6 -6
  101. package/lib/{plugin-BU45VUGg.js.map → plugin-DAnmAf5f.js.map} +1 -1
  102. package/lib/{plugin-Cp5P5M6Z.js → plugin-DtDAG4LI.js} +4 -4
  103. package/lib/{plugin-Cp5P5M6Z.js.map → plugin-DtDAG4LI.js.map} +1 -1
  104. package/lib/{plugin-CPQd0sKT.js → plugin-DtgYQEdv.js} +5 -5
  105. package/lib/{plugin-CPQd0sKT.js.map → plugin-DtgYQEdv.js.map} +1 -1
  106. package/lib/{plugin-CDL44aqx.js → plugin-hmoOy_yo.js} +4 -4
  107. package/lib/{plugin-CDL44aqx.js.map → plugin-hmoOy_yo.js.map} +1 -1
  108. package/lib/presentation.d.ts +1 -1
  109. package/lib/presentation.js +1 -1
  110. package/lib/{resources-xOfWhWlJ.js → resources-CEHkmYid.js} +30 -1
  111. package/lib/resources-CEHkmYid.js.map +1 -0
  112. package/lib/{resources-BfdRqhdp.js → resources-DYz2XFsI.js} +54 -16
  113. package/lib/resources-DYz2XFsI.js.map +1 -0
  114. package/lib/router.d.ts +4 -4
  115. package/lib/router.js +45 -24
  116. package/lib/router.js.map +1 -1
  117. package/lib/{scheduleItem-Dr7UqnO0.js → scheduleItem-CCiB6SSJ.js} +172 -174
  118. package/lib/scheduleItem-CCiB6SSJ.js.map +1 -0
  119. package/lib/{schedules-B76A4ZxW.js → schedules-ywUvBUar.js} +3 -3
  120. package/lib/{schedules-B76A4ZxW.js.map → schedules-ywUvBUar.js.map} +1 -1
  121. package/lib/searchDocumentRelease-CB2hO44z.js +999 -0
  122. package/lib/searchDocumentRelease-CB2hO44z.js.map +1 -0
  123. package/lib/structure.d.ts +3 -3
  124. package/lib/structure.js +5 -5
  125. package/lib/{structureTool-_7tV03_U.js → structureTool-D-fQ3RWq.js} +47 -41
  126. package/lib/structureTool-D-fQ3RWq.js.map +1 -0
  127. package/lib/{structureTool-B-4Rgag1.js → structureTool-DkP7Mx3n.js} +212 -241
  128. package/lib/structureTool-DkP7Mx3n.js.map +1 -0
  129. package/lib/{studioClient-0INzes4j.js → studioClient-DAtPh6gs.js} +2 -2
  130. package/lib/{studioClient-0INzes4j.js.map → studioClient-DAtPh6gs.js.map} +1 -1
  131. package/lib/{types-DHS8RBqE.d.ts → types-Cb44fPZ8.d.ts} +2 -2
  132. package/lib/{useBundleDocuments-DQBEGnM0.js → useBundleDocuments-DJDYk_0s.js} +1147 -1159
  133. package/lib/useBundleDocuments-DJDYk_0s.js.map +1 -0
  134. package/lib/{useComments-B4l2ZDjl.js → useComments-D-33EEQJ.js} +44 -32
  135. package/lib/useComments-D-33EEQJ.js.map +1 -0
  136. package/lib/{useCommentsTelemetry-CYo7hANR.js → useCommentsTelemetry-NhILpEji.js} +13 -12
  137. package/lib/useCommentsTelemetry-NhILpEji.js.map +1 -0
  138. package/lib/{useDocumentPreviewValues-CwdjeP0z.js → useDocumentPreviewValues-BYrQzPAs.js} +3 -3
  139. package/lib/{useDocumentPreviewValues-CwdjeP0z.js.map → useDocumentPreviewValues-BYrQzPAs.js.map} +1 -1
  140. package/lib/{useFeatureEnabled-vKK-UQgR.js → useFeatureEnabled-BJQmW_Yg.js} +2 -2
  141. package/lib/{useFeatureEnabled-vKK-UQgR.js.map → useFeatureEnabled-BJQmW_Yg.js.map} +1 -1
  142. package/lib/{useFieldActions-C4v6GVo7.js → useFieldActions-7Jpog0bJ.js} +2 -2
  143. package/lib/{useFieldActions-C4v6GVo7.js.map → useFieldActions-7Jpog0bJ.js.map} +1 -1
  144. package/lib/{useReleasesToolAvailable-CvsDXDJG.js → useReleasesToolAvailable-BYfr6Mei.js} +3 -3
  145. package/lib/{useReleasesToolAvailable-CvsDXDJG.js.map → useReleasesToolAvailable-BYfr6Mei.js.map} +1 -1
  146. package/lib/{useScheduledDraftMenuActions-DU3du0ow.js → useScheduledDraftMenuActions-dhmRRxMK.js} +6 -6
  147. package/lib/{useScheduledDraftMenuActions-DU3du0ow.js.map → useScheduledDraftMenuActions-dhmRRxMK.js.map} +1 -1
  148. package/lib/{useStructureTool-CkVitWe_.js → useStructureTool-D1wS1wbc.js} +51 -40
  149. package/lib/useStructureTool-D1wS1wbc.js.map +1 -0
  150. package/lib/{useStudioUrl-BaTFWspv.js → useStudioUrl-COFbmn4P.js} +5 -5
  151. package/lib/{useStudioUrl-BaTFWspv.js.map → useStudioUrl-COFbmn4P.js.map} +1 -1
  152. package/lib/{useTimeZone-Cxx2Mhvw.js → useTimeZone-BWUYWCvT.js} +2 -2
  153. package/lib/{useTimeZone-Cxx2Mhvw.js.map → useTimeZone-BWUYWCvT.js.map} +1 -1
  154. package/lib/{userComponent-CalMHy7P.js → userComponent-8NWPhRxm.js} +4 -4
  155. package/lib/{userComponent-CalMHy7P.js.map → userComponent-8NWPhRxm.js.map} +1 -1
  156. package/lib/{validationUtils-CDvRlmT4.js → validationUtils-CYRIWiIS.js} +4 -4
  157. package/lib/{validationUtils-CDvRlmT4.js.map → validationUtils-CYRIWiIS.js.map} +1 -1
  158. package/lib/{version-DTcPz6_F.js → version-CfzHIQnL.js} +2 -2
  159. package/lib/{version-DTcPz6_F.js.map → version-CfzHIQnL.js.map} +1 -1
  160. package/package.json +14 -13
  161. package/lib/CalendarFilter-CnHl_Wxj.js.map +0 -1
  162. package/lib/CommandList-CjmwJGX8.js.map +0 -1
  163. package/lib/CommentsInput-Dct2uTnB.js.map +0 -1
  164. package/lib/CommentsInspector-PbvOqPmn.js.map +0 -1
  165. package/lib/CommentsListItem-D4eaCu0g.js.map +0 -1
  166. package/lib/ConfirmPopover-CMrDD2xD.js.map +0 -1
  167. package/lib/ContextMenuButton-BrT0XfTD.js.map +0 -1
  168. package/lib/MenuItem-DEAYBMOb.js.map +0 -1
  169. package/lib/PresentationToolGrantsCheck-BUlTzVYK.js.map +0 -1
  170. package/lib/ReleasesNav-nEtGHxFh.js.map +0 -1
  171. package/lib/ReleasesTool-DwkMrY4t.js.map +0 -1
  172. package/lib/SearchProvider-DngcOvui.js.map +0 -1
  173. package/lib/TasksStudioActiveToolLayout-AHJDWlBs.js.map +0 -1
  174. package/lib/VariantsStudioNavbar-QWklTgaC.js.map +0 -1
  175. package/lib/VariantsTool-Dcw6UNeT.js +0 -2331
  176. package/lib/VariantsTool-Dcw6UNeT.js.map +0 -1
  177. package/lib/WorkspaceLoader-D-AE4jC9.js.map +0 -1
  178. package/lib/buildTextSelectionFromFragment-DK2sGkxp.js.map +0 -1
  179. package/lib/constants-CAieNzGb.js.map +0 -1
  180. package/lib/datastores-CAN9gF_N.js.map +0 -1
  181. package/lib/navigation.telemetry-_-oYsYEZ.js.map +0 -1
  182. package/lib/pane-CLfkF5__.js +0 -2
  183. package/lib/pane-IEuMGUwt.js +0 -2
  184. package/lib/resources-BfdRqhdp.js.map +0 -1
  185. package/lib/resources-xOfWhWlJ.js.map +0 -1
  186. package/lib/scheduleItem-Dr7UqnO0.js.map +0 -1
  187. package/lib/searchDocumentRelease-BUInC-Fo.js +0 -437
  188. package/lib/searchDocumentRelease-BUInC-Fo.js.map +0 -1
  189. package/lib/structureTool-B-4Rgag1.js.map +0 -1
  190. package/lib/structureTool-_7tV03_U.js.map +0 -1
  191. package/lib/useBundleDocuments-DQBEGnM0.js.map +0 -1
  192. package/lib/useComments-B4l2ZDjl.js.map +0 -1
  193. package/lib/useCommentsTelemetry-CYo7hANR.js.map +0 -1
  194. package/lib/useSetVariant-DNfuYLa-.js +0 -28
  195. package/lib/useSetVariant-DNfuYLa-.js.map +0 -1
  196. package/lib/useStructureTool-CkVitWe_.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS } from "./studioClient-0INzes4j.js";
1
+ import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS } from "./studioClient-DAtPh6gs.js";
2
2
  import { useContext, useEffect, useState } from "react";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -79,4 +79,4 @@ function AddonDatasetProvider(props) {
79
79
  }
80
80
  export { AddonDatasetProvider as t };
81
81
 
82
- //# sourceMappingURL=AddonDatasetProvider-BNzAv5cF.js.map
82
+ //# sourceMappingURL=AddonDatasetProvider-C8r1w5ec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddonDatasetProvider-BNzAv5cF.js","names":["SanityClient","useCallback","useContext","useEffect","useMemo","useState","AddonDatasetContext","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useWorkspace","AddonDatasetContextValue","AddonDatasetSetupProviderProps","children","React","ReactNode","AddonDatasetProviderInner","props","$","_c","dataset","projectId","originalClient","addonDatasetClient","setAddonDatasetClient","isCreatingDataset","setIsCreatingDataset","ready","setReady","error","setError","t0","res","request","uri","tag","name","getAddonDatasetName","t1","addonDatasetName","client","withConfig","requestTagPrefix","useCdn","handleCreateClient","t2","addonDatasetName_0","client_0","run","res_0","method","datasetName","client_1","finally","handleCreateAddonDataset","t3","t4","then","addonDatasetName_1","client_2","catch","err","t5","createAddonDataset","ctxValue","t6","AddonDatasetProvider","context"],"sources":["../src/core/studio/addonDataset/AddonDatasetProvider.tsx"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\nimport {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {AddonDatasetContext} from 'sanity/_singletons'\n\nimport {useClient} from '../../hooks/useClient'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {useWorkspace} from '../workspace'\nimport {type AddonDatasetContextValue} from './types'\n\ninterface AddonDatasetSetupProviderProps {\n children: React.ReactNode\n}\n\nfunction AddonDatasetProviderInner(props: AddonDatasetSetupProviderProps) {\n const {children} = props\n const {dataset, projectId} = useWorkspace()\n const originalClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const [addonDatasetClient, setAddonDatasetClient] = useState<SanityClient | null>(null)\n const [isCreatingDataset, setIsCreatingDataset] = useState<boolean>(false)\n const [ready, setReady] = useState<boolean>(false)\n const [error, setError] = useState<Error | null>(null)\n\n const getAddonDatasetName = useCallback(async (): Promise<string | undefined> => {\n const res = await originalClient.request({\n uri: `/projects/${projectId}/datasets?datasetProfile=comments&addonFor=${dataset}`,\n tag: 'sanity.studio',\n })\n\n // The response is an array containing the addon dataset. We only expect\n // one addon dataset to be returned, so we return the name of the first\n // addon dataset in the array.\n return res?.[0]?.name\n }, [dataset, originalClient, projectId])\n\n const handleCreateClient = useCallback(\n (addonDatasetName: string) => {\n const client = originalClient.withConfig({\n dataset: addonDatasetName,\n projectId,\n requestTagPrefix: 'sanity.studio',\n useCdn: false,\n })\n\n return client\n },\n [originalClient, projectId],\n )\n\n const handleCreateAddonDataset = useCallback(async (): Promise<SanityClient | null> => {\n setIsCreatingDataset(true)\n\n // Before running the setup, we check if the addon dataset already exists.\n // The addon dataset might already exist if another user has already run\n // the setup, but the current user has not refreshed the page yet and\n // therefore don't have a client for the addon dataset yet.\n try {\n const addonDatasetName = await getAddonDatasetName()\n\n if (addonDatasetName) {\n const client = handleCreateClient(addonDatasetName)\n setAddonDatasetClient(client)\n setIsCreatingDataset(false)\n return client\n }\n } catch {\n // If the dataset does not exist we will get an error, but we can ignore\n // it since we will create the dataset in the next step.\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n // 1. Create the addon dataset\n const res = await originalClient.request({\n uri: `/comments/${dataset}/setup`,\n method: 'POST',\n })\n\n const datasetName = res?.datasetName\n\n // 2. We can't continue if the addon dataset name is not returned\n if (!datasetName) {\n setIsCreatingDataset(false)\n return null\n }\n\n // 3. Create a client for the addon dataset and set it in the context value\n // so that the consumers can use it to execute comment operations and set up\n // the real time listener for the addon dataset.\n const client = handleCreateClient(datasetName)\n setAddonDatasetClient(client)\n\n // 4. Return the client so that the caller can use it to execute operations\n return client\n }\n return run().finally(() => {\n setIsCreatingDataset(false)\n })\n }, [dataset, getAddonDatasetName, handleCreateClient, originalClient])\n\n useEffect(() => {\n // On mount, we check if the addon dataset already exists. If it does, we create\n // a client for it and set it in the context value so that the consumers can use\n // it to execute comment operations and set up the real time listener for the addon\n // dataset.\n getAddonDatasetName()\n .then((addonDatasetName) => {\n if (!addonDatasetName) return\n const client = handleCreateClient(addonDatasetName)\n setAddonDatasetClient(client)\n })\n .catch((err) => {\n // If the addon dataset does not exist or we don't have permission to access it,\n // We can ignore this error.\n setError(err)\n })\n .finally(() => {\n setReady(true)\n })\n }, [getAddonDatasetName, handleCreateClient])\n\n const ctxValue = useMemo(\n (): AddonDatasetContextValue => ({\n client: addonDatasetClient,\n createAddonDataset: handleCreateAddonDataset,\n isCreatingDataset,\n ready,\n error,\n }),\n [addonDatasetClient, error, handleCreateAddonDataset, isCreatingDataset, ready],\n )\n\n return <AddonDatasetContext.Provider value={ctxValue}>{children}</AddonDatasetContext.Provider>\n}\n\n/**\n * This provider sets the addon dataset client, currently called `comments` dataset.\n * It also exposes a `createAddonDataset` function that can be used to create the addon dataset if it does not exist.\n * @beta\n * @hidden\n */\nexport function AddonDatasetProvider(props: AddonDatasetSetupProviderProps) {\n const context = useContext(AddonDatasetContext)\n // Avoid mounting the provider if it's already provided by a parent\n if (context) return props.children\n return <AddonDatasetProviderInner {...props} />\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AddonDatasetProvider-C8r1w5ec.js","names":["SanityClient","useCallback","useContext","useEffect","useMemo","useState","AddonDatasetContext","useClient","DEFAULT_STUDIO_CLIENT_OPTIONS","useWorkspace","AddonDatasetContextValue","AddonDatasetSetupProviderProps","children","React","ReactNode","AddonDatasetProviderInner","props","$","_c","dataset","projectId","originalClient","addonDatasetClient","setAddonDatasetClient","isCreatingDataset","setIsCreatingDataset","ready","setReady","error","setError","t0","res","request","uri","tag","name","getAddonDatasetName","t1","addonDatasetName","client","withConfig","requestTagPrefix","useCdn","handleCreateClient","t2","addonDatasetName_0","client_0","run","res_0","method","datasetName","client_1","finally","handleCreateAddonDataset","t3","t4","then","addonDatasetName_1","client_2","catch","err","t5","createAddonDataset","ctxValue","t6","AddonDatasetProvider","context"],"sources":["../src/core/studio/addonDataset/AddonDatasetProvider.tsx"],"sourcesContent":["import {type SanityClient} from '@sanity/client'\nimport {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {AddonDatasetContext} from 'sanity/_singletons'\n\nimport {useClient} from '../../hooks/useClient'\nimport {DEFAULT_STUDIO_CLIENT_OPTIONS} from '../../studioClient'\nimport {useWorkspace} from '../workspace'\nimport {type AddonDatasetContextValue} from './types'\n\ninterface AddonDatasetSetupProviderProps {\n children: React.ReactNode\n}\n\nfunction AddonDatasetProviderInner(props: AddonDatasetSetupProviderProps) {\n const {children} = props\n const {dataset, projectId} = useWorkspace()\n const originalClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)\n const [addonDatasetClient, setAddonDatasetClient] = useState<SanityClient | null>(null)\n const [isCreatingDataset, setIsCreatingDataset] = useState<boolean>(false)\n const [ready, setReady] = useState<boolean>(false)\n const [error, setError] = useState<Error | null>(null)\n\n const getAddonDatasetName = useCallback(async (): Promise<string | undefined> => {\n const res = await originalClient.request({\n uri: `/projects/${projectId}/datasets?datasetProfile=comments&addonFor=${dataset}`,\n tag: 'sanity.studio',\n })\n\n // The response is an array containing the addon dataset. We only expect\n // one addon dataset to be returned, so we return the name of the first\n // addon dataset in the array.\n return res?.[0]?.name\n }, [dataset, originalClient, projectId])\n\n const handleCreateClient = useCallback(\n (addonDatasetName: string) => {\n const client = originalClient.withConfig({\n dataset: addonDatasetName,\n projectId,\n requestTagPrefix: 'sanity.studio',\n useCdn: false,\n })\n\n return client\n },\n [originalClient, projectId],\n )\n\n const handleCreateAddonDataset = useCallback(async (): Promise<SanityClient | null> => {\n setIsCreatingDataset(true)\n\n // Before running the setup, we check if the addon dataset already exists.\n // The addon dataset might already exist if another user has already run\n // the setup, but the current user has not refreshed the page yet and\n // therefore don't have a client for the addon dataset yet.\n try {\n const addonDatasetName = await getAddonDatasetName()\n\n if (addonDatasetName) {\n const client = handleCreateClient(addonDatasetName)\n setAddonDatasetClient(client)\n setIsCreatingDataset(false)\n return client\n }\n } catch {\n // If the dataset does not exist we will get an error, but we can ignore\n // it since we will create the dataset in the next step.\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n // 1. Create the addon dataset\n const res = await originalClient.request({\n uri: `/comments/${dataset}/setup`,\n method: 'POST',\n })\n\n const datasetName = res?.datasetName\n\n // 2. We can't continue if the addon dataset name is not returned\n if (!datasetName) {\n setIsCreatingDataset(false)\n return null\n }\n\n // 3. Create a client for the addon dataset and set it in the context value\n // so that the consumers can use it to execute comment operations and set up\n // the real time listener for the addon dataset.\n const client = handleCreateClient(datasetName)\n setAddonDatasetClient(client)\n\n // 4. Return the client so that the caller can use it to execute operations\n return client\n }\n return run().finally(() => {\n setIsCreatingDataset(false)\n })\n }, [dataset, getAddonDatasetName, handleCreateClient, originalClient])\n\n useEffect(() => {\n // On mount, we check if the addon dataset already exists. If it does, we create\n // a client for it and set it in the context value so that the consumers can use\n // it to execute comment operations and set up the real time listener for the addon\n // dataset.\n getAddonDatasetName()\n .then((addonDatasetName) => {\n if (!addonDatasetName) return\n const client = handleCreateClient(addonDatasetName)\n setAddonDatasetClient(client)\n })\n .catch((err) => {\n // If the addon dataset does not exist or we don't have permission to access it,\n // We can ignore this error.\n setError(err)\n })\n .finally(() => {\n setReady(true)\n })\n }, [getAddonDatasetName, handleCreateClient])\n\n const ctxValue = useMemo(\n (): AddonDatasetContextValue => ({\n client: addonDatasetClient,\n createAddonDataset: handleCreateAddonDataset,\n isCreatingDataset,\n ready,\n error,\n }),\n [addonDatasetClient, error, handleCreateAddonDataset, isCreatingDataset, ready],\n )\n\n return <AddonDatasetContext.Provider value={ctxValue}>{children}</AddonDatasetContext.Provider>\n}\n\n/**\n * This provider sets the addon dataset client, currently called `comments` dataset.\n * It also exposes a `createAddonDataset` function that can be used to create the addon dataset if it does not exist.\n * @beta\n * @hidden\n */\nexport function AddonDatasetProvider(props: AddonDatasetSetupProviderProps) {\n const context = useContext(AddonDatasetContext)\n // Avoid mounting the provider if it's already provided by a parent\n if (context) return props.children\n return <AddonDatasetProviderInner {...props} />\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { a as Button$1, i as TooltipDelayGroupProvider$1 } from "./MenuItem-DEAYBMOb.js";
1
+ import { a as Button$1, i as TooltipDelayGroupProvider$1 } from "./MenuItem-BWdL61CI.js";
2
2
  import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
3
- import { At as DEFAULT_WEEK_DAY_NAMES, Dt as useWeeksOfMonth, Ot as ARROW_KEYS, kt as DEFAULT_MONTH_NAMES } from "./useBundleDocuments-DQBEGnM0.js";
4
- import { t as useTimeZone } from "./useTimeZone-Cxx2Mhvw.js";
5
- import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
3
+ import { At as DEFAULT_WEEK_DAY_NAMES, Dt as useWeeksOfMonth, Ot as ARROW_KEYS, kt as DEFAULT_MONTH_NAMES } from "./useBundleDocuments-DJDYk_0s.js";
4
+ import { t as useTimeZone } from "./useTimeZone-BWUYWCvT.js";
5
+ import { useEffect, useImperativeHandle, useRef, useState } from "react";
6
6
  import { c } from "react/compiler-runtime";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { Box, Card, Flex, Grid, Label, Text } from "@sanity/ui";
@@ -125,36 +125,37 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
125
125
  outline: "none"
126
126
  },
127
127
  tabIndex: -1
128
- }), CalendarFilter = forwardRef(function Calendar(props, forwardedRef) {
129
- let $ = c(86), handleOnFocusedDateChange, onSelect, providedFocusedDate, renderCalendarDay, restProps, selectedDate, timeZoneScope;
130
- $[0] === props ? (handleOnFocusedDateChange = $[1], onSelect = $[2], providedFocusedDate = $[3], renderCalendarDay = $[4], restProps = $[5], selectedDate = $[6], timeZoneScope = $[7]) : ({focusedDate: providedFocusedDate, onFocusedDateChange: handleOnFocusedDateChange, onSelect, selectedDate, renderCalendarDay, timeZoneScope, ...restProps} = props, $[0] = props, $[1] = handleOnFocusedDateChange, $[2] = onSelect, $[3] = providedFocusedDate, $[4] = renderCalendarDay, $[5] = restProps, $[6] = selectedDate, $[7] = timeZoneScope);
128
+ });
129
+ function CalendarFilter(props) {
130
+ let $ = c(87), forwardedRef, handleOnFocusedDateChange, onSelect, providedFocusedDate, renderCalendarDay, restProps, selectedDate, timeZoneScope;
131
+ $[0] === props ? (forwardedRef = $[1], handleOnFocusedDateChange = $[2], onSelect = $[3], providedFocusedDate = $[4], renderCalendarDay = $[5], restProps = $[6], selectedDate = $[7], timeZoneScope = $[8]) : ({ref: forwardedRef, focusedDate: providedFocusedDate, onFocusedDateChange: handleOnFocusedDateChange, onSelect, selectedDate, renderCalendarDay, timeZoneScope, ...restProps} = props, $[0] = props, $[1] = forwardedRef, $[2] = handleOnFocusedDateChange, $[3] = onSelect, $[4] = providedFocusedDate, $[5] = renderCalendarDay, $[6] = restProps, $[7] = selectedDate, $[8] = timeZoneScope);
131
132
  let t0;
132
- $[8] === Symbol.for("react.memo_cache_sentinel") ? (t0 = /* @__PURE__ */ new Date(), $[8] = t0) : t0 = $[8];
133
+ $[9] === Symbol.for("react.memo_cache_sentinel") ? (t0 = /* @__PURE__ */ new Date(), $[9] = t0) : t0 = $[9];
133
134
  let [_focusedDate, _setFocusedDate] = useState(t0), { t: tCore } = useTranslation(), { zoneDateToUtc } = useTimeZone(timeZoneScope), focusedDate = providedFocusedDate || _focusedDate, t1;
134
- $[9] !== handleOnFocusedDateChange || $[10] !== providedFocusedDate ? (t1 = (date) => {
135
+ $[10] !== handleOnFocusedDateChange || $[11] !== providedFocusedDate ? (t1 = (date) => {
135
136
  handleOnFocusedDateChange && providedFocusedDate ? handleOnFocusedDateChange(date) : _setFocusedDate(date);
136
- }, $[9] = handleOnFocusedDateChange, $[10] = providedFocusedDate, $[11] = t1) : t1 = $[11];
137
+ }, $[10] = handleOnFocusedDateChange, $[11] = providedFocusedDate, $[12] = t1) : t1 = $[12];
137
138
  let onFocusedDateChange = t1, t2;
138
- $[12] !== onFocusedDateChange || $[13] !== zoneDateToUtc ? (t2 = (date_0) => {
139
+ $[13] !== onFocusedDateChange || $[14] !== zoneDateToUtc ? (t2 = (date_0) => {
139
140
  onFocusedDateChange(zoneDateToUtc(date_0));
140
- }, $[12] = onFocusedDateChange, $[13] = zoneDateToUtc, $[14] = t2) : t2 = $[14];
141
+ }, $[13] = onFocusedDateChange, $[14] = zoneDateToUtc, $[15] = t2) : t2 = $[15];
141
142
  let setFocusedDate = t2, t3;
142
- $[15] !== focusedDate || $[16] !== setFocusedDate ? (t3 = (by) => setFocusedDate(addMonths(focusedDate, by)), $[15] = focusedDate, $[16] = setFocusedDate, $[17] = t3) : t3 = $[17];
143
+ $[16] !== focusedDate || $[17] !== setFocusedDate ? (t3 = (by) => setFocusedDate(addMonths(focusedDate, by)), $[16] = focusedDate, $[17] = setFocusedDate, $[18] = t3) : t3 = $[18];
143
144
  let moveFocusedDate = t3, t4;
144
- $[18] !== onFocusedDateChange || $[19] !== onSelect || $[20] !== zoneDateToUtc ? (t4 = (date_1) => {
145
+ $[19] !== onFocusedDateChange || $[20] !== onSelect || $[21] !== zoneDateToUtc ? (t4 = (date_1) => {
145
146
  if (date_1) {
146
147
  let targetDate = zoneDateToUtc(setMinutes(setHours(date_1, date_1.getHours()), date_1.getMinutes()));
147
148
  onSelect(targetDate), onFocusedDateChange(targetDate);
148
149
  } else onSelect(void 0);
149
- }, $[18] = onFocusedDateChange, $[19] = onSelect, $[20] = zoneDateToUtc, $[21] = t4) : t4 = $[21];
150
+ }, $[19] = onFocusedDateChange, $[20] = onSelect, $[21] = zoneDateToUtc, $[22] = t4) : t4 = $[22];
150
151
  let handleDateChange = t4, ref = useRef(null), t5;
151
- $[22] === Symbol.for("react.memo_cache_sentinel") ? (t5 = () => ref.current, $[22] = t5) : t5 = $[22], useImperativeHandle(forwardedRef, t5);
152
+ $[23] === Symbol.for("react.memo_cache_sentinel") ? (t5 = () => ref.current, $[23] = t5) : t5 = $[23], useImperativeHandle(forwardedRef, t5);
152
153
  let t6;
153
- $[23] === Symbol.for("react.memo_cache_sentinel") ? (t6 = () => {
154
+ $[24] === Symbol.for("react.memo_cache_sentinel") ? (t6 = () => {
154
155
  ref.current?.querySelector("[data-focused=\"true\"]")?.focus();
155
- }, $[23] = t6) : t6 = $[23];
156
+ }, $[24] = t6) : t6 = $[24];
156
157
  let focusCurrentWeekDay = t6, t7;
157
- $[24] !== focusedDate || $[25] !== onFocusedDateChange || $[26] !== zoneDateToUtc ? (t7 = (event) => {
158
+ $[25] !== focusedDate || $[26] !== onFocusedDateChange || $[27] !== zoneDateToUtc ? (t7 = (event) => {
158
159
  if (ARROW_KEYS.includes(event.key)) {
159
160
  if (event.preventDefault(), event.currentTarget.hasAttribute("data-calendar-grid")) {
160
161
  focusCurrentWeekDay();
@@ -162,41 +163,41 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
162
163
  }
163
164
  event.key === "ArrowUp" && onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -7))), event.key === "ArrowDown" && onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 7))), event.key === "ArrowLeft" && onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -1))), event.key === "ArrowRight" && onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 1))), ref.current?.querySelector("[data-preserve-focus]")?.focus();
164
165
  }
165
- }, $[24] = focusedDate, $[25] = onFocusedDateChange, $[26] = zoneDateToUtc, $[27] = t7) : t7 = $[27];
166
+ }, $[25] = focusedDate, $[26] = onFocusedDateChange, $[27] = zoneDateToUtc, $[28] = t7) : t7 = $[28];
166
167
  let handleKeyDown = t7, t8, t9;
167
- $[28] === Symbol.for("react.memo_cache_sentinel") ? (t8 = () => {
168
+ $[29] === Symbol.for("react.memo_cache_sentinel") ? (t8 = () => {
168
169
  focusCurrentWeekDay();
169
- }, t9 = [focusCurrentWeekDay], $[28] = t8, $[29] = t9) : (t8 = $[28], t9 = $[29]), useEffect(t8, t9);
170
+ }, t9 = [focusCurrentWeekDay], $[29] = t8, $[30] = t9) : (t8 = $[29], t9 = $[30]), useEffect(t8, t9);
170
171
  let t10;
171
- $[30] === Symbol.for("react.memo_cache_sentinel") ? (t10 = () => {
172
+ $[31] === Symbol.for("react.memo_cache_sentinel") ? (t10 = () => {
172
173
  document.activeElement?.matches("[data-calendar-grid], [data-calendar-grid] [data-preserve-focus]") && focusCurrentWeekDay();
173
- }, $[30] = t10) : t10 = $[30];
174
+ }, $[31] = t10) : t10 = $[31];
174
175
  let t11;
175
- $[31] === focusedDate ? t11 = $[32] : (t11 = [
176
+ $[32] === focusedDate ? t11 = $[33] : (t11 = [
176
177
  ref,
177
178
  focusCurrentWeekDay,
178
179
  focusedDate
179
- ], $[31] = focusedDate, $[32] = t11), useEffect(t10, t11);
180
+ ], $[32] = focusedDate, $[33] = t11), useEffect(t10, t11);
180
181
  let t12;
181
- $[33] !== onFocusedDateChange || $[34] !== onSelect ? (t12 = () => {
182
+ $[34] !== onFocusedDateChange || $[35] !== onSelect ? (t12 = () => {
182
183
  let now = /* @__PURE__ */ new Date();
183
184
  onSelect(now), onFocusedDateChange(now);
184
- }, $[33] = onFocusedDateChange, $[34] = onSelect, $[35] = t12) : t12 = $[35];
185
+ }, $[34] = onFocusedDateChange, $[35] = onSelect, $[36] = t12) : t12 = $[36];
185
186
  let handleNowClick = t12, t13;
186
- $[36] === moveFocusedDate ? t13 = $[37] : (t13 = () => moveFocusedDate(-1), $[36] = moveFocusedDate, $[37] = t13);
187
+ $[37] === moveFocusedDate ? t13 = $[38] : (t13 = () => moveFocusedDate(-1), $[37] = moveFocusedDate, $[38] = t13);
187
188
  let handlePrevMonthClick = t13, t14;
188
- $[38] === moveFocusedDate ? t14 = $[39] : (t14 = () => moveFocusedDate(1), $[38] = moveFocusedDate, $[39] = t14);
189
+ $[39] === moveFocusedDate ? t14 = $[40] : (t14 = () => moveFocusedDate(1), $[39] = moveFocusedDate, $[40] = t14);
189
190
  let handleNextMonthClick = t14, t15;
190
- $[40] === Symbol.for("react.memo_cache_sentinel") ? (t15 = {
191
+ $[41] === Symbol.for("react.memo_cache_sentinel") ? (t15 = {
191
192
  borderBottom: "1px solid var(--card-border-color)",
192
193
  minHeight: "55px",
193
194
  position: "sticky",
194
195
  top: 0
195
- }, $[40] = t15) : t15 = $[40];
196
+ }, $[41] = t15) : t15 = $[41];
196
197
  let t16 = DEFAULT_MONTH_NAMES[focusedDate?.getMonth()], t17;
197
- $[41] === focusedDate ? t17 = $[42] : (t17 = focusedDate?.getFullYear(), $[41] = focusedDate, $[42] = t17);
198
+ $[42] === focusedDate ? t17 = $[43] : (t17 = focusedDate?.getFullYear(), $[42] = focusedDate, $[43] = t17);
198
199
  let t18;
199
- $[43] !== t16 || $[44] !== t17 ? (t18 = /* @__PURE__ */ jsxs(Text, {
200
+ $[44] !== t16 || $[45] !== t17 ? (t18 = /* @__PURE__ */ jsxs(Text, {
200
201
  weight: "medium",
201
202
  size: 1,
202
203
  children: [
@@ -204,35 +205,35 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
204
205
  " ",
205
206
  t17
206
207
  ]
207
- }), $[43] = t16, $[44] = t17, $[45] = t18) : t18 = $[45];
208
+ }), $[44] = t16, $[45] = t17, $[46] = t18) : t18 = $[46];
208
209
  let t19;
209
- $[46] === Symbol.for("react.memo_cache_sentinel") ? (t19 = { content: "Previous month" }, $[46] = t19) : t19 = $[46];
210
+ $[47] === Symbol.for("react.memo_cache_sentinel") ? (t19 = { content: "Previous month" }, $[47] = t19) : t19 = $[47];
210
211
  let t20;
211
- $[47] !== handlePrevMonthClick || $[48] !== restProps.disabled ? (t20 = /* @__PURE__ */ jsx(Button$1, {
212
+ $[48] !== handlePrevMonthClick || $[49] !== restProps.disabled ? (t20 = /* @__PURE__ */ jsx(Button$1, {
212
213
  icon: ChevronLeftIcon,
213
214
  mode: "bleed",
214
215
  onClick: handlePrevMonthClick,
215
216
  tooltipProps: t19,
216
217
  disabled: restProps.disabled
217
- }), $[47] = handlePrevMonthClick, $[48] = restProps.disabled, $[49] = t20) : t20 = $[49];
218
+ }), $[48] = handlePrevMonthClick, $[49] = restProps.disabled, $[50] = t20) : t20 = $[50];
218
219
  let t21;
219
- $[50] === Symbol.for("react.memo_cache_sentinel") ? (t21 = { content: "Next month" }, $[50] = t21) : t21 = $[50];
220
+ $[51] === Symbol.for("react.memo_cache_sentinel") ? (t21 = { content: "Next month" }, $[51] = t21) : t21 = $[51];
220
221
  let t22;
221
- $[51] !== handleNextMonthClick || $[52] !== restProps.disabled ? (t22 = /* @__PURE__ */ jsx(Button$1, {
222
+ $[52] !== handleNextMonthClick || $[53] !== restProps.disabled ? (t22 = /* @__PURE__ */ jsx(Button$1, {
222
223
  icon: ChevronRightIcon,
223
224
  mode: "bleed",
224
225
  onClick: handleNextMonthClick,
225
226
  tooltipProps: t21,
226
227
  disabled: restProps.disabled
227
- }), $[51] = handleNextMonthClick, $[52] = restProps.disabled, $[53] = t22) : t22 = $[53];
228
+ }), $[52] = handleNextMonthClick, $[53] = restProps.disabled, $[54] = t22) : t22 = $[54];
228
229
  let t23;
229
- $[54] !== t20 || $[55] !== t22 ? (t23 = /* @__PURE__ */ jsx(Flex, {
230
+ $[55] !== t20 || $[56] !== t22 ? (t23 = /* @__PURE__ */ jsx(Flex, {
230
231
  paddingRight: 3,
231
232
  gap: 2,
232
233
  children: /* @__PURE__ */ jsxs(TooltipDelayGroupProvider$1, { children: [t20, t22] })
233
- }), $[54] = t20, $[55] = t22, $[56] = t23) : t23 = $[56];
234
+ }), $[55] = t20, $[56] = t22, $[57] = t23) : t23 = $[57];
234
235
  let t24;
235
- $[57] !== t18 || $[58] !== t23 ? (t24 = /* @__PURE__ */ jsx(Flex, {
236
+ $[58] !== t18 || $[59] !== t23 ? (t24 = /* @__PURE__ */ jsx(Flex, {
236
237
  align: "center",
237
238
  paddingLeft: 4,
238
239
  style: t15,
@@ -242,9 +243,9 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
242
243
  justify: "space-between",
243
244
  children: [t18, t23]
244
245
  })
245
- }), $[57] = t18, $[58] = t23, $[59] = t24) : t24 = $[59];
246
+ }), $[58] = t18, $[59] = t23, $[60] = t24) : t24 = $[60];
246
247
  let t25;
247
- $[60] !== focusedDate || $[61] !== handleDateChange || $[62] !== providedFocusedDate || $[63] !== renderCalendarDay || $[64] !== restProps.disabled || $[65] !== selectedDate || $[66] !== timeZoneScope ? (t25 = /* @__PURE__ */ jsx(CalendarMonth, {
248
+ $[61] !== focusedDate || $[62] !== handleDateChange || $[63] !== providedFocusedDate || $[64] !== renderCalendarDay || $[65] !== restProps.disabled || $[66] !== selectedDate || $[67] !== timeZoneScope ? (t25 = /* @__PURE__ */ jsx(CalendarMonth, {
248
249
  date: focusedDate,
249
250
  focused: providedFocusedDate,
250
251
  onSelect: handleDateChange,
@@ -252,9 +253,9 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
252
253
  renderCalendarDay,
253
254
  disabled: restProps.disabled,
254
255
  timeZoneScope
255
- }), $[60] = focusedDate, $[61] = handleDateChange, $[62] = providedFocusedDate, $[63] = renderCalendarDay, $[64] = restProps.disabled, $[65] = selectedDate, $[66] = timeZoneScope, $[67] = t25) : t25 = $[67];
256
+ }), $[61] = focusedDate, $[62] = handleDateChange, $[63] = providedFocusedDate, $[64] = renderCalendarDay, $[65] = restProps.disabled, $[66] = selectedDate, $[67] = timeZoneScope, $[68] = t25) : t25 = $[68];
256
257
  let t26;
257
- $[68] !== handleKeyDown || $[69] !== t25 ? (t26 = /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Box, {
258
+ $[69] !== handleKeyDown || $[70] !== t25 ? (t26 = /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Box, {
258
259
  "data-calendar-grid": !0,
259
260
  onKeyDown: handleKeyDown,
260
261
  overflow: "hidden",
@@ -262,15 +263,15 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
262
263
  paddingX: 1,
263
264
  tabIndex: 0,
264
265
  children: [t25, PRESERVE_FOCUS_ELEMENT]
265
- }) }), $[68] = handleKeyDown, $[69] = t25, $[70] = t26) : t26 = $[70];
266
+ }) }), $[69] = handleKeyDown, $[70] = t25, $[71] = t26) : t26 = $[71];
266
267
  let t27;
267
- $[71] === Symbol.for("react.memo_cache_sentinel") ? (t27 = { borderBottom: "1px solid var(--card-border-color)" }, $[71] = t27) : t27 = $[71];
268
+ $[72] === Symbol.for("react.memo_cache_sentinel") ? (t27 = { borderBottom: "1px solid var(--card-border-color)" }, $[72] = t27) : t27 = $[72];
268
269
  let t28 = restProps.disabled, t29;
269
- $[72] === tCore ? t29 = $[73] : (t29 = tCore("calendar.action.go-to-today-aria-label"), $[72] = tCore, $[73] = t29);
270
+ $[73] === tCore ? t29 = $[74] : (t29 = tCore("calendar.action.go-to-today-aria-label"), $[73] = tCore, $[74] = t29);
270
271
  let t30;
271
- $[74] === tCore ? t30 = $[75] : (t30 = tCore("calendar.action.go-to-today"), $[74] = tCore, $[75] = t30);
272
+ $[75] === tCore ? t30 = $[76] : (t30 = tCore("calendar.action.go-to-today"), $[75] = tCore, $[76] = t30);
272
273
  let t31;
273
- $[76] !== handleNowClick || $[77] !== restProps.disabled || $[78] !== t29 || $[79] !== t30 ? (t31 = /* @__PURE__ */ jsx(Box, {
274
+ $[77] !== handleNowClick || $[78] !== restProps.disabled || $[79] !== t29 || $[80] !== t30 ? (t31 = /* @__PURE__ */ jsx(Box, {
274
275
  flex: 1,
275
276
  style: t27,
276
277
  children: /* @__PURE__ */ jsx(Button$1, {
@@ -281,9 +282,9 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
281
282
  "aria-label": t29,
282
283
  text: t30
283
284
  })
284
- }), $[76] = handleNowClick, $[77] = restProps.disabled, $[78] = t29, $[79] = t30, $[80] = t31) : t31 = $[80];
285
+ }), $[77] = handleNowClick, $[78] = restProps.disabled, $[79] = t29, $[80] = t30, $[81] = t31) : t31 = $[81];
285
286
  let t32;
286
- return $[81] !== restProps || $[82] !== t24 || $[83] !== t26 || $[84] !== t31 ? (t32 = /* @__PURE__ */ jsxs(Box, {
287
+ return $[82] !== restProps || $[83] !== t24 || $[84] !== t26 || $[85] !== t31 ? (t32 = /* @__PURE__ */ jsxs(Box, {
287
288
  "data-ui": "Calendar",
288
289
  ...restProps,
289
290
  ref,
@@ -292,8 +293,8 @@ const PRESERVE_FOCUS_ELEMENT = /* @__PURE__ */ jsx("span", {
292
293
  t26,
293
294
  t31
294
295
  ]
295
- }), $[81] = restProps, $[82] = t24, $[83] = t26, $[84] = t31, $[85] = t32) : t32 = $[85], t32;
296
- });
296
+ }), $[82] = restProps, $[83] = t24, $[84] = t26, $[85] = t31, $[86] = t32) : t32 = $[86], t32;
297
+ }
297
298
  export { CalendarDay as n, CalendarFilter as t };
298
299
 
299
- //# sourceMappingURL=CalendarFilter-CnHl_Wxj.js.map
300
+ //# sourceMappingURL=CalendarFilter-DgVEUPXa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendarFilter-DgVEUPXa.js","names":["CloseIcon","Card","CardTone","Text","isWeekend","useCallback","CalendarDayProps","date","Date","focused","onSelect","isCurrentMonth","isToday","selected","dateStyles","React","CSSProperties","disabled","CalendarDay","props","$","_c","t0","t1","undefined","t2","handleClick","tone","t3","toDateString","t4","t5","getDate","getMonth","t6","Symbol","for","position","t7","t8","opacity","textAlign","t9","t10","t11","t12","Box","Card","Grid","Label","isSameDay","isSameMonth","TimeZoneScope","useTimeZone","DEFAULT_WEEK_DAY_NAMES","useWeeksOfMonth","CalendarDay","DefaultCalendarDay","CalendarProps","CalendarMonthProps","date","Date","focused","selected","onSelect","hidden","renderCalendarDay","disabled","timeZoneScope","CalendarMonth","props","$","_c","getCurrentZoneDate","weeksOfMonth","t0","t1","t2","Symbol","for","gap","gridTemplateColumns","map","_temp","t3","t4","week","weekIdx","days","dayDate","dayIdx","isToday","isCurrentMonth","t5","weekday","textAlign","slice","ChevronLeftIcon","ChevronRightIcon","Box","Flex","Text","addDays","addMonths","setHours","setMinutes","ComponentProps","KeyboardEvent","useCallback","useEffect","useImperativeHandle","useRef","useState","RefAttributes","Button","TooltipDelayGroupProvider","TimeZoneScope","useTimeZone","useTranslation","ARROW_KEYS","DEFAULT_MONTH_NAMES","CalendarDayProps","CalendarMonth","CalendarProps","Omit","focusedDate","Date","onSelect","date","onFocusedDateChange","index","selectedDate","renderCalendarDay","props","React","ReactNode","disabled","timeZoneScope","PRESERVE_FOCUS_ELEMENT","overflow","position","outline","CalendarFilter","$","_c","forwardedRef","handleOnFocusedDateChange","providedFocusedDate","restProps","ref","t0","Symbol","for","_focusedDate","_setFocusedDate","t","tCore","zoneDateToUtc","t1","t2","date_0","setFocusedDate","t3","by","moveFocusedDate","t4","date_1","targetDate","getHours","getMinutes","undefined","handleDateChange","t5","current","t6","querySelector","focus","focusCurrentWeekDay","t7","event","includes","key","preventDefault","currentTarget","hasAttribute","handleKeyDown","t8","t9","t10","currentFocusInCalendarGrid","document","activeElement","matches","t11","t12","now","handleNowClick","t13","handlePrevMonthClick","t14","handleNextMonthClick","t15","borderBottom","minHeight","top","t16","getMonth","t17","getFullYear","t18","t19","content","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32"],"sources":["../src/core/components/inputs/DateFilters/calendar/CalendarDay.tsx","../src/core/components/inputs/DateFilters/calendar/CalendarMonth.tsx","../src/core/components/inputs/DateFilters/calendar/CalendarFilter.tsx"],"sourcesContent":["import {CloseIcon} from '@sanity/icons/Close'\nimport {Card, type CardTone, Text} from '@sanity/ui'\nimport {isWeekend} from 'date-fns/isWeekend'\nimport {useCallback} from 'react'\n\nexport interface CalendarDayProps {\n date: Date // clock time\n focused?: boolean\n onSelect: (date?: Date) => void\n isCurrentMonth?: boolean\n isToday: boolean\n selected?: boolean\n dateStyles?: React.CSSProperties\n disabled?: boolean\n}\n\nexport function CalendarDay(props: CalendarDayProps) {\n const {\n date,\n focused,\n isCurrentMonth,\n isToday,\n onSelect,\n selected,\n disabled,\n dateStyles = {},\n } = props\n\n const handleClick = useCallback(() => {\n if (selected) {\n onSelect(undefined)\n } else {\n onSelect(date)\n }\n }, [date, onSelect, selected])\n\n let tone: CardTone\n if (isToday || selected) {\n tone = 'primary'\n } else if (isWeekend(date)) {\n // tone = 'transparent'\n tone = 'default'\n } else {\n tone = 'default'\n }\n\n return (\n <div aria-selected={selected} data-ui=\"CalendarDay\">\n <Card\n aria-label={date.toDateString()}\n aria-pressed={selected}\n as=\"button\"\n __unstable_focusRing\n data-weekday\n data-focused={focused ? 'true' : ''}\n data-testid={isToday ? 'day-tile-today' : `day-tile-${date.getDate()}-${date.getMonth()}`}\n role=\"button\"\n tabIndex={-1}\n onClick={handleClick}\n paddingX={3}\n paddingY={4}\n radius={2}\n selected={selected}\n style={{position: 'relative'}}\n tone={tone}\n disabled={disabled}\n >\n <Text\n size={1}\n style={{\n opacity: !selected && !isCurrentMonth ? 0.35 : 1,\n textAlign: 'center',\n ...dateStyles,\n }}\n >\n {selected ? <CloseIcon /> : date.getDate()}\n </Text>\n </Card>\n </div>\n )\n}\n","import {Box, Card, Grid, Label} from '@sanity/ui'\nimport {isSameDay} from 'date-fns/isSameDay'\nimport {isSameMonth} from 'date-fns/isSameMonth'\n\nimport {type TimeZoneScope, useTimeZone} from '../../../../hooks/useTimeZone'\nimport {DEFAULT_WEEK_DAY_NAMES} from '../../DateInputs/calendar/constants'\nimport {useWeeksOfMonth} from '../../DateInputs/calendar/utils'\nimport {CalendarDay as DefaultCalendarDay} from './CalendarDay'\nimport {type CalendarProps} from './CalendarFilter'\n\ninterface CalendarMonthProps {\n date: Date\n focused?: Date\n selected?: Date\n onSelect: (date?: Date) => void\n hidden?: boolean\n renderCalendarDay?: CalendarProps['renderCalendarDay']\n disabled?: boolean\n timeZoneScope: TimeZoneScope\n}\n\nexport function CalendarMonth(props: CalendarMonthProps) {\n const {date, renderCalendarDay, hidden, disabled, timeZoneScope} = props\n const {getCurrentZoneDate} = useTimeZone(timeZoneScope)\n const CalendarDay = renderCalendarDay || DefaultCalendarDay\n const weeksOfMonth = useWeeksOfMonth(date)\n\n return (\n <Box aria-hidden={hidden || false} data-ui=\"CalendarMonth\">\n <Grid\n style={{\n gap: '1px',\n gridTemplateColumns: 'repeat(7, 1fr)',\n }}\n >\n {/* Header */}\n {DEFAULT_WEEK_DAY_NAMES.map((weekday) => (\n <Card key={weekday} paddingY={3}>\n <Label size={1} style={{textAlign: 'center'}}>\n {weekday.slice(0, 1)}\n </Label>\n </Card>\n ))}\n\n {weeksOfMonth.map((week, weekIdx) =>\n week.days.map((dayDate, dayIdx) => {\n const focused = props.focused && isSameDay(dayDate, props.focused)\n const selected = props.selected && isSameDay(dayDate, props.selected)\n const isToday = isSameDay(dayDate, getCurrentZoneDate())\n const isCurrentMonth = isSameMonth(dayDate, props.focused || date)\n\n return (\n <CalendarDay\n key={`${weekIdx}-${dayIdx}`}\n date={dayDate}\n focused={focused}\n isCurrentMonth={isCurrentMonth}\n isToday={isToday}\n onSelect={props.onSelect}\n selected={selected}\n disabled={disabled}\n />\n )\n }),\n )}\n </Grid>\n </Box>\n )\n}\n","import {ChevronLeftIcon} from '@sanity/icons/ChevronLeft'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {addDays} from 'date-fns/addDays'\nimport {addMonths} from 'date-fns/addMonths'\nimport {setHours} from 'date-fns/setHours'\nimport {setMinutes} from 'date-fns/setMinutes'\nimport {\n type ComponentProps,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {TooltipDelayGroupProvider} from '../../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {type TimeZoneScope, useTimeZone} from '../../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ARROW_KEYS, DEFAULT_MONTH_NAMES} from '../../DateInputs/calendar/constants'\nimport {type CalendarDayProps} from './CalendarDay'\nimport {CalendarMonth} from './CalendarMonth'\n\nexport type CalendarProps = Omit<ComponentProps<'div'>, 'onSelect'> & {\n focusedDate?: Date\n onSelect: (date?: Date) => void\n onFocusedDateChange?: (index: Date) => void\n selectedDate?: Date\n renderCalendarDay?: (props: CalendarDayProps) => React.ReactNode\n disabled?: boolean\n timeZoneScope: TimeZoneScope\n}\n\n// This is used to maintain focus on a child element of the calendar-grid between re-renders\n// When using arrow keys to move focus from a day in one month to another we are setting focus at the button for the day\n// after it has changed but *only* if we *already* had focus inside the calendar grid (e.g not if focus was on the \"next\n// year\" button, or any of the other controls)\n// When moving from the last day of a month that displays 6 weeks in the grid to a month that displays 5 weeks, current\n// focus gets lost on render, so this provides us with a stable element to help us preserve focus on a child element of\n// the calendar grid between re-renders\nconst PRESERVE_FOCUS_ELEMENT = (\n <span\n data-preserve-focus\n style={{overflow: 'hidden', position: 'absolute', outline: 'none'}}\n tabIndex={-1}\n />\n)\n\nexport function CalendarFilter(props: CalendarProps & RefAttributes<HTMLDivElement>) {\n const {\n ref: forwardedRef,\n focusedDate: providedFocusedDate,\n onFocusedDateChange: handleOnFocusedDateChange,\n onSelect,\n selectedDate,\n renderCalendarDay,\n timeZoneScope,\n ...restProps\n } = props\n const [_focusedDate, _setFocusedDate] = useState<Date>(new Date())\n const {t: tCore} = useTranslation()\n const {zoneDateToUtc} = useTimeZone(timeZoneScope)\n\n const focusedDate = providedFocusedDate || _focusedDate\n\n const onFocusedDateChange = useCallback(\n (date: Date) => {\n if (handleOnFocusedDateChange && providedFocusedDate) {\n handleOnFocusedDateChange(date)\n } else {\n _setFocusedDate(date)\n }\n },\n [handleOnFocusedDateChange, providedFocusedDate],\n )\n\n const setFocusedDate = useCallback(\n (date: Date) => {\n onFocusedDateChange(zoneDateToUtc(date))\n },\n [onFocusedDateChange, zoneDateToUtc],\n )\n\n const moveFocusedDate = useCallback(\n (by: number) => setFocusedDate(addMonths(focusedDate, by)),\n [focusedDate, setFocusedDate],\n )\n\n const handleDateChange = useCallback(\n (date?: Date) => {\n if (date) {\n const targetDate = zoneDateToUtc(\n setMinutes(setHours(date, date.getHours()), date.getMinutes()),\n )\n onSelect(targetDate)\n onFocusedDateChange(targetDate)\n } else {\n onSelect(undefined)\n }\n },\n [onSelect, zoneDateToUtc, onFocusedDateChange],\n )\n\n const ref = useRef<HTMLDivElement | null>(null)\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(forwardedRef, () => ref.current)\n\n const focusCurrentWeekDay = useCallback(() => {\n ref.current?.querySelector<HTMLElement>(`[data-focused=\"true\"]`)?.focus()\n }, [ref])\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (!ARROW_KEYS.includes(event.key)) {\n return\n }\n event.preventDefault()\n if (event.currentTarget.hasAttribute('data-calendar-grid')) {\n focusCurrentWeekDay()\n return\n }\n if (event.key === 'ArrowUp') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -7)))\n }\n if (event.key === 'ArrowDown') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 7)))\n }\n if (event.key === 'ArrowLeft') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, -1)))\n }\n if (event.key === 'ArrowRight') {\n onFocusedDateChange(zoneDateToUtc(addDays(focusedDate, 1)))\n }\n // set focus temporarily on this element to make sure focus is still inside the calendar-grid after re-render\n ref.current?.querySelector<HTMLElement>('[data-preserve-focus]')?.focus()\n },\n [ref, focusCurrentWeekDay, onFocusedDateChange, focusedDate, zoneDateToUtc],\n )\n\n useEffect(() => {\n focusCurrentWeekDay()\n }, [focusCurrentWeekDay])\n\n useEffect(() => {\n const currentFocusInCalendarGrid = document.activeElement?.matches(\n '[data-calendar-grid], [data-calendar-grid] [data-preserve-focus]',\n )\n if (\n // Only move focus if it's currently in the calendar grid\n currentFocusInCalendarGrid\n ) {\n focusCurrentWeekDay()\n }\n }, [ref, focusCurrentWeekDay, focusedDate])\n\n // Select AND focus current date when 'today' is pressed\n const handleNowClick = useCallback(() => {\n const now = new Date()\n onSelect(now)\n onFocusedDateChange(now)\n }, [onSelect, onFocusedDateChange])\n\n const handlePrevMonthClick = useCallback(() => moveFocusedDate(-1), [moveFocusedDate])\n\n const handleNextMonthClick = useCallback(() => moveFocusedDate(1), [moveFocusedDate])\n\n return (\n <Box data-ui=\"Calendar\" {...restProps} ref={ref}>\n {/* Month + Year header */}\n <Flex\n align=\"center\"\n paddingLeft={4}\n style={{\n borderBottom: '1px solid var(--card-border-color)',\n minHeight: `55px`,\n position: 'sticky',\n top: 0,\n }}\n >\n <Flex align=\"center\" flex={1} justify=\"space-between\">\n <Text weight=\"medium\" size={1}>\n {DEFAULT_MONTH_NAMES[focusedDate?.getMonth()]} {focusedDate?.getFullYear()}\n </Text>\n <Flex paddingRight={3} gap={2}>\n <TooltipDelayGroupProvider>\n <Button\n icon={ChevronLeftIcon}\n mode=\"bleed\"\n onClick={handlePrevMonthClick}\n tooltipProps={{content: 'Previous month'}}\n disabled={restProps.disabled}\n />\n <Button\n icon={ChevronRightIcon}\n mode=\"bleed\"\n onClick={handleNextMonthClick}\n tooltipProps={{content: 'Next month'}}\n disabled={restProps.disabled}\n />\n </TooltipDelayGroupProvider>\n </Flex>\n </Flex>\n </Flex>\n\n {/* Select date */}\n <Box>\n {/* Selected month (grid of days) */}\n <Box\n data-calendar-grid\n onKeyDown={handleKeyDown}\n overflow=\"hidden\"\n paddingBottom={1}\n paddingX={1}\n tabIndex={0}\n >\n <CalendarMonth\n date={focusedDate}\n focused={providedFocusedDate}\n onSelect={handleDateChange}\n selected={selectedDate}\n renderCalendarDay={renderCalendarDay}\n disabled={restProps.disabled}\n timeZoneScope={timeZoneScope}\n />\n {PRESERVE_FOCUS_ELEMENT}\n </Box>\n </Box>\n\n {/* Today button */}\n <Box flex={1} style={{borderBottom: '1px solid var(--card-border-color)'}}>\n <Button\n disabled={restProps.disabled}\n mode=\"bleed\"\n onClick={handleNowClick}\n width=\"fill\"\n aria-label={tCore('calendar.action.go-to-today-aria-label')}\n text={tCore('calendar.action.go-to-today')}\n />\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { a as focusRingStyle } from "./useDidUpdate-Br1Dx-yJ.js";
2
- import { Fragment, cloneElement, forwardRef, isValidElement, memo, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
2
+ import { Fragment, cloneElement, isValidElement, memo, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from "react";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Box, Stack, rem } from "@sanity/ui";
@@ -8,20 +8,21 @@ import { measureElement, useVirtualizer } from "@tanstack/react-virtual";
8
8
  import throttle from "lodash-es/throttle.js";
9
9
  const LIST_ITEM_INTERACTIVE_SELECTOR = "a,button", FocusOverlayDiv = /* @__PURE__ */ styled.div.withConfig({
10
10
  displayName: "FocusOverlayDiv",
11
- componentId: "sc-nt8nl4-0"
11
+ componentId: "sc-bg3sq0-0"
12
12
  })(({ theme, offset }) => css`bottom:${-offset}px;border-radius:${rem(theme.sanity.radius[1])};left:${-offset}px;pointer-events:none;position:absolute;right:${-offset}px;top:${-offset}px;z-index:2;${VirtualListBox}:focus-visible &{box-shadow:${focusRingStyle({
13
13
  base: theme.sanity.color.base,
14
14
  focusRing: theme.sanity.focusRing
15
15
  })};}`), PointerOverlayDiv = styled.div.withConfig({
16
16
  displayName: "PointerOverlayDiv",
17
- componentId: "sc-nt8nl4-1"
17
+ componentId: "sc-bg3sq0-1"
18
18
  })`bottom:0;display:none;left:0;position:absolute;right:0;top:0;z-index:1;@media (hover:hover){&[data-enabled='true']{display:block;}}`, VirtualListBox = styled(Box).withConfig({
19
19
  displayName: "VirtualListBox",
20
- componentId: "sc-nt8nl4-2"
20
+ componentId: "sc-bg3sq0-2"
21
21
  })`height:100%;outline:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;width:100%;`, VirtualListChildBox = styled(Box).attrs(({ $height }) => ({ style: { height: `${$height}px` } })).withConfig({
22
22
  displayName: "VirtualListChildBox",
23
- componentId: "sc-nt8nl4-3"
24
- })`position:relative;width:100%;`, CommandList = memo(forwardRef(function CommandList({ activeItemDataAttr = "data-active", ariaLabel, ariaMultiselectable = !1, autoFocus, canReceiveFocus, fixedHeight, focusRingOffset = 0, getItemDisabled, getItemKey, getItemSelected, initialIndex, initialScrollAlign = "start", inputElement, itemHeight, items, onEndReached, onEndReachedIndexOffset = 0, onlyShowSelectionWhenActive, overscan, renderItem, testId, wrapAround = !0, ...responsivePaddingProps }, ref) {
23
+ componentId: "sc-bg3sq0-3"
24
+ })`position:relative;width:100%;`;
25
+ function CommandListComponent({ ref, activeItemDataAttr = "data-active", ariaLabel, ariaMultiselectable = !1, autoFocus, canReceiveFocus, fixedHeight, focusRingOffset = 0, getItemDisabled, getItemKey, getItemSelected, initialIndex, initialScrollAlign = "start", inputElement, itemHeight, items, onEndReached, onEndReachedIndexOffset = 0, onlyShowSelectionWhenActive, overscan, renderItem, testId, wrapAround = !0, ...responsivePaddingProps }) {
25
26
  let isMountedRef = useRef(!1), [commandListId] = useState(useId()), activeIndexRef = useRef(initialIndex ?? 0), [childContainerElement, setChildContainerElement] = useState(null), [hovered, setHovered] = useState(!1), [pointerOverlayElement, setPointerOverlayElement] = useState(null), [virtualListElement, setVirtualListElement] = useState(null), handleChange = useCallback((v) => {
26
27
  if (!onEndReached) return;
27
28
  let [lastItem] = [...v.getVirtualItems()].reverse();
@@ -265,10 +266,21 @@ const LIST_ITEM_INTERACTIVE_SELECTOR = "a,button", FocusOverlayDiv = /* @__PURE_
265
266
  })
266
267
  ]
267
268
  });
268
- }));
269
- CommandList.displayName = "Memo(ForwardRef(CommandList))";
270
- const CommandListItem = memo(forwardRef(function CommandListItem(props, forwardedRef) {
271
- let $ = c(21), { children, activeIndex, activeItemCount, ariaMultiselectable, disabled, fixedHeight, getChildDescendantId, handleChildMouseEnter, selected, virtualIndex, virtualRowStart } = props, t0;
269
+ }
270
+ /**
271
+ * Renders a Command List with support for the following:
272
+ *
273
+ * - Keyboard navigation (↑ / ↓ / ENTER) to children with a specified container (`childContainerRef`)
274
+ * - Focus redirection when clicking child elements
275
+ * - Pointer blocking when navigating with arrow keys (to ensure that only one active state is visible at any given time)
276
+ * - ARIA attributes to define a `combobox` input that controls a separate `listbox`
277
+ *
278
+ * @internal
279
+ */
280
+ const CommandList = memo(CommandListComponent);
281
+ CommandList.displayName = "Memo(CommandList)";
282
+ function CommandListItemComponent(props) {
283
+ let $ = c(21), { ref: forwardedRef, children, activeIndex, activeItemCount, ariaMultiselectable, disabled, fixedHeight, getChildDescendantId, handleChildMouseEnter, selected, virtualIndex, virtualRowStart } = props, t0;
272
284
  $[0] !== activeIndex || $[1] !== disabled || $[2] !== handleChildMouseEnter ? (t0 = typeof activeIndex == "number" && !disabled ? handleChildMouseEnter(activeIndex) : void 0, $[0] = activeIndex, $[1] = disabled, $[2] = handleChildMouseEnter, $[3] = t0) : t0 = $[3];
273
285
  let onMouseEnter = t0, t1;
274
286
  $[4] !== activeIndex || $[5] !== activeItemCount || $[6] !== ariaMultiselectable || $[7] !== disabled || $[8] !== getChildDescendantId || $[9] !== selected ? (t1 = typeof activeIndex == "number" && !disabled ? {
@@ -299,8 +311,9 @@ const CommandListItem = memo(forwardRef(function CommandListItem(props, forwarde
299
311
  onMouseEnter,
300
312
  children
301
313
  }), $[14] = activeAriaAttributes, $[15] = children, $[16] = forwardedRef, $[17] = onMouseEnter, $[18] = style, $[19] = virtualIndex, $[20] = t4) : t4 = $[20], t4;
302
- }));
303
- CommandListItem.displayName = "Memo(ForwardRef(CommandListItem))";
314
+ }
315
+ const CommandListItem = memo(CommandListItemComponent);
316
+ CommandListItem.displayName = "Memo(CommandListItem)";
304
317
  function getItemIndicies(items, getItemDisabled, getItemSelected) {
305
318
  let i = -1;
306
319
  return items.reduce((acc, _, index) => {
@@ -330,4 +343,4 @@ function measureVisibleElement(element, entry, instance) {
330
343
  }
331
344
  export { CommandList as t };
332
345
 
333
- //# sourceMappingURL=CommandList-CjmwJGX8.js.map
346
+ //# sourceMappingURL=CommandList-B7noXKqO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandList-B7noXKqO.js","names":["Box","rem","Stack","measureElement","ScrollToOptions","useVirtualizer","Virtualizer","throttle","cloneElement","Fragment","isValidElement","memo","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","RefAttributes","css","styled","FIXME","focusRingStyle","CommandListElementType","CommandListGetItemDisabledCallback","CommandListGetItemSelectedCallback","CommandListHandle","CommandListProps","LIST_ITEM_DATA_ATTR_ACTIVE","LIST_ITEM_INTERACTIVE_SELECTOR","FocusOverlayDiv","div","offset","theme","sanity","radius","VirtualListBox","base","color","focusRing","PointerOverlayDiv","VirtualListChildBoxProps","$height","VirtualListChildBox","attrs","style","height","CommandListComponent","ref","activeItemDataAttr","ariaLabel","ariaMultiselectable","autoFocus","canReceiveFocus","fixedHeight","focusRingOffset","getItemDisabled","getItemKey","getItemSelected","initialIndex","initialScrollAlign","inputElement","itemHeight","items","onEndReached","onEndReachedIndexOffset","onlyShowSelectionWhenActive","overscan","renderItem","testId","wrapAround","responsivePaddingProps","isMountedRef","commandListId","activeIndexRef","childContainerElement","setChildContainerElement","HTMLElement","hovered","setHovered","pointerOverlayElement","setPointerOverlayElement","HTMLDivElement","virtualListElement","setVirtualListElement","handleChange","v","Element","lastItem","getVirtualItems","reverse","reachedEnd","index","length","current","virtualizer","count","getScrollElement","estimateSize","measureVisibleElement","onChange","itemIndices","getItemIndicies","activeItemCount","filter","disabled","enableChildContainerPointerEvents","enabled","setAttribute","toString","getChildDescendantId","getCommandListChildrenId","showChildrenActiveState","hasFocus","some","el","document","activeElement","childElements","Array","from","children","forEach","child","virtualIndex","Number","dataset","targetIndex","activeIndex","querySelector","toggleAttribute","hideChildrenActiveState","refreshChildrenActiveStateThrottled","handleUpdateActiveDescendant","removeAttribute","handleGetTopIndex","childContainerParentElement","parentElement","getBoundingClientRect","top","getVirtualItemForOffset","setActiveIndex","scrollAlign","scrollIntoView","virtualListIndex","findIndex","i","scrollToIndex","align","selectAdjacentItemIndex","direction","nextIndex","lastIndex","wrapAroundIndex","focusElement","type","focus","focusInputElement","focusListElement","handleChildMouseEnter","handleFocus","handleKeyDown","event","KeyboardEvent","key","preventDefault","currentElement","find","clickableElement","click","handleKeyDownInput","handleKeyDownList","handleVirtualListMouseEnter","handleVirtualListMouseLeave","getTopIndex","handleMouseEvent","addEventListener","passive","removeEventListener","mutationObserver","MutationObserver","observe","childList","subtree","disconnect","rootTabIndex","getTotalSize","map","virtualRow","selected","itemToRender","React","JSX","clonedItem","tabIndex","undefined","size","start","CommandList","displayName","CommandListItemComponent","props","$","_c","forwardedRef","virtualRowStart","t0","onMouseEnter","t1","activeAriaAttributes","t2","t3","flex","left","position","const","transform","width","t4","CommandListItem","reduce","acc","_","element","entry","ResizeObserverEntry","instance","measuredSize","scrollElement","isHidden","offsetWidth","offsetHeight","indexFromElement","cachedSize","itemSizeCache","get","options"],"sources":["../src/core/components/commandList/CommandList.tsx"],"sourcesContent":["import {Box, rem, Stack} from '@sanity/ui'\nimport {\n measureElement,\n type ScrollToOptions,\n useVirtualizer,\n type Virtualizer,\n} from '@tanstack/react-virtual'\nimport throttle from 'lodash-es/throttle.js'\nimport {\n cloneElement,\n Fragment,\n isValidElement,\n memo,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type RefAttributes,\n} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type FIXME} from '../../FIXME'\nimport {focusRingStyle} from '../../form/components/formField/styles'\nimport {\n type CommandListElementType,\n type CommandListGetItemDisabledCallback,\n type CommandListGetItemSelectedCallback,\n type CommandListHandle,\n type CommandListProps,\n} from './types'\n\n// Data attribute to assign to the current active virtual list element\nconst LIST_ITEM_DATA_ATTR_ACTIVE = 'data-active'\n// Selector to find the first interactive element in the virtual list element\nconst LIST_ITEM_INTERACTIVE_SELECTOR = 'a,button'\n\n/**\n * Conditionally render a focus ring overlay over the command list, with adjustable offset\n */\nconst FocusOverlayDiv = styled.div<{offset: number}>(({theme, offset}) => {\n return css`\n bottom: ${-offset}px;\n border-radius: ${rem(theme.sanity.radius[1]) /* oxlint-disable-line no-deprecated -- will fix in follow up PR */};\n left: ${-offset}px;\n pointer-events: none;\n position: absolute;\n right: ${-offset}px;\n top: ${-offset}px;\n z-index: 2;\n\n ${VirtualListBox}:focus-visible & {\n box-shadow: ${focusRingStyle({\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n base: theme.sanity.color.base,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n focusRing: theme.sanity.focusRing,\n })};\n }\n `\n})\n\n/*\n * Conditionally appears over command list items to cancel existing :hover states for all child elements.\n * It should only appear if hover capabilities are available (not on touch devices)\n */\nconst PointerOverlayDiv = styled.div`\n bottom: 0;\n display: none;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n\n @media (hover: hover) {\n &[data-enabled='true'] {\n display: block;\n }\n }\n`\n\nconst VirtualListBox = styled(Box)`\n height: 100%;\n outline: none;\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n width: 100%;\n`\n\ntype VirtualListChildBoxProps = {\n $height: number\n}\nconst VirtualListChildBox = styled(Box) //\n .attrs<VirtualListChildBoxProps>(({$height}) => ({\n style: {height: `${$height}px`},\n }))<VirtualListChildBoxProps>`\n position: relative;\n width: 100%;\n`\n\nfunction CommandListComponent({\n ref,\n activeItemDataAttr = LIST_ITEM_DATA_ATTR_ACTIVE,\n ariaLabel,\n ariaMultiselectable = false,\n autoFocus,\n canReceiveFocus,\n fixedHeight,\n focusRingOffset = 0,\n getItemDisabled,\n getItemKey,\n getItemSelected,\n initialIndex,\n initialScrollAlign = 'start',\n inputElement,\n itemHeight,\n items,\n onEndReached,\n onEndReachedIndexOffset = 0,\n onlyShowSelectionWhenActive,\n overscan,\n renderItem,\n testId,\n wrapAround = true,\n ...responsivePaddingProps\n}: CommandListProps & RefAttributes<CommandListHandle>) {\n const isMountedRef = useRef(false)\n const [commandListId] = useState(useId())\n const activeIndexRef = useRef(initialIndex ?? 0)\n\n const [childContainerElement, setChildContainerElement] = useState<HTMLElement | null>(null)\n const [hovered, setHovered] = useState(false)\n const [pointerOverlayElement, setPointerOverlayElement] = useState<HTMLDivElement | null>(null)\n const [virtualListElement, setVirtualListElement] = useState<HTMLElement | null>(null)\n\n const handleChange = useCallback(\n (v: Virtualizer<HTMLElement, Element>) => {\n if (!onEndReached) return\n\n const [lastItem] = [...v.getVirtualItems()].reverse()\n\n if (!lastItem) return\n\n const reachedEnd = lastItem.index >= items.length - onEndReachedIndexOffset - 1\n\n // Make sure we only trigger `onEndReached` after initial mount\n if (reachedEnd && isMountedRef.current) {\n onEndReached()\n }\n },\n [onEndReached, items.length, onEndReachedIndexOffset],\n )\n\n // This will trigger a re-render whenever its internal state changes\n const virtualizer = useVirtualizer({\n count: items.length,\n getItemKey,\n getScrollElement: () => virtualListElement,\n estimateSize: () => itemHeight,\n measureElement: measureVisibleElement,\n onChange: handleChange,\n overscan,\n })\n\n /**\n * Return an array of values with `activeIndex`, `disabled` and `selected` defined, applying custom\n * mapping functions (`getItemDisabled`, `getItemSelected`) if provided. E.g.:\n *\n * ```\n * [\n * { activeIndex: 0 disabled: false, selected: false },\n * { activeIndex: null, disabled: true, selected: false },\n * { activeIndex: 1, disabled: false, selected: true }\n * ]\n * ```\n *\n * Disabled virtual list items are ignored when creating aria attributes.\n */\n const itemIndices = useMemo(\n () => getItemIndicies(items, getItemDisabled, getItemSelected),\n [getItemDisabled, getItemSelected, items],\n )\n\n const activeItemCount = useMemo(\n () => itemIndices.filter((v) => !v.disabled).length,\n [itemIndices],\n )\n\n /**\n * Toggle pointer overlay element which will kill existing hover states\n */\n const enableChildContainerPointerEvents = useCallback(\n (enabled: boolean) =>\n pointerOverlayElement?.setAttribute('data-enabled', (!enabled).toString()),\n [pointerOverlayElement],\n )\n\n const getChildDescendantId = useCallback(\n (index: number) => `${commandListId}-item-${index}`,\n [commandListId],\n )\n\n const getCommandListChildrenId = useCallback(() => `${commandListId}-children`, [commandListId])\n\n /**\n * Iterate through all virtual list children and apply the active data-attribute on the selected index.\n * Don't apply styles when `hideSelectionOnMouseLeave` is true and the command list is neither focused or hovered.\n */\n const showChildrenActiveState = useCallback(() => {\n const hasFocus = [inputElement, virtualListElement].some((el) => document.activeElement === el)\n if (onlyShowSelectionWhenActive && !hasFocus && !hovered) {\n return\n }\n\n const childElements = Array.from(childContainerElement?.children || []) as HTMLElement[]\n childElements?.forEach((child) => {\n const virtualIndex = Number(child.dataset?.index)\n const targetIndex = itemIndices[virtualIndex]?.activeIndex\n child\n .querySelector(LIST_ITEM_INTERACTIVE_SELECTOR)\n ?.toggleAttribute(activeItemDataAttr, targetIndex === activeIndexRef.current)\n })\n }, [\n activeItemDataAttr,\n childContainerElement?.children,\n hovered,\n inputElement,\n itemIndices,\n onlyShowSelectionWhenActive,\n virtualListElement,\n ])\n\n /**\n * Iterate through all virtual list children and clear the active data-attribute.\n */\n const hideChildrenActiveState = useCallback(() => {\n const childElements = Array.from(childContainerElement?.children || [])\n childElements?.forEach((child) => {\n child\n .querySelector(LIST_ITEM_INTERACTIVE_SELECTOR)\n ?.toggleAttribute(activeItemDataAttr, false)\n })\n }, [activeItemDataAttr, childContainerElement?.children])\n\n /**\n * Throttled version of `showChildrenActiveState`, used when DOM mutations are detected in virtual lists\n */\n const refreshChildrenActiveStateThrottled = useMemo(() => {\n return throttle(showChildrenActiveState, 200)\n }, [showChildrenActiveState])\n\n /**\n * Assign active descendant on input element (if present)\n */\n const handleUpdateActiveDescendant = useCallback(() => {\n const activeIndex = activeIndexRef?.current\n if (items.length > 0) {\n inputElement?.setAttribute('aria-activedescendant', getChildDescendantId(activeIndex))\n virtualListElement?.setAttribute('aria-activedescendant', getChildDescendantId(activeIndex))\n } else {\n inputElement?.removeAttribute('aria-activedescendant')\n virtualListElement?.removeAttribute('aria-activedescendant')\n }\n }, [getChildDescendantId, inputElement, items.length, virtualListElement])\n\n /**\n * Obtain index of the top most visible element\n */\n const handleGetTopIndex = useCallback(() => {\n const childContainerParentElement = childContainerElement?.parentElement\n if (childContainerElement && childContainerParentElement) {\n const offset =\n childContainerParentElement.getBoundingClientRect().top -\n childContainerElement.getBoundingClientRect().top\n return virtualizer.getVirtualItemForOffset(offset)?.index ?? -1\n }\n return -1\n }, [childContainerElement, virtualizer])\n\n /**\n * Mark an index as active, re-assign aria attrs on all children and optionally scroll into view\n */\n const setActiveIndex = useCallback(\n ({\n index,\n scrollAlign,\n scrollIntoView = true,\n }: {\n index: number\n scrollAlign?: ScrollToOptions['align']\n scrollIntoView?: boolean\n }) => {\n activeIndexRef.current = index\n handleUpdateActiveDescendant()\n showChildrenActiveState()\n\n if (scrollIntoView) {\n const virtualListIndex = itemIndices.findIndex((i) => i.activeIndex === index)\n if (virtualListIndex > -1) {\n virtualizer.scrollToIndex(virtualListIndex, scrollAlign ? {align: scrollAlign} : {})\n }\n }\n },\n [handleUpdateActiveDescendant, itemIndices, showChildrenActiveState, virtualizer],\n )\n\n /**\n * Select adjacent virtual item index and scroll into view with `react-virtual`\n */\n const selectAdjacentItemIndex = useCallback(\n (direction: 'previous' | 'next') => {\n let nextIndex = -1\n const lastIndex = activeItemCount - 1\n\n if (direction === 'next') {\n const wrapAroundIndex = wrapAround ? 0 : lastIndex\n nextIndex =\n activeIndexRef.current < activeItemCount - 1\n ? activeIndexRef.current + 1\n : wrapAroundIndex\n }\n if (direction === 'previous') {\n const wrapAroundIndex = wrapAround ? lastIndex : 0\n nextIndex = activeIndexRef.current > 0 ? activeIndexRef.current - 1 : wrapAroundIndex\n }\n setActiveIndex({index: nextIndex, scrollIntoView: true})\n enableChildContainerPointerEvents(false)\n },\n [activeItemCount, enableChildContainerPointerEvents, setActiveIndex, wrapAround],\n )\n\n const focusElement = useCallback(\n (type: CommandListElementType) => {\n switch (type) {\n case 'input':\n inputElement?.focus()\n break\n case 'list':\n virtualListElement?.focus()\n break\n default:\n break\n }\n },\n [inputElement, virtualListElement],\n )\n\n const focusInputElement = useCallback(() => {\n inputElement?.focus()\n }, [inputElement])\n\n const focusListElement = useCallback(() => {\n virtualListElement?.focus()\n }, [virtualListElement])\n\n /**\n * Mark hovered child item as active\n */\n const handleChildMouseEnter = useCallback(\n (index: number) => () => {\n setActiveIndex({index, scrollIntoView: false})\n },\n [setActiveIndex],\n )\n\n const handleFocus = useCallback(() => {\n showChildrenActiveState()\n }, [showChildrenActiveState])\n\n /**\n * Handle keyboard events:\n * - Up/down arrow: scroll to adjacent items\n * - Enter: trigger click events on the current active element\n */\n const handleKeyDown = useCallback(\n (type: CommandListElementType) => (event: KeyboardEvent) => {\n const childElements = Array.from(childContainerElement?.children || []) as HTMLElement[]\n if (!childElements.length) {\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusElement(type)\n selectAdjacentItemIndex('next')\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusElement(type)\n selectAdjacentItemIndex('previous')\n }\n\n if (event.key === 'Enter') {\n event.preventDefault()\n focusElement(type)\n const currentElement = childElements.find(\n (el) =>\n Number(el.dataset.index) ===\n itemIndices.findIndex((i) => i.activeIndex === activeIndexRef.current),\n )\n\n if (currentElement) {\n const clickableElement = currentElement?.querySelector<HTMLElement>(\n LIST_ITEM_INTERACTIVE_SELECTOR,\n )\n clickableElement?.click()\n }\n }\n },\n [childContainerElement?.children, focusElement, itemIndices, selectAdjacentItemIndex],\n )\n const handleKeyDownInput = useCallback(\n (event: KeyboardEvent) => handleKeyDown('input')(event),\n [handleKeyDown],\n )\n const handleKeyDownList = useCallback(\n (event: KeyboardEvent) => handleKeyDown('list')(event),\n [handleKeyDown],\n )\n\n const handleVirtualListMouseEnter = useCallback(() => {\n if (onlyShowSelectionWhenActive) {\n showChildrenActiveState()\n setHovered(true)\n }\n }, [onlyShowSelectionWhenActive, showChildrenActiveState])\n const handleVirtualListMouseLeave = useCallback(() => {\n if (onlyShowSelectionWhenActive) {\n hideChildrenActiveState()\n setHovered(false)\n }\n }, [hideChildrenActiveState, onlyShowSelectionWhenActive])\n\n useImperativeHandle(ref, () => {\n return {\n focusInputElement() {\n focusInputElement()\n },\n focusListElement() {\n focusListElement()\n },\n getTopIndex() {\n return handleGetTopIndex()\n },\n scrollToIndex(index: number) {\n setActiveIndex({index})\n enableChildContainerPointerEvents(true)\n },\n }\n }, [\n enableChildContainerPointerEvents,\n focusInputElement,\n focusListElement,\n handleGetTopIndex,\n setActiveIndex,\n ])\n\n /**\n * Optionally set active index (and align) on mount only\n */\n useEffect(() => {\n if (typeof initialIndex !== 'undefined' && !isMountedRef.current) {\n setActiveIndex({\n index: initialIndex,\n scrollAlign: initialScrollAlign,\n scrollIntoView: true,\n })\n }\n isMountedRef.current = true\n }, [initialIndex, initialScrollAlign, onlyShowSelectionWhenActive, setActiveIndex])\n\n /**\n * Re-enable child pointer events on any mousemove / wheel event\n */\n useEffect(() => {\n function handleMouseEvent() {\n enableChildContainerPointerEvents(true)\n }\n virtualListElement?.addEventListener('mousemove', handleMouseEvent)\n virtualListElement?.addEventListener('wheel', handleMouseEvent, {passive: true})\n return () => {\n virtualListElement?.removeEventListener('mousemove', handleMouseEvent)\n virtualListElement?.removeEventListener('wheel', handleMouseEvent)\n }\n }, [enableChildContainerPointerEvents, virtualListElement])\n\n /**\n * Listen to keyboard / blur / focus events on both input element (if present) and the virtual list element.\n */\n useEffect(() => {\n inputElement?.addEventListener('focus', handleFocus)\n inputElement?.addEventListener('keydown', handleKeyDownInput)\n virtualListElement?.addEventListener('focus', handleFocus)\n virtualListElement?.addEventListener('keydown', handleKeyDownList)\n return () => {\n inputElement?.removeEventListener('focus', handleFocus)\n inputElement?.removeEventListener('keydown', handleKeyDownInput)\n virtualListElement?.removeEventListener('focus', handleFocus)\n virtualListElement?.removeEventListener('keydown', handleKeyDownList)\n }\n }, [\n canReceiveFocus,\n handleFocus,\n handleKeyDown,\n handleKeyDownInput,\n handleKeyDownList,\n hideChildrenActiveState,\n inputElement,\n showChildrenActiveState,\n virtualListElement,\n ])\n\n /**\n * Refresh selected state when item values change (as a result of filtering).\n * This is to ensure that we correctly clear aria-activedescendant attrs if the filtered array is empty.\n */\n useEffect(() => {\n handleUpdateActiveDescendant()\n }, [handleUpdateActiveDescendant, items])\n\n /**\n * On DOM mutations, re-assign active descendant on input element (if present) and update active state on all children.\n *\n * Useful since virtual lists will constantly mutate the DOM on scroll, and we want to ensure that\n * new elements coming into view are rendered with the correct selected state.\n *\n * An alternative to using MutationObserver is hooking into the `onChange` callback that `react-virtual` provides, though\n * this changes on _every_ internal state change.\n */\n useEffect(() => {\n const mutationObserver = new MutationObserver(refreshChildrenActiveStateThrottled)\n\n if (childContainerElement) {\n mutationObserver.observe(childContainerElement, {\n childList: true,\n subtree: true,\n })\n }\n\n return () => {\n mutationObserver.disconnect()\n }\n }, [childContainerElement, refreshChildrenActiveStateThrottled])\n\n /**\n * Apply input aria attributes\n */\n useEffect(() => {\n inputElement?.setAttribute('aria-autocomplete', 'list')\n inputElement?.setAttribute('aria-expanded', 'true')\n inputElement?.setAttribute('aria-controls', getCommandListChildrenId())\n inputElement?.setAttribute('role', 'combobox')\n }, [getCommandListChildrenId, inputElement])\n\n /**\n * Focus input / virtual list element on mount\n */\n useEffect(() => {\n if (autoFocus) {\n focusElement(autoFocus)\n }\n }, [autoFocus, canReceiveFocus, focusListElement, focusInputElement, focusElement])\n\n const rootTabIndex = canReceiveFocus ? 0 : -1\n\n return (\n <VirtualListBox\n id={getCommandListChildrenId()}\n onMouseEnter={handleVirtualListMouseEnter}\n onMouseLeave={handleVirtualListMouseLeave}\n ref={setVirtualListElement}\n sizing=\"border\"\n tabIndex={rootTabIndex}\n data-testid={testId}\n {...responsivePaddingProps}\n >\n {canReceiveFocus && <FocusOverlayDiv offset={focusRingOffset} />}\n <PointerOverlayDiv aria-hidden=\"true\" data-enabled=\"false\" ref={setPointerOverlayElement} />\n {virtualizer && (\n <VirtualListChildBox\n forwardedAs=\"ul\"\n $height={virtualizer.getTotalSize()}\n aria-label={ariaLabel}\n aria-multiselectable={ariaMultiselectable}\n flex={1}\n ref={setChildContainerElement}\n role=\"listbox\"\n >\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const virtualIndex = virtualRow.index // visible index in the DOM\n const {activeIndex, disabled, selected} = itemIndices[virtualIndex]\n\n const itemToRender = renderItem(items[virtualIndex], {\n activeIndex,\n disabled,\n selected,\n virtualIndex,\n }) as React.JSX.Element\n\n // @TODO can we avoid using cloneElement here?\n const clonedItem =\n isValidElement(itemToRender) && itemToRender.type != Fragment\n ? cloneElement(itemToRender, {\n // @ts-expect-error @TODO shift the responsibility of setting tabIndex to the consumer, so we can remove the need to clone\n tabIndex: -1,\n })\n : itemToRender\n\n return (\n <CommandListItem\n key={virtualRow.key}\n ref={fixedHeight ? undefined : virtualizer.measureElement}\n activeIndex={activeIndex}\n activeItemCount={activeItemCount}\n ariaMultiselectable={ariaMultiselectable}\n disabled={disabled}\n fixedHeight={fixedHeight ? `${virtualRow.size}px` : undefined}\n getChildDescendantId={getChildDescendantId}\n handleChildMouseEnter={handleChildMouseEnter}\n selected={selected}\n virtualIndex={virtualIndex}\n virtualRowStart={virtualRow.start}\n >\n {clonedItem}\n </CommandListItem>\n )\n })}\n </VirtualListChildBox>\n )}\n </VirtualListBox>\n )\n}\n\n/**\n * Renders a Command List with support for the following:\n *\n * - Keyboard navigation (↑ / ↓ / ENTER) to children with a specified container (`childContainerRef`)\n * - Focus redirection when clicking child elements\n * - Pointer blocking when navigating with arrow keys (to ensure that only one active state is visible at any given time)\n * - ARIA attributes to define a `combobox` input that controls a separate `listbox`\n *\n * @internal\n */\nexport const CommandList = memo(CommandListComponent)\nCommandList.displayName = 'Memo(CommandList)'\n\nfunction CommandListItemComponent(\n props: {\n children: React.ReactNode\n activeIndex: number | null\n activeItemCount: number\n ariaMultiselectable: boolean\n disabled: boolean\n fixedHeight: `${number}px` | undefined\n getChildDescendantId: (index: number) => string\n handleChildMouseEnter: (index: number) => () => void\n selected: boolean\n virtualIndex: number\n virtualRowStart: number\n } & RefAttributes<HTMLLIElement>,\n) {\n const {\n ref: forwardedRef,\n children,\n activeIndex,\n activeItemCount,\n ariaMultiselectable,\n disabled,\n fixedHeight,\n getChildDescendantId,\n handleChildMouseEnter,\n selected,\n virtualIndex,\n virtualRowStart,\n } = props\n\n const onMouseEnter = useMemo(\n () =>\n typeof activeIndex === 'number' && !disabled ? handleChildMouseEnter(activeIndex) : undefined,\n [activeIndex, disabled, handleChildMouseEnter],\n )\n const activeAriaAttributes = useMemo(\n () =>\n typeof activeIndex === 'number' && !disabled\n ? {\n 'aria-posinset': activeIndex + 1,\n ...(ariaMultiselectable ? {'aria-selected': selected.toString()} : {}),\n 'aria-setsize': activeItemCount,\n 'id': getChildDescendantId(activeIndex),\n 'role': 'option',\n }\n : {},\n [activeIndex, activeItemCount, ariaMultiselectable, disabled, getChildDescendantId, selected],\n )\n\n const style = useMemo(\n () => ({\n flex: 1,\n height: fixedHeight,\n left: 0,\n position: 'absolute' as const,\n top: 0,\n transform: `translateY(${virtualRowStart}px)`,\n width: '100%',\n }),\n [fixedHeight, virtualRowStart],\n )\n\n return (\n <Stack\n as=\"li\"\n data-index={virtualIndex}\n ref={forwardedRef}\n style={style}\n tabIndex={-1}\n {...activeAriaAttributes}\n onMouseEnter={onMouseEnter}\n >\n {children}\n </Stack>\n )\n}\n\nconst CommandListItem = memo(CommandListItemComponent)\nCommandListItem.displayName = 'Memo(CommandListItem)'\n\nfunction getItemIndicies(\n items: FIXME[],\n getItemDisabled: CommandListGetItemDisabledCallback | undefined,\n getItemSelected: CommandListGetItemSelectedCallback | undefined,\n) {\n let i = -1\n return items.reduce<\n {\n activeIndex: number | null\n selected: boolean\n disabled: boolean\n }[]\n >((acc, _, index) => {\n const disabled = getItemDisabled?.(index) ?? false\n const selected = getItemSelected?.(index) ?? false\n if (!disabled) {\n i += 1\n }\n acc[index] = {\n activeIndex: disabled ? null : i,\n disabled,\n selected,\n }\n return acc\n }, [])\n}\n\n/**\n * Retrieve the element's measured dimensions if its scroll element is visible\n * or its measured dimensions are greater than zero, otherwise retrieve its\n * cached or estimated dimensions.\n *\n * This prevents the element's lack of dimensions when its scroll element is\n * hidden from poisoning its virtualization state.\n */\nfunction measureVisibleElement(\n element: Element,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<HTMLElement, Element>,\n): number {\n const measuredSize = measureElement(element, entry, instance)\n\n if (measuredSize > 0) {\n return measuredSize\n }\n\n const scrollElement = instance.scrollElement\n const isHidden = scrollElement?.offsetWidth === 0 || scrollElement?.offsetHeight === 0\n\n if (!isHidden) {\n return measuredSize\n }\n\n const index = instance.indexFromElement(element)\n const cachedSize = instance.itemSizeCache.get(instance.options.getItemKey(index))\n\n if (cachedSize !== undefined && cachedSize > 0) {\n return cachedSize\n }\n\n return instance.options.estimateSize(index)\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as CommentsEnabledProvider, r as CommentsAuthoringPathProvider, t as CommentsSelectedPathProvider } from "./CommentsSelectedPathProvider-DvYcXgnK.js";
1
+ import { n as CommentsEnabledProvider, r as CommentsAuthoringPathProvider, t as CommentsSelectedPathProvider } from "./CommentsSelectedPathProvider-BmDQh7Gc.js";
2
2
  import { t as useCommentsEnabled } from "./useCommentsEnabled-BPc3788v.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -30,4 +30,4 @@ function CommentsDocumentLayoutInner(props) {
30
30
  }
31
31
  export { CommentsDocumentLayout };
32
32
 
33
- //# sourceMappingURL=CommentsDocumentLayout-cIjOckd4.js.map
33
+ //# sourceMappingURL=CommentsDocumentLayout-C5_1PzCN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommentsDocumentLayout-cIjOckd4.js","names":["DocumentLayoutProps","CommentsAuthoringPathProvider","CommentsEnabledProvider","CommentsSelectedPathProvider","useCommentsEnabled","CommentsDocumentLayout","props","$","_c","documentId","documentType","parentContext","mode","t0","t1","CommentsDocumentLayoutInner","commentsEnabled","enabled","renderDefault"],"sources":["../src/core/comments/plugin/document-layout/CommentsDocumentLayout.tsx"],"sourcesContent":["import {type DocumentLayoutProps} from '../../../config/types'\nimport {CommentsAuthoringPathProvider} from '../../context/authoring-path/CommentsAuthoringPathProvider'\nimport {CommentsEnabledProvider} from '../../context/enabled/CommentsEnabledProvider'\nimport {CommentsSelectedPathProvider} from '../../context/selected-path/CommentsSelectedPathProvider'\nimport {useCommentsEnabled} from '../../hooks/useCommentsEnabled'\n\nexport function CommentsDocumentLayout(props: DocumentLayoutProps) {\n const {documentId, documentType} = props\n const parentContext = useCommentsEnabled()\n\n // If there is a parent context and the mode is not null, a parent provider is\n // already checking if comments are enabled. In such cases, additional wrapping\n // of the document layout in the `CommentsEnabledProvider` is unnecessary.\n // The `DocumentPane` component within the `structureTool` handles this wrapping.\n // However, as this plugin may be used in contexts outside of the `structureTool`,\n // we must check for a parent context that checks if comments are enabled and\n // conditionally apply the `CommentsEnabledProvider` wrapping if it is not present.\n if (parentContext.mode !== null) {\n return <CommentsDocumentLayoutInner {...props} />\n }\n\n return (\n <CommentsEnabledProvider documentId={documentId} documentType={documentType}>\n <CommentsDocumentLayoutInner {...props} />\n </CommentsEnabledProvider>\n )\n}\n\nfunction CommentsDocumentLayoutInner(props: DocumentLayoutProps) {\n const commentsEnabled = useCommentsEnabled()\n\n // If comments are not enabled, render the default document layout\n if (!commentsEnabled.enabled) {\n return props.renderDefault(props)\n }\n\n return (\n <CommentsSelectedPathProvider>\n <CommentsAuthoringPathProvider>{props.renderDefault(props)}</CommentsAuthoringPathProvider>\n </CommentsSelectedPathProvider>\n )\n}\n"],"mappings":";;;;AAMA,SAAOK,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,YAAAC,iBAAmCJ;CAUnC,IATsBF,mBASlBO,CAAa,CAAAC,SAAU,MAAI;EAAA,IAAAC;EACoB,OADpBN,EAAA,OAAAD,QACoBO,KAAAN,EAAA,MAA1CM,KAAA,oBAAC,6BAAD,EAA4B,GAAKP,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1CA;CAA0C;CAClD,IAAAA;CAAA,AAAAN,EAAA,OAAAD,QAI6CO,KAAAN,EAAA,MAA1CM,KAAA,oBAAC,6BAAD,EAA4B,GAAKP,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAM;CAAA,IAAAC;CAClB,OADkBP,EAAA,OAAAE,cAAAF,EAAA,OAAAG,gBAAAH,EAAA,OAAAM,MAD5CC,KAAA,oBAAC,yBAAD;EAAqCL;EAA0BC;EAC7DG,UAAAA;CADsB,CAAA,GAEEN,EAAA,KAAAE,YAAAF,EAAA,KAAAG,cAAAH,EAAA,KAAAM,IAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAF1BO;AAE0B;AAI9B,SAAAC,4BAAAT,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA;CAIE,IAAI,CAHoBJ,mBAGnBY,CAAe,CAAAC,SAAQ;EAAA,IAAAJ;EACO,OADPN,EAAA,OAAAD,QACOO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKY,cAAeZ,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1BA;CAA0B;CAClC,IAAAA;CAAA,AAAAN,EAAA,OAAAD,QAI6DO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKY,cAAeZ,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM;CAAA,IAAAC;CAC7B,OAD6BP,EAAA,OAAAM,KAC7BC,KAAAP,EAAA,MAF/BO,KAAA,oBAAC,8BAAD,EAAA,UACE,oBAAC,+BAAD,EAAA,UAAgCD,GAAF,CAAA,EADH,CAAA,GAEEN,EAAA,KAAAM,IAAAN,EAAA,KAAAO,KAF/BA;AAE+B"}
1
+ {"version":3,"file":"CommentsDocumentLayout-C5_1PzCN.js","names":["DocumentLayoutProps","CommentsAuthoringPathProvider","CommentsEnabledProvider","CommentsSelectedPathProvider","useCommentsEnabled","CommentsDocumentLayout","props","$","_c","documentId","documentType","parentContext","mode","t0","t1","CommentsDocumentLayoutInner","commentsEnabled","enabled","renderDefault"],"sources":["../src/core/comments/plugin/document-layout/CommentsDocumentLayout.tsx"],"sourcesContent":["import {type DocumentLayoutProps} from '../../../config/types'\nimport {CommentsAuthoringPathProvider} from '../../context/authoring-path/CommentsAuthoringPathProvider'\nimport {CommentsEnabledProvider} from '../../context/enabled/CommentsEnabledProvider'\nimport {CommentsSelectedPathProvider} from '../../context/selected-path/CommentsSelectedPathProvider'\nimport {useCommentsEnabled} from '../../hooks/useCommentsEnabled'\n\nexport function CommentsDocumentLayout(props: DocumentLayoutProps) {\n const {documentId, documentType} = props\n const parentContext = useCommentsEnabled()\n\n // If there is a parent context and the mode is not null, a parent provider is\n // already checking if comments are enabled. In such cases, additional wrapping\n // of the document layout in the `CommentsEnabledProvider` is unnecessary.\n // The `DocumentPane` component within the `structureTool` handles this wrapping.\n // However, as this plugin may be used in contexts outside of the `structureTool`,\n // we must check for a parent context that checks if comments are enabled and\n // conditionally apply the `CommentsEnabledProvider` wrapping if it is not present.\n if (parentContext.mode !== null) {\n return <CommentsDocumentLayoutInner {...props} />\n }\n\n return (\n <CommentsEnabledProvider documentId={documentId} documentType={documentType}>\n <CommentsDocumentLayoutInner {...props} />\n </CommentsEnabledProvider>\n )\n}\n\nfunction CommentsDocumentLayoutInner(props: DocumentLayoutProps) {\n const commentsEnabled = useCommentsEnabled()\n\n // If comments are not enabled, render the default document layout\n if (!commentsEnabled.enabled) {\n return props.renderDefault(props)\n }\n\n return (\n <CommentsSelectedPathProvider>\n <CommentsAuthoringPathProvider>{props.renderDefault(props)}</CommentsAuthoringPathProvider>\n </CommentsSelectedPathProvider>\n )\n}\n"],"mappings":";;;;AAMA,SAAOK,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAAC,YAAAC,iBAAmCJ;CAUnC,IATsBF,mBASlBO,CAAa,CAAAC,SAAU,MAAI;EAAA,IAAAC;EACoB,OADpBN,EAAA,OAAAD,QACoBO,KAAAN,EAAA,MAA1CM,KAAA,oBAAC,6BAAD,EAA4B,GAAKP,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1CA;CAA0C;CAClD,IAAAA;CAAA,AAAAN,EAAA,OAAAD,QAI6CO,KAAAN,EAAA,MAA1CM,KAAA,oBAAC,6BAAD,EAA4B,GAAKP,MAAK,CAAA,GAAIC,EAAA,KAAAD,OAAAC,EAAA,KAAAM;CAAA,IAAAC;CAClB,OADkBP,EAAA,OAAAE,cAAAF,EAAA,OAAAG,gBAAAH,EAAA,OAAAM,MAD5CC,KAAA,oBAAC,yBAAD;EAAqCL;EAA0BC;EAC7DG,UAAAA;CADsB,CAAA,GAEEN,EAAA,KAAAE,YAAAF,EAAA,KAAAG,cAAAH,EAAA,KAAAM,IAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAF1BO;AAE0B;AAI9B,SAAAC,4BAAAT,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA;CAIE,IAAI,CAHoBJ,mBAGnBY,CAAe,CAAAC,SAAQ;EAAA,IAAAJ;EACO,OADPN,EAAA,OAAAD,QACOO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKY,cAAeZ,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAA1BA;CAA0B;CAClC,IAAAA;CAAA,AAAAN,EAAA,OAAAD,QAI6DO,KAAAN,EAAA,MAA1BM,KAAAP,MAAKY,cAAeZ,KAAK,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAM;CAAA,IAAAC;CAC7B,OAD6BP,EAAA,OAAAM,KAC7BC,KAAAP,EAAA,MAF/BO,KAAA,oBAAC,8BAAD,EAAA,UACE,oBAAC,+BAAD,EAAA,UAAgCD,GAAF,CAAA,EADH,CAAA,GAEEN,EAAA,KAAAM,IAAAN,EAAA,KAAAO,KAF/BA;AAE+B"}