sanity 6.9.2 → 6.9.3-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{AddonDatasetProvider-CIq0vehp.js → AddonDatasetProvider-DDQrh5ob.js} +2 -2
- package/lib/{AddonDatasetProvider-CIq0vehp.js.map → AddonDatasetProvider-DDQrh5ob.js.map} +1 -1
- package/lib/{CalendarFilter-DRKSPTWd.js → CalendarFilter-DYbHmp_x.js} +3 -3
- package/lib/{CalendarFilter-DRKSPTWd.js.map → CalendarFilter-DYbHmp_x.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-NGghzPWZ.js → CommentsDocumentLayout-qdF_HKSC.js} +2 -2
- package/lib/{CommentsDocumentLayout-NGghzPWZ.js.map → CommentsDocumentLayout-qdF_HKSC.js.map} +1 -1
- package/lib/{CommentsField-_QkW9aLe.js → CommentsField-i8xs45PB.js} +3 -3
- package/lib/{CommentsField-_QkW9aLe.js.map → CommentsField-i8xs45PB.js.map} +1 -1
- package/lib/{CommentsInput-DdtI0Naj.js → CommentsInput-B9iSSi8A.js} +6 -6
- package/lib/{CommentsInput-DdtI0Naj.js.map → CommentsInput-B9iSSi8A.js.map} +1 -1
- package/lib/{CommentsInspector-BQtqxGsK.js → CommentsInspector-rGGP9buL.js} +5 -5
- package/lib/{CommentsInspector-BQtqxGsK.js.map → CommentsInspector-rGGP9buL.js.map} +1 -1
- package/lib/{CommentsListItem-B0yR0R5a.js → CommentsListItem-DKS6V_TV.js} +3 -3
- package/lib/{CommentsListItem-B0yR0R5a.js.map → CommentsListItem-DKS6V_TV.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js → CommentsSelectedPathProvider-BnZ6GdNc.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js.map → CommentsSelectedPathProvider-BnZ6GdNc.js.map} +1 -1
- package/lib/{CommentsStudioLayout-DK4W-hTe.js → CommentsStudioLayout-YlpSH_2Y.js} +4 -4
- package/lib/{CommentsStudioLayout-DK4W-hTe.js.map → CommentsStudioLayout-YlpSH_2Y.js.map} +1 -1
- package/lib/{DateInputs-enUB1fG8.js → DateInputs-DioSKqY0.js} +7 -7
- package/lib/{DateInputs-enUB1fG8.js.map → DateInputs-DioSKqY0.js.map} +1 -1
- package/lib/{DocumentStatusIndicator-BP3N2GwG.js → DocumentStatusIndicator-BPBTH84U.js} +5 -5
- package/lib/{DocumentStatusIndicator-BP3N2GwG.js.map → DocumentStatusIndicator-BPBTH84U.js.map} +1 -1
- package/lib/{FormValue-4tVuOoGw.js → FormValue-CJg43LyM.js} +2 -2
- package/lib/{FormValue-4tVuOoGw.js.map → FormValue-CJg43LyM.js.map} +1 -1
- package/lib/{LoadingBlock-Cy2Pckab.js → LoadingBlock-DPTVJ58M.js} +3 -3
- package/lib/{LoadingBlock-Cy2Pckab.js.map → LoadingBlock-DPTVJ58M.js.map} +1 -1
- package/lib/{ReleaseTitle-CkEMIfmx.js → ReleaseTitle-ln13W3P1.js} +4 -4
- package/lib/{ReleaseTitle-CkEMIfmx.js.map → ReleaseTitle-ln13W3P1.js.map} +1 -1
- package/lib/{ReleasesMetadataProvider-DuAzHgpz.js → ReleasesMetadataProvider-DbxROVyw.js} +2 -2
- package/lib/{ReleasesMetadataProvider-DuAzHgpz.js.map → ReleasesMetadataProvider-DbxROVyw.js.map} +1 -1
- package/lib/{ReleasesNav-DozstCwb.js → ReleasesNav-DNwncim0.js} +15 -15
- package/lib/{ReleasesNav-DozstCwb.js.map → ReleasesNav-DNwncim0.js.map} +1 -1
- package/lib/{ReleasesStudioLayout-CXoRbIpf.js → ReleasesStudioLayout-gzl7rMMp.js} +8 -8
- package/lib/{ReleasesStudioLayout-CXoRbIpf.js.map → ReleasesStudioLayout-gzl7rMMp.js.map} +1 -1
- package/lib/{ReleasesTool-Bxru9khS.js → ReleasesTool-CsHniZCP.js} +20 -20
- package/lib/{ReleasesTool-Bxru9khS.js.map → ReleasesTool-CsHniZCP.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js → SchedulePublishingStudioLayout-BzSSDp9x.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js.map → SchedulePublishingStudioLayout-BzSSDp9x.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js → SchedulePublishingUpsellProvider-DQqIZsCc.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js.map → SchedulePublishingUpsellProvider-DQqIZsCc.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js → ScheduledPublishingEnabledProvider-BcWaBJw5.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js.map → ScheduledPublishingEnabledProvider-BcWaBJw5.js.map} +1 -1
- package/lib/{SearchProvider-DSLbCdgY.js → SearchProvider-D3w4Bvul.js} +10 -10
- package/lib/{SearchProvider-DSLbCdgY.js.map → SearchProvider-D3w4Bvul.js.map} +1 -1
- package/lib/{SingleDocReleaseLayout-DQicfsKs.js → SingleDocReleaseLayout-CQCkL8-0.js} +2 -2
- package/lib/{SingleDocReleaseLayout-DQicfsKs.js.map → SingleDocReleaseLayout-CQCkL8-0.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js → SingleDocReleaseUpsellProvider-YDBCGrHT.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js.map → SingleDocReleaseUpsellProvider-YDBCGrHT.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js → TasksStudioActiveToolLayout-DAmh3t6t.js} +16 -16
- package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js.map → TasksStudioActiveToolLayout-DAmh3t6t.js.map} +1 -1
- package/lib/{TasksStudioLayout-CnsvBNfw.js → TasksStudioLayout-6qNY69FD.js} +5 -5
- package/lib/{TasksStudioLayout-CnsvBNfw.js.map → TasksStudioLayout-6qNY69FD.js.map} +1 -1
- package/lib/{TimeZoneButton-DMd-M_ri.js → TimeZoneButton-TmrFye13.js} +4 -4
- package/lib/{TimeZoneButton-DMd-M_ri.js.map → TimeZoneButton-TmrFye13.js.map} +1 -1
- package/lib/{Tool-VgnYCwyZ.js → Tool-tpq9K4o7.js} +14 -14
- package/lib/{Tool-VgnYCwyZ.js.map → Tool-tpq9K4o7.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-Fow5nBrc.js → UnpublishVersionDialog-6zyP9rCr.js} +5 -5
- package/lib/{UnpublishVersionDialog-Fow5nBrc.js.map → UnpublishVersionDialog-6zyP9rCr.js.map} +1 -1
- package/lib/{UpsellDialog-BqP2wmnt.js → UpsellDialog-CM238V3B.js} +3 -3
- package/lib/{UpsellDialog-BqP2wmnt.js.map → UpsellDialog-CM238V3B.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-CvwRIsWJ.js → VariantsStudioNavbar-lFO2yrMq.js} +7 -7
- package/lib/{VariantsStudioNavbar-CvwRIsWJ.js.map → VariantsStudioNavbar-lFO2yrMq.js.map} +1 -1
- package/lib/{VariantsTool-CmQqDiwU.js → VariantsTool-B0OS4fku.js} +9 -9
- package/lib/{VariantsTool-CmQqDiwU.js.map → VariantsTool-B0OS4fku.js.map} +1 -1
- package/lib/{WorkspaceLoader-Ailj0PR9.js → WorkspaceLoader-CiJ6lGBu.js} +32 -32
- package/lib/{WorkspaceLoader-Ailj0PR9.js.map → WorkspaceLoader-CiJ6lGBu.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js → buildTextSelectionFromFragment-CFZdgjpp.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js.map → buildTextSelectionFromFragment-CFZdgjpp.js.map} +1 -1
- package/lib/{datastores-D4iZNSXV.js → datastores-wbjstxMt.js} +2 -2
- package/lib/{datastores-D4iZNSXV.js.map → datastores-wbjstxMt.js.map} +1 -1
- package/lib/{getTransactionsLogs-C-_o7nGx.js → getTransactionsLogs-Di50JBPB.js} +2 -2
- package/lib/{getTransactionsLogs-C-_o7nGx.js.map → getTransactionsLogs-Di50JBPB.js.map} +1 -1
- package/lib/index.js +35 -35
- package/lib/{inputResolver-Dpo4FxTy.js → inputResolver-DuUEGuH5.js} +4 -4
- package/lib/{inputResolver-Dpo4FxTy.js.map → inputResolver-DuUEGuH5.js.map} +1 -1
- package/lib/{navigation.telemetry-syjEPEw-.js → navigation.telemetry-EsdzXa34.js} +9 -9
- package/lib/{navigation.telemetry-syjEPEw-.js.map → navigation.telemetry-EsdzXa34.js.map} +1 -1
- package/lib/{plugin-B8Op6DFi.js → plugin-C_6lw0l3.js} +3 -3
- package/lib/{plugin-B8Op6DFi.js.map → plugin-C_6lw0l3.js.map} +1 -1
- package/lib/{plugin-CmF53OT5.js → plugin-ClT8-pVM.js} +4 -4
- package/lib/{plugin-CmF53OT5.js.map → plugin-ClT8-pVM.js.map} +1 -1
- package/lib/{plugin-Bk41RRuC.js → plugin-DRuKGgrO.js} +6 -6
- package/lib/{plugin-Bk41RRuC.js.map → plugin-DRuKGgrO.js.map} +1 -1
- package/lib/{plugin-BhEK2rZ8.js → plugin-wJP1ECFq.js} +6 -6
- package/lib/{plugin-BhEK2rZ8.js.map → plugin-wJP1ECFq.js.map} +1 -1
- package/lib/{scheduleItem-sJhB8YzX.js → scheduleItem-9PFIH7_h.js} +15 -15
- package/lib/{scheduleItem-sJhB8YzX.js.map → scheduleItem-9PFIH7_h.js.map} +1 -1
- package/lib/{schedules-CLC2KygL.js → schedules-DniNrpFJ.js} +3 -3
- package/lib/{schedules-CLC2KygL.js.map → schedules-DniNrpFJ.js.map} +1 -1
- package/lib/{searchDocumentRelease-CtPYZAZk.js → searchDocumentRelease-TrunKdQg.js} +5 -5
- package/lib/{searchDocumentRelease-CtPYZAZk.js.map → searchDocumentRelease-TrunKdQg.js.map} +1 -1
- package/lib/{studioClient-WYiCwgfZ.js → studioClient-BpYJ_yYC.js} +2 -2
- package/lib/{studioClient-WYiCwgfZ.js.map → studioClient-BpYJ_yYC.js.map} +1 -1
- package/lib/{useBundleDocuments-CiRQnzQh.js → useBundleDocuments-C58ExRpX.js} +5 -5
- package/lib/{useBundleDocuments-CiRQnzQh.js.map → useBundleDocuments-C58ExRpX.js.map} +1 -1
- package/lib/{useComments-CxUK5MNb.js → useComments-BcMCyjIE.js} +2 -2
- package/lib/{useComments-CxUK5MNb.js.map → useComments-BcMCyjIE.js.map} +1 -1
- package/lib/{useCommentsTelemetry-BWqcsQ1u.js → useCommentsTelemetry-CL97yuwT.js} +4 -4
- package/lib/{useCommentsTelemetry-BWqcsQ1u.js.map → useCommentsTelemetry-CL97yuwT.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-B4jUnACZ.js → useDocumentPreviewValues-Cy9aUMu2.js} +5 -5
- package/lib/{useDocumentPreviewValues-B4jUnACZ.js.map → useDocumentPreviewValues-Cy9aUMu2.js.map} +1 -1
- package/lib/{useFeatureEnabled-sRpDeLLJ.js → useFeatureEnabled-C5qTffLc.js} +2 -2
- package/lib/{useFeatureEnabled-sRpDeLLJ.js.map → useFeatureEnabled-C5qTffLc.js.map} +1 -1
- package/lib/{useFieldActions-CrPgIiyl.js → useFieldActions-MFJIkobn.js} +2 -2
- package/lib/{useFieldActions-CrPgIiyl.js.map → useFieldActions-MFJIkobn.js.map} +1 -1
- package/lib/{useProjectId-bGwoCAuz.js → useProjectId-BRSQ8kIo.js} +2 -2
- package/lib/{useProjectId-bGwoCAuz.js.map → useProjectId-BRSQ8kIo.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-BevhFmt9.js → useReleasesToolAvailable-BOlw1HWL.js} +3 -3
- package/lib/{useReleasesToolAvailable-BevhFmt9.js.map → useReleasesToolAvailable-BOlw1HWL.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js → useScheduledDraftMenuActions-DIQYFw0x.js} +6 -6
- package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js.map → useScheduledDraftMenuActions-DIQYFw0x.js.map} +1 -1
- package/lib/{useStudioUrl-DbfIwS1P.js → useStudioUrl-Dc5LnOvR.js} +5 -5
- package/lib/{useStudioUrl-DbfIwS1P.js.map → useStudioUrl-Dc5LnOvR.js.map} +1 -1
- package/lib/{useTimeZone-DnxQlCGS.js → useTimeZone-Da8WK1q-.js} +2 -2
- package/lib/{useTimeZone-DnxQlCGS.js.map → useTimeZone-Da8WK1q-.js.map} +1 -1
- package/lib/{validationUtils-Bcu-PkHm.js → validationUtils-B9CLn9F7.js} +4 -4
- package/lib/{validationUtils-Bcu-PkHm.js.map → validationUtils-B9CLn9F7.js.map} +1 -1
- package/lib/{version-DTqx_kFw.js → version-D7qSwBVE.js} +2 -2
- package/lib/{version-DTqx_kFw.js.map → version-D7qSwBVE.js.map} +1 -1
- package/package.json +11 -11
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS } from "./studioClient-
|
|
1
|
+
import { c as useWorkspace, i as useClient, n as DEFAULT_STUDIO_CLIENT_OPTIONS } from "./studioClient-BpYJ_yYC.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-
|
|
82
|
+
//# sourceMappingURL=AddonDatasetProvider-DDQrh5ob.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddonDatasetProvider-
|
|
1
|
+
{"version":3,"file":"AddonDatasetProvider-DDQrh5ob.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
1
|
import { t as Button$1 } from "./Button-CGZ3ETwD.js";
|
|
2
2
|
import { t as TooltipDelayGroupProvider } from "./TooltipDelayGroupProvider-whJet8vQ.js";
|
|
3
3
|
import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
|
|
4
|
-
import { d as useWeeksOfMonth, f as ARROW_KEYS, m as DEFAULT_WEEK_DAY_NAMES, p as DEFAULT_MONTH_NAMES } from "./useScheduledDraftMenuActions-
|
|
5
|
-
import { t as useTimeZone } from "./useTimeZone-
|
|
4
|
+
import { d as useWeeksOfMonth, f as ARROW_KEYS, m as DEFAULT_WEEK_DAY_NAMES, p as DEFAULT_MONTH_NAMES } from "./useScheduledDraftMenuActions-DIQYFw0x.js";
|
|
5
|
+
import { t as useTimeZone } from "./useTimeZone-Da8WK1q-.js";
|
|
6
6
|
import { useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
7
7
|
import { c } from "react/compiler-runtime";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -298,4 +298,4 @@ function CalendarFilter(props) {
|
|
|
298
298
|
}
|
|
299
299
|
export { CalendarDay as n, CalendarFilter as t };
|
|
300
300
|
|
|
301
|
-
//# sourceMappingURL=CalendarFilter-
|
|
301
|
+
//# sourceMappingURL=CalendarFilter-DYbHmp_x.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarFilter-DRKSPTWd.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
|
+
{"version":3,"file":"CalendarFilter-DYbHmp_x.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,4 +1,4 @@
|
|
|
1
|
-
import { n as CommentsEnabledProvider, r as CommentsAuthoringPathProvider, t as CommentsSelectedPathProvider } from "./CommentsSelectedPathProvider-
|
|
1
|
+
import { n as CommentsEnabledProvider, r as CommentsAuthoringPathProvider, t as CommentsSelectedPathProvider } from "./CommentsSelectedPathProvider-BnZ6GdNc.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-
|
|
33
|
+
//# sourceMappingURL=CommentsDocumentLayout-qdF_HKSC.js.map
|
package/lib/{CommentsDocumentLayout-NGghzPWZ.js.map → CommentsDocumentLayout-qdF_HKSC.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsDocumentLayout-
|
|
1
|
+
{"version":3,"file":"CommentsDocumentLayout-qdF_HKSC.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,8 +1,8 @@
|
|
|
1
1
|
import { n as Tooltip, t as Button$1 } from "./Button-CGZ3ETwD.js";
|
|
2
2
|
import { t as Popover } from "./Popover-DRCM1MS-.js";
|
|
3
3
|
import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
|
|
4
|
-
import { _ as applyCommentsFieldAttr, b as useCommentsScroll, f as hasCommentMessageValue, m as parseCommentFieldPath, n as COMMENTS_HIGHLIGHT_HUE_KEY, o as CommentInput, p as isTextSelectionComment, t as useComments, x as commentsLocaleNamespace } from "./useComments-
|
|
5
|
-
import { n as useCurrentUser } from "./LoadingBlock-
|
|
4
|
+
import { _ as applyCommentsFieldAttr, b as useCommentsScroll, f as hasCommentMessageValue, m as parseCommentFieldPath, n as COMMENTS_HIGHLIGHT_HUE_KEY, o as CommentInput, p as isTextSelectionComment, t as useComments, x as commentsLocaleNamespace } from "./useComments-BcMCyjIE.js";
|
|
5
|
+
import { n as useCurrentUser } from "./LoadingBlock-DPTVJ58M.js";
|
|
6
6
|
import { t as Translate } from "./Translate-0HIWr1eF.js";
|
|
7
7
|
import { t as useAddonDataset } from "./useAddonDataset-BvCgByG6.js";
|
|
8
8
|
import { t as useCommentsEnabled } from "./useCommentsEnabled-BPc3788v.js";
|
|
@@ -327,4 +327,4 @@ function belongsToField(fieldPath, path) {
|
|
|
327
327
|
}
|
|
328
328
|
export { CommentsField };
|
|
329
329
|
|
|
330
|
-
//# sourceMappingURL=CommentsField-
|
|
330
|
+
//# sourceMappingURL=CommentsField-i8xs45PB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsField-_QkW9aLe.js","names":["useContext","CommentsAuthoringPathContext","CommentsAuthoringPathContextValue","useCommentsAuthoringPath","value","Error","AddCommentIcon","CommentIcon","CurrentUser","PortableTextBlock","Button","SanityUIButton","Flex","Stack","Text","useClickOutsideEvent","useCallback","useMemo","useRef","useState","styled","Popover","Tooltip","UserListWithPermissionsHookValue","useTranslation","Translate","useAddonDataset","CommentInput","CommentInputHandle","hasCommentMessageValue","commentsLocaleNamespace","CommentMessage","ContentStack","CommentsFieldButtonProps","count","currentUser","fieldTitle","isCreatingDataset","mentionOptions","onChange","value","onClick","onClose","onCommentAdd","onDiscard","onInputKeyDown","event","React","KeyboardEvent","open","CommentsFieldButton","props","$","_c","t","error","addonDatasetError","popoverRef","addCommentButtonElement","setAddCommentButtonElement","commentInputHandle","hasComments","Boolean","t0","focus","closePopover","t1","nextValue","handleSubmit","t2","hasValue","t3","current","discardDialogController","startDiscard","t4","isDefaultPrevented","handleInputKeyDown","t5","Symbol","for","close","handleDiscardCancel","t6","handleDiscardConfirm","t7","event_0","key","preventDefault","stopPropagation","handlePopoverKeyDown","t8","t9","field","t10","placeholder","t11","content","t12","t13","t14","t15","t16","placement","t17","t18","hues","Path","PortableTextBlock","Stack","useBoundaryElement","PathUtils","uuid","AnimatePresence","motion","Variants","useCallback","useMemo","useRef","useState","css","styled","FieldProps","getSchemaTypeTitle","useCurrentUser","COMMENTS_HIGHLIGHT_HUE_KEY","isTextSelectionComment","parseCommentFieldPath","useComments","useCommentsAuthoringPath","useCommentsEnabled","applyCommentsFieldAttr","useCommentsScroll","useCommentsSelectedPath","useCommentsUpsell","CommentCreatePayload","CommentMessage","CommentsUIMode","CommentsFieldButton","messageCache","Map","EMPTY_ARRAY","HIGHLIGHT_BLOCK_VARIANTS","initial","opacity","animate","exit","CommentsField","props","$","_c","enabled","mode","t0","renderDefault","HighlightDiv","div","theme","radius","space","color","sanity","bg","dark","hex","FieldStack","CommentFieldInner","currentUser","element","boundaryElement","rootRef","comments","isCommentsOpen","isCreatingDataset","mentionOptions","onCommentsOpen","operation","setStatus","status","upsellData","handleOpenDialog","selectedPath","setSelectedPath","authoringPath","setAuthoringPath","scrollToGroup","t1","schemaType","fieldTitle","t2","path","toString","stringPath","t3","get","cachedValue","value","setValue","isOpen","t4","fieldPath","origin","belongsToField","t5","isSelected","threadId","t6","data","open","t7","c","filter","some","_temp","isInlineCommentThread","t8","c_0","commentsCount","map","reduce","_temp2","count","hasComments","Boolean","delete","resetMessageValue","t9","latestThread","find","c_1","handleClick","t10","nextValue","newThreadId","nextComment","type","message","parentCommentId","undefined","reactions","create","handleCommentAdd","t11","handleClose","t12","nextValue_0","set","handleOnChange","t13","Number","t14","button","isAddingComment","internalComments","t15","t16","__internal_comments","t17","t18","t19","acc","val","x","parentComment","commentFieldPath","startsWith"],"sources":["../src/core/comments/hooks/useCommentsAuthoringPath.ts","../src/core/comments/plugin/field/CommentsFieldButton.tsx","../src/core/comments/plugin/field/CommentsField.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {CommentsAuthoringPathContext} from 'sanity/_singletons'\n\nimport {type CommentsAuthoringPathContextValue} from '../context/authoring-path/types'\n\n/**\n * @beta\n * @hidden\n */\nexport function useCommentsAuthoringPath(): CommentsAuthoringPathContextValue {\n const value = useContext(CommentsAuthoringPathContext)\n\n if (!value) {\n throw new Error('useCommentsAuthoringPath: missing context value')\n }\n\n return value\n}\n","import {AddCommentIcon} from '@sanity/icons/AddComment'\nimport {CommentIcon} from '@sanity/icons/Comment'\nimport {type CurrentUser, type PortableTextBlock} from '@sanity/types'\nimport {\n // oxlint-disable-next-line no-restricted-imports\n Button as SanityUIButton,\n Flex,\n Stack,\n Text,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useAddonDataset} from '../../../studio/addonDataset/useAddonDataset'\nimport {\n CommentInput,\n type CommentInputHandle,\n} from '../../components/pte/comment-input/CommentInput'\nimport {hasCommentMessageValue} from '../../helpers'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentMessage} from '../../types'\n\nconst ContentStack = styled(Stack)`\n width: 320px;\n`\n\ninterface CommentsFieldButtonProps {\n count: number\n currentUser: CurrentUser\n fieldTitle: string\n isCreatingDataset: boolean\n mentionOptions: UserListWithPermissionsHookValue\n onChange: (value: PortableTextBlock[]) => void\n onClick?: () => void\n onClose: () => void\n onCommentAdd: (value: PortableTextBlock[]) => void\n onDiscard: () => void\n onInputKeyDown?: (event: React.KeyboardEvent) => void\n open: boolean\n value: CommentMessage\n}\n\nexport function CommentsFieldButton(props: CommentsFieldButtonProps) {\n const {\n count,\n currentUser,\n fieldTitle,\n isCreatingDataset,\n mentionOptions,\n onChange,\n onClick,\n onClose,\n onCommentAdd,\n onDiscard,\n onInputKeyDown,\n open,\n value,\n } = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const {error: addonDatasetError} = useAddonDataset()\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const [addCommentButtonElement, setAddCommentButtonElement] = useState<HTMLButtonElement | null>(\n null,\n )\n const commentInputHandle = useRef<CommentInputHandle | null>(null)\n const hasComments = Boolean(count > 0)\n\n const closePopover = useCallback(() => {\n if (!open) return\n onClose()\n addCommentButtonElement?.focus()\n }, [addCommentButtonElement, open, onClose])\n\n const handleSubmit = useCallback(\n (nextValue: PortableTextBlock[]) => {\n onCommentAdd(nextValue)\n closePopover()\n },\n [closePopover, onCommentAdd],\n )\n\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n const startDiscard = useCallback(() => {\n if (!hasValue) {\n closePopover()\n return\n }\n\n commentInputHandle.current?.discardDialogController.open()\n }, [closePopover, hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n\n // Call parent handler\n if (onInputKeyDown) onInputKeyDown(event)\n },\n [onInputKeyDown],\n )\n\n const handleDiscardCancel = useCallback(() => {\n commentInputHandle.current?.discardDialogController.close()\n }, [])\n\n const handleDiscardConfirm = useCallback(() => {\n commentInputHandle.current?.discardDialogController.close()\n closePopover()\n onDiscard()\n }, [closePopover, onDiscard])\n\n const handlePopoverKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n },\n [startDiscard],\n )\n\n useClickOutsideEvent(open && startDiscard, () => [popoverRef.current])\n\n if (!hasComments) {\n const placeholder = (\n <Translate\n t={t}\n i18nKey=\"compose.add-comment-input-placeholder\"\n values={{field: fieldTitle}}\n />\n )\n\n const content = (\n <ContentStack padding={2} gap={4}>\n <CommentInput\n currentUser={currentUser}\n focusLock\n focusOnMount\n mentionOptions={mentionOptions}\n onChange={onChange}\n onDiscardCancel={handleDiscardCancel}\n onDiscardConfirm={handleDiscardConfirm}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleSubmit}\n placeholder={placeholder}\n readOnly={isCreatingDataset}\n ref={commentInputHandle}\n value={value}\n />\n </ContentStack>\n )\n\n return (\n <Popover\n constrainSize\n content={content}\n fallbackPlacements={['bottom-end']}\n open={open}\n placement=\"right-start\"\n portal\n ref={popoverRef}\n onKeyDown={handlePopoverKeyDown}\n >\n <div>\n <Button\n aria-label={t('field-button.aria-label-add')}\n disabled={isCreatingDataset || Boolean(addonDatasetError)}\n icon={AddCommentIcon}\n mode=\"bleed\"\n onClick={onClick}\n ref={setAddCommentButtonElement}\n selected={open}\n tooltipProps={{\n content: t('field-button.title'),\n placement: 'top',\n }}\n />\n </div>\n </Popover>\n )\n }\n\n return (\n <Tooltip portal placement=\"top\" content={t('field-button.content', {count})}>\n <SanityUIButton\n aria-label={t('field-button.aria-label-open')}\n mode=\"bleed\"\n onClick={onClick}\n padding={2}\n gap={2}\n >\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <CommentIcon />\n </Text>\n <Text size={0}>{count > 9 ? '9+' : count}</Text>\n </Flex>\n </SanityUIButton>\n </Tooltip>\n )\n}\n","import {hues} from '@sanity/color'\nimport {type Path, type PortableTextBlock} from '@sanity/types'\nimport {Stack, useBoundaryElement} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {uuid} from '@sanity/uuid'\nimport {AnimatePresence, motion, type Variants} from 'motion/react'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type FieldProps} from '../../../form/types/fieldProps'\nimport {getSchemaTypeTitle} from '../../../schema/helpers'\nimport {useCurrentUser} from '../../../store/user/hooks'\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\nimport {isTextSelectionComment, parseCommentFieldPath} from '../../helpers'\nimport {useComments} from '../../hooks/useComments'\nimport {useCommentsAuthoringPath} from '../../hooks/useCommentsAuthoringPath'\nimport {useCommentsEnabled} from '../../hooks/useCommentsEnabled'\nimport {applyCommentsFieldAttr, useCommentsScroll} from '../../hooks/useCommentsScroll'\nimport {useCommentsSelectedPath} from '../../hooks/useCommentsSelectedPath'\nimport {useCommentsUpsell} from '../../hooks/useCommentsUpsell'\nimport {type CommentCreatePayload, type CommentMessage, type CommentsUIMode} from '../../types'\nimport {CommentsFieldButton} from './CommentsFieldButton'\n\n// When the form is temporarily set to `readOnly` while reconnecting, the form\n// will be re-rendered and any comment that is being authored will be lost.\n// To avoid this, we cache the comment message in a map and restore it when the\n// field is re-rendered.\nconst messageCache = new Map<string, CommentMessage>()\n\nconst EMPTY_ARRAY: [] = []\n\nconst HIGHLIGHT_BLOCK_VARIANTS: Variants = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n}\n\nexport function CommentsField(props: FieldProps) {\n const {enabled, mode} = useCommentsEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <CommentFieldInner {...props} mode={mode} />\n}\n\nconst HighlightDiv = styled(motion.div)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {radius, space, color} = theme.sanity\n const bg = hues[COMMENTS_HIGHLIGHT_HUE_KEY][color.dark ? 900 : 50].hex\n\n return css`\n mix-blend-mode: ${color.dark ? 'screen' : 'multiply'};\n border-radius: ${radius[3]}px;\n top: -${space[2]}px;\n left: -${space[2]}px;\n bottom: -${space[2]}px;\n right: -${space[2]}px;\n pointer-events: none;\n position: absolute;\n z-index: 1;\n width: calc(100% + ${space[2] * 2}px);\n height: calc(100% + ${space[2] * 2}px);\n background-color: ${bg};\n `\n})\n\nconst FieldStack = styled(Stack)`\n position: relative;\n\n // Hide when the field component renders nothing (e.g. a custom\n // field component that returns null) to avoid an empty wrapper\n // taking up space in the form.\n &:empty:not([hidden]) {\n display: none;\n }\n`\n\nfunction CommentFieldInner(\n props: FieldProps & {\n mode: CommentsUIMode\n },\n) {\n const {mode} = props\n\n const currentUser = useCurrentUser()\n const {element: boundaryElement} = useBoundaryElement()\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n\n const {\n comments,\n isCommentsOpen,\n isCreatingDataset,\n mentionOptions,\n onCommentsOpen,\n operation,\n setStatus,\n status,\n } = useComments()\n const {upsellData, handleOpenDialog} = useCommentsUpsell()\n const {selectedPath, setSelectedPath} = useCommentsSelectedPath()\n const {authoringPath, setAuthoringPath} = useCommentsAuthoringPath()\n const {scrollToGroup} = useCommentsScroll({\n boundaryElement,\n })\n\n const fieldTitle = useMemo(() => getSchemaTypeTitle(props.schemaType), [props.schemaType])\n const stringPath = useMemo(() => PathUtils.toString(props.path), [props.path])\n\n // Use the cached value if it exists as the initial value\n const cachedValue = messageCache.get(stringPath) || null\n\n const [value, setValue] = useState<PortableTextBlock[] | null>(cachedValue)\n\n // If the path of the field matches the authoring path, the comment input should be open.\n const isOpen = useMemo(() => authoringPath === stringPath, [authoringPath, stringPath])\n\n // Determine if the current field is selected\n const isSelected = useMemo(() => {\n if (!isCommentsOpen) return false\n if (selectedPath?.origin === 'form' || selectedPath?.origin === 'url') return false\n return belongsToField(selectedPath?.fieldPath, props.path)\n }, [isCommentsOpen, selectedPath?.fieldPath, selectedPath?.origin, props.path])\n\n const isInlineCommentThread = useMemo(() => {\n return comments.data.open\n .filter((c) => c.threadId === selectedPath?.threadId)\n .some((x) => isTextSelectionComment(x.parentComment))\n }, [comments.data.open, selectedPath?.threadId])\n\n // Total number of comments for the current field, including comments on\n // blocks nested below it (container-nested and dialog-authored comments\n // store the block's data path as their `fieldPath`).\n const count = useMemo(() => {\n const commentsCount = comments.data.open\n .map((c) => (belongsToField(c.fieldPath, props.path) ? c.commentsCount : 0))\n .reduce((acc, val) => acc + val, 0)\n\n return commentsCount || 0\n }, [comments.data.open, props.path])\n\n const hasComments = Boolean(count > 0)\n\n const resetMessageValue = useCallback(() => {\n // Reset the value and remove the message from the cache\n setValue(null)\n messageCache.delete(stringPath)\n }, [stringPath])\n\n const handleClick = useCallback(() => {\n // When clicking a comment button when the field has comments, we want to:\n if (hasComments) {\n // 1. Change the status to 'open' if it's 'resolved'\n if (status === 'resolved') {\n setStatus('open')\n }\n\n // 2. Ensure that the authoring path is reset when clicking\n // the comment button when the field has comments.\n setAuthoringPath(null)\n\n // 3. Open the comments inspector\n onCommentsOpen?.()\n\n // 4. Find the latest comment thread for the current field\n const latestThread = comments.data.open.find((c) => belongsToField(c.fieldPath, props.path))\n\n // 5. Set the latest thread ID as the selected thread ID\n // and scroll to the it. The selected path carries the thread's own\n // `fieldPath`: the inspector marks a thread selected by comparing\n // against the stored path, which for nested threads is deeper than\n // this field's path.\n if (latestThread) {\n setSelectedPath({\n threadId: latestThread.threadId,\n origin: 'form',\n fieldPath: latestThread.fieldPath,\n })\n\n scrollToGroup(latestThread.threadId)\n }\n\n return\n }\n\n if (mode === 'upsell') {\n if (upsellData) {\n handleOpenDialog('field_action')\n } else {\n // Open the comments inspector\n onCommentsOpen?.()\n }\n return\n }\n\n // If the field is open (i.e. the authoring path is set to the current field)\n // we close the field by resetting the authoring path. If the field is not open,\n // we set the authoring path to the current field so that the comment form is opened.\n setAuthoringPath(isOpen ? null : stringPath)\n }, [\n comments.data.open,\n handleOpenDialog,\n hasComments,\n isOpen,\n mode,\n onCommentsOpen,\n props.path,\n scrollToGroup,\n setAuthoringPath,\n setSelectedPath,\n setStatus,\n status,\n stringPath,\n upsellData,\n ])\n\n const handleCommentAdd = useCallback(\n (nextValue: PortableTextBlock[]) => {\n if (nextValue) {\n // Since this is a new comment, we generate a new thread ID\n const newThreadId = uuid()\n\n // Construct the comment payload\n const nextComment: CommentCreatePayload = {\n type: 'field',\n fieldPath: PathUtils.toString(props.path),\n message: nextValue,\n parentCommentId: undefined,\n status: 'open',\n threadId: newThreadId,\n // New comments have no reactions\n reactions: EMPTY_ARRAY,\n }\n\n // Execute the create mutation\n void operation.create(nextComment)\n\n // If a comment is added to a field when viewing resolved comments, we switch\n // to open comments and scroll to the comment that was just added\n // Open the inspector when a new comment is added\n onCommentsOpen?.()\n\n if (status === 'resolved') {\n // Set the status to 'open' so that the comment is visible\n setStatus('open')\n }\n\n resetMessageValue()\n\n // Scroll to the thread\n setSelectedPath({\n threadId: newThreadId,\n origin: 'form',\n fieldPath: PathUtils.toString(props.path),\n })\n\n scrollToGroup(newThreadId)\n }\n },\n [\n onCommentsOpen,\n operation,\n props.path,\n resetMessageValue,\n scrollToGroup,\n setSelectedPath,\n setStatus,\n status,\n ],\n )\n\n const handleClose = useCallback(() => setAuthoringPath(null), [setAuthoringPath])\n\n const handleOnChange = useCallback(\n (nextValue: CommentMessage) => {\n setValue(nextValue)\n messageCache.set(stringPath, nextValue)\n },\n [stringPath],\n )\n\n const internalComments: FieldProps['__internal_comments'] = useMemo(\n () => ({\n button: currentUser && (\n <CommentsFieldButton\n count={Number(count)}\n currentUser={currentUser}\n fieldTitle={fieldTitle}\n isCreatingDataset={isCreatingDataset}\n mentionOptions={mentionOptions}\n onChange={handleOnChange}\n onClick={handleClick}\n onClose={handleClose}\n onCommentAdd={handleCommentAdd}\n onDiscard={resetMessageValue}\n open={isOpen}\n value={value}\n />\n ),\n hasComments,\n isAddingComment: isOpen,\n }),\n [\n currentUser,\n count,\n fieldTitle,\n isCreatingDataset,\n mentionOptions,\n handleOnChange,\n handleClick,\n handleClose,\n handleCommentAdd,\n resetMessageValue,\n isOpen,\n value,\n hasComments,\n ],\n )\n\n return (\n <FieldStack {...applyCommentsFieldAttr(PathUtils.toString(props.path))} ref={rootRef}>\n {props.renderDefault({\n ...props,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments: internalComments,\n })}\n\n <AnimatePresence>\n {isSelected && !isInlineCommentThread && (\n <HighlightDiv\n animate=\"animate\"\n exit=\"exit\"\n initial=\"initial\"\n variants={HIGHLIGHT_BLOCK_VARIANTS}\n />\n )}\n </AnimatePresence>\n </FieldStack>\n )\n}\n\n/**\n * Whether a comment's stored `fieldPath` sits at or below the field's path.\n */\nfunction belongsToField(fieldPath: string | null | undefined, path: Path): boolean {\n const commentFieldPath = parseCommentFieldPath(fieldPath)\n return commentFieldPath ? PathUtils.startsWith(path, commentFieldPath) : false\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommentsField-i8xs45PB.js","names":["useContext","CommentsAuthoringPathContext","CommentsAuthoringPathContextValue","useCommentsAuthoringPath","value","Error","AddCommentIcon","CommentIcon","CurrentUser","PortableTextBlock","Button","SanityUIButton","Flex","Stack","Text","useClickOutsideEvent","useCallback","useMemo","useRef","useState","styled","Popover","Tooltip","UserListWithPermissionsHookValue","useTranslation","Translate","useAddonDataset","CommentInput","CommentInputHandle","hasCommentMessageValue","commentsLocaleNamespace","CommentMessage","ContentStack","CommentsFieldButtonProps","count","currentUser","fieldTitle","isCreatingDataset","mentionOptions","onChange","value","onClick","onClose","onCommentAdd","onDiscard","onInputKeyDown","event","React","KeyboardEvent","open","CommentsFieldButton","props","$","_c","t","error","addonDatasetError","popoverRef","addCommentButtonElement","setAddCommentButtonElement","commentInputHandle","hasComments","Boolean","t0","focus","closePopover","t1","nextValue","handleSubmit","t2","hasValue","t3","current","discardDialogController","startDiscard","t4","isDefaultPrevented","handleInputKeyDown","t5","Symbol","for","close","handleDiscardCancel","t6","handleDiscardConfirm","t7","event_0","key","preventDefault","stopPropagation","handlePopoverKeyDown","t8","t9","field","t10","placeholder","t11","content","t12","t13","t14","t15","t16","placement","t17","t18","hues","Path","PortableTextBlock","Stack","useBoundaryElement","PathUtils","uuid","AnimatePresence","motion","Variants","useCallback","useMemo","useRef","useState","css","styled","FieldProps","getSchemaTypeTitle","useCurrentUser","COMMENTS_HIGHLIGHT_HUE_KEY","isTextSelectionComment","parseCommentFieldPath","useComments","useCommentsAuthoringPath","useCommentsEnabled","applyCommentsFieldAttr","useCommentsScroll","useCommentsSelectedPath","useCommentsUpsell","CommentCreatePayload","CommentMessage","CommentsUIMode","CommentsFieldButton","messageCache","Map","EMPTY_ARRAY","HIGHLIGHT_BLOCK_VARIANTS","initial","opacity","animate","exit","CommentsField","props","$","_c","enabled","mode","t0","renderDefault","HighlightDiv","div","theme","radius","space","color","sanity","bg","dark","hex","FieldStack","CommentFieldInner","currentUser","element","boundaryElement","rootRef","comments","isCommentsOpen","isCreatingDataset","mentionOptions","onCommentsOpen","operation","setStatus","status","upsellData","handleOpenDialog","selectedPath","setSelectedPath","authoringPath","setAuthoringPath","scrollToGroup","t1","schemaType","fieldTitle","t2","path","toString","stringPath","t3","get","cachedValue","value","setValue","isOpen","t4","fieldPath","origin","belongsToField","t5","isSelected","threadId","t6","data","open","t7","c","filter","some","_temp","isInlineCommentThread","t8","c_0","commentsCount","map","reduce","_temp2","count","hasComments","Boolean","delete","resetMessageValue","t9","latestThread","find","c_1","handleClick","t10","nextValue","newThreadId","nextComment","type","message","parentCommentId","undefined","reactions","create","handleCommentAdd","t11","handleClose","t12","nextValue_0","set","handleOnChange","t13","Number","t14","button","isAddingComment","internalComments","t15","t16","__internal_comments","t17","t18","t19","acc","val","x","parentComment","commentFieldPath","startsWith"],"sources":["../src/core/comments/hooks/useCommentsAuthoringPath.ts","../src/core/comments/plugin/field/CommentsFieldButton.tsx","../src/core/comments/plugin/field/CommentsField.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {CommentsAuthoringPathContext} from 'sanity/_singletons'\n\nimport {type CommentsAuthoringPathContextValue} from '../context/authoring-path/types'\n\n/**\n * @beta\n * @hidden\n */\nexport function useCommentsAuthoringPath(): CommentsAuthoringPathContextValue {\n const value = useContext(CommentsAuthoringPathContext)\n\n if (!value) {\n throw new Error('useCommentsAuthoringPath: missing context value')\n }\n\n return value\n}\n","import {AddCommentIcon} from '@sanity/icons/AddComment'\nimport {CommentIcon} from '@sanity/icons/Comment'\nimport {type CurrentUser, type PortableTextBlock} from '@sanity/types'\nimport {\n // oxlint-disable-next-line no-restricted-imports\n Button as SanityUIButton,\n Flex,\n Stack,\n Text,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useAddonDataset} from '../../../studio/addonDataset/useAddonDataset'\nimport {\n CommentInput,\n type CommentInputHandle,\n} from '../../components/pte/comment-input/CommentInput'\nimport {hasCommentMessageValue} from '../../helpers'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentMessage} from '../../types'\n\nconst ContentStack = styled(Stack)`\n width: 320px;\n`\n\ninterface CommentsFieldButtonProps {\n count: number\n currentUser: CurrentUser\n fieldTitle: string\n isCreatingDataset: boolean\n mentionOptions: UserListWithPermissionsHookValue\n onChange: (value: PortableTextBlock[]) => void\n onClick?: () => void\n onClose: () => void\n onCommentAdd: (value: PortableTextBlock[]) => void\n onDiscard: () => void\n onInputKeyDown?: (event: React.KeyboardEvent) => void\n open: boolean\n value: CommentMessage\n}\n\nexport function CommentsFieldButton(props: CommentsFieldButtonProps) {\n const {\n count,\n currentUser,\n fieldTitle,\n isCreatingDataset,\n mentionOptions,\n onChange,\n onClick,\n onClose,\n onCommentAdd,\n onDiscard,\n onInputKeyDown,\n open,\n value,\n } = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const {error: addonDatasetError} = useAddonDataset()\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const [addCommentButtonElement, setAddCommentButtonElement] = useState<HTMLButtonElement | null>(\n null,\n )\n const commentInputHandle = useRef<CommentInputHandle | null>(null)\n const hasComments = Boolean(count > 0)\n\n const closePopover = useCallback(() => {\n if (!open) return\n onClose()\n addCommentButtonElement?.focus()\n }, [addCommentButtonElement, open, onClose])\n\n const handleSubmit = useCallback(\n (nextValue: PortableTextBlock[]) => {\n onCommentAdd(nextValue)\n closePopover()\n },\n [closePopover, onCommentAdd],\n )\n\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n const startDiscard = useCallback(() => {\n if (!hasValue) {\n closePopover()\n return\n }\n\n commentInputHandle.current?.discardDialogController.open()\n }, [closePopover, hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n\n // Call parent handler\n if (onInputKeyDown) onInputKeyDown(event)\n },\n [onInputKeyDown],\n )\n\n const handleDiscardCancel = useCallback(() => {\n commentInputHandle.current?.discardDialogController.close()\n }, [])\n\n const handleDiscardConfirm = useCallback(() => {\n commentInputHandle.current?.discardDialogController.close()\n closePopover()\n onDiscard()\n }, [closePopover, onDiscard])\n\n const handlePopoverKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n },\n [startDiscard],\n )\n\n useClickOutsideEvent(open && startDiscard, () => [popoverRef.current])\n\n if (!hasComments) {\n const placeholder = (\n <Translate\n t={t}\n i18nKey=\"compose.add-comment-input-placeholder\"\n values={{field: fieldTitle}}\n />\n )\n\n const content = (\n <ContentStack padding={2} gap={4}>\n <CommentInput\n currentUser={currentUser}\n focusLock\n focusOnMount\n mentionOptions={mentionOptions}\n onChange={onChange}\n onDiscardCancel={handleDiscardCancel}\n onDiscardConfirm={handleDiscardConfirm}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleSubmit}\n placeholder={placeholder}\n readOnly={isCreatingDataset}\n ref={commentInputHandle}\n value={value}\n />\n </ContentStack>\n )\n\n return (\n <Popover\n constrainSize\n content={content}\n fallbackPlacements={['bottom-end']}\n open={open}\n placement=\"right-start\"\n portal\n ref={popoverRef}\n onKeyDown={handlePopoverKeyDown}\n >\n <div>\n <Button\n aria-label={t('field-button.aria-label-add')}\n disabled={isCreatingDataset || Boolean(addonDatasetError)}\n icon={AddCommentIcon}\n mode=\"bleed\"\n onClick={onClick}\n ref={setAddCommentButtonElement}\n selected={open}\n tooltipProps={{\n content: t('field-button.title'),\n placement: 'top',\n }}\n />\n </div>\n </Popover>\n )\n }\n\n return (\n <Tooltip portal placement=\"top\" content={t('field-button.content', {count})}>\n <SanityUIButton\n aria-label={t('field-button.aria-label-open')}\n mode=\"bleed\"\n onClick={onClick}\n padding={2}\n gap={2}\n >\n <Flex align=\"center\" gap={2}>\n <Text size={1}>\n <CommentIcon />\n </Text>\n <Text size={0}>{count > 9 ? '9+' : count}</Text>\n </Flex>\n </SanityUIButton>\n </Tooltip>\n )\n}\n","import {hues} from '@sanity/color'\nimport {type Path, type PortableTextBlock} from '@sanity/types'\nimport {Stack, useBoundaryElement} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {uuid} from '@sanity/uuid'\nimport {AnimatePresence, motion, type Variants} from 'motion/react'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type FieldProps} from '../../../form/types/fieldProps'\nimport {getSchemaTypeTitle} from '../../../schema/helpers'\nimport {useCurrentUser} from '../../../store/user/hooks'\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\nimport {isTextSelectionComment, parseCommentFieldPath} from '../../helpers'\nimport {useComments} from '../../hooks/useComments'\nimport {useCommentsAuthoringPath} from '../../hooks/useCommentsAuthoringPath'\nimport {useCommentsEnabled} from '../../hooks/useCommentsEnabled'\nimport {applyCommentsFieldAttr, useCommentsScroll} from '../../hooks/useCommentsScroll'\nimport {useCommentsSelectedPath} from '../../hooks/useCommentsSelectedPath'\nimport {useCommentsUpsell} from '../../hooks/useCommentsUpsell'\nimport {type CommentCreatePayload, type CommentMessage, type CommentsUIMode} from '../../types'\nimport {CommentsFieldButton} from './CommentsFieldButton'\n\n// When the form is temporarily set to `readOnly` while reconnecting, the form\n// will be re-rendered and any comment that is being authored will be lost.\n// To avoid this, we cache the comment message in a map and restore it when the\n// field is re-rendered.\nconst messageCache = new Map<string, CommentMessage>()\n\nconst EMPTY_ARRAY: [] = []\n\nconst HIGHLIGHT_BLOCK_VARIANTS: Variants = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n },\n exit: {\n opacity: 0,\n },\n}\n\nexport function CommentsField(props: FieldProps) {\n const {enabled, mode} = useCommentsEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <CommentFieldInner {...props} mode={mode} />\n}\n\nconst HighlightDiv = styled(motion.div)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {radius, space, color} = theme.sanity\n const bg = hues[COMMENTS_HIGHLIGHT_HUE_KEY][color.dark ? 900 : 50].hex\n\n return css`\n mix-blend-mode: ${color.dark ? 'screen' : 'multiply'};\n border-radius: ${radius[3]}px;\n top: -${space[2]}px;\n left: -${space[2]}px;\n bottom: -${space[2]}px;\n right: -${space[2]}px;\n pointer-events: none;\n position: absolute;\n z-index: 1;\n width: calc(100% + ${space[2] * 2}px);\n height: calc(100% + ${space[2] * 2}px);\n background-color: ${bg};\n `\n})\n\nconst FieldStack = styled(Stack)`\n position: relative;\n\n // Hide when the field component renders nothing (e.g. a custom\n // field component that returns null) to avoid an empty wrapper\n // taking up space in the form.\n &:empty:not([hidden]) {\n display: none;\n }\n`\n\nfunction CommentFieldInner(\n props: FieldProps & {\n mode: CommentsUIMode\n },\n) {\n const {mode} = props\n\n const currentUser = useCurrentUser()\n const {element: boundaryElement} = useBoundaryElement()\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n\n const {\n comments,\n isCommentsOpen,\n isCreatingDataset,\n mentionOptions,\n onCommentsOpen,\n operation,\n setStatus,\n status,\n } = useComments()\n const {upsellData, handleOpenDialog} = useCommentsUpsell()\n const {selectedPath, setSelectedPath} = useCommentsSelectedPath()\n const {authoringPath, setAuthoringPath} = useCommentsAuthoringPath()\n const {scrollToGroup} = useCommentsScroll({\n boundaryElement,\n })\n\n const fieldTitle = useMemo(() => getSchemaTypeTitle(props.schemaType), [props.schemaType])\n const stringPath = useMemo(() => PathUtils.toString(props.path), [props.path])\n\n // Use the cached value if it exists as the initial value\n const cachedValue = messageCache.get(stringPath) || null\n\n const [value, setValue] = useState<PortableTextBlock[] | null>(cachedValue)\n\n // If the path of the field matches the authoring path, the comment input should be open.\n const isOpen = useMemo(() => authoringPath === stringPath, [authoringPath, stringPath])\n\n // Determine if the current field is selected\n const isSelected = useMemo(() => {\n if (!isCommentsOpen) return false\n if (selectedPath?.origin === 'form' || selectedPath?.origin === 'url') return false\n return belongsToField(selectedPath?.fieldPath, props.path)\n }, [isCommentsOpen, selectedPath?.fieldPath, selectedPath?.origin, props.path])\n\n const isInlineCommentThread = useMemo(() => {\n return comments.data.open\n .filter((c) => c.threadId === selectedPath?.threadId)\n .some((x) => isTextSelectionComment(x.parentComment))\n }, [comments.data.open, selectedPath?.threadId])\n\n // Total number of comments for the current field, including comments on\n // blocks nested below it (container-nested and dialog-authored comments\n // store the block's data path as their `fieldPath`).\n const count = useMemo(() => {\n const commentsCount = comments.data.open\n .map((c) => (belongsToField(c.fieldPath, props.path) ? c.commentsCount : 0))\n .reduce((acc, val) => acc + val, 0)\n\n return commentsCount || 0\n }, [comments.data.open, props.path])\n\n const hasComments = Boolean(count > 0)\n\n const resetMessageValue = useCallback(() => {\n // Reset the value and remove the message from the cache\n setValue(null)\n messageCache.delete(stringPath)\n }, [stringPath])\n\n const handleClick = useCallback(() => {\n // When clicking a comment button when the field has comments, we want to:\n if (hasComments) {\n // 1. Change the status to 'open' if it's 'resolved'\n if (status === 'resolved') {\n setStatus('open')\n }\n\n // 2. Ensure that the authoring path is reset when clicking\n // the comment button when the field has comments.\n setAuthoringPath(null)\n\n // 3. Open the comments inspector\n onCommentsOpen?.()\n\n // 4. Find the latest comment thread for the current field\n const latestThread = comments.data.open.find((c) => belongsToField(c.fieldPath, props.path))\n\n // 5. Set the latest thread ID as the selected thread ID\n // and scroll to the it. The selected path carries the thread's own\n // `fieldPath`: the inspector marks a thread selected by comparing\n // against the stored path, which for nested threads is deeper than\n // this field's path.\n if (latestThread) {\n setSelectedPath({\n threadId: latestThread.threadId,\n origin: 'form',\n fieldPath: latestThread.fieldPath,\n })\n\n scrollToGroup(latestThread.threadId)\n }\n\n return\n }\n\n if (mode === 'upsell') {\n if (upsellData) {\n handleOpenDialog('field_action')\n } else {\n // Open the comments inspector\n onCommentsOpen?.()\n }\n return\n }\n\n // If the field is open (i.e. the authoring path is set to the current field)\n // we close the field by resetting the authoring path. If the field is not open,\n // we set the authoring path to the current field so that the comment form is opened.\n setAuthoringPath(isOpen ? null : stringPath)\n }, [\n comments.data.open,\n handleOpenDialog,\n hasComments,\n isOpen,\n mode,\n onCommentsOpen,\n props.path,\n scrollToGroup,\n setAuthoringPath,\n setSelectedPath,\n setStatus,\n status,\n stringPath,\n upsellData,\n ])\n\n const handleCommentAdd = useCallback(\n (nextValue: PortableTextBlock[]) => {\n if (nextValue) {\n // Since this is a new comment, we generate a new thread ID\n const newThreadId = uuid()\n\n // Construct the comment payload\n const nextComment: CommentCreatePayload = {\n type: 'field',\n fieldPath: PathUtils.toString(props.path),\n message: nextValue,\n parentCommentId: undefined,\n status: 'open',\n threadId: newThreadId,\n // New comments have no reactions\n reactions: EMPTY_ARRAY,\n }\n\n // Execute the create mutation\n void operation.create(nextComment)\n\n // If a comment is added to a field when viewing resolved comments, we switch\n // to open comments and scroll to the comment that was just added\n // Open the inspector when a new comment is added\n onCommentsOpen?.()\n\n if (status === 'resolved') {\n // Set the status to 'open' so that the comment is visible\n setStatus('open')\n }\n\n resetMessageValue()\n\n // Scroll to the thread\n setSelectedPath({\n threadId: newThreadId,\n origin: 'form',\n fieldPath: PathUtils.toString(props.path),\n })\n\n scrollToGroup(newThreadId)\n }\n },\n [\n onCommentsOpen,\n operation,\n props.path,\n resetMessageValue,\n scrollToGroup,\n setSelectedPath,\n setStatus,\n status,\n ],\n )\n\n const handleClose = useCallback(() => setAuthoringPath(null), [setAuthoringPath])\n\n const handleOnChange = useCallback(\n (nextValue: CommentMessage) => {\n setValue(nextValue)\n messageCache.set(stringPath, nextValue)\n },\n [stringPath],\n )\n\n const internalComments: FieldProps['__internal_comments'] = useMemo(\n () => ({\n button: currentUser && (\n <CommentsFieldButton\n count={Number(count)}\n currentUser={currentUser}\n fieldTitle={fieldTitle}\n isCreatingDataset={isCreatingDataset}\n mentionOptions={mentionOptions}\n onChange={handleOnChange}\n onClick={handleClick}\n onClose={handleClose}\n onCommentAdd={handleCommentAdd}\n onDiscard={resetMessageValue}\n open={isOpen}\n value={value}\n />\n ),\n hasComments,\n isAddingComment: isOpen,\n }),\n [\n currentUser,\n count,\n fieldTitle,\n isCreatingDataset,\n mentionOptions,\n handleOnChange,\n handleClick,\n handleClose,\n handleCommentAdd,\n resetMessageValue,\n isOpen,\n value,\n hasComments,\n ],\n )\n\n return (\n <FieldStack {...applyCommentsFieldAttr(PathUtils.toString(props.path))} ref={rootRef}>\n {props.renderDefault({\n ...props,\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n __internal_comments: internalComments,\n })}\n\n <AnimatePresence>\n {isSelected && !isInlineCommentThread && (\n <HighlightDiv\n animate=\"animate\"\n exit=\"exit\"\n initial=\"initial\"\n variants={HIGHLIGHT_BLOCK_VARIANTS}\n />\n )}\n </AnimatePresence>\n </FieldStack>\n )\n}\n\n/**\n * Whether a comment's stored `fieldPath` sits at or below the field's path.\n */\nfunction belongsToField(fieldPath: string | null | undefined, path: Path): boolean {\n const commentFieldPath = parseCommentFieldPath(fieldPath)\n return commentFieldPath ? PathUtils.startsWith(path, commentFieldPath) : false\n}\n"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as Button$1 } from "./Button-CGZ3ETwD.js";
|
|
2
2
|
import { t as Popover } from "./Popover-DRCM1MS-.js";
|
|
3
3
|
import { t as useTranslation } from "./useTranslation-Cqs6Itwv.js";
|
|
4
|
-
import { t as useFieldActions } from "./useFieldActions-
|
|
5
|
-
import { b as useCommentsScroll, f as hasCommentMessageValue, m as parseCommentFieldPath, o as CommentInput, p as isTextSelectionComment, t as useComments, x as commentsLocaleNamespace } from "./useComments-
|
|
6
|
-
import { a as CommentInlineHighlightSpan, i as buildRangeDecorationSelectionsFromComments, n as getCommentFieldPath, o as CommentDisabledIcon, r as buildCommentRangeDecorations, t as buildTextSelectionFromFragment } from "./buildTextSelectionFromFragment-
|
|
7
|
-
import { n as useCurrentUser } from "./LoadingBlock-
|
|
4
|
+
import { t as useFieldActions } from "./useFieldActions-MFJIkobn.js";
|
|
5
|
+
import { b as useCommentsScroll, f as hasCommentMessageValue, m as parseCommentFieldPath, o as CommentInput, p as isTextSelectionComment, t as useComments, x as commentsLocaleNamespace } from "./useComments-BcMCyjIE.js";
|
|
6
|
+
import { a as CommentInlineHighlightSpan, i as buildRangeDecorationSelectionsFromComments, n as getCommentFieldPath, o as CommentDisabledIcon, r as buildCommentRangeDecorations, t as buildTextSelectionFromFragment } from "./buildTextSelectionFromFragment-CFZdgjpp.js";
|
|
7
|
+
import { n as useCurrentUser } from "./LoadingBlock-DPTVJ58M.js";
|
|
8
8
|
import { t as useAddonDataset } from "./useAddonDataset-BvCgByG6.js";
|
|
9
9
|
import { t as useCommentsEnabled } from "./useCommentsEnabled-BPc3788v.js";
|
|
10
10
|
import { t as useCommentsSelectedPath } from "./useCommentsSelectedPath-D5HXM3NF.js";
|
|
11
|
-
import { n as useFormValue } from "./FormValue-
|
|
11
|
+
import { n as useFormValue } from "./FormValue-CJg43LyM.js";
|
|
12
12
|
import { t as useCommentsUpsell } from "./useCommentsUpsell-a8ecO894.js";
|
|
13
13
|
import { memo, startTransition, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
14
14
|
import { c } from "react/compiler-runtime";
|
|
@@ -517,4 +517,4 @@ function CommentsInput(props) {
|
|
|
517
517
|
}
|
|
518
518
|
export { CommentsInput };
|
|
519
519
|
|
|
520
|
-
//# sourceMappingURL=CommentsInput-
|
|
520
|
+
//# sourceMappingURL=CommentsInput-B9iSSi8A.js.map
|