sanity 6.2.0-next.129 → 6.2.0-next.130
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.
|
@@ -438,7 +438,7 @@ function CommentsInspectorInner(props) {
|
|
|
438
438
|
const setRootRef = t15;
|
|
439
439
|
let t16;
|
|
440
440
|
$[50] !== handleDeselectPath ? (t16 = (event) => {
|
|
441
|
-
event.target instanceof HTMLElement && event.target?.hasAttribute("data-
|
|
441
|
+
event.target instanceof HTMLElement && event.target?.hasAttribute("data-pt-text") || handleDeselectPath();
|
|
442
442
|
}, $[50] = handleDeselectPath, $[51] = t16) : t16 = $[51];
|
|
443
443
|
let t17;
|
|
444
444
|
$[52] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t17 = () => [rootRef.current], $[52] = t17) : t17 = $[52], useClickOutsideEvent(t16, t17);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsInspector.js","sources":["../../src/core/comments/components/upsell/CommentsUpsellPanel.tsx","../../src/core/comments/hooks/useCommentsOnboarding.ts","../../src/core/comments/plugin/inspector/CommentsInspectorError.tsx","../../src/core/comments/plugin/inspector/CommentsInspectorHeader.tsx","../../src/core/comments/plugin/inspector/CommentsInspector.tsx"],"sourcesContent":["import {Box, Container} from '@sanity/ui'\n\nimport {type UpsellData} from '../../../studio/upsell/types'\nimport {UpsellPanel} from '../../../studio/upsell/UpsellPanel'\n\ninterface CommentsUpsellPanelProps {\n data: UpsellData\n onPrimaryClick: () => void\n onSecondaryClick: () => void\n}\n\nexport function CommentsUpsellPanel(props: CommentsUpsellPanelProps) {\n const {data, onPrimaryClick, onSecondaryClick} = props\n return (\n <Container width={1}>\n <Box marginBottom={6}>\n <UpsellPanel\n data={data}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n />\n </Box>\n </Container>\n )\n}\n","import {useContext} from 'react'\nimport {CommentsOnboardingContext} from 'sanity/_singletons'\n\nimport {type CommentsOnboardingContextValue} from '../context/onboarding/types'\n\nexport function useCommentsOnboarding(): CommentsOnboardingContextValue {\n const ctx = useContext(CommentsOnboardingContext)\n\n if (!ctx) {\n throw new Error('useCommentsOnboarding: missing context value')\n }\n\n return ctx\n}\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n'\nimport {commentsLocaleNamespace} from '../../i18n'\n\nexport function CommentsInspectorError({error}: {error: Error}) {\n const {t} = useTranslation(commentsLocaleNamespace)\n\n return (\n <Box padding={2}>\n <Card paddingX={2} paddingY={3} tone=\"critical\" border radius={3}>\n <Stack space={3}>\n <Text size={1} weight=\"medium\">\n {t('inspector-error.title')}\n </Text>\n <Text size={1} muted>\n {error.message}\n </Text>\n </Stack>\n </Card>\n </Box>\n )\n}\n","import {CheckmarkIcon, ChevronDownIcon, CloseIcon} from '@sanity/icons'\nimport {Card, Flex, Menu, Text} from '@sanity/ui'\nimport {forwardRef, useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentStatus, type CommentsUIMode} from '../../types'\n\nconst Root = styled(Card)({\n position: 'relative',\n zIndex: '1',\n lineHeight: '0',\n})\n\ninterface CommentsInspectorHeaderProps {\n onClose: () => void\n onViewChange: (view: CommentStatus) => void\n view: CommentStatus\n mode: CommentsUIMode\n}\n\nexport const CommentsInspectorHeader = forwardRef(function CommentsInspectorHeader(\n props: CommentsInspectorHeaderProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {t} = useTranslation(commentsLocaleNamespace)\n const {onClose, onViewChange, view, mode} = props\n\n const handleSetOpenView = useCallback(() => onViewChange('open'), [onViewChange])\n const handleSetResolvedView = useCallback(() => onViewChange('resolved'), [onViewChange])\n\n return (\n <Root ref={ref}>\n <Flex padding={2}>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2} padding={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {t('feature-name')}\n </Text>\n </Flex>\n\n <Flex flex=\"none\" padding={1} gap={2}>\n <MenuButton\n id=\"comment-status-menu-button\"\n button={\n <Button\n text={\n view === 'open'\n ? t('status-filter.status-open')\n : t('status-filter.status-resolved')\n }\n mode=\"bleed\"\n iconRight={ChevronDownIcon}\n />\n }\n menu={\n <Menu style={{width: '180px'}}>\n <MenuItem\n iconRight={view === 'open' ? CheckmarkIcon : undefined}\n onClick={handleSetOpenView}\n text={t('status-filter.status-open-full')}\n />\n <MenuItem\n iconRight={view === 'resolved' ? CheckmarkIcon : undefined}\n onClick={handleSetResolvedView}\n text={t('status-filter.status-resolved-full')}\n tooltipProps={\n mode === 'upsell'\n ? {content: t('status-filter.status-resolved-full-upsell')}\n : undefined\n }\n disabled={mode === 'upsell'}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end'}}\n />\n\n <Button\n aria-label={t('close-pane-button-text-aria-label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('close-pane-button-text')}}\n />\n </Flex>\n </Flex>\n </Root>\n )\n})\n","import {Flex, Layer, useClickOutsideEvent, useLayer, useToast} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {Fragment, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {type DocumentInspectorProps} from '../../../config'\nimport {useTranslation} from '../../../i18n'\nimport {useCurrentUser} from '../../../store'\nimport {useAddonDataset} from '../../../studio/addonDataset'\nimport {\n CommentDeleteDialog,\n CommentsList,\n CommentsOnboardingPopover,\n CommentsUpsellPanel,\n} from '../../components'\nimport {type CommentsSelectedPath} from '../../context'\nimport {isTextSelectionComment} from '../../helpers'\nimport {\n useComments,\n useCommentsEnabled,\n useCommentsOnboarding,\n useCommentsScroll,\n useCommentsSelectedPath,\n useCommentsTelemetry,\n useCommentsUpsell,\n} from '../../hooks'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentBaseCreatePayload,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {CommentsInspectorError} from './CommentsInspectorError'\nimport {CommentsInspectorHeader} from './CommentsInspectorHeader'\n\ninterface CommentToDelete {\n commentId: string\n isParent: boolean\n}\n\nconst RootLayer = styled(Layer)`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`\n\nexport function CommentsInspector(props: DocumentInspectorProps) {\n const {enabled, mode} = useCommentsEnabled()\n\n if (!enabled) return null\n\n // We wrap the comments inspector in a Layer in order to know when the comments inspector\n // is the top layer (that is, if there is e.g. a popover open). This is used to determine\n // if we should deselect the selected path when clicking outside the comments inspector.\n return (\n <RootLayer>\n <CommentsInspectorInner {...props} mode={mode} />\n </RootLayer>\n )\n}\n\nfunction CommentsInspectorInner(\n props: DocumentInspectorProps & {\n mode: CommentsUIMode\n },\n) {\n const {t} = useTranslation(commentsLocaleNamespace)\n const {onClose, mode} = props\n const [showDeleteDialog, setShowDeleteDialog] = useState<boolean>(false)\n const [commentToDelete, setCommentToDelete] = useState<CommentToDelete | null>(null)\n const [deleteLoading, setDeleteLoading] = useState<boolean>(false)\n const [deleteError, setDeleteError] = useState<Error | null>(null)\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n const currentUser = useCurrentUser()\n const {\n comments,\n getComment,\n isCreatingDataset,\n mentionOptions,\n setStatus,\n status,\n operation,\n selectedCommentId,\n getCommentLink,\n onClearSelectedComment,\n onPathOpen,\n } = useComments()\n const commentIdParamRef = useRef<string | undefined>(selectedCommentId)\n const {error: addonDatasetError} = useAddonDataset()\n const didScrollToCommentFromParam = useRef<boolean>(false)\n\n const pushToast = useToast().push\n const {isTopLayer} = useLayer()\n\n const {scrollToComment, scrollToField, scrollToInlineComment} = useCommentsScroll({\n boundaryElement: rootElement,\n })\n const {selectedPath, setSelectedPath} = useCommentsSelectedPath()\n const {isDismissed, setDismissed} = useCommentsOnboarding()\n const telemetry = useCommentsTelemetry()\n\n const {upsellData, telemetryLogs: upsellTelemetryLogs} = useCommentsUpsell()\n\n const currentComments = useMemo(() => comments.data[status], [comments, status])\n\n const {loading} = comments\n\n const handleChangeView = useCallback(\n (nextView: CommentStatus) => {\n setStatus(nextView)\n setSelectedPath(null)\n\n telemetry.commentListViewChanged(nextView)\n },\n [setSelectedPath, setStatus, telemetry],\n )\n\n const handleCloseInspector = useCallback(() => {\n onClose()\n setSelectedPath(null)\n }, [onClose, setSelectedPath])\n\n const handleCopyLink = useMemo(() => {\n if (!getCommentLink) return undefined\n\n const copyLink = (id: string) => {\n navigator.clipboard.writeText(getCommentLink(id)).catch(() => {\n pushToast({\n closable: true,\n status: 'error',\n title: t('copy-link-error-message'),\n })\n })\n\n telemetry.commentLinkCopied()\n }\n\n return copyLink\n }, [getCommentLink, pushToast, t, telemetry])\n\n const handleCreateRetry = useCallback(\n (id: string) => {\n const comment = getComment(id)\n if (!comment) return\n\n void operation.create({\n type: 'field',\n fieldPath: comment.target.path?.field || '',\n id: comment._id,\n message: comment.message,\n parentCommentId: comment.parentCommentId,\n reactions: comment.reactions || [],\n status: comment.status,\n threadId: comment.threadId,\n })\n },\n [getComment, operation],\n )\n\n const closeDeleteDialog = useCallback(() => {\n if (deleteLoading) return\n setShowDeleteDialog(false)\n setCommentToDelete(null)\n }, [deleteLoading])\n\n const handlePathSelect = useCallback(\n (nextPath: CommentsSelectedPath) => {\n setSelectedPath(nextPath)\n\n if (nextPath?.fieldPath) {\n const path = PathUtils.fromString(nextPath.fieldPath)\n onPathOpen?.(path)\n\n scrollToField(nextPath.fieldPath)\n\n const isInlineComment = comments.data.open\n .filter((c) => c.threadId === nextPath?.threadId)\n .some((x) => isTextSelectionComment(x.parentComment))\n\n if (isInlineComment && nextPath.threadId) {\n scrollToInlineComment(nextPath.threadId)\n }\n }\n },\n [comments.data.open, onPathOpen, scrollToField, scrollToInlineComment, setSelectedPath],\n )\n\n const handleNewThreadCreate = useCallback(\n (nextComment: CommentBaseCreatePayload) => {\n const fieldPath = nextComment?.payload?.fieldPath || ''\n\n void operation.create({\n type: 'field',\n fieldPath,\n message: nextComment.message,\n parentCommentId: nextComment.parentCommentId,\n reactions: nextComment.reactions,\n status: nextComment.status,\n threadId: nextComment.threadId,\n })\n\n setSelectedPath({\n fieldPath,\n origin: 'inspector',\n threadId: nextComment.threadId,\n })\n },\n [operation, setSelectedPath],\n )\n\n const handleReply = useCallback(\n (nextComment: CommentBaseCreatePayload) => {\n void operation.create({\n ...nextComment,\n type: 'field',\n fieldPath: nextComment?.payload?.fieldPath || '',\n })\n },\n [operation],\n )\n\n const handleEdit = useCallback(\n (id: string, nextComment: CommentUpdatePayload) => {\n void operation.update(id, nextComment)\n },\n [operation],\n )\n\n const onDeleteStart = useCallback(\n (id: string) => {\n const parent = currentComments.find((c) => c.parentComment?._id === id)\n const isParent = Boolean(parent && parent?.replies?.length > 0)\n\n setShowDeleteDialog(true)\n setCommentToDelete({\n commentId: id,\n isParent,\n })\n },\n\n [currentComments],\n )\n\n const handleDeleteConfirm = useCallback(\n async (id: string) => {\n try {\n setDeleteLoading(true)\n await operation.remove(id)\n closeDeleteDialog()\n } catch (err) {\n setDeleteError(err)\n }\n setDeleteLoading(false)\n },\n [closeDeleteDialog, operation],\n )\n\n const handleStatusChange = useCallback(\n (id: string, nextStatus: CommentStatus) => {\n void operation.update(id, {\n status: nextStatus,\n })\n\n // If the comment is being opened, we want to change to the \"open\" view\n // and scroll to the comment\n if (nextStatus === 'open') {\n setStatus('open')\n\n const comment = getComment(id)\n\n if (!comment) return\n\n setSelectedPath({\n fieldPath: comment.target.path?.field || null,\n origin: 'inspector',\n threadId: comment.threadId || null,\n })\n\n scrollToComment(id)\n }\n },\n [getComment, operation, scrollToComment, setSelectedPath, setStatus],\n )\n\n const handleReactionSelect = useCallback(\n (id: string, reaction: CommentReactionOption) => {\n void operation.react(id, reaction)\n },\n [operation],\n )\n\n const handleDeselectPath = useCallback(() => {\n // Clear the selected path when:\n // - Clicking outside the inspector when it's the top layer\n // - The target is not a slate editor string. This is needed because we do not want to\n // frequently deselect the selected path when clicking inside the editor.\n if (selectedPath && isTopLayer) {\n setSelectedPath(null)\n }\n }, [isTopLayer, selectedPath, setSelectedPath])\n\n const setRootRef = useCallback((element: HTMLDivElement | null) => {\n rootRef.current = element\n setRootElement(element)\n }, [])\n\n useClickOutsideEvent(\n (event) => {\n // Clear the selected path when clicking outside the comments inspector.\n // We do this only when the comments inspector is the top layer.\n const isPTETarget =\n event.target instanceof HTMLElement && event.target?.hasAttribute('data-slate-string')\n\n if (!isPTETarget) {\n handleDeselectPath()\n }\n },\n () => [rootRef.current],\n )\n\n const [loggedTelemetry, setLoggedTelemetry] = useState(false)\n useEffect(() => {\n if (loggedTelemetry || mode !== 'upsell') return undefined\n // oxlint-disable-next-line react/react-compiler\n setLoggedTelemetry(true)\n if (selectedPath?.origin === 'form') {\n upsellTelemetryLogs.panelViewed('field_action')\n } else if (commentIdParamRef.current) {\n upsellTelemetryLogs.panelViewed('link')\n } else {\n upsellTelemetryLogs.panelViewed('document_action')\n }\n return () => {\n upsellTelemetryLogs.panelDismissed()\n }\n }, [loggedTelemetry, mode, selectedPath?.origin, upsellTelemetryLogs])\n\n // Handle scroll to comment from URL param\n useEffect(() => {\n // Make sure that the comment exists before we try to scroll to it.\n // We can't solely rely on the comment id from the url since the comment might not be loaded yet.\n const commentToScrollTo = getComment(commentIdParamRef.current || '')\n\n if (!loading && commentToScrollTo && !didScrollToCommentFromParam.current) {\n // Make sure we have the correct status set before we scroll to the comment\n setStatus(commentToScrollTo.status || 'open')\n\n handlePathSelect({\n fieldPath: commentToScrollTo.target.path?.field || null,\n origin: 'url',\n threadId: commentToScrollTo.threadId || null,\n })\n\n // Defer the comment scroll to prevent React batching from overwriting the field scroll\n requestAnimationFrame(() => {\n scrollToComment(commentToScrollTo._id)\n })\n\n didScrollToCommentFromParam.current = true\n commentIdParamRef.current = undefined\n\n onClearSelectedComment?.()\n\n telemetry.commentViewedFromLink()\n }\n }, [\n getComment,\n handlePathSelect,\n loading,\n onClearSelectedComment,\n scrollToComment,\n setStatus,\n telemetry,\n ])\n\n const beforeListNode = useMemo(() => {\n if (mode === 'upsell' && upsellData) {\n return (\n <CommentsUpsellPanel\n data={upsellData}\n onPrimaryClick={upsellTelemetryLogs.panelPrimaryClicked}\n onSecondaryClick={upsellTelemetryLogs.panelSecondaryClicked}\n />\n )\n }\n\n return null\n }, [\n mode,\n upsellTelemetryLogs.panelPrimaryClicked,\n upsellTelemetryLogs.panelSecondaryClicked,\n upsellData,\n ])\n\n return (\n <Fragment>\n {commentToDelete && showDeleteDialog && (\n <CommentDeleteDialog\n {...commentToDelete}\n error={deleteError}\n loading={deleteLoading}\n onClose={closeDeleteDialog}\n onConfirm={handleDeleteConfirm}\n />\n )}\n\n <Flex\n direction=\"column\"\n flex={1}\n height=\"fill\"\n onClick={handleDeselectPath}\n overflow=\"hidden\"\n ref={setRootRef}\n >\n <CommentsOnboardingPopover\n onDismiss={setDismissed}\n open={!isDismissed}\n placement=\"left-start\"\n >\n <CommentsInspectorHeader\n onClose={handleCloseInspector}\n onViewChange={handleChangeView}\n view={status}\n mode={mode}\n />\n </CommentsOnboardingPopover>\n {addonDatasetError && <CommentsInspectorError error={addonDatasetError} />}\n {currentUser && (\n <CommentsList\n beforeListNode={beforeListNode}\n comments={currentComments}\n currentUser={currentUser}\n error={comments.error}\n loading={loading}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={handleCopyLink}\n onCreateRetry={handleCreateRetry}\n onDelete={onDeleteStart}\n onEdit={handleEdit}\n onNewThreadCreate={handleNewThreadCreate}\n onPathSelect={handlePathSelect}\n onReactionSelect={handleReactionSelect}\n onReply={handleReply}\n onStatusChange={handleStatusChange}\n readOnly={isCreatingDataset}\n selectedPath={selectedPath}\n status={status}\n />\n )}\n </Flex>\n </Fragment>\n )\n}\n"],"names":["CommentsUpsellPanel","props","$","_c","data","onPrimaryClick","onSecondaryClick","t0","useCommentsOnboarding","ctx","useContext","CommentsOnboardingContext","Error","CommentsInspectorError","error","t","useTranslation","commentsLocaleNamespace","t1","t2","t3","message","t4","Root","styled","Card","withConfig","displayName","componentId","position","zIndex","lineHeight","CommentsInspectorHeader","forwardRef","ref","onClose","onViewChange","view","mode","handleSetOpenView","handleSetResolvedView","t5","ChevronDownIcon","t6","for","width","t7","CheckmarkIcon","undefined","t8","t9","t10","t11","t12","content","t13","t14","t15","t16","placement","t17","t18","t19","t20","t21","CloseIcon","t22","t23","t24","RootLayer","Layer","CommentsInspector","enabled","useCommentsEnabled","CommentsInspectorInner","showDeleteDialog","setShowDeleteDialog","useState","commentToDelete","setCommentToDelete","deleteLoading","setDeleteLoading","deleteError","setDeleteError","rootRef","useRef","rootElement","setRootElement","currentUser","useCurrentUser","comments","getComment","isCreatingDataset","mentionOptions","setStatus","status","operation","selectedCommentId","getCommentLink","onClearSelectedComment","onPathOpen","useComments","commentIdParamRef","addonDatasetError","useAddonDataset","didScrollToCommentFromParam","pushToast","useToast","push","isTopLayer","useLayer","boundaryElement","scrollToComment","scrollToField","scrollToInlineComment","useCommentsScroll","selectedPath","setSelectedPath","useCommentsSelectedPath","isDismissed","setDismissed","telemetry","useCommentsTelemetry","upsellData","telemetryLogs","upsellTelemetryLogs","useCommentsUpsell","currentComments","loading","nextView","commentListViewChanged","handleChangeView","handleCloseInspector","bb0","id","navigator","clipboard","writeText","catch","closable","title","commentLinkCopied","handleCopyLink","id_0","comment","create","type","fieldPath","target","path","field","_id","parentCommentId","reactions","threadId","handleCreateRetry","closeDeleteDialog","open","nextPath","PathUtils","fromString","filter","c","some","_temp","handlePathSelect","nextComment","payload","origin","handleNewThreadCreate","nextComment_0","handleReply","id_1","nextComment_1","update","handleEdit","id_2","parent","find","c_0","parentComment","isParent","Boolean","replies","length","commentId","onDeleteStart","id_3","remove","err","handleDeleteConfirm","id_4","nextStatus","comment_0","handleStatusChange","id_5","reaction","react","handleReactionSelect","handleDeselectPath","Symbol","element","current","setRootRef","event","HTMLElement","hasAttribute","useClickOutsideEvent","loggedTelemetry","setLoggedTelemetry","panelViewed","panelDismissed","useEffect","commentToScrollTo","requestAnimationFrame","commentViewedFromLink","bb1","panelPrimaryClicked","panelSecondaryClicked","beforeListNode","t25","t26","t27","t28","t29","t30","t31","x","isTextSelectionComment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommentsInspector.js","sources":["../../src/core/comments/components/upsell/CommentsUpsellPanel.tsx","../../src/core/comments/hooks/useCommentsOnboarding.ts","../../src/core/comments/plugin/inspector/CommentsInspectorError.tsx","../../src/core/comments/plugin/inspector/CommentsInspectorHeader.tsx","../../src/core/comments/plugin/inspector/CommentsInspector.tsx"],"sourcesContent":["import {Box, Container} from '@sanity/ui'\n\nimport {type UpsellData} from '../../../studio/upsell/types'\nimport {UpsellPanel} from '../../../studio/upsell/UpsellPanel'\n\ninterface CommentsUpsellPanelProps {\n data: UpsellData\n onPrimaryClick: () => void\n onSecondaryClick: () => void\n}\n\nexport function CommentsUpsellPanel(props: CommentsUpsellPanelProps) {\n const {data, onPrimaryClick, onSecondaryClick} = props\n return (\n <Container width={1}>\n <Box marginBottom={6}>\n <UpsellPanel\n data={data}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n />\n </Box>\n </Container>\n )\n}\n","import {useContext} from 'react'\nimport {CommentsOnboardingContext} from 'sanity/_singletons'\n\nimport {type CommentsOnboardingContextValue} from '../context/onboarding/types'\n\nexport function useCommentsOnboarding(): CommentsOnboardingContextValue {\n const ctx = useContext(CommentsOnboardingContext)\n\n if (!ctx) {\n throw new Error('useCommentsOnboarding: missing context value')\n }\n\n return ctx\n}\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n'\nimport {commentsLocaleNamespace} from '../../i18n'\n\nexport function CommentsInspectorError({error}: {error: Error}) {\n const {t} = useTranslation(commentsLocaleNamespace)\n\n return (\n <Box padding={2}>\n <Card paddingX={2} paddingY={3} tone=\"critical\" border radius={3}>\n <Stack space={3}>\n <Text size={1} weight=\"medium\">\n {t('inspector-error.title')}\n </Text>\n <Text size={1} muted>\n {error.message}\n </Text>\n </Stack>\n </Card>\n </Box>\n )\n}\n","import {CheckmarkIcon, ChevronDownIcon, CloseIcon} from '@sanity/icons'\nimport {Card, Flex, Menu, Text} from '@sanity/ui'\nimport {forwardRef, useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem} from '../../../../ui-components'\nimport {useTranslation} from '../../../i18n'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentStatus, type CommentsUIMode} from '../../types'\n\nconst Root = styled(Card)({\n position: 'relative',\n zIndex: '1',\n lineHeight: '0',\n})\n\ninterface CommentsInspectorHeaderProps {\n onClose: () => void\n onViewChange: (view: CommentStatus) => void\n view: CommentStatus\n mode: CommentsUIMode\n}\n\nexport const CommentsInspectorHeader = forwardRef(function CommentsInspectorHeader(\n props: CommentsInspectorHeaderProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {t} = useTranslation(commentsLocaleNamespace)\n const {onClose, onViewChange, view, mode} = props\n\n const handleSetOpenView = useCallback(() => onViewChange('open'), [onViewChange])\n const handleSetResolvedView = useCallback(() => onViewChange('resolved'), [onViewChange])\n\n return (\n <Root ref={ref}>\n <Flex padding={2}>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2} padding={3}>\n <Text as=\"h1\" size={1} weight=\"medium\">\n {t('feature-name')}\n </Text>\n </Flex>\n\n <Flex flex=\"none\" padding={1} gap={2}>\n <MenuButton\n id=\"comment-status-menu-button\"\n button={\n <Button\n text={\n view === 'open'\n ? t('status-filter.status-open')\n : t('status-filter.status-resolved')\n }\n mode=\"bleed\"\n iconRight={ChevronDownIcon}\n />\n }\n menu={\n <Menu style={{width: '180px'}}>\n <MenuItem\n iconRight={view === 'open' ? CheckmarkIcon : undefined}\n onClick={handleSetOpenView}\n text={t('status-filter.status-open-full')}\n />\n <MenuItem\n iconRight={view === 'resolved' ? CheckmarkIcon : undefined}\n onClick={handleSetResolvedView}\n text={t('status-filter.status-resolved-full')}\n tooltipProps={\n mode === 'upsell'\n ? {content: t('status-filter.status-resolved-full-upsell')}\n : undefined\n }\n disabled={mode === 'upsell'}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end'}}\n />\n\n <Button\n aria-label={t('close-pane-button-text-aria-label')}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('close-pane-button-text')}}\n />\n </Flex>\n </Flex>\n </Root>\n )\n})\n","import {Flex, Layer, useClickOutsideEvent, useLayer, useToast} from '@sanity/ui'\nimport * as PathUtils from '@sanity/util/paths'\nimport {Fragment, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {type DocumentInspectorProps} from '../../../config'\nimport {useTranslation} from '../../../i18n'\nimport {useCurrentUser} from '../../../store'\nimport {useAddonDataset} from '../../../studio/addonDataset'\nimport {\n CommentDeleteDialog,\n CommentsList,\n CommentsOnboardingPopover,\n CommentsUpsellPanel,\n} from '../../components'\nimport {type CommentsSelectedPath} from '../../context'\nimport {isTextSelectionComment} from '../../helpers'\nimport {\n useComments,\n useCommentsEnabled,\n useCommentsOnboarding,\n useCommentsScroll,\n useCommentsSelectedPath,\n useCommentsTelemetry,\n useCommentsUpsell,\n} from '../../hooks'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentBaseCreatePayload,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {CommentsInspectorError} from './CommentsInspectorError'\nimport {CommentsInspectorHeader} from './CommentsInspectorHeader'\n\ninterface CommentToDelete {\n commentId: string\n isParent: boolean\n}\n\nconst RootLayer = styled(Layer)`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`\n\nexport function CommentsInspector(props: DocumentInspectorProps) {\n const {enabled, mode} = useCommentsEnabled()\n\n if (!enabled) return null\n\n // We wrap the comments inspector in a Layer in order to know when the comments inspector\n // is the top layer (that is, if there is e.g. a popover open). This is used to determine\n // if we should deselect the selected path when clicking outside the comments inspector.\n return (\n <RootLayer>\n <CommentsInspectorInner {...props} mode={mode} />\n </RootLayer>\n )\n}\n\nfunction CommentsInspectorInner(\n props: DocumentInspectorProps & {\n mode: CommentsUIMode\n },\n) {\n const {t} = useTranslation(commentsLocaleNamespace)\n const {onClose, mode} = props\n const [showDeleteDialog, setShowDeleteDialog] = useState<boolean>(false)\n const [commentToDelete, setCommentToDelete] = useState<CommentToDelete | null>(null)\n const [deleteLoading, setDeleteLoading] = useState<boolean>(false)\n const [deleteError, setDeleteError] = useState<Error | null>(null)\n\n const rootRef = useRef<HTMLDivElement | null>(null)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n\n const currentUser = useCurrentUser()\n const {\n comments,\n getComment,\n isCreatingDataset,\n mentionOptions,\n setStatus,\n status,\n operation,\n selectedCommentId,\n getCommentLink,\n onClearSelectedComment,\n onPathOpen,\n } = useComments()\n const commentIdParamRef = useRef<string | undefined>(selectedCommentId)\n const {error: addonDatasetError} = useAddonDataset()\n const didScrollToCommentFromParam = useRef<boolean>(false)\n\n const pushToast = useToast().push\n const {isTopLayer} = useLayer()\n\n const {scrollToComment, scrollToField, scrollToInlineComment} = useCommentsScroll({\n boundaryElement: rootElement,\n })\n const {selectedPath, setSelectedPath} = useCommentsSelectedPath()\n const {isDismissed, setDismissed} = useCommentsOnboarding()\n const telemetry = useCommentsTelemetry()\n\n const {upsellData, telemetryLogs: upsellTelemetryLogs} = useCommentsUpsell()\n\n const currentComments = useMemo(() => comments.data[status], [comments, status])\n\n const {loading} = comments\n\n const handleChangeView = useCallback(\n (nextView: CommentStatus) => {\n setStatus(nextView)\n setSelectedPath(null)\n\n telemetry.commentListViewChanged(nextView)\n },\n [setSelectedPath, setStatus, telemetry],\n )\n\n const handleCloseInspector = useCallback(() => {\n onClose()\n setSelectedPath(null)\n }, [onClose, setSelectedPath])\n\n const handleCopyLink = useMemo(() => {\n if (!getCommentLink) return undefined\n\n const copyLink = (id: string) => {\n navigator.clipboard.writeText(getCommentLink(id)).catch(() => {\n pushToast({\n closable: true,\n status: 'error',\n title: t('copy-link-error-message'),\n })\n })\n\n telemetry.commentLinkCopied()\n }\n\n return copyLink\n }, [getCommentLink, pushToast, t, telemetry])\n\n const handleCreateRetry = useCallback(\n (id: string) => {\n const comment = getComment(id)\n if (!comment) return\n\n void operation.create({\n type: 'field',\n fieldPath: comment.target.path?.field || '',\n id: comment._id,\n message: comment.message,\n parentCommentId: comment.parentCommentId,\n reactions: comment.reactions || [],\n status: comment.status,\n threadId: comment.threadId,\n })\n },\n [getComment, operation],\n )\n\n const closeDeleteDialog = useCallback(() => {\n if (deleteLoading) return\n setShowDeleteDialog(false)\n setCommentToDelete(null)\n }, [deleteLoading])\n\n const handlePathSelect = useCallback(\n (nextPath: CommentsSelectedPath) => {\n setSelectedPath(nextPath)\n\n if (nextPath?.fieldPath) {\n const path = PathUtils.fromString(nextPath.fieldPath)\n onPathOpen?.(path)\n\n scrollToField(nextPath.fieldPath)\n\n const isInlineComment = comments.data.open\n .filter((c) => c.threadId === nextPath?.threadId)\n .some((x) => isTextSelectionComment(x.parentComment))\n\n if (isInlineComment && nextPath.threadId) {\n scrollToInlineComment(nextPath.threadId)\n }\n }\n },\n [comments.data.open, onPathOpen, scrollToField, scrollToInlineComment, setSelectedPath],\n )\n\n const handleNewThreadCreate = useCallback(\n (nextComment: CommentBaseCreatePayload) => {\n const fieldPath = nextComment?.payload?.fieldPath || ''\n\n void operation.create({\n type: 'field',\n fieldPath,\n message: nextComment.message,\n parentCommentId: nextComment.parentCommentId,\n reactions: nextComment.reactions,\n status: nextComment.status,\n threadId: nextComment.threadId,\n })\n\n setSelectedPath({\n fieldPath,\n origin: 'inspector',\n threadId: nextComment.threadId,\n })\n },\n [operation, setSelectedPath],\n )\n\n const handleReply = useCallback(\n (nextComment: CommentBaseCreatePayload) => {\n void operation.create({\n ...nextComment,\n type: 'field',\n fieldPath: nextComment?.payload?.fieldPath || '',\n })\n },\n [operation],\n )\n\n const handleEdit = useCallback(\n (id: string, nextComment: CommentUpdatePayload) => {\n void operation.update(id, nextComment)\n },\n [operation],\n )\n\n const onDeleteStart = useCallback(\n (id: string) => {\n const parent = currentComments.find((c) => c.parentComment?._id === id)\n const isParent = Boolean(parent && parent?.replies?.length > 0)\n\n setShowDeleteDialog(true)\n setCommentToDelete({\n commentId: id,\n isParent,\n })\n },\n\n [currentComments],\n )\n\n const handleDeleteConfirm = useCallback(\n async (id: string) => {\n try {\n setDeleteLoading(true)\n await operation.remove(id)\n closeDeleteDialog()\n } catch (err) {\n setDeleteError(err)\n }\n setDeleteLoading(false)\n },\n [closeDeleteDialog, operation],\n )\n\n const handleStatusChange = useCallback(\n (id: string, nextStatus: CommentStatus) => {\n void operation.update(id, {\n status: nextStatus,\n })\n\n // If the comment is being opened, we want to change to the \"open\" view\n // and scroll to the comment\n if (nextStatus === 'open') {\n setStatus('open')\n\n const comment = getComment(id)\n\n if (!comment) return\n\n setSelectedPath({\n fieldPath: comment.target.path?.field || null,\n origin: 'inspector',\n threadId: comment.threadId || null,\n })\n\n scrollToComment(id)\n }\n },\n [getComment, operation, scrollToComment, setSelectedPath, setStatus],\n )\n\n const handleReactionSelect = useCallback(\n (id: string, reaction: CommentReactionOption) => {\n void operation.react(id, reaction)\n },\n [operation],\n )\n\n const handleDeselectPath = useCallback(() => {\n // Clear the selected path when:\n // - Clicking outside the inspector when it's the top layer\n // - The target is not a slate editor string. This is needed because we do not want to\n // frequently deselect the selected path when clicking inside the editor.\n if (selectedPath && isTopLayer) {\n setSelectedPath(null)\n }\n }, [isTopLayer, selectedPath, setSelectedPath])\n\n const setRootRef = useCallback((element: HTMLDivElement | null) => {\n rootRef.current = element\n setRootElement(element)\n }, [])\n\n useClickOutsideEvent(\n (event) => {\n // Clear the selected path when clicking outside the comments inspector.\n // We do this only when the comments inspector is the top layer.\n const isPTETarget =\n event.target instanceof HTMLElement && event.target?.hasAttribute('data-pt-text')\n\n if (!isPTETarget) {\n handleDeselectPath()\n }\n },\n () => [rootRef.current],\n )\n\n const [loggedTelemetry, setLoggedTelemetry] = useState(false)\n useEffect(() => {\n if (loggedTelemetry || mode !== 'upsell') return undefined\n // oxlint-disable-next-line react/react-compiler\n setLoggedTelemetry(true)\n if (selectedPath?.origin === 'form') {\n upsellTelemetryLogs.panelViewed('field_action')\n } else if (commentIdParamRef.current) {\n upsellTelemetryLogs.panelViewed('link')\n } else {\n upsellTelemetryLogs.panelViewed('document_action')\n }\n return () => {\n upsellTelemetryLogs.panelDismissed()\n }\n }, [loggedTelemetry, mode, selectedPath?.origin, upsellTelemetryLogs])\n\n // Handle scroll to comment from URL param\n useEffect(() => {\n // Make sure that the comment exists before we try to scroll to it.\n // We can't solely rely on the comment id from the url since the comment might not be loaded yet.\n const commentToScrollTo = getComment(commentIdParamRef.current || '')\n\n if (!loading && commentToScrollTo && !didScrollToCommentFromParam.current) {\n // Make sure we have the correct status set before we scroll to the comment\n setStatus(commentToScrollTo.status || 'open')\n\n handlePathSelect({\n fieldPath: commentToScrollTo.target.path?.field || null,\n origin: 'url',\n threadId: commentToScrollTo.threadId || null,\n })\n\n // Defer the comment scroll to prevent React batching from overwriting the field scroll\n requestAnimationFrame(() => {\n scrollToComment(commentToScrollTo._id)\n })\n\n didScrollToCommentFromParam.current = true\n commentIdParamRef.current = undefined\n\n onClearSelectedComment?.()\n\n telemetry.commentViewedFromLink()\n }\n }, [\n getComment,\n handlePathSelect,\n loading,\n onClearSelectedComment,\n scrollToComment,\n setStatus,\n telemetry,\n ])\n\n const beforeListNode = useMemo(() => {\n if (mode === 'upsell' && upsellData) {\n return (\n <CommentsUpsellPanel\n data={upsellData}\n onPrimaryClick={upsellTelemetryLogs.panelPrimaryClicked}\n onSecondaryClick={upsellTelemetryLogs.panelSecondaryClicked}\n />\n )\n }\n\n return null\n }, [\n mode,\n upsellTelemetryLogs.panelPrimaryClicked,\n upsellTelemetryLogs.panelSecondaryClicked,\n upsellData,\n ])\n\n return (\n <Fragment>\n {commentToDelete && showDeleteDialog && (\n <CommentDeleteDialog\n {...commentToDelete}\n error={deleteError}\n loading={deleteLoading}\n onClose={closeDeleteDialog}\n onConfirm={handleDeleteConfirm}\n />\n )}\n\n <Flex\n direction=\"column\"\n flex={1}\n height=\"fill\"\n onClick={handleDeselectPath}\n overflow=\"hidden\"\n ref={setRootRef}\n >\n <CommentsOnboardingPopover\n onDismiss={setDismissed}\n open={!isDismissed}\n placement=\"left-start\"\n >\n <CommentsInspectorHeader\n onClose={handleCloseInspector}\n onViewChange={handleChangeView}\n view={status}\n mode={mode}\n />\n </CommentsOnboardingPopover>\n {addonDatasetError && <CommentsInspectorError error={addonDatasetError} />}\n {currentUser && (\n <CommentsList\n beforeListNode={beforeListNode}\n comments={currentComments}\n currentUser={currentUser}\n error={comments.error}\n loading={loading}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={handleCopyLink}\n onCreateRetry={handleCreateRetry}\n onDelete={onDeleteStart}\n onEdit={handleEdit}\n onNewThreadCreate={handleNewThreadCreate}\n onPathSelect={handlePathSelect}\n onReactionSelect={handleReactionSelect}\n onReply={handleReply}\n onStatusChange={handleStatusChange}\n readOnly={isCreatingDataset}\n selectedPath={selectedPath}\n status={status}\n />\n )}\n </Flex>\n </Fragment>\n )\n}\n"],"names":["CommentsUpsellPanel","props","$","_c","data","onPrimaryClick","onSecondaryClick","t0","useCommentsOnboarding","ctx","useContext","CommentsOnboardingContext","Error","CommentsInspectorError","error","t","useTranslation","commentsLocaleNamespace","t1","t2","t3","message","t4","Root","styled","Card","withConfig","displayName","componentId","position","zIndex","lineHeight","CommentsInspectorHeader","forwardRef","ref","onClose","onViewChange","view","mode","handleSetOpenView","handleSetResolvedView","t5","ChevronDownIcon","t6","for","width","t7","CheckmarkIcon","undefined","t8","t9","t10","t11","t12","content","t13","t14","t15","t16","placement","t17","t18","t19","t20","t21","CloseIcon","t22","t23","t24","RootLayer","Layer","CommentsInspector","enabled","useCommentsEnabled","CommentsInspectorInner","showDeleteDialog","setShowDeleteDialog","useState","commentToDelete","setCommentToDelete","deleteLoading","setDeleteLoading","deleteError","setDeleteError","rootRef","useRef","rootElement","setRootElement","currentUser","useCurrentUser","comments","getComment","isCreatingDataset","mentionOptions","setStatus","status","operation","selectedCommentId","getCommentLink","onClearSelectedComment","onPathOpen","useComments","commentIdParamRef","addonDatasetError","useAddonDataset","didScrollToCommentFromParam","pushToast","useToast","push","isTopLayer","useLayer","boundaryElement","scrollToComment","scrollToField","scrollToInlineComment","useCommentsScroll","selectedPath","setSelectedPath","useCommentsSelectedPath","isDismissed","setDismissed","telemetry","useCommentsTelemetry","upsellData","telemetryLogs","upsellTelemetryLogs","useCommentsUpsell","currentComments","loading","nextView","commentListViewChanged","handleChangeView","handleCloseInspector","bb0","id","navigator","clipboard","writeText","catch","closable","title","commentLinkCopied","handleCopyLink","id_0","comment","create","type","fieldPath","target","path","field","_id","parentCommentId","reactions","threadId","handleCreateRetry","closeDeleteDialog","open","nextPath","PathUtils","fromString","filter","c","some","_temp","handlePathSelect","nextComment","payload","origin","handleNewThreadCreate","nextComment_0","handleReply","id_1","nextComment_1","update","handleEdit","id_2","parent","find","c_0","parentComment","isParent","Boolean","replies","length","commentId","onDeleteStart","id_3","remove","err","handleDeleteConfirm","id_4","nextStatus","comment_0","handleStatusChange","id_5","reaction","react","handleReactionSelect","handleDeselectPath","Symbol","element","current","setRootRef","event","HTMLElement","hasAttribute","useClickOutsideEvent","loggedTelemetry","setLoggedTelemetry","panelViewed","panelDismissed","useEffect","commentToScrollTo","requestAnimationFrame","commentViewedFromLink","bb1","panelPrimaryClicked","panelSecondaryClicked","beforeListNode","t25","t26","t27","t28","t29","t30","t31","x","isTextSelectionComment"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var version = "6.2.0-next.
|
|
1
|
+
var version = "6.2.0-next.130+cedde94dd4";
|
|
2
2
|
let buildVersion;
|
|
3
3
|
try {
|
|
4
4
|
buildVersion = process.env.PKG_BUILD_VERSION;
|
|
@@ -7,7 +7,7 @@ try {
|
|
|
7
7
|
try {
|
|
8
8
|
buildVersion = buildVersion || // This is replaced by `@sanity/pkg-utils` at build time
|
|
9
9
|
// and must always be references by its full static name, e.g. no optional chaining, no `if (process && process.env)` etc.
|
|
10
|
-
"6.2.0-next.
|
|
10
|
+
"6.2.0-next.130+cedde94dd4";
|
|
11
11
|
} catch {
|
|
12
12
|
}
|
|
13
13
|
const SANITY_VERSION = buildVersion || `${version}-dev`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sanity",
|
|
3
|
-
"version": "6.2.0-next.
|
|
3
|
+
"version": "6.2.0-next.130",
|
|
4
4
|
"description": "Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cms",
|
|
@@ -179,11 +179,11 @@
|
|
|
179
179
|
"uuid": "^14.0.0",
|
|
180
180
|
"web-vitals": "^5.3.0",
|
|
181
181
|
"xstate": "^5.32.1",
|
|
182
|
-
"@sanity/diff": "6.2.0-next.
|
|
183
|
-
"@sanity/mutator": "6.2.0-next.
|
|
184
|
-
"@sanity/types": "6.2.0-next.
|
|
185
|
-
"@sanity/
|
|
186
|
-
"@sanity/
|
|
182
|
+
"@sanity/diff": "6.2.0-next.130+cedde94dd4",
|
|
183
|
+
"@sanity/mutator": "6.2.0-next.130+cedde94dd4",
|
|
184
|
+
"@sanity/types": "6.2.0-next.130+cedde94dd4",
|
|
185
|
+
"@sanity/util": "6.2.0-next.130+cedde94dd4",
|
|
186
|
+
"@sanity/schema": "6.2.0-next.130+cedde94dd4"
|
|
187
187
|
},
|
|
188
188
|
"devDependencies": {
|
|
189
189
|
"@rolldown/plugin-babel": "^0.2.3",
|
|
@@ -226,10 +226,10 @@
|
|
|
226
226
|
"vitest": "^4.1.9",
|
|
227
227
|
"vitest-browser-react": "^2.2.0",
|
|
228
228
|
"vitest-package-exports": "^1.2.0",
|
|
229
|
-
"@repo/package.bundle": "6.2.0-next.
|
|
230
|
-
"@repo/
|
|
231
|
-
"@repo/tsconfig": "6.2.0-next.
|
|
232
|
-
"@repo/
|
|
229
|
+
"@repo/package.bundle": "6.2.0-next.130+cedde94dd4",
|
|
230
|
+
"@repo/test-config": "6.2.0-next.130+cedde94dd4",
|
|
231
|
+
"@repo/tsconfig": "6.2.0-next.130+cedde94dd4",
|
|
232
|
+
"@repo/package.config": "6.2.0-next.130+cedde94dd4"
|
|
233
233
|
},
|
|
234
234
|
"peerDependencies": {
|
|
235
235
|
"react": "^19.2.2",
|