sanity 6.2.1-next.21 → 6.2.1-next.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/lib/_chunks-es/CommentsInspector.js +1 -0
  2. package/lib/_chunks-es/CommentsInspector.js.map +1 -1
  3. package/lib/_chunks-es/ReleasesStudioLayout.js +1 -0
  4. package/lib/_chunks-es/ReleasesStudioLayout.js.map +1 -1
  5. package/lib/_chunks-es/ReleasesTool.js +1 -0
  6. package/lib/_chunks-es/ReleasesTool.js.map +1 -1
  7. package/lib/_chunks-es/TasksDocumentInputLayout.js +1 -0
  8. package/lib/_chunks-es/TasksDocumentInputLayout.js.map +1 -1
  9. package/lib/_chunks-es/TasksFooterOpenTasks.js +1 -0
  10. package/lib/_chunks-es/TasksFooterOpenTasks.js.map +1 -1
  11. package/lib/_chunks-es/TasksStudioActiveToolLayout.js +1 -0
  12. package/lib/_chunks-es/TasksStudioActiveToolLayout.js.map +1 -1
  13. package/lib/_chunks-es/TasksStudioLayout.js +1 -0
  14. package/lib/_chunks-es/TasksStudioLayout.js.map +1 -1
  15. package/lib/_chunks-es/TasksStudioNavbar.js +1 -0
  16. package/lib/_chunks-es/TasksStudioNavbar.js.map +1 -1
  17. package/lib/_chunks-es/VariantsStudioNavbar.js +1 -0
  18. package/lib/_chunks-es/VariantsStudioNavbar.js.map +1 -1
  19. package/lib/_chunks-es/VariantsTool.js +1 -0
  20. package/lib/_chunks-es/VariantsTool.js.map +1 -1
  21. package/lib/_chunks-es/index2.js +93 -613
  22. package/lib/_chunks-es/index2.js.map +1 -1
  23. package/lib/_chunks-es/index3.js +1 -0
  24. package/lib/_chunks-es/index3.js.map +1 -1
  25. package/lib/_chunks-es/index6.js +1 -0
  26. package/lib/_chunks-es/index6.js.map +1 -1
  27. package/lib/_chunks-es/index7.js +1 -0
  28. package/lib/_chunks-es/index7.js.map +1 -1
  29. package/lib/_chunks-es/index8.js +1 -0
  30. package/lib/_chunks-es/index8.js.map +1 -1
  31. package/lib/_chunks-es/resources2.js +1 -0
  32. package/lib/_chunks-es/resources2.js.map +1 -1
  33. package/lib/_chunks-es/resources3.js +1 -0
  34. package/lib/_chunks-es/resources3.js.map +1 -1
  35. package/lib/_chunks-es/resources4.js +1 -0
  36. package/lib/_chunks-es/resources4.js.map +1 -1
  37. package/lib/_chunks-es/resources5.js +1 -0
  38. package/lib/_chunks-es/resources5.js.map +1 -1
  39. package/lib/_chunks-es/resources6.js +1 -0
  40. package/lib/_chunks-es/resources6.js.map +1 -1
  41. package/lib/_chunks-es/resources7.js +1 -0
  42. package/lib/_chunks-es/resources7.js.map +1 -1
  43. package/lib/_chunks-es/version.js +2 -2
  44. package/package.json +11 -11
@@ -104,6 +104,7 @@ import "@sanity/client";
104
104
  import "react-is";
105
105
  import "exif-component";
106
106
  import "lodash-es/pickBy.js";
107
+ import "swr";
107
108
  import "use-hot-module-reload";
108
109
  import "lodash-es/memoize.js";
109
110
  import "lodash-es/sortedIndex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TasksDocumentInputLayout.js","sources":["../../src/core/tasks/context/isLastPane/useIsLastPane.ts","../../src/core/tasks/plugin/structure/SetActiveDocument.tsx","../../src/core/tasks/plugin/TasksDocumentInputLayout.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {IsLastPaneContext} from 'sanity/_singletons'\n\n/**\n * @internal\n * @hidden\n */\nexport function useIsLastPane(): boolean {\n return useContext(IsLastPaneContext)\n}\n","import {useEffect} from 'react'\n\nimport {getPublishedId, isVersionId} from '../../../util'\nimport {type ActiveDocument, useIsLastPane, useTasks, useTasksEnabled} from '../../context'\n\nfunction SetActiveDocumentInner(document: ActiveDocument) {\n const {documentId, documentType} = document\n const isLast = useIsLastPane()\n const {setActiveDocument} = useTasks()\n\n useEffect(() => {\n if (documentId && isLast && documentType) {\n setActiveDocument?.({\n // Use the version id if it's a version document.\n documentId: isVersionId(documentId) ? documentId : getPublishedId(documentId),\n documentType,\n })\n }\n\n return () => {\n if (isLast) {\n setActiveDocument?.(null)\n }\n }\n }, [documentId, documentType, isLast, setActiveDocument])\n\n return null\n}\n\nexport function SetActiveDocument(document: ActiveDocument) {\n const {enabled} = useTasksEnabled()\n if (!enabled) return null\n return <SetActiveDocumentInner {...document} />\n}\n","import {type ObjectInputProps} from '../../form'\nimport {SetActiveDocument} from './structure/SetActiveDocument'\n\nexport function TasksDocumentInputLayout(props: ObjectInputProps) {\n const documentId = props.value?._id\n const documentType = props.value?._type\n\n return (\n <>\n <SetActiveDocument documentId={documentId} documentType={documentType} />\n {props.renderDefault(props)}\n </>\n )\n}\n"],"names":["useIsLastPane","useContext","IsLastPaneContext","SetActiveDocumentInner","document","$","_c","documentId","documentType","isLast","setActiveDocument","useTasks","t0","t1","isVersionId","getPublishedId","useEffect","SetActiveDocument","enabled","useTasksEnabled","TasksDocumentInputLayout","props","value","_id","_type","renderDefault","t2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAAA,gBAAA;AAAA,SACEC,WAAWC,iBAAiB;AAAC;ACHtC,SAAAC,uBAAAC,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACE;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAmCJ,UACnCK,SAAeT,iBACf;AAAA,IAAAU;AAAAA,EAAAA,IAA4BC,SAAAA;AAAU,MAAAC,IAAAC;AAAA,SAAAR,EAAA,CAAA,MAAAE,cAAAF,EAAA,CAAA,MAAAG,gBAAAH,EAAA,CAAA,MAAAI,UAAAJ,SAAAK,qBAE5BE,KAAAA,OACJL,cAAAE,UAAAD,gBACFE,oBAAoB;AAAA,IAAAH,YAENO,YAAYP,UAAoD,IAAhEA,aAAuCQ,eAAeR,UAAU;AAAA,IAACC;AAAAA,EAAAA,CAE9E,GAGI,MAAA;AACDC,cACFC,oBAAoB,IAAI;AAAA,EACzB,IAEFG,KAAA,CAACN,YAAYC,cAAcC,QAAQC,iBAAiB,GAACL,OAAAE,YAAAF,OAAAG,cAAAH,OAAAI,QAAAJ,OAAAK,mBAAAL,OAAAO,IAAAP,OAAAQ,OAAAD,KAAAP,EAAA,CAAA,GAAAQ,KAAAR,EAAA,CAAA,IAdxDW,UAAUJ,IAcPC,EAAqD,GAEjD;AAAI;AAGN,SAAAI,kBAAAb,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACL;AAAA,IAAAY;AAAAA,EAAAA,IAAkBC,gBAAAA;AAClB,MAAI,CAACD;AAAO,WAAS;AAAI,MAAAN;AAAA,SAAAP,SAAAD,YAClBQ,KAAA,oBAAC,wBAAA,EAAsB,GAAKR,UAAQ,GAAIC,OAAAD,UAAAC,OAAAO,MAAAA,KAAAP,EAAA,CAAA,GAAxCO;AAAwC;AC7B1C,SAAAQ,yBAAAC,OAAA;AAAA,QAAAhB,IAAAC,EAAA,CAAA,GACLC,aAAmBc,MAAKC,OAAWC,KACnCf,eAAqBa,MAAKC,OAAaE;AAAA,MAAAZ;AAAAP,IAAA,CAAA,MAAAE,cAAAF,SAAAG,gBAInCI,KAAA,oBAAC,mBAAA,EAA8BL,YAA0BC,aAAAA,CAAY,GAAIH,OAAAE,YAAAF,OAAAG,cAAAH,OAAAO,MAAAA,KAAAP,EAAA,CAAA;AAAA,MAAAQ;AAAAR,WAAAgB,SACxER,KAAAQ,MAAKI,cAAeJ,KAAK,GAAChB,OAAAgB,OAAAhB,OAAAQ,MAAAA,KAAAR,EAAA,CAAA;AAAA,MAAAqB;AAAA,SAAArB,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,MAF7Ba,sCACEd,UAAAA;AAAAA,IAAAA;AAAAA,IACCC;AAAAA,EAAAA,EAAAA,CAA0B,GAC1BR,OAAAO,IAAAP,OAAAQ,IAAAR,OAAAqB,MAAAA,KAAArB,EAAA,CAAA,GAHHqB;AAGG;"}
1
+ {"version":3,"file":"TasksDocumentInputLayout.js","sources":["../../src/core/tasks/context/isLastPane/useIsLastPane.ts","../../src/core/tasks/plugin/structure/SetActiveDocument.tsx","../../src/core/tasks/plugin/TasksDocumentInputLayout.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {IsLastPaneContext} from 'sanity/_singletons'\n\n/**\n * @internal\n * @hidden\n */\nexport function useIsLastPane(): boolean {\n return useContext(IsLastPaneContext)\n}\n","import {useEffect} from 'react'\n\nimport {getPublishedId, isVersionId} from '../../../util'\nimport {type ActiveDocument, useIsLastPane, useTasks, useTasksEnabled} from '../../context'\n\nfunction SetActiveDocumentInner(document: ActiveDocument) {\n const {documentId, documentType} = document\n const isLast = useIsLastPane()\n const {setActiveDocument} = useTasks()\n\n useEffect(() => {\n if (documentId && isLast && documentType) {\n setActiveDocument?.({\n // Use the version id if it's a version document.\n documentId: isVersionId(documentId) ? documentId : getPublishedId(documentId),\n documentType,\n })\n }\n\n return () => {\n if (isLast) {\n setActiveDocument?.(null)\n }\n }\n }, [documentId, documentType, isLast, setActiveDocument])\n\n return null\n}\n\nexport function SetActiveDocument(document: ActiveDocument) {\n const {enabled} = useTasksEnabled()\n if (!enabled) return null\n return <SetActiveDocumentInner {...document} />\n}\n","import {type ObjectInputProps} from '../../form'\nimport {SetActiveDocument} from './structure/SetActiveDocument'\n\nexport function TasksDocumentInputLayout(props: ObjectInputProps) {\n const documentId = props.value?._id\n const documentType = props.value?._type\n\n return (\n <>\n <SetActiveDocument documentId={documentId} documentType={documentType} />\n {props.renderDefault(props)}\n </>\n )\n}\n"],"names":["useIsLastPane","useContext","IsLastPaneContext","SetActiveDocumentInner","document","$","_c","documentId","documentType","isLast","setActiveDocument","useTasks","t0","t1","isVersionId","getPublishedId","useEffect","SetActiveDocument","enabled","useTasksEnabled","TasksDocumentInputLayout","props","value","_id","_type","renderDefault","t2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAAA,gBAAA;AAAA,SACEC,WAAWC,iBAAiB;AAAC;ACHtC,SAAAC,uBAAAC,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACE;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAmCJ,UACnCK,SAAeT,iBACf;AAAA,IAAAU;AAAAA,EAAAA,IAA4BC,SAAAA;AAAU,MAAAC,IAAAC;AAAA,SAAAR,EAAA,CAAA,MAAAE,cAAAF,EAAA,CAAA,MAAAG,gBAAAH,EAAA,CAAA,MAAAI,UAAAJ,SAAAK,qBAE5BE,KAAAA,OACJL,cAAAE,UAAAD,gBACFE,oBAAoB;AAAA,IAAAH,YAENO,YAAYP,UAAoD,IAAhEA,aAAuCQ,eAAeR,UAAU;AAAA,IAACC;AAAAA,EAAAA,CAE9E,GAGI,MAAA;AACDC,cACFC,oBAAoB,IAAI;AAAA,EACzB,IAEFG,KAAA,CAACN,YAAYC,cAAcC,QAAQC,iBAAiB,GAACL,OAAAE,YAAAF,OAAAG,cAAAH,OAAAI,QAAAJ,OAAAK,mBAAAL,OAAAO,IAAAP,OAAAQ,OAAAD,KAAAP,EAAA,CAAA,GAAAQ,KAAAR,EAAA,CAAA,IAdxDW,UAAUJ,IAcPC,EAAqD,GAEjD;AAAI;AAGN,SAAAI,kBAAAb,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACL;AAAA,IAAAY;AAAAA,EAAAA,IAAkBC,gBAAAA;AAClB,MAAI,CAACD;AAAO,WAAS;AAAI,MAAAN;AAAA,SAAAP,SAAAD,YAClBQ,KAAA,oBAAC,wBAAA,EAAsB,GAAKR,UAAQ,GAAIC,OAAAD,UAAAC,OAAAO,MAAAA,KAAAP,EAAA,CAAA,GAAxCO;AAAwC;AC7B1C,SAAAQ,yBAAAC,OAAA;AAAA,QAAAhB,IAAAC,EAAA,CAAA,GACLC,aAAmBc,MAAKC,OAAWC,KACnCf,eAAqBa,MAAKC,OAAaE;AAAA,MAAAZ;AAAAP,IAAA,CAAA,MAAAE,cAAAF,SAAAG,gBAInCI,KAAA,oBAAC,mBAAA,EAA8BL,YAA0BC,aAAAA,CAAY,GAAIH,OAAAE,YAAAF,OAAAG,cAAAH,OAAAO,MAAAA,KAAAP,EAAA,CAAA;AAAA,MAAAQ;AAAAR,WAAAgB,SACxER,KAAAQ,MAAKI,cAAeJ,KAAK,GAAChB,OAAAgB,OAAAhB,OAAAQ,MAAAA,KAAAR,EAAA,CAAA;AAAA,MAAAqB;AAAA,SAAArB,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,MAF7Ba,sCACEd,UAAAA;AAAAA,IAAAA;AAAAA,IACCC;AAAAA,EAAAA,EAAAA,CAA0B,GAC1BR,OAAAO,IAAAP,OAAAQ,IAAAR,OAAAqB,MAAAA,KAAArB,EAAA,CAAA,GAHHqB;AAGG;"}
@@ -104,6 +104,7 @@ import "@sanity/client";
104
104
  import "react-is";
105
105
  import "exif-component";
106
106
  import "lodash-es/pickBy.js";
107
+ import "swr";
107
108
  import "use-hot-module-reload";
108
109
  import "lodash-es/memoize.js";
109
110
  import "lodash-es/sortedIndex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TasksFooterOpenTasks.js","sources":["../../src/core/tasks/plugin/TasksFooterOpenTasks.tsx"],"sourcesContent":["import {TaskIcon} from '@sanity/icons'\nimport {Badge, useMediaIndex} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components'\nimport {useTranslation} from '../../i18n'\nimport {useTasks, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst ButtonContainer = styled.div`\n position: relative;\n [data-ui='Badge'] {\n position: absolute;\n top: -2px;\n right: -2px;\n }\n`\n\n/**\n * Button that shows how many pending tasks are assigned to the current document.\n * Clicking it will open the task sidebar, showing the open tasks related to the document.\n * @internal\n */\nexport function TasksFooterOpenTasks() {\n const {data, activeDocument} = useTasks()\n const {handleOpenTasks, setActiveTab} = useTasksNavigation()\n const mediaIndex = useMediaIndex()\n const pendingTasks = useMemo(\n () =>\n activeDocument?.documentId\n ? data.filter((item) => {\n return (\n item.target?.document._ref === activeDocument.documentId &&\n item.status === 'open' &&\n item.createdByUser\n )\n })\n : [],\n [activeDocument, data],\n )\n const handleOnClick = useCallback(() => {\n handleOpenTasks()\n setActiveTab('document')\n }, [handleOpenTasks, setActiveTab])\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n if (pendingTasks.length === 0) return null\n\n if (mediaIndex < 3) {\n return (\n <ButtonContainer>\n <Button\n mode=\"bleed\"\n icon={TaskIcon}\n size={'large'}\n onClick={handleOnClick}\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n />\n <Badge data-testid=\"tasks-badge\" tone=\"primary\" fontSize={0}>\n {pendingTasks.length}\n </Badge>\n </ButtonContainer>\n )\n }\n return (\n <Button\n mode=\"bleed\"\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n text={t('document.footer.open-tasks.text', {count: pendingTasks.length})}\n onClick={handleOnClick}\n />\n )\n}\n"],"names":["ButtonContainer","styled","div","withConfig","displayName","componentId","TasksFooterOpenTasks","$","_c","data","activeDocument","useTasks","handleOpenTasks","setActiveTab","useTasksNavigation","mediaIndex","useMediaIndex","t0","documentId","filter","item","target","document","_ref","status","createdByUser","pendingTasks","t1","handleOnClick","t","useTranslation","tasksLocaleNamespace","length","t2","count","t3","content","t4","TaskIcon","t5","t6"],"mappings":"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"}
1
+ {"version":3,"file":"TasksFooterOpenTasks.js","sources":["../../src/core/tasks/plugin/TasksFooterOpenTasks.tsx"],"sourcesContent":["import {TaskIcon} from '@sanity/icons'\nimport {Badge, useMediaIndex} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components'\nimport {useTranslation} from '../../i18n'\nimport {useTasks, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst ButtonContainer = styled.div`\n position: relative;\n [data-ui='Badge'] {\n position: absolute;\n top: -2px;\n right: -2px;\n }\n`\n\n/**\n * Button that shows how many pending tasks are assigned to the current document.\n * Clicking it will open the task sidebar, showing the open tasks related to the document.\n * @internal\n */\nexport function TasksFooterOpenTasks() {\n const {data, activeDocument} = useTasks()\n const {handleOpenTasks, setActiveTab} = useTasksNavigation()\n const mediaIndex = useMediaIndex()\n const pendingTasks = useMemo(\n () =>\n activeDocument?.documentId\n ? data.filter((item) => {\n return (\n item.target?.document._ref === activeDocument.documentId &&\n item.status === 'open' &&\n item.createdByUser\n )\n })\n : [],\n [activeDocument, data],\n )\n const handleOnClick = useCallback(() => {\n handleOpenTasks()\n setActiveTab('document')\n }, [handleOpenTasks, setActiveTab])\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n if (pendingTasks.length === 0) return null\n\n if (mediaIndex < 3) {\n return (\n <ButtonContainer>\n <Button\n mode=\"bleed\"\n icon={TaskIcon}\n size={'large'}\n onClick={handleOnClick}\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n />\n <Badge data-testid=\"tasks-badge\" tone=\"primary\" fontSize={0}>\n {pendingTasks.length}\n </Badge>\n </ButtonContainer>\n )\n }\n return (\n <Button\n mode=\"bleed\"\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n text={t('document.footer.open-tasks.text', {count: pendingTasks.length})}\n onClick={handleOnClick}\n />\n )\n}\n"],"names":["ButtonContainer","styled","div","withConfig","displayName","componentId","TasksFooterOpenTasks","$","_c","data","activeDocument","useTasks","handleOpenTasks","setActiveTab","useTasksNavigation","mediaIndex","useMediaIndex","t0","documentId","filter","item","target","document","_ref","status","createdByUser","pendingTasks","t1","handleOnClick","t","useTranslation","tasksLocaleNamespace","length","t2","count","t3","content","t4","TaskIcon","t5","t6"],"mappings":"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"}
@@ -103,6 +103,7 @@ import "@sanity/client";
103
103
  import "react-is";
104
104
  import "exif-component";
105
105
  import "lodash-es/pickBy.js";
106
+ import "swr";
106
107
  import "use-hot-module-reload";
107
108
  import "react-focus-lock";
108
109
  import "lodash-es/memoize.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TasksStudioActiveToolLayout.js","sources":["../../src/core/tasks/plugin/TasksStudioActiveToolLayout.tsx"],"sourcesContent":["import {Box, Flex, Layer, useMediaIndex} from '@sanity/ui'\nimport {AnimatePresence} from 'motion/react'\nimport {css, styled} from 'styled-components'\n\nimport {type ActiveToolLayoutProps} from '../../config'\nimport {TasksStudioSidebar} from '../components'\nimport {useTasksEnabled, useTasksNavigation} from '../context'\n\nconst FULLSCREEN_MEDIA_INDEX = 1\nconst POSITION_ABSOLUTE_MEDIA_INDEX = 3\n\nconst RootFlex = styled(Flex)(({theme}) => {\n const media = theme.sanity.media\n\n return css`\n min-height: 100%;\n\n @media (max-width: ${media[POSITION_ABSOLUTE_MEDIA_INDEX]}px) {\n position: relative;\n }\n `\n})\nconst SidebarMotionLayer = styled(Layer)(({theme}) => {\n const media = theme.sanity.media\n\n return css`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 360px;\n border-left: 1px solid var(--card-border-color);\n box-sizing: border-box;\n overflow: hidden;\n\n box-shadow:\n 0px 6px 8px -4px var(--card-shadow-umbra-color),\n 0px 12px 17px -1px var(--card-shadow-penumbra-color);\n\n @media (max-width: ${media[POSITION_ABSOLUTE_MEDIA_INDEX]}px) {\n bottom: 0;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n @media (max-width: ${media[FULLSCREEN_MEDIA_INDEX]}px) {\n border-left: 0;\n min-width: 100%;\n left: 0;\n }\n `\n})\n\nfunction TasksStudioActiveToolLayoutInner(props: ActiveToolLayoutProps) {\n const mediaIndex = useMediaIndex()\n const {\n state: {isOpen},\n } = useTasksNavigation()\n\n // Lock the scroll when the sidebar is open in fullscreen mode\n const scrollLock = mediaIndex <= FULLSCREEN_MEDIA_INDEX && isOpen\n return (\n <RootFlex sizing=\"border\" height=\"fill\">\n <Box flex={1} height=\"fill\" overflow={scrollLock ? 'hidden' : 'auto'}>\n {props.renderDefault(props)}\n </Box>\n\n <AnimatePresence initial={false}>\n {isOpen && (\n <SidebarMotionLayer zOffset={100} height=\"fill\">\n <TasksStudioSidebar />\n </SidebarMotionLayer>\n )}\n </AnimatePresence>\n </RootFlex>\n )\n}\n\nexport function TasksStudioActiveToolLayout(props: ActiveToolLayoutProps) {\n const {enabled} = useTasksEnabled()\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <TasksStudioActiveToolLayoutInner {...props} />\n}\n"],"names":["FULLSCREEN_MEDIA_INDEX","POSITION_ABSOLUTE_MEDIA_INDEX","RootFlex","styled","Flex","withConfig","displayName","componentId","theme","media","sanity","css","SidebarMotionLayer","Layer","TasksStudioActiveToolLayoutInner","props","$","_c","mediaIndex","useMediaIndex","state","t0","useTasksNavigation","isOpen","t1","t2","renderDefault","t3","t4","t5","t6","TasksStudioActiveToolLayout","enabled","useTasksEnabled"],"mappings":"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"}
1
+ {"version":3,"file":"TasksStudioActiveToolLayout.js","sources":["../../src/core/tasks/plugin/TasksStudioActiveToolLayout.tsx"],"sourcesContent":["import {Box, Flex, Layer, useMediaIndex} from '@sanity/ui'\nimport {AnimatePresence} from 'motion/react'\nimport {css, styled} from 'styled-components'\n\nimport {type ActiveToolLayoutProps} from '../../config'\nimport {TasksStudioSidebar} from '../components'\nimport {useTasksEnabled, useTasksNavigation} from '../context'\n\nconst FULLSCREEN_MEDIA_INDEX = 1\nconst POSITION_ABSOLUTE_MEDIA_INDEX = 3\n\nconst RootFlex = styled(Flex)(({theme}) => {\n const media = theme.sanity.media\n\n return css`\n min-height: 100%;\n\n @media (max-width: ${media[POSITION_ABSOLUTE_MEDIA_INDEX]}px) {\n position: relative;\n }\n `\n})\nconst SidebarMotionLayer = styled(Layer)(({theme}) => {\n const media = theme.sanity.media\n\n return css`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 360px;\n border-left: 1px solid var(--card-border-color);\n box-sizing: border-box;\n overflow: hidden;\n\n box-shadow:\n 0px 6px 8px -4px var(--card-shadow-umbra-color),\n 0px 12px 17px -1px var(--card-shadow-penumbra-color);\n\n @media (max-width: ${media[POSITION_ABSOLUTE_MEDIA_INDEX]}px) {\n bottom: 0;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n @media (max-width: ${media[FULLSCREEN_MEDIA_INDEX]}px) {\n border-left: 0;\n min-width: 100%;\n left: 0;\n }\n `\n})\n\nfunction TasksStudioActiveToolLayoutInner(props: ActiveToolLayoutProps) {\n const mediaIndex = useMediaIndex()\n const {\n state: {isOpen},\n } = useTasksNavigation()\n\n // Lock the scroll when the sidebar is open in fullscreen mode\n const scrollLock = mediaIndex <= FULLSCREEN_MEDIA_INDEX && isOpen\n return (\n <RootFlex sizing=\"border\" height=\"fill\">\n <Box flex={1} height=\"fill\" overflow={scrollLock ? 'hidden' : 'auto'}>\n {props.renderDefault(props)}\n </Box>\n\n <AnimatePresence initial={false}>\n {isOpen && (\n <SidebarMotionLayer zOffset={100} height=\"fill\">\n <TasksStudioSidebar />\n </SidebarMotionLayer>\n )}\n </AnimatePresence>\n </RootFlex>\n )\n}\n\nexport function TasksStudioActiveToolLayout(props: ActiveToolLayoutProps) {\n const {enabled} = useTasksEnabled()\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <TasksStudioActiveToolLayoutInner {...props} />\n}\n"],"names":["FULLSCREEN_MEDIA_INDEX","POSITION_ABSOLUTE_MEDIA_INDEX","RootFlex","styled","Flex","withConfig","displayName","componentId","theme","media","sanity","css","SidebarMotionLayer","Layer","TasksStudioActiveToolLayoutInner","props","$","_c","mediaIndex","useMediaIndex","state","t0","useTasksNavigation","isOpen","t1","t2","renderDefault","t3","t4","t5","t6","TasksStudioActiveToolLayout","enabled","useTasksEnabled"],"mappings":"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"}
@@ -104,6 +104,7 @@ import "@sanity/client";
104
104
  import "react-is";
105
105
  import "exif-component";
106
106
  import "lodash-es/pickBy.js";
107
+ import "swr";
107
108
  import "use-hot-module-reload";
108
109
  import "lodash-es/memoize.js";
109
110
  import "lodash-es/sortedIndex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TasksStudioLayout.js","sources":["../../src/core/tasks/context/enabled/TasksEnabledProvider.tsx","../../src/core/tasks/context/navigation/TasksNavigationProvider.tsx","../../src/core/tasks/store/reducer.ts","../../src/core/tasks/store/useTasksStore.ts","../../src/core/tasks/context/tasks/TasksProvider.tsx","../../src/core/tasks/context/upsell/TasksUpsellProvider.tsx","../../src/core/tasks/plugin/TasksStudioLayout.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {TasksEnabledContext} from 'sanity/_singletons'\n\nimport {useFeatureEnabled} from '../../../hooks'\nimport {FEATURES} from '../../../hooks/useFeatureEnabled'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {type TasksEnabledContextValue} from './types'\n\ninterface TaksEnabledProviderProps {\n children: React.ReactNode\n}\n\n/**\n * @internal\n */\nexport function TasksEnabledProvider({children}: TaksEnabledProviderProps) {\n const {enabled, isLoading, error} = useFeatureEnabled(FEATURES.sanityTasks)\n\n const isWorkspaceEnabled = useWorkspace().tasks?.enabled\n\n const value: TasksEnabledContextValue = useMemo(() => {\n if (!isWorkspaceEnabled || isLoading || error) {\n return {\n enabled: false,\n mode: null,\n }\n }\n return {\n enabled: true,\n mode: enabled ? 'default' : 'upsell',\n }\n }, [enabled, isLoading, isWorkspaceEnabled, error])\n\n return <TasksEnabledContext.Provider value={value}>{children}</TasksEnabledContext.Provider>\n}\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ReactNode, useCallback, useEffect, useMemo, useReducer} from 'react'\nimport {TasksNavigationContext} from 'sanity/_singletons'\nimport {useRouter} from 'sanity/router'\n\nimport {TaskLinkCopied, TaskLinkOpened} from '../../__telemetry__/tasks.telemetry'\nimport {\n type Action,\n type SidebarTabsIds,\n type State,\n TASKS_SELECTED_TASK_SEARCH_PARAM,\n TASKS_SIDEBAR_SEARCH_PARAM,\n TASKS_VIEW_MODE_SEARCH_PARAM,\n type ViewModeOptions,\n} from './types'\n\nconst initialState: State = {\n viewMode: 'list',\n selectedTask: null,\n activeTabId: 'assigned',\n duplicateTaskValues: null,\n isOpen: false,\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'TOGGLE_TASKS_VIEW': {\n if (!action.payload) {\n return {\n ...initialState,\n isOpen: action.payload,\n }\n }\n return {\n ...state,\n isOpen: action.payload,\n }\n }\n case 'CREATE_TASK':\n return {\n ...state,\n viewMode: 'create',\n selectedTask: uuid(),\n }\n case 'EDIT_TASK':\n return {\n ...state,\n viewMode: 'edit',\n selectedTask: action.payload.id,\n }\n case 'EDIT_DRAFT':\n return {\n ...state,\n viewMode: 'draft',\n selectedTask: action.payload.id,\n }\n case 'DUPLICATE_TASK':\n return {\n ...state,\n viewMode: 'duplicate',\n selectedTask: uuid(),\n duplicateTaskValues: action.payload.duplicateTaskValues,\n }\n case 'SET_ACTIVE_TAB':\n return {\n ...state,\n viewMode: 'list',\n activeTabId: action.payload,\n }\n case 'NAVIGATE_TO_LIST':\n return {\n ...state,\n viewMode: 'list',\n }\n default:\n return state\n }\n}\n\nexport const TasksNavigationProvider = ({children}: {children: ReactNode}) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n const router = useRouter()\n const toast = useToast()\n const telemetry = useTelemetry()\n\n const setViewMode = useCallback((viewMode: ViewModeOptions) => {\n switch (viewMode.type) {\n case 'list':\n dispatch({type: 'NAVIGATE_TO_LIST'})\n break\n case 'create':\n dispatch({type: 'CREATE_TASK'})\n break\n case 'edit':\n dispatch({type: 'EDIT_TASK', payload: {id: viewMode.id}})\n break\n case 'duplicate':\n dispatch({\n type: 'DUPLICATE_TASK',\n payload: {duplicateTaskValues: viewMode.duplicateTaskValues},\n })\n break\n case 'draft':\n dispatch({type: 'EDIT_DRAFT', payload: {id: viewMode.id}})\n break\n default:\n break\n }\n }, [])\n\n const setActiveTab = useCallback((tabId: SidebarTabsIds) => {\n dispatch({type: 'SET_ACTIVE_TAB', payload: tabId})\n }, [])\n\n const handleCloseTasks = useCallback(() => {\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: false})\n\n // Remove task-related query parameters from the URL\n router.navigate({\n stickyParams: {\n ...router.stickyParams,\n [TASKS_SIDEBAR_SEARCH_PARAM]: null,\n [TASKS_VIEW_MODE_SEARCH_PARAM]: null,\n [TASKS_SELECTED_TASK_SEARCH_PARAM]: null,\n },\n })\n }, [router])\n\n const handleOpenTasks = useCallback(() => {\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: true})\n }, [])\n\n const handleCopyLinkToTask = useCallback(() => {\n const url = new URL(window.location.href)\n url.searchParams.set(TASKS_SIDEBAR_SEARCH_PARAM, 'tasks')\n url.searchParams.set(TASKS_VIEW_MODE_SEARCH_PARAM, state.viewMode)\n if (state.selectedTask) {\n url.searchParams.set(TASKS_SELECTED_TASK_SEARCH_PARAM, state.selectedTask)\n }\n navigator.clipboard\n .writeText(url.toString())\n .then(() => {\n telemetry.log(TaskLinkCopied)\n })\n .catch(() => {\n toast.push({\n closable: true,\n status: 'error',\n title: 'Failed to copy link to clipboard',\n })\n })\n }, [state.selectedTask, state.viewMode, telemetry, toast])\n\n const sidebar = router.stickyParams[TASKS_SIDEBAR_SEARCH_PARAM]\n const viewMode = router.stickyParams[TASKS_VIEW_MODE_SEARCH_PARAM]\n const selectedTask = router.stickyParams[TASKS_SELECTED_TASK_SEARCH_PARAM]\n\n useEffect(() => {\n // listen to the URL to open the tasks view if the sidebar is set to task.\n if (sidebar !== 'tasks') {\n return\n }\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: true})\n if (viewMode === 'edit' && selectedTask) {\n dispatch({type: 'EDIT_TASK', payload: {id: selectedTask}})\n telemetry.log(TaskLinkOpened)\n }\n }, [selectedTask, sidebar, telemetry, viewMode])\n\n const value = useMemo(\n () => ({\n state,\n setViewMode,\n setActiveTab,\n handleCloseTasks,\n handleOpenTasks,\n handleCopyLinkToTask,\n }),\n [handleCloseTasks, handleCopyLinkToTask, handleOpenTasks, setActiveTab, setViewMode, state],\n )\n\n return <TasksNavigationContext.Provider value={value}>{children}</TasksNavigationContext.Provider>\n}\n","import {type TaskDocument, type TaskPostPayload} from '../types'\n\ninterface TaskAddedAction {\n payload: TaskDocument | TaskPostPayload\n type: 'TASK_ADDED'\n}\n\ninterface TaskDeletedAction {\n id: string\n type: 'TASK_DELETED'\n}\n\ninterface TaskUpdatedAction {\n payload: TaskDocument | Partial<TaskPostPayload>\n type: 'TASK_UPDATED'\n}\n\ninterface TasksSetAction {\n tasks: TaskDocument[]\n type: 'TASKS_SET'\n}\n\ninterface TaskReceivedAction {\n payload: TaskDocument\n type: 'TASK_RECEIVED'\n}\n\nexport type TasksReducerAction =\n | TaskAddedAction\n | TaskDeletedAction\n | TaskUpdatedAction\n | TasksSetAction\n | TaskReceivedAction\n\nexport interface TasksReducerState {\n tasks: Record<string, TaskDocument>\n}\n\n/**\n * Transform an array of tasks into an object with the task id as key:\n * ```\n * {\n * 'task-1': { _id: 'task-1', ... },\n * 'task-2': { _id: 'task-2', ... },\n * }\n * ```\n */\nfunction createTasksSet(tasks: TaskDocument[]) {\n const tasksById = tasks.reduce((acc, task) => ({...acc, [task._id]: task}), {})\n return tasksById\n}\n\nexport function tasksReducer(\n state: TasksReducerState,\n action: TasksReducerAction,\n): TasksReducerState {\n switch (action.type) {\n case 'TASKS_SET': {\n // Create an object with the task id as key\n const tasksById = createTasksSet(action.tasks)\n\n return {\n ...state,\n tasks: tasksById,\n }\n }\n\n case 'TASK_ADDED': {\n const nextTaskResult = action.payload as TaskDocument\n const nextTaskValue = nextTaskResult satisfies TaskDocument\n\n const nextTask = {\n [nextTaskResult._id]: {\n ...state.tasks[nextTaskResult._id],\n ...nextTaskValue,\n _state: nextTaskResult._state || undefined,\n // If the task is created optimistically, it won't have a createdAt date as this is set on the server.\n // However, we need to set a createdAt date to be able to sort the tasks correctly.\n // Therefore, we set the createdAt date to the current date here if it's missing while creating the task.\n // Once the task is created and received from the server, the createdAt date will be updated to the correct value.\n _createdAt: nextTaskResult._createdAt || new Date().toISOString(),\n } satisfies TaskDocument,\n }\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n ...nextTask,\n },\n }\n }\n\n case 'TASK_RECEIVED': {\n const nextTaskResult = action.payload\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [nextTaskResult._id]: nextTaskResult,\n },\n }\n }\n\n case 'TASK_DELETED': {\n const {[action.id]: _, ...restTasks} = state.tasks\n\n return {\n ...state,\n tasks: restTasks,\n }\n }\n\n case 'TASK_UPDATED': {\n const updatedTask = action.payload\n const id = updatedTask._id as string\n const task = state.tasks[id]\n\n const nextTask = {\n // Add existing task data\n ...task,\n // Add incoming task data\n ...updatedTask,\n } satisfies TaskDocument\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [id]: nextTask,\n },\n }\n }\n\n default:\n return state\n }\n}\n","import {type ListenEvent, type ListenOptions} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useReducer, useState} from 'react'\nimport {catchError, of} from 'rxjs'\n\nimport {useAddonDataset} from '../../studio'\nimport {getPublishedId} from '../../util'\nimport {type Loadable, type TaskDocument} from '../types'\nimport {tasksReducer, type TasksReducerAction, type TasksReducerState} from './reducer'\n\nexport interface TasksStoreOptions {\n documentId?: string\n}\n\ninterface TasksStoreReturnType extends Loadable<TaskDocument[]> {\n dispatch: React.Dispatch<TasksReducerAction>\n}\n\nconst INITIAL_STATE: TasksReducerState = {\n tasks: {},\n}\n\nconst LISTEN_OPTIONS: ListenOptions = {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: true,\n visibility: 'query',\n includeAllVersions: true,\n tag: 'tasks-store',\n}\n\nconst SORT_FIELD = '_createdAt'\nconst SORT_ORDER = 'desc'\n\nconst QUERY_FILTERS = [`_type == \"tasks.task\"`]\n\nconst QUERY_PROJECTION = `{\n ...,\n}`\n\n// Newest tasks first\nconst QUERY_SORT_ORDER = `order(${SORT_FIELD} ${SORT_ORDER})`\n\nconst QUERY = `*[${QUERY_FILTERS.join(' && ')}] ${QUERY_PROJECTION} | ${QUERY_SORT_ORDER}`\n\nexport function useTasksStore(opts: TasksStoreOptions): TasksStoreReturnType {\n const {client} = useAddonDataset()\n const {documentId} = opts\n\n const [state, dispatch] = useReducer(tasksReducer, INITIAL_STATE)\n const [isLoading, setIsLoading] = useState<boolean>(client !== null)\n const [error, setError] = useState<Error | null>(null)\n\n const params = useMemo(\n () => ({documentId: documentId ? getPublishedId(documentId) : null}),\n [documentId],\n )\n\n const initialFetch = useCallback(async () => {\n if (!client) {\n setIsLoading(false)\n return\n }\n\n try {\n const res = await client.fetch(QUERY, params)\n dispatch({type: 'TASKS_SET', tasks: res})\n setIsLoading(false)\n } catch (err) {\n setError(err)\n }\n }, [client, params])\n\n const handleListenerEvent = useCallback(\n async (event: ListenEvent<Record<string, TaskDocument>>) => {\n // Fetch all tasks on initial connection\n if (event.type === 'welcome') {\n setIsLoading(true)\n await initialFetch()\n setIsLoading(false)\n }\n\n // The reconnect event means that we are trying to reconnect to the realtime listener.\n // In this case we set loading to true to indicate that we're trying to\n // reconnect. Once a connection has been established, the welcome event\n // will be received and we'll fetch all tasks again (above).\n if (event.type === 'reconnect') {\n setIsLoading(true)\n }\n\n // Handle mutations (create, update, delete) from the realtime listener\n // and update the tasks store accordingly\n if (event.type === 'mutation') {\n if (event.transition === 'appear') {\n const nextTask = event.result as TaskDocument | undefined\n\n if (nextTask) {\n dispatch({\n type: 'TASK_RECEIVED',\n payload: nextTask,\n })\n }\n }\n\n if (event.transition === 'disappear') {\n dispatch({type: 'TASK_DELETED', id: event.documentId})\n }\n\n if (event.transition === 'update') {\n const updatedTask = event.result as TaskDocument | undefined\n\n if (updatedTask) {\n dispatch({\n type: 'TASK_UPDATED',\n payload: updatedTask,\n })\n }\n }\n }\n },\n [initialFetch],\n )\n\n const listener$ = useMemo(() => {\n if (!client) return of()\n\n const events$ = client.observable.listen(QUERY, params, LISTEN_OPTIONS).pipe(\n catchError((err) => {\n setError(err)\n return of(err)\n }),\n )\n\n return events$\n }, [client, params])\n\n useEffect(() => {\n const sub = listener$.subscribe(handleListenerEvent)\n\n return () => {\n sub?.unsubscribe()\n }\n }, [handleListenerEvent, listener$])\n\n // Transform tasks object to array\n const tasksAsArray = useMemo(() => Object.values(state.tasks), [state.tasks])\n\n return {\n data: tasksAsArray,\n dispatch,\n error,\n isLoading,\n }\n}\n","import debounce from 'lodash-es/debounce.js'\nimport {useMemo, useState} from 'react'\nimport {TasksContext} from 'sanity/_singletons'\n\nimport {useTasksStore} from '../../store'\nimport {type ActiveDocument, type TasksContextValue} from './types'\n\ninterface TasksProviderProps {\n children: React.ReactNode\n}\n\nconst EMPTY_ARRAY: [] = []\n\n/**\n * @internal\n */\nexport function TasksProvider(props: TasksProviderProps) {\n const {children} = props\n const [activeDocument, setActiveDocument] = useState<ActiveDocument | null>(null)\n const {data = EMPTY_ARRAY, isLoading} = useTasksStore({})\n\n // This change is debounced to wait until the next document loads if we are switching between documents.\n const debouncedSetActiveDocument = useMemo(() => debounce(setActiveDocument, 1000), [])\n\n const value: TasksContextValue = useMemo(\n () => ({\n activeDocument,\n setActiveDocument: debouncedSetActiveDocument,\n isLoading,\n data: data ?? [],\n }),\n [activeDocument, data, isLoading, debouncedSetActiveDocument],\n )\n\n return <TasksContext.Provider value={value}>{children}</TasksContext.Provider>\n}\n","import {TasksUpsellContext} from 'sanity/_singletons'\n\nimport {getDialogPropsFromContext, useUpsellContext} from '../../../hooks/useUpsellContext'\nimport {UpsellDialog} from '../../../studio/upsell/UpsellDialog'\n\n/**\n * @beta\n * @hidden\n */\nexport function TasksUpsellProvider(props: {children: React.ReactNode}) {\n const contextValue = useUpsellContext({\n dataUri: '/journey/tasks',\n feature: 'tasks',\n })\n\n return (\n <TasksUpsellContext.Provider value={contextValue}>\n {props.children}\n <UpsellDialog {...getDialogPropsFromContext(contextValue)} />\n </TasksUpsellContext.Provider>\n )\n}\n","import {type LayoutProps} from '../../config'\nimport {AddonDatasetProvider} from '../../studio'\nimport {\n TasksEnabledProvider,\n TasksNavigationProvider,\n TasksProvider,\n TasksUpsellProvider,\n useTasksEnabled,\n} from '../context'\n\nconst TasksStudioLayoutInner = (props: LayoutProps) => {\n const {enabled, mode} = useTasksEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n const children = (\n <TasksProvider>\n <TasksNavigationProvider>{props.renderDefault(props)}</TasksNavigationProvider>\n </TasksProvider>\n )\n\n if (mode === 'upsell') {\n return (\n <AddonDatasetProvider>\n <TasksUpsellProvider>{children}</TasksUpsellProvider>\n </AddonDatasetProvider>\n )\n }\n\n return <AddonDatasetProvider>{children}</AddonDatasetProvider>\n}\n\nexport function TasksStudioLayout(props: LayoutProps) {\n return (\n <TasksEnabledProvider>\n <TasksStudioLayoutInner {...props} />\n </TasksEnabledProvider>\n )\n}\n"],"names":["TasksEnabledProvider","t0","$","_c","children","enabled","isLoading","error","useFeatureEnabled","FEATURES","sanityTasks","isWorkspaceEnabled","useWorkspace","tasks","t1","bb0","t2","for","mode","t3","value","initialState","viewMode","selectedTask","activeTabId","duplicateTaskValues","isOpen","reducer","state","action","type","payload","uuid","id","TasksNavigationProvider","dispatch","useReducer","router","useRouter","toast","useToast","telemetry","useTelemetry","Symbol","bb2","setViewMode","tabId","setActiveTab","navigate","stickyParams","TASKS_SIDEBAR_SEARCH_PARAM","TASKS_VIEW_MODE_SEARCH_PARAM","TASKS_SELECTED_TASK_SEARCH_PARAM","handleCloseTasks","t4","handleOpenTasks","t5","url","URL","window","location","href","searchParams","set","navigator","clipboard","writeText","toString","then","log","TaskLinkCopied","catch","push","closable","status","title","handleCopyLinkToTask","sidebar","viewMode_0","t6","t7","TaskLinkOpened","useEffect","t8","t9","createTasksSet","reduce","acc","task","_id","tasksReducer","tasksById","nextTaskResult","nextTaskValue","nextTask","_state","undefined","_createdAt","Date","toISOString","_","restTasks","updatedTask","INITIAL_STATE","LISTEN_OPTIONS","events","includeResult","visibility","includeAllVersions","tag","SORT_FIELD","SORT_ORDER","QUERY_FILTERS","QUERY_PROJECTION","QUERY_SORT_ORDER","QUERY","join","useTasksStore","opts","client","useAddonDataset","documentId","setIsLoading","useState","setError","getPublishedId","params","res","fetch","err","initialFetch","event","transition","result","handleListenerEvent","of","observable","err_0","listen","pipe","catchError","listener$","sub","subscribe","unsubscribe","Object","values","tasksAsArray","data","EMPTY_ARRAY","TasksProvider","props","activeDocument","setActiveDocument","debounce","debouncedSetActiveDocument","TasksUpsellProvider","dataUri","feature","contextValue","useUpsellContext","getDialogPropsFromContext","TasksStudioLayoutInner","useTasksEnabled","renderDefault","TasksStudioLayout"],"mappings":"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"}
1
+ {"version":3,"file":"TasksStudioLayout.js","sources":["../../src/core/tasks/context/enabled/TasksEnabledProvider.tsx","../../src/core/tasks/context/navigation/TasksNavigationProvider.tsx","../../src/core/tasks/store/reducer.ts","../../src/core/tasks/store/useTasksStore.ts","../../src/core/tasks/context/tasks/TasksProvider.tsx","../../src/core/tasks/context/upsell/TasksUpsellProvider.tsx","../../src/core/tasks/plugin/TasksStudioLayout.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {TasksEnabledContext} from 'sanity/_singletons'\n\nimport {useFeatureEnabled} from '../../../hooks'\nimport {FEATURES} from '../../../hooks/useFeatureEnabled'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {type TasksEnabledContextValue} from './types'\n\ninterface TaksEnabledProviderProps {\n children: React.ReactNode\n}\n\n/**\n * @internal\n */\nexport function TasksEnabledProvider({children}: TaksEnabledProviderProps) {\n const {enabled, isLoading, error} = useFeatureEnabled(FEATURES.sanityTasks)\n\n const isWorkspaceEnabled = useWorkspace().tasks?.enabled\n\n const value: TasksEnabledContextValue = useMemo(() => {\n if (!isWorkspaceEnabled || isLoading || error) {\n return {\n enabled: false,\n mode: null,\n }\n }\n return {\n enabled: true,\n mode: enabled ? 'default' : 'upsell',\n }\n }, [enabled, isLoading, isWorkspaceEnabled, error])\n\n return <TasksEnabledContext.Provider value={value}>{children}</TasksEnabledContext.Provider>\n}\n","import {useTelemetry} from '@sanity/telemetry/react'\nimport {useToast} from '@sanity/ui'\nimport {uuid} from '@sanity/uuid'\nimport {type ReactNode, useCallback, useEffect, useMemo, useReducer} from 'react'\nimport {TasksNavigationContext} from 'sanity/_singletons'\nimport {useRouter} from 'sanity/router'\n\nimport {TaskLinkCopied, TaskLinkOpened} from '../../__telemetry__/tasks.telemetry'\nimport {\n type Action,\n type SidebarTabsIds,\n type State,\n TASKS_SELECTED_TASK_SEARCH_PARAM,\n TASKS_SIDEBAR_SEARCH_PARAM,\n TASKS_VIEW_MODE_SEARCH_PARAM,\n type ViewModeOptions,\n} from './types'\n\nconst initialState: State = {\n viewMode: 'list',\n selectedTask: null,\n activeTabId: 'assigned',\n duplicateTaskValues: null,\n isOpen: false,\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'TOGGLE_TASKS_VIEW': {\n if (!action.payload) {\n return {\n ...initialState,\n isOpen: action.payload,\n }\n }\n return {\n ...state,\n isOpen: action.payload,\n }\n }\n case 'CREATE_TASK':\n return {\n ...state,\n viewMode: 'create',\n selectedTask: uuid(),\n }\n case 'EDIT_TASK':\n return {\n ...state,\n viewMode: 'edit',\n selectedTask: action.payload.id,\n }\n case 'EDIT_DRAFT':\n return {\n ...state,\n viewMode: 'draft',\n selectedTask: action.payload.id,\n }\n case 'DUPLICATE_TASK':\n return {\n ...state,\n viewMode: 'duplicate',\n selectedTask: uuid(),\n duplicateTaskValues: action.payload.duplicateTaskValues,\n }\n case 'SET_ACTIVE_TAB':\n return {\n ...state,\n viewMode: 'list',\n activeTabId: action.payload,\n }\n case 'NAVIGATE_TO_LIST':\n return {\n ...state,\n viewMode: 'list',\n }\n default:\n return state\n }\n}\n\nexport const TasksNavigationProvider = ({children}: {children: ReactNode}) => {\n const [state, dispatch] = useReducer(reducer, initialState)\n const router = useRouter()\n const toast = useToast()\n const telemetry = useTelemetry()\n\n const setViewMode = useCallback((viewMode: ViewModeOptions) => {\n switch (viewMode.type) {\n case 'list':\n dispatch({type: 'NAVIGATE_TO_LIST'})\n break\n case 'create':\n dispatch({type: 'CREATE_TASK'})\n break\n case 'edit':\n dispatch({type: 'EDIT_TASK', payload: {id: viewMode.id}})\n break\n case 'duplicate':\n dispatch({\n type: 'DUPLICATE_TASK',\n payload: {duplicateTaskValues: viewMode.duplicateTaskValues},\n })\n break\n case 'draft':\n dispatch({type: 'EDIT_DRAFT', payload: {id: viewMode.id}})\n break\n default:\n break\n }\n }, [])\n\n const setActiveTab = useCallback((tabId: SidebarTabsIds) => {\n dispatch({type: 'SET_ACTIVE_TAB', payload: tabId})\n }, [])\n\n const handleCloseTasks = useCallback(() => {\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: false})\n\n // Remove task-related query parameters from the URL\n router.navigate({\n stickyParams: {\n ...router.stickyParams,\n [TASKS_SIDEBAR_SEARCH_PARAM]: null,\n [TASKS_VIEW_MODE_SEARCH_PARAM]: null,\n [TASKS_SELECTED_TASK_SEARCH_PARAM]: null,\n },\n })\n }, [router])\n\n const handleOpenTasks = useCallback(() => {\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: true})\n }, [])\n\n const handleCopyLinkToTask = useCallback(() => {\n const url = new URL(window.location.href)\n url.searchParams.set(TASKS_SIDEBAR_SEARCH_PARAM, 'tasks')\n url.searchParams.set(TASKS_VIEW_MODE_SEARCH_PARAM, state.viewMode)\n if (state.selectedTask) {\n url.searchParams.set(TASKS_SELECTED_TASK_SEARCH_PARAM, state.selectedTask)\n }\n navigator.clipboard\n .writeText(url.toString())\n .then(() => {\n telemetry.log(TaskLinkCopied)\n })\n .catch(() => {\n toast.push({\n closable: true,\n status: 'error',\n title: 'Failed to copy link to clipboard',\n })\n })\n }, [state.selectedTask, state.viewMode, telemetry, toast])\n\n const sidebar = router.stickyParams[TASKS_SIDEBAR_SEARCH_PARAM]\n const viewMode = router.stickyParams[TASKS_VIEW_MODE_SEARCH_PARAM]\n const selectedTask = router.stickyParams[TASKS_SELECTED_TASK_SEARCH_PARAM]\n\n useEffect(() => {\n // listen to the URL to open the tasks view if the sidebar is set to task.\n if (sidebar !== 'tasks') {\n return\n }\n dispatch({type: 'TOGGLE_TASKS_VIEW', payload: true})\n if (viewMode === 'edit' && selectedTask) {\n dispatch({type: 'EDIT_TASK', payload: {id: selectedTask}})\n telemetry.log(TaskLinkOpened)\n }\n }, [selectedTask, sidebar, telemetry, viewMode])\n\n const value = useMemo(\n () => ({\n state,\n setViewMode,\n setActiveTab,\n handleCloseTasks,\n handleOpenTasks,\n handleCopyLinkToTask,\n }),\n [handleCloseTasks, handleCopyLinkToTask, handleOpenTasks, setActiveTab, setViewMode, state],\n )\n\n return <TasksNavigationContext.Provider value={value}>{children}</TasksNavigationContext.Provider>\n}\n","import {type TaskDocument, type TaskPostPayload} from '../types'\n\ninterface TaskAddedAction {\n payload: TaskDocument | TaskPostPayload\n type: 'TASK_ADDED'\n}\n\ninterface TaskDeletedAction {\n id: string\n type: 'TASK_DELETED'\n}\n\ninterface TaskUpdatedAction {\n payload: TaskDocument | Partial<TaskPostPayload>\n type: 'TASK_UPDATED'\n}\n\ninterface TasksSetAction {\n tasks: TaskDocument[]\n type: 'TASKS_SET'\n}\n\ninterface TaskReceivedAction {\n payload: TaskDocument\n type: 'TASK_RECEIVED'\n}\n\nexport type TasksReducerAction =\n | TaskAddedAction\n | TaskDeletedAction\n | TaskUpdatedAction\n | TasksSetAction\n | TaskReceivedAction\n\nexport interface TasksReducerState {\n tasks: Record<string, TaskDocument>\n}\n\n/**\n * Transform an array of tasks into an object with the task id as key:\n * ```\n * {\n * 'task-1': { _id: 'task-1', ... },\n * 'task-2': { _id: 'task-2', ... },\n * }\n * ```\n */\nfunction createTasksSet(tasks: TaskDocument[]) {\n const tasksById = tasks.reduce((acc, task) => ({...acc, [task._id]: task}), {})\n return tasksById\n}\n\nexport function tasksReducer(\n state: TasksReducerState,\n action: TasksReducerAction,\n): TasksReducerState {\n switch (action.type) {\n case 'TASKS_SET': {\n // Create an object with the task id as key\n const tasksById = createTasksSet(action.tasks)\n\n return {\n ...state,\n tasks: tasksById,\n }\n }\n\n case 'TASK_ADDED': {\n const nextTaskResult = action.payload as TaskDocument\n const nextTaskValue = nextTaskResult satisfies TaskDocument\n\n const nextTask = {\n [nextTaskResult._id]: {\n ...state.tasks[nextTaskResult._id],\n ...nextTaskValue,\n _state: nextTaskResult._state || undefined,\n // If the task is created optimistically, it won't have a createdAt date as this is set on the server.\n // However, we need to set a createdAt date to be able to sort the tasks correctly.\n // Therefore, we set the createdAt date to the current date here if it's missing while creating the task.\n // Once the task is created and received from the server, the createdAt date will be updated to the correct value.\n _createdAt: nextTaskResult._createdAt || new Date().toISOString(),\n } satisfies TaskDocument,\n }\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n ...nextTask,\n },\n }\n }\n\n case 'TASK_RECEIVED': {\n const nextTaskResult = action.payload\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [nextTaskResult._id]: nextTaskResult,\n },\n }\n }\n\n case 'TASK_DELETED': {\n const {[action.id]: _, ...restTasks} = state.tasks\n\n return {\n ...state,\n tasks: restTasks,\n }\n }\n\n case 'TASK_UPDATED': {\n const updatedTask = action.payload\n const id = updatedTask._id as string\n const task = state.tasks[id]\n\n const nextTask = {\n // Add existing task data\n ...task,\n // Add incoming task data\n ...updatedTask,\n } satisfies TaskDocument\n\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [id]: nextTask,\n },\n }\n }\n\n default:\n return state\n }\n}\n","import {type ListenEvent, type ListenOptions} from '@sanity/client'\nimport {useCallback, useEffect, useMemo, useReducer, useState} from 'react'\nimport {catchError, of} from 'rxjs'\n\nimport {useAddonDataset} from '../../studio'\nimport {getPublishedId} from '../../util'\nimport {type Loadable, type TaskDocument} from '../types'\nimport {tasksReducer, type TasksReducerAction, type TasksReducerState} from './reducer'\n\nexport interface TasksStoreOptions {\n documentId?: string\n}\n\ninterface TasksStoreReturnType extends Loadable<TaskDocument[]> {\n dispatch: React.Dispatch<TasksReducerAction>\n}\n\nconst INITIAL_STATE: TasksReducerState = {\n tasks: {},\n}\n\nconst LISTEN_OPTIONS: ListenOptions = {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: true,\n visibility: 'query',\n includeAllVersions: true,\n tag: 'tasks-store',\n}\n\nconst SORT_FIELD = '_createdAt'\nconst SORT_ORDER = 'desc'\n\nconst QUERY_FILTERS = [`_type == \"tasks.task\"`]\n\nconst QUERY_PROJECTION = `{\n ...,\n}`\n\n// Newest tasks first\nconst QUERY_SORT_ORDER = `order(${SORT_FIELD} ${SORT_ORDER})`\n\nconst QUERY = `*[${QUERY_FILTERS.join(' && ')}] ${QUERY_PROJECTION} | ${QUERY_SORT_ORDER}`\n\nexport function useTasksStore(opts: TasksStoreOptions): TasksStoreReturnType {\n const {client} = useAddonDataset()\n const {documentId} = opts\n\n const [state, dispatch] = useReducer(tasksReducer, INITIAL_STATE)\n const [isLoading, setIsLoading] = useState<boolean>(client !== null)\n const [error, setError] = useState<Error | null>(null)\n\n const params = useMemo(\n () => ({documentId: documentId ? getPublishedId(documentId) : null}),\n [documentId],\n )\n\n const initialFetch = useCallback(async () => {\n if (!client) {\n setIsLoading(false)\n return\n }\n\n try {\n const res = await client.fetch(QUERY, params)\n dispatch({type: 'TASKS_SET', tasks: res})\n setIsLoading(false)\n } catch (err) {\n setError(err)\n }\n }, [client, params])\n\n const handleListenerEvent = useCallback(\n async (event: ListenEvent<Record<string, TaskDocument>>) => {\n // Fetch all tasks on initial connection\n if (event.type === 'welcome') {\n setIsLoading(true)\n await initialFetch()\n setIsLoading(false)\n }\n\n // The reconnect event means that we are trying to reconnect to the realtime listener.\n // In this case we set loading to true to indicate that we're trying to\n // reconnect. Once a connection has been established, the welcome event\n // will be received and we'll fetch all tasks again (above).\n if (event.type === 'reconnect') {\n setIsLoading(true)\n }\n\n // Handle mutations (create, update, delete) from the realtime listener\n // and update the tasks store accordingly\n if (event.type === 'mutation') {\n if (event.transition === 'appear') {\n const nextTask = event.result as TaskDocument | undefined\n\n if (nextTask) {\n dispatch({\n type: 'TASK_RECEIVED',\n payload: nextTask,\n })\n }\n }\n\n if (event.transition === 'disappear') {\n dispatch({type: 'TASK_DELETED', id: event.documentId})\n }\n\n if (event.transition === 'update') {\n const updatedTask = event.result as TaskDocument | undefined\n\n if (updatedTask) {\n dispatch({\n type: 'TASK_UPDATED',\n payload: updatedTask,\n })\n }\n }\n }\n },\n [initialFetch],\n )\n\n const listener$ = useMemo(() => {\n if (!client) return of()\n\n const events$ = client.observable.listen(QUERY, params, LISTEN_OPTIONS).pipe(\n catchError((err) => {\n setError(err)\n return of(err)\n }),\n )\n\n return events$\n }, [client, params])\n\n useEffect(() => {\n const sub = listener$.subscribe(handleListenerEvent)\n\n return () => {\n sub?.unsubscribe()\n }\n }, [handleListenerEvent, listener$])\n\n // Transform tasks object to array\n const tasksAsArray = useMemo(() => Object.values(state.tasks), [state.tasks])\n\n return {\n data: tasksAsArray,\n dispatch,\n error,\n isLoading,\n }\n}\n","import debounce from 'lodash-es/debounce.js'\nimport {useMemo, useState} from 'react'\nimport {TasksContext} from 'sanity/_singletons'\n\nimport {useTasksStore} from '../../store'\nimport {type ActiveDocument, type TasksContextValue} from './types'\n\ninterface TasksProviderProps {\n children: React.ReactNode\n}\n\nconst EMPTY_ARRAY: [] = []\n\n/**\n * @internal\n */\nexport function TasksProvider(props: TasksProviderProps) {\n const {children} = props\n const [activeDocument, setActiveDocument] = useState<ActiveDocument | null>(null)\n const {data = EMPTY_ARRAY, isLoading} = useTasksStore({})\n\n // This change is debounced to wait until the next document loads if we are switching between documents.\n const debouncedSetActiveDocument = useMemo(() => debounce(setActiveDocument, 1000), [])\n\n const value: TasksContextValue = useMemo(\n () => ({\n activeDocument,\n setActiveDocument: debouncedSetActiveDocument,\n isLoading,\n data: data ?? [],\n }),\n [activeDocument, data, isLoading, debouncedSetActiveDocument],\n )\n\n return <TasksContext.Provider value={value}>{children}</TasksContext.Provider>\n}\n","import {TasksUpsellContext} from 'sanity/_singletons'\n\nimport {getDialogPropsFromContext, useUpsellContext} from '../../../hooks/useUpsellContext'\nimport {UpsellDialog} from '../../../studio/upsell/UpsellDialog'\n\n/**\n * @beta\n * @hidden\n */\nexport function TasksUpsellProvider(props: {children: React.ReactNode}) {\n const contextValue = useUpsellContext({\n dataUri: '/journey/tasks',\n feature: 'tasks',\n })\n\n return (\n <TasksUpsellContext.Provider value={contextValue}>\n {props.children}\n <UpsellDialog {...getDialogPropsFromContext(contextValue)} />\n </TasksUpsellContext.Provider>\n )\n}\n","import {type LayoutProps} from '../../config'\nimport {AddonDatasetProvider} from '../../studio'\nimport {\n TasksEnabledProvider,\n TasksNavigationProvider,\n TasksProvider,\n TasksUpsellProvider,\n useTasksEnabled,\n} from '../context'\n\nconst TasksStudioLayoutInner = (props: LayoutProps) => {\n const {enabled, mode} = useTasksEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n const children = (\n <TasksProvider>\n <TasksNavigationProvider>{props.renderDefault(props)}</TasksNavigationProvider>\n </TasksProvider>\n )\n\n if (mode === 'upsell') {\n return (\n <AddonDatasetProvider>\n <TasksUpsellProvider>{children}</TasksUpsellProvider>\n </AddonDatasetProvider>\n )\n }\n\n return <AddonDatasetProvider>{children}</AddonDatasetProvider>\n}\n\nexport function TasksStudioLayout(props: LayoutProps) {\n return (\n <TasksEnabledProvider>\n <TasksStudioLayoutInner {...props} />\n </TasksEnabledProvider>\n )\n}\n"],"names":["TasksEnabledProvider","t0","$","_c","children","enabled","isLoading","error","useFeatureEnabled","FEATURES","sanityTasks","isWorkspaceEnabled","useWorkspace","tasks","t1","bb0","t2","for","mode","t3","value","initialState","viewMode","selectedTask","activeTabId","duplicateTaskValues","isOpen","reducer","state","action","type","payload","uuid","id","TasksNavigationProvider","dispatch","useReducer","router","useRouter","toast","useToast","telemetry","useTelemetry","Symbol","bb2","setViewMode","tabId","setActiveTab","navigate","stickyParams","TASKS_SIDEBAR_SEARCH_PARAM","TASKS_VIEW_MODE_SEARCH_PARAM","TASKS_SELECTED_TASK_SEARCH_PARAM","handleCloseTasks","t4","handleOpenTasks","t5","url","URL","window","location","href","searchParams","set","navigator","clipboard","writeText","toString","then","log","TaskLinkCopied","catch","push","closable","status","title","handleCopyLinkToTask","sidebar","viewMode_0","t6","t7","TaskLinkOpened","useEffect","t8","t9","createTasksSet","reduce","acc","task","_id","tasksReducer","tasksById","nextTaskResult","nextTaskValue","nextTask","_state","undefined","_createdAt","Date","toISOString","_","restTasks","updatedTask","INITIAL_STATE","LISTEN_OPTIONS","events","includeResult","visibility","includeAllVersions","tag","SORT_FIELD","SORT_ORDER","QUERY_FILTERS","QUERY_PROJECTION","QUERY_SORT_ORDER","QUERY","join","useTasksStore","opts","client","useAddonDataset","documentId","setIsLoading","useState","setError","getPublishedId","params","res","fetch","err","initialFetch","event","transition","result","handleListenerEvent","of","observable","err_0","listen","pipe","catchError","listener$","sub","subscribe","unsubscribe","Object","values","tasksAsArray","data","EMPTY_ARRAY","TasksProvider","props","activeDocument","setActiveDocument","debounce","debouncedSetActiveDocument","TasksUpsellProvider","dataUri","feature","contextValue","useUpsellContext","getDialogPropsFromContext","TasksStudioLayoutInner","useTasksEnabled","renderDefault","TasksStudioLayout"],"mappings":"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"}
@@ -104,6 +104,7 @@ import "@sanity/client";
104
104
  import "react-is";
105
105
  import "exif-component";
106
106
  import "lodash-es/pickBy.js";
107
+ import "swr";
107
108
  import "use-hot-module-reload";
108
109
  import "lodash-es/memoize.js";
109
110
  import "lodash-es/sortedIndex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TasksStudioNavbar.js","sources":["../../src/core/tasks/plugin/TasksStudioNavbar.tsx"],"sourcesContent":["import {CheckmarkCircleIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../ui-components'\nimport {type NavbarProps} from '../../config'\nimport {useTranslation} from '../../i18n'\nimport {useTasksEnabled, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst EMPTY_ARRAY: [] = []\n\nconst TasksToolbar = ({onClick, isOpen}: {onClick: () => void; isOpen: boolean}) => {\n const {t} = useTranslation(tasksLocaleNamespace)\n\n return (\n <Button\n tooltipProps={{\n content: t('toolbar.tooltip'),\n }}\n icon={CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n selected={isOpen}\n data-testid=\"tasks-toolbar\"\n />\n )\n}\n\nfunction TasksStudioNavbarInner(props: NavbarProps) {\n const {\n handleOpenTasks,\n handleCloseTasks,\n state: {isOpen},\n } = useTasksNavigation()\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n const handleClick = useCallback(() => {\n if (isOpen) {\n handleCloseTasks()\n } else {\n handleOpenTasks()\n }\n }, [isOpen, handleOpenTasks, handleCloseTasks])\n\n const renderTasksNav = useCallback(\n () => <TasksToolbar onClick={handleClick} isOpen={isOpen} />,\n [handleClick, isOpen],\n )\n\n const actions = useMemo((): NavbarProps['__internal_actions'] => {\n return [\n ...(props?.__internal_actions || EMPTY_ARRAY),\n {\n location: 'topbar',\n name: 'tasks-topbar',\n render: renderTasksNav,\n },\n {\n icon: CheckmarkCircleIcon,\n location: 'sidebar',\n name: 'tasks-sidebar',\n onAction: handleClick,\n selected: isOpen,\n title: t('actions.open.text'),\n },\n ]\n }, [handleClick, isOpen, props?.__internal_actions, renderTasksNav, t])\n\n return props.renderDefault({\n ...props,\n __internal_actions: actions,\n })\n}\n\nexport function TasksStudioNavbar(props: NavbarProps) {\n const {enabled} = useTasksEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <TasksStudioNavbarInner {...props} />\n}\n"],"names":["EMPTY_ARRAY","TasksToolbar","t0","$","_c","onClick","isOpen","t","useTranslation","tasksLocaleNamespace","t1","t2","content","t3","CheckmarkCircleIcon","TasksStudioNavbarInner","props","handleOpenTasks","handleCloseTasks","state","useTasksNavigation","handleClick","renderTasksNav","__internal_actions","t4","location","name","render","t5","t6","icon","onAction","selected","title","t7","actions","t8","renderDefault","TasksStudioNavbar","enabled","useTasksEnabled"],"mappings":"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"}
1
+ {"version":3,"file":"TasksStudioNavbar.js","sources":["../../src/core/tasks/plugin/TasksStudioNavbar.tsx"],"sourcesContent":["import {CheckmarkCircleIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../ui-components'\nimport {type NavbarProps} from '../../config'\nimport {useTranslation} from '../../i18n'\nimport {useTasksEnabled, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst EMPTY_ARRAY: [] = []\n\nconst TasksToolbar = ({onClick, isOpen}: {onClick: () => void; isOpen: boolean}) => {\n const {t} = useTranslation(tasksLocaleNamespace)\n\n return (\n <Button\n tooltipProps={{\n content: t('toolbar.tooltip'),\n }}\n icon={CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n selected={isOpen}\n data-testid=\"tasks-toolbar\"\n />\n )\n}\n\nfunction TasksStudioNavbarInner(props: NavbarProps) {\n const {\n handleOpenTasks,\n handleCloseTasks,\n state: {isOpen},\n } = useTasksNavigation()\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n const handleClick = useCallback(() => {\n if (isOpen) {\n handleCloseTasks()\n } else {\n handleOpenTasks()\n }\n }, [isOpen, handleOpenTasks, handleCloseTasks])\n\n const renderTasksNav = useCallback(\n () => <TasksToolbar onClick={handleClick} isOpen={isOpen} />,\n [handleClick, isOpen],\n )\n\n const actions = useMemo((): NavbarProps['__internal_actions'] => {\n return [\n ...(props?.__internal_actions || EMPTY_ARRAY),\n {\n location: 'topbar',\n name: 'tasks-topbar',\n render: renderTasksNav,\n },\n {\n icon: CheckmarkCircleIcon,\n location: 'sidebar',\n name: 'tasks-sidebar',\n onAction: handleClick,\n selected: isOpen,\n title: t('actions.open.text'),\n },\n ]\n }, [handleClick, isOpen, props?.__internal_actions, renderTasksNav, t])\n\n return props.renderDefault({\n ...props,\n __internal_actions: actions,\n })\n}\n\nexport function TasksStudioNavbar(props: NavbarProps) {\n const {enabled} = useTasksEnabled()\n\n if (!enabled) {\n return props.renderDefault(props)\n }\n\n return <TasksStudioNavbarInner {...props} />\n}\n"],"names":["EMPTY_ARRAY","TasksToolbar","t0","$","_c","onClick","isOpen","t","useTranslation","tasksLocaleNamespace","t1","t2","content","t3","CheckmarkCircleIcon","TasksStudioNavbarInner","props","handleOpenTasks","handleCloseTasks","state","useTasksNavigation","handleClick","renderTasksNav","__internal_actions","t4","location","name","render","t5","t6","icon","onAction","selected","title","t7","actions","t8","renderDefault","TasksStudioNavbar","enabled","useTasksEnabled"],"mappings":"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"}
@@ -104,6 +104,7 @@ import "@sanity/client";
104
104
  import "react-is";
105
105
  import "exif-component";
106
106
  import "lodash-es/pickBy.js";
107
+ import "swr";
107
108
  import "use-hot-module-reload";
108
109
  import "lodash-es/memoize.js";
109
110
  import "lodash-es/sortedIndex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"VariantsStudioNavbar.js","sources":["../../src/core/variants/plugin/components/PersonalizationIcons.tsx","../../src/core/variants/plugin/components/CurrentVariantLabel.tsx","../../src/core/variants/plugin/components/VariantsMenu.tsx","../../src/core/variants/plugin/components/VariantsNav.tsx","../../src/core/variants/plugin/components/VariantsStudioNavbar.tsx"],"sourcesContent":["import {forwardRef, type ForwardRefExoticComponent, type RefAttributes, type SVGProps} from 'react'\n\nexport const RhombusIcon: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, 'ref'> & RefAttributes<SVGSVGElement>\n> = forwardRef(function RhombusIcon(props, ref) {\n return (\n <svg\n data-sanity-icon=\"rhombus\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={ref}\n >\n <path\n d=\"M10.5 3.78L17.22 10.5L10.5 17.22L3.78 10.5L10.5 3.78Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n})\n","// oxlint-disable-next-line no-restricted-imports -- Button requires props, only supported by @sanity/ui\nimport {Box, Flex, Button, Text} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n'\nimport {AnimatedTextWidth} from '../../../perspective/navbar/AnimatedTextWidth'\nimport {oversizedButtonStyle} from '../../../perspective/styles'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {getVariantId, getVariantTitle} from '../../tool/util'\nimport {type SystemVariant} from '../../types'\nimport {VARIANTS_INTENT} from '../index'\nimport {RhombusIcon} from './PersonalizationIcons'\n\nconst OversizedButton = styled(IntentLink)`\n ${oversizedButtonStyle}\n`\n\nfunction VariantDetailLink({variant}: {variant: SystemVariant}) {\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <OversizedButton\n {...linkProps}\n ref={ref}\n intent={VARIANTS_INTENT}\n params={{id: encodedVariantId}}\n />\n )\n }),\n [encodedVariantId],\n )\n\n return (\n <Button\n as={VariantLink}\n data-as=\"a\"\n data-testid=\"variants-nav-label-link\"\n icon={RhombusIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n style={{maxWidth: '180px'}}\n text={getVariantTitle(variant)}\n />\n )\n}\n\n/**\n * @internal\n */\nexport function CurrentVariantLabel({\n selectedVariant,\n}: {\n selectedVariant?: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const animationKey = selectedVariant?._id ?? 'default'\n\n return (\n <AnimatedTextWidth text={animationKey}>\n {!selectedVariant ? (\n <Box padding={2} style={{userSelect: 'none', overflow: 'hidden'}}>\n <Flex align=\"center\" gap={2}>\n <Text size={0}>\n <RhombusIcon />\n </Text>\n <Text data-testid=\"variants-nav-label\" size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('navbar.variant.default')}\n </Text>\n </Flex>\n </Box>\n ) : (\n <VariantDetailLink variant={selectedVariant} />\n )}\n </AnimatedTextWidth>\n )\n}\n","import {ChevronDownIcon} from '@sanity/icons'\n// oxlint-disable-next-line no-restricted-imports -- Button requires props, only supported by @sanity/ui\nimport {Box, Button, Menu, MenuDivider, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {oversizedButtonStyle} from '../../../perspective/styles'\nimport {useSetVariant} from '../../../perspective/useSetVariant'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n filterVariantsForSearch,\n getVariantId,\n getVariantTitle,\n} from '../../tool/util'\nimport {type SystemVariant} from '../../types'\nimport {RhombusIcon} from './PersonalizationIcons'\n\nconst StyledMenu = styled(Menu)`\n min-width: 240px;\n max-width: 320px;\n\n > [data-ui='Stack'] {\n gap: 0;\n }\n`\n\nconst SectionHeader = styled(Text)`\n text-transform: uppercase;\n letter-spacing: 0.04em;\n`\n\nconst OversizedButton = styled(Button)`\n ${oversizedButtonStyle}\n`\n\n/**\n * @internal\n */\nexport function VariantsMenu(): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const setVariant = useSetVariant()\n const {data: variants} = useAllVariants()\n const [filterQuery, setFilterQuery] = useState('')\n\n const selectedVariantDocumentId = decodeVariantIdFromRoute(\n router.stickyParams.variant ?? undefined,\n )\n const selectedVariant = useMemo(\n () =>\n selectedVariantDocumentId\n ? variants.find((variant) => variant._id === selectedVariantDocumentId)\n : undefined,\n [selectedVariantDocumentId, variants],\n )\n\n const filteredVariants = useMemo(\n () => filterVariantsForSearch(variants, filterQuery),\n [filterQuery, variants],\n )\n\n const handleSelectDefault = useCallback(() => {\n setVariant(undefined)\n setFilterQuery('')\n }, [setVariant])\n\n const handleSelectVariant = useCallback(\n (variant: SystemVariant) => {\n setVariant(variant)\n setFilterQuery('')\n },\n [setVariant],\n )\n\n const handleFilterChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setFilterQuery(event.currentTarget.value)\n }, [])\n\n const handleMenuClose = useCallback(() => {\n setFilterQuery('')\n }, [])\n\n const isDefaultSelected = !selectedVariant\n\n return (\n <MenuButton\n button={\n <OversizedButton\n data-testid=\"variants-nav-menu-button\"\n iconRight={ChevronDownIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n />\n }\n id=\"variants-nav-menu\"\n onClose={handleMenuClose}\n menu={\n <StyledMenu data-testid=\"variants-nav-menu\" padding={0}>\n <Box padding={2}>\n <TextInput\n fontSize={1}\n onChange={handleFilterChange}\n placeholder={t('navbar.variant.filter-placeholder')}\n radius={2}\n value={filterQuery}\n />\n </Box>\n\n <MenuDivider />\n\n <MenuItem\n data-testid=\"variant-default\"\n icon={RhombusIcon}\n onClick={handleSelectDefault}\n pressed={isDefaultSelected}\n selected={isDefaultSelected}\n text={t('navbar.variant.default')}\n />\n\n {filteredVariants.length > 0 && (\n <>\n <Box padding={3} paddingBottom={2}>\n <SectionHeader muted size={0} weight=\"medium\">\n {t('navbar.variant.other')}\n </SectionHeader>\n </Box>\n\n {filteredVariants.map((variant) => {\n const isSelected = selectedVariant?._id === variant._id\n\n return (\n <MenuItem\n key={variant._id}\n data-testid={`variant-${getVariantId(variant._id)}`}\n icon={RhombusIcon}\n onClick={() => handleSelectVariant(variant)}\n pressed={isSelected}\n selected={isSelected}\n text={getVariantTitle(variant)}\n />\n )\n })}\n </>\n )}\n </StyledMenu>\n }\n popover={{\n __unstable_margins: [0, 0, 32, 0],\n constrainSize: true,\n fallbackPlacements: ['bottom-end'],\n placement: 'bottom-end',\n portal: true,\n // @ts-expect-error PopoverProps doesn't include `style`, but the Popover implementation accepts it via React.HTMLProps<HTMLDivElement>\n style: {overflow: 'hidden'} as React.CSSProperties,\n tone: 'default',\n zOffset: 3000,\n }}\n />\n )\n}\n","import {Card} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {decodeVariantIdFromRoute} from '../../tool/util'\nimport {CurrentVariantLabel} from './CurrentVariantLabel'\nimport {VariantsMenu} from './VariantsMenu'\n\nconst VariantsNavContainer = styled(Card)`\n position: relative;\n display: flex;\n &:not([hidden]) {\n display: flex;\n }\n align-items: center;\n gap: 2px;\n padding: 2px;\n margin: -3px 0;\n\n a:hover,\n button:hover {\n position: relative;\n z-index: 2;\n }\n`\n\n/**\n * @internal\n */\nexport function VariantsNav(): React.JSX.Element {\n const router = useRouter()\n const {byId} = useAllVariants()\n\n const selectedVariantDocumentId = decodeVariantIdFromRoute(\n router.stickyParams.variant ?? undefined,\n )\n\n const selectedVariant = selectedVariantDocumentId\n ? byId.get(selectedVariantDocumentId)\n : undefined\n\n return (\n <VariantsNavContainer flex=\"none\" tone=\"inherit\" radius=\"full\" data-ui=\"VariantsNav\">\n <CurrentVariantLabel selectedVariant={selectedVariant} />\n <VariantsMenu />\n </VariantsNavContainer>\n )\n}\n","import {Card, Flex, Text} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {type NavbarProps} from '../../../config/studio/types'\nimport {useTranslation} from '../../../i18n'\nimport {ReleasesNav} from '../../../perspective/navbar/ReleasesNav'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {getReleaseTone} from '../../../releases/util/getReleaseTone'\nimport {isDraftPerspective, isPublishedPerspective} from '../../../releases/util/util'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantsNav} from './VariantsNav'\n\nconst NavRowContainer = styled(Card)`\n [data-ui='ReleasesNav'],\n [data-ui='VariantsNav'] {\n margin: 0;\n }\n`\n\nexport function VariantsStudioNavbar(props: NavbarProps) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const {selectedPerspective} = usePerspective()\n const router = useRouter()\n\n const hasVariantSelection = Boolean(router.stickyParams.variant)\n const hasNonDefaultPerspective =\n !isDraftPerspective(selectedPerspective) && !isPublishedPerspective(selectedPerspective)\n const canClear = hasVariantSelection || hasNonDefaultPerspective\n\n const handleClearViewAs = useCallback(() => {\n router.navigate({\n stickyParams: {\n excludedPerspectives: null,\n perspective: '',\n variant: null,\n },\n })\n }, [router])\n\n return (\n <Flex direction=\"column\">\n {props.renderDefault(props)}\n <Card tone=\"neutral\" paddingY={2} paddingX={3} borderBottom>\n <Flex justify=\"center\" align=\"center\" gap={2}>\n <Text weight=\"medium\" size={1}>\n {t('navbar.view-as')}\n </Text>\n <NavRowContainer\n tone={getReleaseTone(selectedPerspective)}\n border\n radius={4}\n paddingLeft={1}\n >\n <Flex marginLeft={1}>\n <Card borderRight tone=\"inherit\">\n <Flex align=\"center\" paddingX={2} height={'fill'}>\n <Text size={1}>{t('navbar.version')}</Text>\n </Flex>\n </Card>\n <ReleasesNav withReleasesToolButton border={false} />\n </Flex>\n </NavRowContainer>\n <NavRowContainer\n tone={hasVariantSelection ? 'suggest' : 'default'}\n border\n radius={4}\n paddingLeft={1}\n >\n <Flex marginLeft={1}>\n <Card borderRight tone=\"inherit\">\n <Flex align=\"center\" paddingX={2} height={'fill'}>\n <Text size={1}>{t('navbar.variant')}</Text>\n </Flex>\n </Card>\n <VariantsNav />\n </Flex>\n </NavRowContainer>\n <AnimatePresence initial={false}>\n {canClear && (\n <motion.div\n key=\"view-as-clear-button\"\n animate={{clipPath: 'inset(0 0% 0 0%)', opacity: 1}}\n exit={{clipPath: 'inset(0 50% 0 50%)', opacity: 0}}\n initial={{clipPath: 'inset(0 50% 0 50%)', opacity: 0}}\n style={{display: 'flex'}}\n transition={{type: 'spring', bounce: 0, duration: 0.3}}\n >\n <Button\n data-testid=\"view-as-clear-button\"\n mode=\"bleed\"\n onClick={handleClearViewAs}\n text={t('navbar.clear')}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n </Card>\n </Flex>\n )\n}\n"],"names":["RhombusIcon","forwardRef","props","ref","$","_c","t0","Symbol","for","t1","OversizedButton","styled","IntentLink","withConfig","displayName","componentId","oversizedButtonStyle","VariantDetailLink","variant","_id","getVariantId","encodedVariantId","t2","linkProps","VARIANTS_INTENT","id","VariantLink","t3","maxWidth","t4","getVariantTitle","t5","CurrentVariantLabel","selectedVariant","t","useTranslation","variantsLocaleNamespace","animationKey","userSelect","overflow","StyledMenu","Menu","SectionHeader","Text","Button","VariantsMenu","router","useRouter","setVariant","useSetVariant","data","variants","useAllVariants","filterQuery","setFilterQuery","useState","stickyParams","undefined","decodeVariantIdFromRoute","selectedVariantDocumentId","find","filterVariantsForSearch","filteredVariants","handleSelectDefault","variant_0","handleSelectVariant","t6","event","currentTarget","value","handleFilterChange","t7","handleMenuClose","isDefaultSelected","t8","ChevronDownIcon","t9","t10","t11","t12","t13","t14","length","map","variant_1","isSelected","t15","t16","t17","t18","t19","__unstable_margins","constrainSize","fallbackPlacements","placement","portal","style","tone","zOffset","t20","VariantsNavContainer","Card","VariantsNav","byId","get","NavRowContainer","VariantsStudioNavbar","selectedPerspective","usePerspective","hasVariantSelection","Boolean","isDraftPerspective","isPublishedPerspective","canClear","navigate","excludedPerspectives","perspective","handleClearViewAs","renderDefault","getReleaseTone","clipPath","opacity","display","type","bounce","duration"],"mappings":"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"}
1
+ {"version":3,"file":"VariantsStudioNavbar.js","sources":["../../src/core/variants/plugin/components/PersonalizationIcons.tsx","../../src/core/variants/plugin/components/CurrentVariantLabel.tsx","../../src/core/variants/plugin/components/VariantsMenu.tsx","../../src/core/variants/plugin/components/VariantsNav.tsx","../../src/core/variants/plugin/components/VariantsStudioNavbar.tsx"],"sourcesContent":["import {forwardRef, type ForwardRefExoticComponent, type RefAttributes, type SVGProps} from 'react'\n\nexport const RhombusIcon: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, 'ref'> & RefAttributes<SVGSVGElement>\n> = forwardRef(function RhombusIcon(props, ref) {\n return (\n <svg\n data-sanity-icon=\"rhombus\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 21 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={ref}\n >\n <path\n d=\"M10.5 3.78L17.22 10.5L10.5 17.22L3.78 10.5L10.5 3.78Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n})\n","// oxlint-disable-next-line no-restricted-imports -- Button requires props, only supported by @sanity/ui\nimport {Box, Flex, Button, Text} from '@sanity/ui'\nimport {type ForwardedRef, forwardRef, type HTMLProps, useMemo} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {useTranslation} from '../../../i18n'\nimport {AnimatedTextWidth} from '../../../perspective/navbar/AnimatedTextWidth'\nimport {oversizedButtonStyle} from '../../../perspective/styles'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {getVariantId, getVariantTitle} from '../../tool/util'\nimport {type SystemVariant} from '../../types'\nimport {VARIANTS_INTENT} from '../index'\nimport {RhombusIcon} from './PersonalizationIcons'\n\nconst OversizedButton = styled(IntentLink)`\n ${oversizedButtonStyle}\n`\n\nfunction VariantDetailLink({variant}: {variant: SystemVariant}) {\n const encodedVariantId = getVariantId(variant._id)\n\n const VariantLink = useMemo(\n () =>\n forwardRef(function VariantLinkComponent(\n linkProps: HTMLProps<HTMLAnchorElement>,\n ref: ForwardedRef<HTMLAnchorElement>,\n ) {\n return (\n <OversizedButton\n {...linkProps}\n ref={ref}\n intent={VARIANTS_INTENT}\n params={{id: encodedVariantId}}\n />\n )\n }),\n [encodedVariantId],\n )\n\n return (\n <Button\n as={VariantLink}\n data-as=\"a\"\n data-testid=\"variants-nav-label-link\"\n icon={RhombusIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n style={{maxWidth: '180px'}}\n text={getVariantTitle(variant)}\n />\n )\n}\n\n/**\n * @internal\n */\nexport function CurrentVariantLabel({\n selectedVariant,\n}: {\n selectedVariant?: SystemVariant\n}): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n\n const animationKey = selectedVariant?._id ?? 'default'\n\n return (\n <AnimatedTextWidth text={animationKey}>\n {!selectedVariant ? (\n <Box padding={2} style={{userSelect: 'none', overflow: 'hidden'}}>\n <Flex align=\"center\" gap={2}>\n <Text size={0}>\n <RhombusIcon />\n </Text>\n <Text data-testid=\"variants-nav-label\" size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('navbar.variant.default')}\n </Text>\n </Flex>\n </Box>\n ) : (\n <VariantDetailLink variant={selectedVariant} />\n )}\n </AnimatedTextWidth>\n )\n}\n","import {ChevronDownIcon} from '@sanity/icons'\n// oxlint-disable-next-line no-restricted-imports -- Button requires props, only supported by @sanity/ui\nimport {Box, Button, Menu, MenuDivider, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {MenuButton, MenuItem} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {oversizedButtonStyle} from '../../../perspective/styles'\nimport {useSetVariant} from '../../../perspective/useSetVariant'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {\n decodeVariantIdFromRoute,\n filterVariantsForSearch,\n getVariantId,\n getVariantTitle,\n} from '../../tool/util'\nimport {type SystemVariant} from '../../types'\nimport {RhombusIcon} from './PersonalizationIcons'\n\nconst StyledMenu = styled(Menu)`\n min-width: 240px;\n max-width: 320px;\n\n > [data-ui='Stack'] {\n gap: 0;\n }\n`\n\nconst SectionHeader = styled(Text)`\n text-transform: uppercase;\n letter-spacing: 0.04em;\n`\n\nconst OversizedButton = styled(Button)`\n ${oversizedButtonStyle}\n`\n\n/**\n * @internal\n */\nexport function VariantsMenu(): React.JSX.Element {\n const {t} = useTranslation(variantsLocaleNamespace)\n const router = useRouter()\n const setVariant = useSetVariant()\n const {data: variants} = useAllVariants()\n const [filterQuery, setFilterQuery] = useState('')\n\n const selectedVariantDocumentId = decodeVariantIdFromRoute(\n router.stickyParams.variant ?? undefined,\n )\n const selectedVariant = useMemo(\n () =>\n selectedVariantDocumentId\n ? variants.find((variant) => variant._id === selectedVariantDocumentId)\n : undefined,\n [selectedVariantDocumentId, variants],\n )\n\n const filteredVariants = useMemo(\n () => filterVariantsForSearch(variants, filterQuery),\n [filterQuery, variants],\n )\n\n const handleSelectDefault = useCallback(() => {\n setVariant(undefined)\n setFilterQuery('')\n }, [setVariant])\n\n const handleSelectVariant = useCallback(\n (variant: SystemVariant) => {\n setVariant(variant)\n setFilterQuery('')\n },\n [setVariant],\n )\n\n const handleFilterChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setFilterQuery(event.currentTarget.value)\n }, [])\n\n const handleMenuClose = useCallback(() => {\n setFilterQuery('')\n }, [])\n\n const isDefaultSelected = !selectedVariant\n\n return (\n <MenuButton\n button={\n <OversizedButton\n data-testid=\"variants-nav-menu-button\"\n iconRight={ChevronDownIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n />\n }\n id=\"variants-nav-menu\"\n onClose={handleMenuClose}\n menu={\n <StyledMenu data-testid=\"variants-nav-menu\" padding={0}>\n <Box padding={2}>\n <TextInput\n fontSize={1}\n onChange={handleFilterChange}\n placeholder={t('navbar.variant.filter-placeholder')}\n radius={2}\n value={filterQuery}\n />\n </Box>\n\n <MenuDivider />\n\n <MenuItem\n data-testid=\"variant-default\"\n icon={RhombusIcon}\n onClick={handleSelectDefault}\n pressed={isDefaultSelected}\n selected={isDefaultSelected}\n text={t('navbar.variant.default')}\n />\n\n {filteredVariants.length > 0 && (\n <>\n <Box padding={3} paddingBottom={2}>\n <SectionHeader muted size={0} weight=\"medium\">\n {t('navbar.variant.other')}\n </SectionHeader>\n </Box>\n\n {filteredVariants.map((variant) => {\n const isSelected = selectedVariant?._id === variant._id\n\n return (\n <MenuItem\n key={variant._id}\n data-testid={`variant-${getVariantId(variant._id)}`}\n icon={RhombusIcon}\n onClick={() => handleSelectVariant(variant)}\n pressed={isSelected}\n selected={isSelected}\n text={getVariantTitle(variant)}\n />\n )\n })}\n </>\n )}\n </StyledMenu>\n }\n popover={{\n __unstable_margins: [0, 0, 32, 0],\n constrainSize: true,\n fallbackPlacements: ['bottom-end'],\n placement: 'bottom-end',\n portal: true,\n // @ts-expect-error PopoverProps doesn't include `style`, but the Popover implementation accepts it via React.HTMLProps<HTMLDivElement>\n style: {overflow: 'hidden'} as React.CSSProperties,\n tone: 'default',\n zOffset: 3000,\n }}\n />\n )\n}\n","import {Card} from '@sanity/ui'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {useAllVariants} from '../../store/useAllVariants'\nimport {decodeVariantIdFromRoute} from '../../tool/util'\nimport {CurrentVariantLabel} from './CurrentVariantLabel'\nimport {VariantsMenu} from './VariantsMenu'\n\nconst VariantsNavContainer = styled(Card)`\n position: relative;\n display: flex;\n &:not([hidden]) {\n display: flex;\n }\n align-items: center;\n gap: 2px;\n padding: 2px;\n margin: -3px 0;\n\n a:hover,\n button:hover {\n position: relative;\n z-index: 2;\n }\n`\n\n/**\n * @internal\n */\nexport function VariantsNav(): React.JSX.Element {\n const router = useRouter()\n const {byId} = useAllVariants()\n\n const selectedVariantDocumentId = decodeVariantIdFromRoute(\n router.stickyParams.variant ?? undefined,\n )\n\n const selectedVariant = selectedVariantDocumentId\n ? byId.get(selectedVariantDocumentId)\n : undefined\n\n return (\n <VariantsNavContainer flex=\"none\" tone=\"inherit\" radius=\"full\" data-ui=\"VariantsNav\">\n <CurrentVariantLabel selectedVariant={selectedVariant} />\n <VariantsMenu />\n </VariantsNavContainer>\n )\n}\n","import {Card, Flex, Text} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {type NavbarProps} from '../../../config/studio/types'\nimport {useTranslation} from '../../../i18n'\nimport {ReleasesNav} from '../../../perspective/navbar/ReleasesNav'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {getReleaseTone} from '../../../releases/util/getReleaseTone'\nimport {isDraftPerspective, isPublishedPerspective} from '../../../releases/util/util'\nimport {variantsLocaleNamespace} from '../../i18n'\nimport {VariantsNav} from './VariantsNav'\n\nconst NavRowContainer = styled(Card)`\n [data-ui='ReleasesNav'],\n [data-ui='VariantsNav'] {\n margin: 0;\n }\n`\n\nexport function VariantsStudioNavbar(props: NavbarProps) {\n const {t} = useTranslation(variantsLocaleNamespace)\n const {selectedPerspective} = usePerspective()\n const router = useRouter()\n\n const hasVariantSelection = Boolean(router.stickyParams.variant)\n const hasNonDefaultPerspective =\n !isDraftPerspective(selectedPerspective) && !isPublishedPerspective(selectedPerspective)\n const canClear = hasVariantSelection || hasNonDefaultPerspective\n\n const handleClearViewAs = useCallback(() => {\n router.navigate({\n stickyParams: {\n excludedPerspectives: null,\n perspective: '',\n variant: null,\n },\n })\n }, [router])\n\n return (\n <Flex direction=\"column\">\n {props.renderDefault(props)}\n <Card tone=\"neutral\" paddingY={2} paddingX={3} borderBottom>\n <Flex justify=\"center\" align=\"center\" gap={2}>\n <Text weight=\"medium\" size={1}>\n {t('navbar.view-as')}\n </Text>\n <NavRowContainer\n tone={getReleaseTone(selectedPerspective)}\n border\n radius={4}\n paddingLeft={1}\n >\n <Flex marginLeft={1}>\n <Card borderRight tone=\"inherit\">\n <Flex align=\"center\" paddingX={2} height={'fill'}>\n <Text size={1}>{t('navbar.version')}</Text>\n </Flex>\n </Card>\n <ReleasesNav withReleasesToolButton border={false} />\n </Flex>\n </NavRowContainer>\n <NavRowContainer\n tone={hasVariantSelection ? 'suggest' : 'default'}\n border\n radius={4}\n paddingLeft={1}\n >\n <Flex marginLeft={1}>\n <Card borderRight tone=\"inherit\">\n <Flex align=\"center\" paddingX={2} height={'fill'}>\n <Text size={1}>{t('navbar.variant')}</Text>\n </Flex>\n </Card>\n <VariantsNav />\n </Flex>\n </NavRowContainer>\n <AnimatePresence initial={false}>\n {canClear && (\n <motion.div\n key=\"view-as-clear-button\"\n animate={{clipPath: 'inset(0 0% 0 0%)', opacity: 1}}\n exit={{clipPath: 'inset(0 50% 0 50%)', opacity: 0}}\n initial={{clipPath: 'inset(0 50% 0 50%)', opacity: 0}}\n style={{display: 'flex'}}\n transition={{type: 'spring', bounce: 0, duration: 0.3}}\n >\n <Button\n data-testid=\"view-as-clear-button\"\n mode=\"bleed\"\n onClick={handleClearViewAs}\n text={t('navbar.clear')}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n </Card>\n </Flex>\n )\n}\n"],"names":["RhombusIcon","forwardRef","props","ref","$","_c","t0","Symbol","for","t1","OversizedButton","styled","IntentLink","withConfig","displayName","componentId","oversizedButtonStyle","VariantDetailLink","variant","_id","getVariantId","encodedVariantId","t2","linkProps","VARIANTS_INTENT","id","VariantLink","t3","maxWidth","t4","getVariantTitle","t5","CurrentVariantLabel","selectedVariant","t","useTranslation","variantsLocaleNamespace","animationKey","userSelect","overflow","StyledMenu","Menu","SectionHeader","Text","Button","VariantsMenu","router","useRouter","setVariant","useSetVariant","data","variants","useAllVariants","filterQuery","setFilterQuery","useState","stickyParams","undefined","decodeVariantIdFromRoute","selectedVariantDocumentId","find","filterVariantsForSearch","filteredVariants","handleSelectDefault","variant_0","handleSelectVariant","t6","event","currentTarget","value","handleFilterChange","t7","handleMenuClose","isDefaultSelected","t8","ChevronDownIcon","t9","t10","t11","t12","t13","t14","length","map","variant_1","isSelected","t15","t16","t17","t18","t19","__unstable_margins","constrainSize","fallbackPlacements","placement","portal","style","tone","zOffset","t20","VariantsNavContainer","Card","VariantsNav","byId","get","NavRowContainer","VariantsStudioNavbar","selectedPerspective","usePerspective","hasVariantSelection","Boolean","isDraftPerspective","isPublishedPerspective","canClear","navigate","excludedPerspectives","perspective","handleClearViewAs","renderDefault","getReleaseTone","clipPath","opacity","display","type","bounce","duration"],"mappings":"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"}
@@ -103,6 +103,7 @@ import "@sanity/client";
103
103
  import "react-is";
104
104
  import "exif-component";
105
105
  import "lodash-es/pickBy.js";
106
+ import "swr";
106
107
  import "use-hot-module-reload";
107
108
  import "lodash-es/memoize.js";
108
109
  import "lodash-es/sortedIndex.js";