sanity 6.9.2-next.21 → 6.9.2-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.
- package/lib/{AddonDatasetProvider-B5npf4J4.js → AddonDatasetProvider-CfAw3oMr.js} +2 -2
- package/lib/{AddonDatasetProvider-B5npf4J4.js.map → AddonDatasetProvider-CfAw3oMr.js.map} +1 -1
- package/lib/{CalendarFilter-DYJEZDCP.js → CalendarFilter-OHGevGRx.js} +3 -3
- package/lib/{CalendarFilter-DYJEZDCP.js.map → CalendarFilter-OHGevGRx.js.map} +1 -1
- package/lib/{CommentsDocumentLayout-CTL7lt6a.js → CommentsDocumentLayout-p8p-oNuH.js} +2 -2
- package/lib/{CommentsDocumentLayout-CTL7lt6a.js.map → CommentsDocumentLayout-p8p-oNuH.js.map} +1 -1
- package/lib/{CommentsField-BE_CI2SY.js → CommentsField-CqXs722Y.js} +3 -3
- package/lib/{CommentsField-BE_CI2SY.js.map → CommentsField-CqXs722Y.js.map} +1 -1
- package/lib/{CommentsInput-D_EM-t5a.js → CommentsInput-B3rd8HlF.js} +5 -5
- package/lib/{CommentsInput-D_EM-t5a.js.map → CommentsInput-B3rd8HlF.js.map} +1 -1
- package/lib/{CommentsInspector-DtBIUadl.js → CommentsInspector-DTHmjTFc.js} +5 -5
- package/lib/{CommentsInspector-DtBIUadl.js.map → CommentsInspector-DTHmjTFc.js.map} +1 -1
- package/lib/{CommentsListItem-BFRqZMJ6.js → CommentsListItem-C2Ac0esL.js} +3 -3
- package/lib/{CommentsListItem-BFRqZMJ6.js.map → CommentsListItem-C2Ac0esL.js.map} +1 -1
- package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js → CommentsSelectedPathProvider-DwDw8s-s.js} +3 -3
- package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js.map → CommentsSelectedPathProvider-DwDw8s-s.js.map} +1 -1
- package/lib/{CommentsStudioLayout-Dx0jIDle.js → CommentsStudioLayout-e2hCA_5z.js} +4 -4
- package/lib/{CommentsStudioLayout-Dx0jIDle.js.map → CommentsStudioLayout-e2hCA_5z.js.map} +1 -1
- package/lib/{ReleasesMetadataProvider-hILX90V4.js → ReleasesMetadataProvider-BWsmHWkh.js} +2 -2
- package/lib/{ReleasesMetadataProvider-hILX90V4.js.map → ReleasesMetadataProvider-BWsmHWkh.js.map} +1 -1
- package/lib/{ReleasesNav-DIv-1iR7.js → ReleasesNav-DPSjEs29.js} +14 -14
- package/lib/{ReleasesNav-DIv-1iR7.js.map → ReleasesNav-DPSjEs29.js.map} +1 -1
- package/lib/{ReleasesStudioLayout-DW7fJSfG.js → ReleasesStudioLayout-CtyE88nI.js} +8 -8
- package/lib/{ReleasesStudioLayout-DW7fJSfG.js.map → ReleasesStudioLayout-CtyE88nI.js.map} +1 -1
- package/lib/{ReleasesTool-BQjO7osC.js → ReleasesTool-BjbRMZlc.js} +15 -15
- package/lib/{ReleasesTool-BQjO7osC.js.map → ReleasesTool-BjbRMZlc.js.map} +1 -1
- package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js → SchedulePublishingStudioLayout-gZWH97ZL.js} +3 -3
- package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js.map → SchedulePublishingStudioLayout-gZWH97ZL.js.map} +1 -1
- package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js → SchedulePublishingUpsellProvider-DsI8OUg-.js} +2 -2
- package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js.map → SchedulePublishingUpsellProvider-DsI8OUg-.js.map} +1 -1
- package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js → ScheduledPublishingEnabledProvider-BDRtV8OB.js} +3 -3
- package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js.map → ScheduledPublishingEnabledProvider-BDRtV8OB.js.map} +1 -1
- package/lib/{SearchProvider-DkGUk8a6.js → SearchProvider-Hk7IMQqR.js} +4 -4
- package/lib/{SearchProvider-DkGUk8a6.js.map → SearchProvider-Hk7IMQqR.js.map} +1 -1
- package/lib/{SingleDocReleaseLayout-fW8U-ktp.js → SingleDocReleaseLayout-evCp37zs.js} +2 -2
- package/lib/{SingleDocReleaseLayout-fW8U-ktp.js.map → SingleDocReleaseLayout-evCp37zs.js.map} +1 -1
- package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js → SingleDocReleaseUpsellProvider-BOe2BACb.js} +4 -4
- package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map → SingleDocReleaseUpsellProvider-BOe2BACb.js.map} +1 -1
- package/lib/{TasksStudioActiveToolLayout-CHazNA61.js → TasksStudioActiveToolLayout-Dbs-1GX6.js} +11 -11
- package/lib/{TasksStudioActiveToolLayout-CHazNA61.js.map → TasksStudioActiveToolLayout-Dbs-1GX6.js.map} +1 -1
- package/lib/{TasksStudioLayout-B7bCL28Q.js → TasksStudioLayout-Pn-RwtPi.js} +5 -5
- package/lib/{TasksStudioLayout-B7bCL28Q.js.map → TasksStudioLayout-Pn-RwtPi.js.map} +1 -1
- package/lib/{Tool-rkq_tjXo.js → Tool-D4-WLZtb.js} +12 -12
- package/lib/{Tool-rkq_tjXo.js.map → Tool-D4-WLZtb.js.map} +1 -1
- package/lib/{UnpublishVersionDialog-DWYCXGkz.js → UnpublishVersionDialog-DmFHVqhI.js} +4 -4
- package/lib/{UnpublishVersionDialog-DWYCXGkz.js.map → UnpublishVersionDialog-DmFHVqhI.js.map} +1 -1
- package/lib/{UpsellDialog-BiDSVmne.js → UpsellDialog-DRhOCOce.js} +2 -2
- package/lib/{UpsellDialog-BiDSVmne.js.map → UpsellDialog-DRhOCOce.js.map} +1 -1
- package/lib/{VariantsStudioNavbar-Bae9LOIN.js → VariantsStudioNavbar-CXpr7UUl.js} +7 -7
- package/lib/{VariantsStudioNavbar-Bae9LOIN.js.map → VariantsStudioNavbar-CXpr7UUl.js.map} +1 -1
- package/lib/{VariantsTool-E4ptTHik.js → VariantsTool-BCtrSWfP.js} +7 -7
- package/lib/{VariantsTool-E4ptTHik.js.map → VariantsTool-BCtrSWfP.js.map} +1 -1
- package/lib/{WorkspaceLoader-sdFQ9rkh.js → WorkspaceLoader-_w6NnbDb.js} +21 -21
- package/lib/{WorkspaceLoader-sdFQ9rkh.js.map → WorkspaceLoader-_w6NnbDb.js.map} +1 -1
- package/lib/_createContext.js +1 -1
- package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js → buildTextSelectionFromFragment-Egmw5rNs.js} +3 -3
- package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js.map → buildTextSelectionFromFragment-Egmw5rNs.js.map} +1 -1
- package/lib/{datastores-XTDIa3jc.js → datastores-DpJ5Y313.js} +2 -2
- package/lib/{datastores-XTDIa3jc.js.map → datastores-DpJ5Y313.js.map} +1 -1
- package/lib/index.js +28 -28
- package/lib/{inputResolver-DLP8YZcM.js → inputResolver-BX-VuloN.js} +4 -4
- package/lib/{inputResolver-DLP8YZcM.js.map → inputResolver-BX-VuloN.js.map} +1 -1
- package/lib/{navigation.telemetry-4pppJENG.js → navigation.telemetry-VbqjOek0.js} +7 -7
- package/lib/{navigation.telemetry-4pppJENG.js.map → navigation.telemetry-VbqjOek0.js.map} +1 -1
- package/lib/{plugin-BmARoHKH.js → plugin-DGOEvpWT.js} +4 -4
- package/lib/{plugin-BmARoHKH.js.map → plugin-DGOEvpWT.js.map} +1 -1
- package/lib/{plugin-BUox1zeI.js → plugin-Da_fKb0U.js} +3 -3
- package/lib/{plugin-BUox1zeI.js.map → plugin-Da_fKb0U.js.map} +1 -1
- package/lib/{plugin-CjN39wwt.js → plugin-DqqaZdOH.js} +5 -5
- package/lib/{plugin-CjN39wwt.js.map → plugin-DqqaZdOH.js.map} +1 -1
- package/lib/{plugin-BRnqEpCl.js → plugin-qHXYpO99.js} +6 -6
- package/lib/{plugin-BRnqEpCl.js.map → plugin-qHXYpO99.js.map} +1 -1
- package/lib/{scheduleItem-Dtb26ejO.js → scheduleItem-DcC1HE9G.js} +8 -8
- package/lib/{scheduleItem-Dtb26ejO.js.map → scheduleItem-DcC1HE9G.js.map} +1 -1
- package/lib/{schedules-6qsR7E_I.js → schedules-CbnXaXM9.js} +3 -3
- package/lib/{schedules-6qsR7E_I.js.map → schedules-CbnXaXM9.js.map} +1 -1
- package/lib/{searchDocumentRelease-CUk7BiST.js → searchDocumentRelease-C5sClmGF.js} +4 -4
- package/lib/{searchDocumentRelease-CUk7BiST.js.map → searchDocumentRelease-C5sClmGF.js.map} +1 -1
- package/lib/{studioClient-D1Z2zK3C.js → studioClient-CwMJwOTd.js} +2 -2
- package/lib/{studioClient-D1Z2zK3C.js.map → studioClient-CwMJwOTd.js.map} +1 -1
- package/lib/{useBundleDocuments-BnCBcbdJ.js → useBundleDocuments-DvVAF6cf.js} +7 -7
- package/lib/{useBundleDocuments-BnCBcbdJ.js.map → useBundleDocuments-DvVAF6cf.js.map} +1 -1
- package/lib/{useComments-Bm-0CwNH.js → useComments-DuEOnDkA.js} +2 -2
- package/lib/{useComments-Bm-0CwNH.js.map → useComments-DuEOnDkA.js.map} +1 -1
- package/lib/{useCommentsTelemetry-D1kYRuPU.js → useCommentsTelemetry-BgNdQdz5.js} +3 -3
- package/lib/{useCommentsTelemetry-D1kYRuPU.js.map → useCommentsTelemetry-BgNdQdz5.js.map} +1 -1
- package/lib/{useDocumentPreviewValues-DJvES8Wi.js → useDocumentPreviewValues-B1zNjl_D.js} +3 -3
- package/lib/{useDocumentPreviewValues-DJvES8Wi.js.map → useDocumentPreviewValues-B1zNjl_D.js.map} +1 -1
- package/lib/{useFeatureEnabled-g8eZoiLM.js → useFeatureEnabled-4qCpV_mX.js} +2 -2
- package/lib/{useFeatureEnabled-g8eZoiLM.js.map → useFeatureEnabled-4qCpV_mX.js.map} +1 -1
- package/lib/{useFieldActions-BV_qfe65.js → useFieldActions-uDe2qh98.js} +2 -2
- package/lib/{useFieldActions-BV_qfe65.js.map → useFieldActions-uDe2qh98.js.map} +1 -1
- package/lib/{useReleasesToolAvailable-Duu10qV0.js → useReleasesToolAvailable-DDuNc6HV.js} +3 -3
- package/lib/{useReleasesToolAvailable-Duu10qV0.js.map → useReleasesToolAvailable-DDuNc6HV.js.map} +1 -1
- package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js → useScheduledDraftMenuActions-DqkHlC0c.js} +5 -5
- package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js.map → useScheduledDraftMenuActions-DqkHlC0c.js.map} +1 -1
- package/lib/{useStudioUrl-BEb30_UK.js → useStudioUrl-B4w58A2i.js} +5 -5
- package/lib/{useStudioUrl-BEb30_UK.js.map → useStudioUrl-B4w58A2i.js.map} +1 -1
- package/lib/{useTimeZone-zs0ybzXu.js → useTimeZone-8Wd1UR4j.js} +2 -2
- package/lib/{useTimeZone-zs0ybzXu.js.map → useTimeZone-8Wd1UR4j.js.map} +1 -1
- package/lib/{validationUtils-LdwtMTh5.js → validationUtils-Cuk0jhWJ.js} +4 -4
- package/lib/{validationUtils-LdwtMTh5.js.map → validationUtils-Cuk0jhWJ.js.map} +1 -1
- package/lib/{version-XEmBTnIh.js → version-BVcB_xWL.js} +2 -2
- package/lib/{version-XEmBTnIh.js.map → version-BVcB_xWL.js.map} +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsListItem-BFRqZMJ6.js","names":["Stack","Text","useCallback","Dialog","TextWithTone","useTranslation","TFunction","commentsLocaleNamespace","getDialogCopy","t","Record","title","body","confirmButtonText","thread","comment","CommentDeleteDialogProps","commentId","error","Error","isParent","loading","onClose","onConfirm","id","CommentDeleteDialog","props","$","_c","t0","dialogCopy","t1","handleDelete","t2","onClick","t3","text","tone","t4","cancelButton","confirmButton","t5","t6","t7","t8","AvatarSize","getTheme_v2","css","styled","SpacerAvatar","div","$size","props","theme","avatar","sizes","size","MouseEvent","ReactNode","Middleware","URL_REGEX","onClick","event","HTMLAnchorElement","stopPropagation","createLinkElement","url","href","startsWith","linkMiddleware","node","parts","split","flatMap","part","match","ReactNode","linkMiddleware","Middleware","middlewares","transformChildren","node","Array","isArray","flatMap","item","transformedItem","middleware","PortableText","PortableTextComponents","Stack","Fragment","PropsWithChildren","useMemo","css","styled","CommentMessage","transformChildren","MentionInlineBlock","NormalBlock","PortableTextWrap","EMPTY_ARRAY","NormalBlockTransformed","props","$","_c","t0","children","t1","components","block","normal","h1","h2","h3","h4","h5","h6","blockquote","code","list","bullet","number","checkmarks","listItem","marks","strong","em","underline","strikeThrough","link","types","mention","value","userId","CommentMessageSerializerProps","blocks","CommentMessageSerializer","RefAttributes","SVGProps","ReactionIcon","props","$","_c","ref","rest","t0","t1","t2","t3","t4","Symbol","for","t5","Text","styled","EmojiText","Button","UIButton","Grid","useCallback","useEffect","useState","useTranslation","COMMENT_REACTION_EMOJIS","commentsLocaleNamespace","CommentReactionOption","EmojiText","GRID_COLUMNS","CommentReactionsMenuProps","options","onSelect","option","CommentReactionsMenu","props","$","_c","t","rootElement","setRootElement","focusedIndex","setFocusedIndex","t0","event","focusableLen","querySelectorAll","length","key","prev","prev_0","handleRootKeyDown","t1","event_0","index","Array","from","indexOf","currentTarget","handleOptionClick","t2","t3","focusableElements","focus","t4","t5","o","emoji","shortName","reactionName","title","map","Card","useClickOutsideEvent","cloneElement","useCallback","useMemo","useRef","useState","Popover","PopoverProps","useTranslation","TFunction","commentsLocaleNamespace","CommentReactionOption","CommentsUIMode","CommentReactionsMenu","POPOVER_FALLBACK_PLACEMENTS","CommentReactionsMenuButtonProps","mode","onMenuClose","onMenuOpen","onSelect","option","options","readOnly","renderMenuButton","props","open","tooltipContent","t","React","JSX","Element","CommentReactionsMenuButton","$","_c","buttonElement","setButtonElement","popoverRef","setOpen","t0","next","handleClick","t1","handleClose","t2","focus","handleCloseAndFocus","t3","event","key","shiftKey","handleKeyDown","t4","current","t5","handleSelect","t6","btn","button","t7","t8","popoverContent","t9","CurrentUser","Box","Flex","Stack","Text","useCallback","styled","Tooltip","useListFormat","useTranslation","Translate","useUser","COMMENT_REACTION_EMOJIS","commentsLocaleNamespace","CommentReactionShortNames","EmojiText","TEXT_SIZE","ContentStack","TextGroup","div","InlineText","attrs","size","TextBox","LEADING_NON_WHITESPACE_RE","UserDisplayNameProps","currentUserId","isFirst","userId","UserDisplayName","props","$","_c","user","t","isCurrentUser","context","undefined","t0","displayName","t1","replace","name","CommentReactionsUsersTooltipProps","children","React","ReactNode","currentUser","reactionName","userIds","CommentReactionsUsersTooltip","restProps","t2","FormattedUserList","Symbol","for","style","type","listFormat","length","elements","parts","formatToParts","i","item","push","value","nextItem","nextLeadsWithNonWhitespace","test","match","nonWhitespace","slice","CommentReactionsUsersTooltipContent","id","UserList","t3","t4","t5","ReactionName","_temp","t6","t7","Card","styled","TransparentCard","CurrentUser","Button","UIButton","Flex","Text","memo","useCallback","useMemo","useState","Tooltip","TooltipDelayGroupProvider","COMMENT_REACTION_EMOJIS","COMMENT_REACTION_OPTIONS","CommentReactionItem","CommentReactionOption","CommentReactionShortNames","CommentsUIMode","ReactionIcon","CommentReactionsMenuButton","CommentReactionsUsersTooltip","EmojiText","TransparentCard","groupReactionsByName","reactions","grouped","reduce","acc","reaction","shortName","push","Record","sorted","Object","entries","sort","nameA","nameB","indexA","findIndex","r","indexB","renderMenuButton","open","tooltipContent","CommentReactionsBarProps","currentUser","onSelect","readOnly","mode","CommentReactionsBar","props","$","_c","t0","name","option","find","o","handleSelect","id","t1","t2","userId","filter","map","_temp","currentUserReactionNames","_temp2","groupedReactions","t3","sortOrder","keys","fromEntries","sortedReactions","sortedGroupedReactions","setSortedGroupedReactions","t4","t5","t6","t7","t8","t9","indexOf","_temp3","name_2","reactionsList","hasReacted","includes","userIds","_temp4","emoji","length","o_0","displayName","r_0","name_0","name_1","r_1","CheckmarkCircleIcon","EditIcon","LinkIcon","TrashIcon","UndoIcon","Card","Flex","Menu","MenuDivider","styled","Button","MenuButton","MenuButtonProps","MenuItem","TooltipDelayGroupProvider","ContextMenuButton","useTranslation","TFunction","COMMENT_REACTION_OPTIONS","commentsLocaleNamespace","CommentReactionOption","CommentStatus","CommentsUIMode","ReactionIcon","CommentReactionsMenuButton","renderMenuButton","open","tooltipContent","t","content","POPOVER_PROPS","placement","FloatingCard","CommentsListItemContextMenuProps","canDelete","canEdit","isParent","mode","onCopyLink","onDeleteStart","onEditStart","onMenuClose","onMenuOpen","onReactionSelect","option","onStatusChange","readOnly","status","CommentsListItemContextMenu","props","$","_c","showMenuButton","Boolean","hasContextMenuOptions","t0","t1","t2","undefined","t3","toPlainText","hues","LinkRemovedIcon","isPortableTextTextBlock","Box","Flex","Stack","Text","Theme","useMemo","css","styled","Tooltip","useTranslation","COMMENTS_HIGHLIGHT_HUE_KEY","commentsLocaleNamespace","CommentDocument","truncate","str","length","slice","BlockQuoteStackProps","$hasReferencedValue","theme","InlineBox","attrs","marginLeft","marginRight","BlockQuoteStack","isDark","sanity","v2","color","_dark","hue","borderColor","hex","CommentsListItemReferencedValueProps","hasReferencedValue","value","CommentsListItemReferencedValue","props","$","_c","t","t0","tooltipText","t1","bb0","Array","isArray","filter","t2","text","map","join","truncated","resolvedValue","Boolean","t3","t4","t5","hues","CurrentUser","AvatarSize","Box","Card","Flex","Stack","Text","TextSkeleton","useClickOutsideEvent","getTheme_v2","useCallback","useEffect","useMemo","useRef","useState","IntentLink","css","styled","useDidUpdate","useDateTimeFormat","RelativeTimeOptions","useRelativeTime","UserListWithPermissionsHookValue","useTranslation","Translate","useUser","hasCommentMessageValue","isTextSelectionComment","useCommentHasChanged","commentsLocaleNamespace","CommentContext","CommentDocument","CommentMessage","CommentReactionOption","CommentStatus","CommentsUIMode","CommentUpdatePayload","CommentsAvatar","SpacerAvatar","FLEX_GAP","CommentInput","CommentInputHandle","CommentMessageSerializer","CommentReactionsBar","CommentsListItemContextMenu","CommentsListItemReferencedValue","stopPropagation","e","React","MouseEvent","HTMLDivElement","ContextMenuBox","SKELETON_INLINE_STYLE","CSSProperties","width","EMPTY_ARRAY","TimeText","theme","isDark","sanity","color","dark","fg","gray","hex","HeaderFlex","$size","props","avatar","sizes","size","IntentText","InnerStack","ErrorFlex","RetryCardButton","RootStack","space","CommentsListItemLayoutProps","avatarSize","canDelete","canEdit","comment","currentUser","hasError","hasReferencedValue","intent","isParent","isRetrying","mentionOptions","mode","onCopyLink","id","onCreateRetry","onDelete","onEdit","message","onInputKeyDown","event","KeyboardEvent","onReactionSelect","reaction","onStatusChange","status","readOnly","withAvatar","RELATIVE_TIME_OPTIONS","useTemporalPhrase","CommentsListItemLayout","$","_c","t0","t1","undefined","_createdAt","authorId","_id","lastEditedAt","user","t","value","setValue","isEditing","setIsEditing","rootElementRef","startMessage","menuOpen","setMenuOpen","commentInputRef","hasChanges","t2","hasValue","t3","reactions","filter","_temp","_temp2","hasReactions","Boolean","length","t4","Date","createdDate","editedDate","createdTimeAgo","t5","Symbol","for","dateStyle","timeStyle","dateTimeFormat","t6","format","formattedCreatedAt","formattedLastEditAt","displayError","t7","t8","current","t9","handleMenuOpen","t10","handleMenuClose","t11","handleCopyLink","t12","handleCreateRetry","t13","handleDelete","t14","cancelEdit","t15","discardDialogController","open","startDiscard","t16","isDefaultPrevented","key","preventDefault","handleInputKeyDown","t17","close","cancelDiscard","t18","confirmDiscard","t19","handleReactionSelect","t20","nextValue","handleEditSubmit","t21","handleOpenStatusChange","t22","_temp3","toggleEdit","t23","handleCloseMenu","t24","event_0","handleRootKeyDown","t25","t26","displayName","name","T0","t27","t28","t29","T1","t30","T2","t31","t33","t34","T3","t35","t36","t37","T4","t38","t39","context","t40","t41","T5","t42","t43","t44","t45","toISOString","t46","t47","t48","title","t49","children","params","t50","t51","t32","t52","contentSnapshot","t53","t54","t55","t56","t57","t58","v","r_0","r","_optimisticState","hues","Card","css","styled","COMMENTS_HIGHLIGHT_HUE_KEY","ThreadCard","attrs","padding","radius","sizing","props","theme","isDark","sanity","color","dark","activeBg","hex","defaultBg","gray","ChevronDownIcon","CurrentUser","AvatarSize","Flex","Stack","StackProps","useLayer","KeyboardEvent","memo","MouseEvent","useCallback","useMemo","useRef","useState","css","styled","Button","UserListWithPermissionsHookValue","useTranslation","CommentsSelectedPath","commentIntentIfDiffers","hasCommentMessageValue","applyCommentIdAttr","commentsLocaleNamespace","CommentBaseCreatePayload","CommentDocument","CommentMessage","CommentReactionOption","CommentStatus","CommentsUIMode","CommentUpdatePayload","SpacerAvatar","CommentInput","CommentInputHandle","CommentsListItemLayout","ThreadCard","EMPTY_ARRAY","MAX_COLLAPSED_REPLIES","DEFAULT_AVATAR_CONFIG","CommentsListItemProps","avatarSize","parentCommentAvatar","replyAvatar","threadCommentsAvatar","StyledThreadCard","ExpandButton","theme","medium","sanity","fonts","text","weights","GhostButton","button","avatarConfig","canReply","currentUser","hasReferencedValue","innerPadding","isSelected","mentionOptions","mode","onCopyLink","id","onCreateRetry","onDelete","onEdit","payload","onKeyDown","event","onPathSelect","nextPath","onReactionSelect","reaction","onReply","onStatusChange","status","parentComment","readOnly","replies","CommentsListItem","props","$","_c","t0","t1","undefined","t","value","setValue","collapsed","setCollapsed","replyInputRef","isTopLayer","t2","hasValue","mouseOver","setMouseOver","t3","Symbol","for","handleMouseEnter","t4","handleMouseLeave","t5","_id","target","path","field","threadId","nextValue","nextComment","message","parentCommentId","reactions","fieldPath","handleReplySubmit","t6","current","discardDialogController","open","startDiscard","t7","isDefaultPrevented","key","preventDefault","stopPropagation","handleInputKeyDown","t8","close","cancelDiscard","t9","focus","confirmDiscard","t10","e","origin","handleThreadRootClick","t11","e_0","handleExpand","t12","bb0","t13","slice","splicedReplies","bb1","length","showCollapseButton","expandButtonText","t14","t15","t16","t17","t18","t19","t20","authorId","t21","t22","_state","type","t23","context","intent","t24","t25","t26","t27","t28","t29","reply","map","t30","t31","displayName"],"sources":["../src/core/comments/components/CommentDeleteDialog.tsx","../src/core/comments/components/avatars/SpacerAvatar.tsx","../src/core/comments/utils/transform-children/linkMiddleware.tsx","../src/core/comments/utils/transform-children/index.ts","../src/core/comments/components/pte/CommentMessageSerializer.tsx","../src/core/comments/components/icons/ReactionIcon.tsx","../src/core/comments/components/reactions/EmojiText.styled.ts","../src/core/comments/components/reactions/CommentReactionsMenu.tsx","../src/core/comments/components/reactions/CommentReactionsMenuButton.tsx","../src/core/comments/components/reactions/CommentReactionsUsersTooltip.tsx","../src/core/comments/components/reactions/TransparentCard.styled.ts","../src/core/comments/components/reactions/CommentReactionsBar.tsx","../src/core/comments/components/list/CommentsListItemContextMenu.tsx","../src/core/comments/components/list/CommentsListItemReferencedValue.tsx","../src/core/comments/components/list/CommentsListItemLayout.tsx","../src/core/comments/components/list/styles.ts","../src/core/comments/components/list/CommentsListItem.tsx"],"sourcesContent":["import {Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {Dialog} from '../../../ui-components/dialog/Dialog'\nimport {TextWithTone} from '../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../i18n/types'\nimport {commentsLocaleNamespace} from '../i18n'\n\nfunction getDialogCopy(\n t: TFunction,\n): Record<'thread' | 'comment', {title: string; body: string; confirmButtonText: string}> {\n return {\n thread: {\n title: t('delete-thread.title'),\n body: t('delete-thread.body'),\n confirmButtonText: t('delete-thread.confirm'),\n },\n comment: {\n title: t('delete-comment.title'),\n body: t('delete-comment.body'),\n confirmButtonText: t('delete-comment.confirm'),\n },\n }\n}\n\n/**\n * @beta\n * @hidden\n */\nexport interface CommentDeleteDialogProps {\n commentId: string\n error: Error | null\n isParent: boolean\n loading: boolean\n onClose: () => void\n onConfirm: (id: string) => void\n}\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentDeleteDialog(props: CommentDeleteDialogProps) {\n const {isParent, onClose, commentId, onConfirm, loading, error} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const dialogCopy = getDialogCopy(t)\n const {title, body, confirmButtonText} = dialogCopy[isParent ? 'thread' : 'comment']\n\n const handleDelete = useCallback(() => {\n onConfirm(commentId)\n }, [commentId, onConfirm])\n\n return (\n <Dialog\n footer={{\n cancelButton: {\n onClick: onClose,\n },\n confirmButton: {\n loading,\n onClick: handleDelete,\n text: confirmButtonText,\n tone: 'critical',\n },\n }}\n header={title}\n id=\"delete-comment-dialog\"\n onClose={onClose}\n width={0}\n >\n <Stack gap={4}>\n <Text size={1}>{body}</Text>\n\n {error && <TextWithTone tone=\"critical\">{t('delete-dialog.error')}</TextWithTone>}\n </Stack>\n </Dialog>\n )\n}\n","import {type AvatarSize} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {css, styled} from 'styled-components'\n\n/**\n * This component is used to as a spacer in situations where we want to align\n * components without avatars with components that have avatars.\n */\nexport const SpacerAvatar = styled.div<{$size?: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n const {$size = 1} = props\n return css`\n min-width: ${theme.avatar.sizes[$size]?.size}px;\n `\n})\n","import {type MouseEvent, type ReactNode} from 'react'\n\nimport {type Middleware} from './types'\n\nconst URL_REGEX = /\\b(https?:\\/\\/[^\\s,()]+(?:\\.[^\\s,()]+)*|www\\.[^\\s,()]+\\.[^\\s,()]{2,})\\b/g\n\nexport function onClick(event: MouseEvent<HTMLAnchorElement>): void {\n event.stopPropagation()\n}\n\nfunction createLinkElement(url: string): ReactNode {\n const href = url.startsWith('http') ? url : `https://${url}`\n\n return (\n <a key={url} href={href} target=\"_blank\" rel=\"noopener noreferrer\" onClick={onClick}>\n {url}\n </a>\n )\n}\n\n/**\n * Middleware that creates link elements for URLs in the text\n */\nexport const linkMiddleware: Middleware = (node) => {\n if (typeof node === 'string') {\n const parts = node.split(URL_REGEX)\n\n return parts.flatMap((part) => {\n if (part.match(URL_REGEX)) {\n return createLinkElement(part)\n }\n\n return part\n })\n }\n\n return node\n}\n","import {type ReactNode} from 'react'\n\nimport {linkMiddleware} from './linkMiddleware'\nimport {type Middleware} from './types'\n\nconst middlewares: Middleware[] = [linkMiddleware]\n\n/**\n * A function that transforms a ReactNode using a set of middlewares\n */\nexport function transformChildren(node: ReactNode): ReactNode {\n if (!Array.isArray(node)) return node\n\n return node.flatMap((item) => {\n let transformedItem: ReactNode[] = [item]\n\n for (const middleware of middlewares) {\n transformedItem = transformedItem.flatMap(middleware)\n }\n\n return transformedItem\n })\n}\n","import {PortableText, type PortableTextComponents} from '@portabletext/react'\nimport {Stack} from '@sanity/ui'\nimport {Fragment, type PropsWithChildren, useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type CommentMessage} from '../../types'\nimport {transformChildren} from '../../utils/transform-children'\nimport {MentionInlineBlock} from './blocks/MentionInlineBlock'\nimport {NormalBlock} from './blocks/NormalBlock'\n\nconst PortableTextWrap = styled(Stack)(() => {\n return css`\n & > [data-ui='Text']:not(:first-child) {\n margin-top: 1em; // todo: improve\n }\n\n & > [data-ui='Text']:has(> span:empty) {\n display: none;\n }\n `\n})\n\nconst EMPTY_ARRAY: [] = []\n\nfunction NormalBlockTransformed(props: PropsWithChildren) {\n const children = useMemo(() => transformChildren(props.children), [props.children])\n\n return <NormalBlock>{children}</NormalBlock>\n}\n\nconst components: PortableTextComponents = {\n // Since we do not offer any formatting options, we can just use the normal block for all of these.\n block: {\n normal: NormalBlockTransformed,\n h1: NormalBlockTransformed,\n h2: NormalBlockTransformed,\n h3: NormalBlockTransformed,\n h4: NormalBlockTransformed,\n h5: NormalBlockTransformed,\n h6: NormalBlockTransformed,\n blockquote: NormalBlockTransformed,\n code: NormalBlockTransformed,\n },\n\n list: {\n bullet: Fragment,\n number: Fragment,\n checkmarks: Fragment,\n },\n\n listItem: {\n bullet: NormalBlockTransformed,\n number: NormalBlockTransformed,\n checkmarks: NormalBlockTransformed,\n },\n\n // Since we do not offer any formatting options, we can just use the normal block for all of these.\n marks: {\n strong: Fragment,\n em: Fragment,\n code: Fragment,\n underline: Fragment,\n strikeThrough: Fragment,\n link: Fragment,\n },\n\n types: {\n mention: (props) => {\n return <MentionInlineBlock userId={props?.value?.userId} selected={false} />\n },\n },\n}\n\ninterface CommentMessageSerializerProps {\n blocks: CommentMessage\n}\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentMessageSerializer(props: CommentMessageSerializerProps): React.JSX.Element {\n const {blocks} = props\n\n return (\n <PortableTextWrap>\n <PortableText value={blocks || EMPTY_ARRAY} components={components} />\n </PortableTextWrap>\n )\n}\n","import {type RefAttributes, type SVGProps} from 'react'\n\nexport function ReactionIcon(props: SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>) {\n const {ref, ...rest} = props\n return (\n <svg\n data-sanity-icon=\"add-reaction\"\n fill=\"none\"\n height=\"1em\"\n ref={ref}\n viewBox=\"0 0 25 25\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.1044 10.4011L10.1044 10.9972\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M14.2393 10.4011L14.2393 10.9972\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M7.12128 14.1151C7.70803 15.0226 9.66113 16.8377 11.7735 16.8377C13.8859 16.8377 15.6713 15.0226 16.4257 14.1151\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M16.703 6.43905C15.3486 5.36511 13.6357 4.72374 11.773 4.72374C7.38731 4.72374 3.83203 8.27902 3.83203 12.6647C3.83203 17.0503 7.38731 20.6056 11.773 20.6056C16.0995 20.6056 19.618 17.1455 19.712 12.8415\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.1135 9.03425L19.1135 11.4903L20.3135 11.4903L20.3135 9.03425L22.7693 9.03425L22.7693 7.83425L20.3135 7.83425L20.3135 5.37941L19.1135 5.37941L19.1135 7.83425L16.6584 7.83425L16.6584 9.03425L19.1135 9.03425Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n","import {Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const EmojiText = styled(Text)`\n font-family:\n 'Twemoji Mozilla', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji',\n 'EmojiOne Color', 'Android Emoji', sans-serif;\n`\n","// oxlint-disable-next-line no-restricted-imports\nimport {Button as UIButton, Grid} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {COMMENT_REACTION_EMOJIS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption} from '../../types'\nimport {EmojiText} from './EmojiText.styled'\n\nconst GRID_COLUMNS = 6\n\ninterface CommentReactionsMenuProps {\n options: CommentReactionOption[]\n onSelect: (option: CommentReactionOption) => void\n}\n\nexport function CommentReactionsMenu(props: CommentReactionsMenuProps) {\n const {options, onSelect} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [focusedIndex, setFocusedIndex] = useState<number>(0)\n\n const handleRootKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const focusableLen = rootElement?.querySelectorAll('button').length ?? 0\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prev) => (prev + 1) % focusableLen)\n }\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prev) => (prev - 1 + focusableLen) % focusableLen)\n }\n // if (event.key === 'ArrowDown') {\n // setFocusedIndex((prev) => (prev + GRID_COLUMNS) % focusableLen)\n // }\n // if (event.key === 'ArrowUp') {\n // setFocusedIndex((prev) => (prev - GRID_COLUMNS + focusableLen) % focusableLen)\n // }\n },\n [rootElement],\n )\n\n const handleOptionClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const index = rootElement\n ? Array.from(rootElement.querySelectorAll('button')).indexOf(event.currentTarget)\n : -1\n setFocusedIndex(index)\n onSelect(options[index])\n },\n [rootElement, onSelect, options],\n )\n\n // Focus the button at the focused index.\n useEffect(() => {\n if (!rootElement) return\n const focusableElements = Array.from(rootElement.querySelectorAll('button'))\n if (focusableElements.length > 0) {\n focusableElements[focusedIndex].focus()\n }\n }, [focusedIndex, rootElement])\n\n return (\n <Grid\n gridTemplateColumns={GRID_COLUMNS}\n gap={1}\n onKeyDown={handleRootKeyDown}\n ref={setRootElement}\n role=\"menu\"\n >\n {options.map((o) => {\n const emoji = COMMENT_REACTION_EMOJIS[o.shortName]\n\n return (\n <UIButton\n key={o.shortName}\n aria-label={t('reactions.react-with-aria-label', {\n reactionName: o.title || o.shortName,\n })}\n mode=\"bleed\"\n onClick={handleOptionClick}\n padding={2}\n role=\"menuitem\"\n tabIndex={-1}\n >\n <EmojiText align=\"center\" size={2}>\n {emoji}\n </EmojiText>\n </UIButton>\n )\n })}\n </Grid>\n )\n}\n","import {Card, useClickOutsideEvent} from '@sanity/ui'\nimport {cloneElement, useCallback, useMemo, useRef, useState} from 'react'\n\nimport {Popover, type PopoverProps} from '../../../../ui-components/popover/Popover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../i18n/types'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption, type CommentsUIMode} from '../../types'\nimport {CommentReactionsMenu} from './CommentReactionsMenu'\n\nconst POPOVER_FALLBACK_PLACEMENTS: PopoverProps['fallbackPlacements'] = ['top', 'bottom']\n\nexport interface CommentReactionsMenuButtonProps {\n mode: CommentsUIMode\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onSelect: (option: CommentReactionOption) => void\n options: CommentReactionOption[]\n readOnly?: boolean\n renderMenuButton: (props: {\n open: boolean\n tooltipContent: string\n t: TFunction\n }) => React.JSX.Element\n}\n\nexport function CommentReactionsMenuButton(props: CommentReactionsMenuButtonProps) {\n const {onMenuClose, onMenuOpen, onSelect, options, readOnly, renderMenuButton, mode} = props\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const [open, setOpen] = useState<boolean>(false)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const handleClick = useCallback(() => {\n const next = !open\n setOpen(next)\n\n if (next) {\n onMenuOpen?.()\n } else {\n onMenuClose?.()\n }\n }, [onMenuClose, onMenuOpen, open])\n\n const handleClose = useCallback(() => {\n if (!open) return\n\n setOpen(false)\n onMenuClose?.()\n }, [open, onMenuClose])\n\n const handleCloseAndFocus = useCallback(() => {\n if (!open) return\n\n handleClose()\n buttonElement?.focus()\n }, [buttonElement, handleClose, open])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const {key, shiftKey} = event\n\n if ((shiftKey && key === 'Tab') || key === 'Escape' || key === 'Tab') {\n handleCloseAndFocus()\n }\n },\n [handleCloseAndFocus],\n )\n\n useClickOutsideEvent(handleClose, () => [popoverRef.current, buttonElement])\n\n const handleSelect = useCallback(\n (option: CommentReactionOption) => {\n onSelect(option)\n handleClose()\n },\n [handleClose, onSelect],\n )\n\n const button = useMemo(() => {\n // Get the button element from the renderMenuButton function.\n const btn = renderMenuButton({\n open,\n tooltipContent:\n mode === 'upsell'\n ? t('list-item.context-menu-add-reaction-upsell')\n : t('list-item.context-menu-add-reaction'),\n t,\n })\n\n // Clone the button element and add the necessary props.\n return cloneElement(btn, {\n 'aria-expanded': open,\n 'aria-haspopup': 'true',\n 'disabled': readOnly || mode === 'upsell',\n 'id': 'reactions-menu-button',\n 'onClick': handleClick,\n 'ref': setButtonElement,\n })\n }, [handleClick, open, readOnly, renderMenuButton, t, mode])\n\n const popoverContent = (\n <Card\n aria-labelledby=\"reactions-menu-button\"\n onKeyDown={handleKeyDown}\n padding={1}\n radius={3}\n tone=\"default\"\n >\n <CommentReactionsMenu onSelect={handleSelect} options={options} />\n </Card>\n )\n\n return (\n <Popover\n constrainSize\n content={popoverContent}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open={open}\n placement=\"bottom\"\n portal\n ref={popoverRef}\n tone=\"default\"\n >\n {button}\n </Popover>\n )\n}\n","import {type CurrentUser} from '@sanity/types'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useListFormat} from '../../../hooks/useListFormat'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useUser} from '../../../store/user/hooks'\nimport {COMMENT_REACTION_EMOJIS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionShortNames} from '../../types'\nimport {EmojiText} from './EmojiText.styled'\n\nconst TEXT_SIZE: number | number[] = 1\n\nconst ContentStack = styled(Stack)`\n max-width: 180px;\n`\n\nconst TextGroup = styled.div`\n display: inline-block;\n`\n\nconst InlineText = styled(Text).attrs({size: TEXT_SIZE})`\n display: inline-block !important;\n\n & > span {\n white-space: break-spaces;\n }\n`\n\nconst TextBox = styled(Box)`\n line-height: 1;\n text-align: center;\n`\n\nconst LEADING_NON_WHITESPACE_RE = /^\\S+/\n\ninterface UserDisplayNameProps {\n currentUserId: string\n isFirst?: boolean\n userId: string\n}\n\nfunction UserDisplayName(props: UserDisplayNameProps): string {\n const {currentUserId, isFirst, userId} = props\n const [user] = useUser(userId)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const isCurrentUser = currentUserId === userId\n if (isCurrentUser) {\n const context = isFirst ? 'leading' : undefined\n return t('reactions.user-list.you', {context, replace: {name: user?.displayName}})\n }\n\n return user?.displayName || t('reactions.user-list.unknown-user-fallback-name')\n}\n\ninterface CommentReactionsUsersTooltipProps {\n children: React.ReactNode\n currentUser: CurrentUser\n reactionName: CommentReactionShortNames\n userIds: string[]\n}\n\nexport function CommentReactionsUsersTooltip(props: CommentReactionsUsersTooltipProps) {\n const {children, ...restProps} = props\n\n return (\n <Tooltip\n content={<CommentReactionsUsersTooltipContent {...restProps} />}\n placement=\"bottom\"\n portal\n >\n <div>{children}</div>\n </Tooltip>\n )\n}\n\nfunction FormattedUserList({currentUserId, userIds}: {currentUserId: string; userIds: string[]}) {\n const listFormat = useListFormat({style: 'long', type: 'conjunction'})\n if (userIds.length === 0) return null\n\n /**\n * We need to do some surgery on the list: in some locales (such as en-US), the literal segments\n * can contain oxford commas, which we want to include as the part of the element preceeding it.\n * This ensures that we do not wrap to a new line that starts with a comma. In general, we should\n * not special case on _comma_ per se, but rather by the presence of a non-whitespace character.\n */\n const parts = listFormat.formatToParts(userIds)\n const elements: React.JSX.Element[] = []\n for (let i = 0; i < parts.length; i++) {\n const item = parts[i]\n\n if (item.type === 'literal') {\n // Add literals as-is - the next case will rewrite literals to exclude leading non-whitespace\n elements.push(<InlineText key={`literal-${i}`}>{item.value}</InlineText>)\n continue\n }\n\n const nextItem = parts[i + 1]\n const nextLeadsWithNonWhitespace =\n nextItem && nextItem.type === 'literal' && LEADING_NON_WHITESPACE_RE.test(nextItem.value)\n if (nextLeadsWithNonWhitespace) {\n // This is the 'oxford comma' case, where we want to include any leading non-whitespace from\n // the literal as trailing characters to the element we are currently adding.\n const [nonWhitespace = ''] = nextItem.value.match(LEADING_NON_WHITESPACE_RE) || []\n\n elements.push(\n // Key (value) is user ID, thus unique\n <TextGroup key={item.value}>\n <InlineText weight=\"medium\">\n <UserDisplayName currentUserId={currentUserId} isFirst={i === 0} userId={item.value} />\n </InlineText>\n <InlineText>{nonWhitespace}</InlineText>\n </TextGroup>,\n )\n\n // Rewrite the next item to not contain this leading non-whitespace\n nextItem.value = nextItem.value.slice(nonWhitespace.length)\n continue\n }\n\n // Literals have been taken care of and returns early, so the only remaining case is that we're\n // in an element that does _not_ have a leading non-whitespace literal following it.\n elements.push(\n // Key (value) is user ID, thus unique\n <InlineText key={item.value} weight=\"medium\">\n <UserDisplayName currentUserId={currentUserId} isFirst={i === 0} userId={item.value} />\n </InlineText>,\n )\n }\n\n return elements\n}\n\nfunction CommentReactionsUsersTooltipContent(\n props: Omit<CommentReactionsUsersTooltipProps, 'children'>,\n) {\n const {currentUser, reactionName, userIds} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const UserList = useCallback(() => {\n if (!currentUser) return null\n return <FormattedUserList currentUserId={currentUser.id} userIds={userIds} />\n }, [currentUser, userIds])\n\n return (\n <ContentStack padding={1}>\n <Flex justify=\"center\" paddingBottom={2} paddingTop={1}>\n <EmojiText size={4}>{COMMENT_REACTION_EMOJIS[reactionName]}</EmojiText>\n </Flex>\n\n <TextBox>\n <Translate\n t={t}\n i18nKey=\"reactions.users-reacted-with-reaction\"\n values={{reactionName}}\n components={{\n UserList,\n ReactionName: () => <InlineText muted>{reactionName}</InlineText>,\n Text: ({children}) => (\n <>\n <InlineText muted>{children}</InlineText> <wbr />{' '}\n </>\n ),\n }}\n />\n </TextBox>\n </ContentStack>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\n/**\n * Returns a styled `<Card>` without a background.\n * This is a temporary workaround to force nested Sanity UI components to adhere to a specific tone (and bypass color mixing).\n *\n * TODO: consider exposing an unstable prop in Sanity UI to facilitate this.\n */\nexport const TransparentCard = styled(Card)`\n background: none;\n`\n","import {type CurrentUser} from '@sanity/types'\nimport {\n // oxlint-disable-next-line no-restricted-imports\n Button as UIButton,\n Flex,\n Text,\n} from '@sanity/ui'\nimport {memo, useCallback, useMemo, useState} from 'react'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {COMMENT_REACTION_EMOJIS, COMMENT_REACTION_OPTIONS} from '../../constants'\nimport {\n type CommentReactionItem,\n type CommentReactionOption,\n type CommentReactionShortNames,\n type CommentsUIMode,\n} from '../../types'\nimport {ReactionIcon} from '../icons/ReactionIcon'\nimport {CommentReactionsMenuButton} from './CommentReactionsMenuButton'\nimport {CommentReactionsUsersTooltip} from './CommentReactionsUsersTooltip'\nimport {EmojiText} from './EmojiText.styled'\nimport {TransparentCard} from './TransparentCard.styled'\n\n/**\n * A function that groups reactions by name. For example:\n *\n * ```js\n * [\n * [':name:', [{shortName: ':name:', userId: 'user1'}, {shortName: ':name:', userId: 'user2'}],\n * [':name2:', [{shortName: ':name2:', userId: 'user1'}]\n * ]\n *```\n */\nfunction groupReactionsByName(reactions: CommentReactionItem[]) {\n const grouped = reactions.reduce(\n (acc, reaction) => {\n const {shortName} = reaction\n\n if (!acc[shortName]) {\n acc[shortName] = []\n }\n\n acc[shortName].push(reaction)\n\n return acc\n },\n {} as Record<CommentReactionShortNames, CommentReactionItem[]>,\n )\n\n // Sort based on the first appearance of the reaction in `reactions` array.\n // This is to ensure that the order of the reactions is consistent so that\n // the reactions are not jumping around when new reactions are added.\n const sorted = Object.entries(grouped).sort(([nameA], [nameB]) => {\n const indexA = reactions.findIndex((r) => r.shortName === nameA)\n const indexB = reactions.findIndex((r) => r.shortName === nameB)\n\n return indexA - indexB\n })\n\n return sorted as [CommentReactionShortNames, CommentReactionItem[]][]\n}\n\nconst renderMenuButton = ({open, tooltipContent}: {open: boolean; tooltipContent: string}) => {\n return (\n <UIButton fontSize={1} mode=\"ghost\" padding={0} radius=\"full\" selected={open}>\n <Flex paddingX={3} paddingY={2}>\n <Tooltip animate content={tooltipContent} disabled={open}>\n <Text size={1}>\n <ReactionIcon />\n </Text>\n </Tooltip>\n </Flex>\n </UIButton>\n )\n}\n\ninterface CommentReactionsBarProps {\n currentUser: CurrentUser\n onSelect: (reaction: CommentReactionOption) => void\n reactions: CommentReactionItem[]\n readOnly?: boolean\n mode: CommentsUIMode\n}\n\nexport const CommentReactionsBar = memo(function CommentReactionsBar(\n props: CommentReactionsBarProps,\n) {\n const {currentUser, onSelect, reactions, readOnly, mode} = props\n const handleSelect = useCallback(\n (name: CommentReactionShortNames) => {\n const option = COMMENT_REACTION_OPTIONS.find((o) => o.shortName === name)\n\n if (option) {\n onSelect(option)\n }\n },\n [onSelect],\n )\n\n // The list of the current user's reactions, e.g. [':+1:', ':heart:']\n const currentUserReactionNames = useMemo(() => {\n return reactions.filter((r) => r.userId === currentUser?.id).map((r) => r.shortName)\n }, [currentUser?.id, reactions])\n\n // Reactions grouped by name, e.g. [ [':+1:', [{shortName: ':+1:', userId: 'user1'}] ] ]\n const groupedReactions = useMemo(() => {\n const grouped = groupReactionsByName(reactions)\n\n // Filter out reactions that are not in the `COMMENT_REACTION_EMOJIS` map.\n return grouped.filter(([name]) => COMMENT_REACTION_EMOJIS[name])\n }, [reactions])\n\n const [sortedGroupedReactions, setSortedGroupedReactions] = useState(() => ({\n // An array of the initial order of the reactions. This is used to sort the reactions.\n // E.g. [':+1:', ':heart:']\n sortOrder: Object.keys(Object.fromEntries(groupedReactions)),\n // We cache the groupedReactions to know when we should update the sortedReactions, ensuring we don't run into an infinite render loop.\n groupedReactions: [] as typeof groupedReactions,\n sortedReactions: [] as typeof groupedReactions,\n }))\n // Sort the reactions based on the initial order to make sure that the reactions\n // are not jumping around when new reactions are added.\n let {sortedReactions} = sortedGroupedReactions\n if (sortedGroupedReactions.groupedReactions !== groupedReactions) {\n const {sortOrder} = sortedGroupedReactions\n sortedReactions = groupedReactions.sort(([nameA], [nameB]) => {\n const indexA = sortOrder.indexOf(nameA)\n const indexB = sortOrder.indexOf(nameB)\n\n if (indexA === -1) {\n return 1\n }\n\n if (indexB === -1) {\n return -1\n }\n\n return indexA - indexB\n })\n\n setSortedGroupedReactions({\n groupedReactions,\n sortOrder: sortedReactions.map(([name]) => name),\n sortedReactions,\n })\n }\n\n return (\n <Flex align=\"center\" gap={1} wrap=\"wrap\">\n <TooltipDelayGroupProvider>\n {sortedReactions.map(([name, reactionsList]) => {\n const hasReacted = currentUserReactionNames.includes(name)\n const userIds = reactionsList.map((r) => r.userId)\n const emoji = COMMENT_REACTION_EMOJIS[name]\n\n return (\n <CommentReactionsUsersTooltip\n key={name}\n currentUser={currentUser}\n reactionName={name}\n userIds={userIds}\n >\n <TransparentCard tone=\"default\">\n <UIButton\n disabled={readOnly || mode === 'upsell'}\n mode=\"ghost\"\n onClick={() => handleSelect(name)}\n padding={2}\n radius=\"full\"\n selected={hasReacted}\n tone={hasReacted ? 'primary' : 'default'}\n >\n <Flex align=\"center\" gap={1}>\n <EmojiText size={1}>{emoji}</EmojiText>\n\n <Text size={0} weight={hasReacted ? 'semibold' : 'medium'}>\n {reactionsList?.length}\n </Text>\n </Flex>\n </UIButton>\n </TransparentCard>\n </CommentReactionsUsersTooltip>\n )\n })}\n\n <TransparentCard tone=\"default\">\n <CommentReactionsMenuButton\n mode={mode}\n onSelect={(o) => handleSelect(o.shortName)}\n options={COMMENT_REACTION_OPTIONS}\n readOnly={readOnly}\n renderMenuButton={renderMenuButton}\n />\n </TransparentCard>\n </TooltipDelayGroupProvider>\n </Flex>\n )\n})\nCommentReactionsBar.displayName = 'Memo(CommentReactionsBar)'\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UndoIcon} from '@sanity/icons/Undo'\nimport {Card, Flex, Menu, MenuDivider} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton, type MenuButtonProps} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../i18n/types'\nimport {COMMENT_REACTION_OPTIONS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption, type CommentStatus, type CommentsUIMode} from '../../types'\nimport {ReactionIcon} from '../icons/ReactionIcon'\nimport {CommentReactionsMenuButton} from '../reactions/CommentReactionsMenuButton'\n\nconst renderMenuButton = ({\n open,\n tooltipContent,\n t,\n}: {\n open: boolean\n tooltipContent: string\n t: TFunction\n}) => (\n <Button\n aria-label={t('list-item.context-menu-add-reaction-aria-label')}\n icon={ReactionIcon}\n mode=\"bleed\"\n selected={open}\n tooltipProps={{content: tooltipContent}}\n />\n)\n\nconst POPOVER_PROPS: MenuButtonProps['popover'] = {\n placement: 'bottom-end',\n}\n\nconst FloatingCard = styled(Card)`\n &:empty {\n display: none;\n }\n`\n\ninterface CommentsListItemContextMenuProps {\n canDelete: boolean | undefined\n canEdit: boolean | undefined\n isParent: boolean | undefined\n mode: CommentsUIMode\n onCopyLink?: () => void\n onDeleteStart?: () => void\n onEditStart?: () => void\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onReactionSelect?: (option: CommentReactionOption) => void\n onStatusChange?: () => void\n readOnly?: boolean\n status: CommentStatus\n}\n\nexport function CommentsListItemContextMenu(props: CommentsListItemContextMenuProps) {\n const {\n canDelete,\n canEdit,\n isParent,\n mode,\n onCopyLink,\n onDeleteStart,\n onEditStart,\n onMenuClose,\n onMenuOpen,\n onReactionSelect,\n onStatusChange,\n readOnly,\n status,\n } = props\n\n const showMenuButton = Boolean(onCopyLink || onDeleteStart || onEditStart)\n\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const hasContextMenuOptions = Boolean(canDelete || canEdit || onCopyLink)\n return (\n <TooltipDelayGroupProvider>\n <Flex>\n <FloatingCard display=\"flex\" shadow={2} padding={1} radius={2} sizing=\"border\">\n {onReactionSelect && (\n <CommentReactionsMenuButton\n mode={mode}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n onSelect={onReactionSelect}\n options={COMMENT_REACTION_OPTIONS}\n readOnly={readOnly}\n renderMenuButton={renderMenuButton}\n />\n )}\n\n {isParent && onStatusChange && (\n <Button\n aria-label={\n status === 'open'\n ? t('list-item.resolved-tooltip-aria-label')\n : t('list-item.re-open-resolved-aria-label')\n }\n data-testid=\"comments-list-item-status-button\"\n disabled={readOnly}\n icon={status === 'open' ? CheckmarkCircleIcon : UndoIcon}\n mode=\"bleed\"\n onClick={onStatusChange}\n tooltipProps={{\n content:\n status === 'open'\n ? t('list-item.resolved-tooltip-content')\n : t('list-item.re-open-resolved'),\n }}\n />\n )}\n\n {hasContextMenuOptions && (\n <MenuButton\n id=\"comment-actions-menu\"\n button={\n <ContextMenuButton\n aria-label={t('list-item.open-menu-aria-label')}\n disabled={readOnly}\n hidden={!showMenuButton}\n />\n }\n onOpen={onMenuOpen}\n onClose={onMenuClose}\n menu={\n <Menu>\n <MenuItem\n hidden={!canEdit}\n icon={EditIcon}\n onClick={onEditStart}\n text={t('list-item.edit-comment')}\n tooltipProps={\n mode === 'upsell' ? {content: t('list-item.edit-comment-upsell')} : undefined\n }\n disabled={mode === 'upsell'}\n />\n\n <MenuItem\n hidden={!canDelete}\n icon={TrashIcon}\n onClick={onDeleteStart}\n text={t('list-item.delete-comment')}\n tone=\"critical\"\n />\n\n {onCopyLink && <MenuDivider hidden={!canDelete && !canEdit} />}\n\n <MenuItem\n hidden={!onCopyLink}\n icon={LinkIcon}\n onClick={onCopyLink}\n text={t('list-item.copy-link')}\n />\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )}\n </FloatingCard>\n </Flex>\n </TooltipDelayGroupProvider>\n )\n}\n","import {toPlainText} from '@portabletext/react'\nimport {hues} from '@sanity/color'\nimport {LinkRemovedIcon} from '@sanity/icons/LinkRemoved'\nimport {isPortableTextTextBlock} from '@sanity/types'\nimport {Box, Flex, Stack, Text, type Theme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentDocument} from '../../types'\n\nfunction truncate(str: string, length = 250) {\n if (str.length <= length) return str\n return `${str.slice(0, length)}...`\n}\n\ninterface BlockQuoteStackProps {\n $hasReferencedValue: boolean\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n theme: Theme\n}\n\nconst InlineBox = styled(Box).attrs({marginLeft: 1, marginRight: 2})`\n &:not([data-hidden]) {\n display: inline;\n }\n`\n\nconst BlockQuoteStack = styled(Stack)<BlockQuoteStackProps>(({theme, $hasReferencedValue}) => {\n const isDark = theme.sanity.v2?.color._dark\n\n const hue = $hasReferencedValue ? COMMENTS_HIGHLIGHT_HUE_KEY : 'gray'\n const borderColor = isDark ? hues[hue][700].hex : hues[hue][300].hex\n\n return css`\n border-left: 2px solid ${borderColor};\n word-break: break-word;\n `\n})\n\ninterface CommentsListItemReferencedValueProps {\n hasReferencedValue: boolean | undefined\n value: CommentDocument['contentSnapshot']\n}\n\nexport function CommentsListItemReferencedValue(props: CommentsListItemReferencedValueProps) {\n const {hasReferencedValue, value} = props\n\n const {t} = useTranslation(commentsLocaleNamespace)\n const tooltipText = t('list-item.missing-referenced-value-tooltip-content')\n\n const resolvedValue = useMemo(() => {\n if (Array.isArray(value) && value?.filter(isPortableTextTextBlock).length > 0) {\n const text = value?.map(toPlainText).join(' ')\n const truncated = truncate(text)\n\n return truncated\n }\n\n return null\n }, [value])\n\n if (!resolvedValue) return null\n\n return (\n <BlockQuoteStack\n $hasReferencedValue={Boolean(hasReferencedValue)}\n data-testid=\"comments-list-item-referenced-value\"\n flex={1}\n forwardedAs=\"blockquote\"\n padding={1}\n paddingLeft={2}\n sizing=\"border\"\n >\n <Flex align=\"flex-start\">\n <Text size={1} muted>\n {!hasReferencedValue && (\n <Tooltip content={tooltipText}>\n <InlineBox>\n <LinkRemovedIcon />\n </InlineBox>\n </Tooltip>\n )}\n\n {resolvedValue}\n </Text>\n </Flex>\n </BlockQuoteStack>\n )\n}\n","import {hues} from '@sanity/color'\nimport {type CurrentUser} from '@sanity/types'\nimport {\n type AvatarSize,\n Box,\n Card,\n Flex,\n Stack,\n Text,\n TextSkeleton,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {css, styled} from 'styled-components'\n\nimport {useDidUpdate} from '../../../form/hooks/useDidUpdate'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {type RelativeTimeOptions, useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useUser} from '../../../store/user/hooks'\nimport {hasCommentMessageValue, isTextSelectionComment, useCommentHasChanged} from '../../helpers'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentContext,\n type CommentDocument,\n type CommentMessage,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {CommentsAvatar} from '../avatars/CommentsAvatar'\nimport {SpacerAvatar} from '../avatars/SpacerAvatar'\nimport {FLEX_GAP} from '../constants'\nimport {CommentInput, type CommentInputHandle} from '../pte/comment-input/CommentInput'\nimport {CommentMessageSerializer} from '../pte/CommentMessageSerializer'\nimport {CommentReactionsBar} from '../reactions/CommentReactionsBar'\nimport {CommentsListItemContextMenu} from './CommentsListItemContextMenu'\nimport {CommentsListItemReferencedValue} from './CommentsListItemReferencedValue'\n\nconst stopPropagation = (e: React.MouseEvent<HTMLDivElement>) => e.stopPropagation()\n\nconst ContextMenuBox = styled(Box)``\n\nconst SKELETON_INLINE_STYLE: React.CSSProperties = {width: '50%'}\n\nconst EMPTY_ARRAY: [] = []\n\nconst TimeText = styled(Text)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const fg = hues.gray[isDark ? 200 : 800].hex\n\n return css`\n min-width: max-content;\n --card-fg-color: ${fg};\n color: var(--card-fg-color);\n `\n})\n\nconst HeaderFlex = styled(Flex)<{$size: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n min-height: ${theme.avatar.sizes[props.$size]?.size}px;\n `\n})\n\nconst IntentText = styled(Text)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const fg = hues.gray[isDark ? 200 : 800].hex\n\n return css`\n --card-fg-color: ${fg};\n color: var(--card-fg-color);\n `\n})\n\nconst InnerStack = styled(Stack)`\n transition: opacity 200ms ease;\n\n &[data-muted='true'] {\n transition: unset;\n opacity: 0.5;\n }\n`\n\nconst ErrorFlex = styled(Flex)<{$size: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n min-height: ${theme.avatar.sizes[props.$size]?.size}px;\n `\n})\n\nconst RetryCardButton = styled(Card)`\n /* Add not on hover */\n &:not(:hover) {\n background-color: transparent;\n }\n`\n\nconst RootStack = styled(Stack)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {space} = theme.sanity\n\n return css`\n position: relative;\n\n /* Only show the floating layer on hover when hover is supported.\n Else, the layer is always visible. */\n @media (hover: hover) {\n ${ContextMenuBox} {\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(${space[1]}px, -${space[1]}px);\n }\n\n ${ContextMenuBox} {\n &:focus-within {\n opacity: 1;\n }\n }\n\n &:hover {\n ${ContextMenuBox} {\n opacity: 1;\n }\n }\n }\n\n &[data-menu-open='true'] {\n ${ContextMenuBox} {\n opacity: 1;\n }\n }\n `\n})\n\ninterface CommentsListItemLayoutProps {\n avatarSize?: AvatarSize\n canDelete?: boolean\n canEdit?: boolean\n comment: CommentDocument\n currentUser: CurrentUser\n hasError?: boolean\n hasReferencedValue?: boolean\n intent?: CommentContext['intent']\n isParent?: boolean\n isRetrying?: boolean\n mentionOptions: UserListWithPermissionsHookValue\n mode: CommentsUIMode\n onCopyLink?: (id: string) => void\n onCreateRetry?: (id: string) => void\n onDelete: (id: string) => void\n onEdit: (id: string, message: CommentUpdatePayload) => void\n onInputKeyDown?: (event: React.KeyboardEvent) => void\n onReactionSelect?: (id: string, reaction: CommentReactionOption) => void\n onStatusChange?: (id: string, status: CommentStatus) => void\n readOnly?: boolean\n withAvatar?: boolean\n}\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {useTemporalPhrase: true}\n\nexport function CommentsListItemLayout(props: CommentsListItemLayoutProps) {\n const {\n avatarSize = 1,\n canDelete,\n canEdit,\n comment,\n currentUser,\n hasError,\n hasReferencedValue,\n intent,\n isParent,\n isRetrying,\n mentionOptions,\n mode,\n onCopyLink,\n onCreateRetry,\n onDelete,\n onEdit,\n onInputKeyDown,\n onReactionSelect,\n onStatusChange,\n readOnly,\n withAvatar = true,\n } = props\n const {_createdAt, authorId, message, _id, lastEditedAt} = comment\n const [user] = useUser(authorId)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const [value, setValue] = useState<CommentMessage>(message)\n const [isEditing, setIsEditing] = useState<boolean>(false)\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const startMessage = useRef<CommentMessage>(message)\n const [menuOpen, setMenuOpen] = useState<boolean>(false)\n\n const commentInputRef = useRef<CommentInputHandle>(null)\n\n const hasChanges = useCommentHasChanged(value)\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n // Filter out reactions that's been optimistically removed from the comment.\n const reactions = (\n comment?.reactions?.filter((r) => r?._optimisticState !== 'removed') || EMPTY_ARRAY\n ).filter((r) => {\n // Filter out reactions that might have to incorrect format\n return 'userId' in r && 'shortName' in r\n })\n\n const hasReactions = Boolean(reactions?.length)\n\n const createdDate = _createdAt ? new Date(_createdAt) : new Date()\n const editedDate = lastEditedAt ? new Date(lastEditedAt) : null\n const createdTimeAgo = useRelativeTime(createdDate, RELATIVE_TIME_OPTIONS)\n const dateTimeFormat = useDateTimeFormat({dateStyle: 'full', timeStyle: 'medium'})\n const formattedCreatedAt = dateTimeFormat.format(createdDate)\n const formattedLastEditAt = editedDate ? dateTimeFormat.format(editedDate) : null\n const displayError = hasError || isRetrying\n\n // If the message has changed we need to update the value in the state\n // so that, when the user starts editing, the input is populated with the\n // latest message value.\n useEffect(() => {\n if (isEditing) return\n\n startMessage.current = message\n // oxlint-disable-next-line react/react-compiler\n setValue(message)\n }, [isEditing, message])\n\n const handleMenuOpen = useCallback(() => setMenuOpen(true), [])\n const handleMenuClose = useCallback(() => setMenuOpen(false), [])\n const handleCopyLink = useCallback(() => onCopyLink?.(_id), [_id, onCopyLink])\n const handleCreateRetry = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation()\n onCreateRetry?.(_id)\n },\n [_id, onCreateRetry],\n )\n const handleDelete = useCallback(() => onDelete(_id), [_id, onDelete])\n\n const cancelEdit = useCallback(() => {\n setIsEditing(false)\n setValue(startMessage.current)\n }, [])\n\n const startDiscard = useCallback(() => {\n if (!hasValue || !hasChanges) {\n cancelEdit()\n return\n }\n commentInputRef.current?.discardDialogController.open()\n }, [cancelEdit, hasChanges, hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n // Discard the input text\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n // Call parent handler\n if (onInputKeyDown) onInputKeyDown(event)\n },\n [onInputKeyDown, startDiscard],\n )\n\n const cancelDiscard = useCallback(() => {\n commentInputRef.current?.discardDialogController.close()\n }, [])\n\n const confirmDiscard = useCallback(() => {\n commentInputRef.current?.discardDialogController.close()\n cancelEdit()\n }, [cancelEdit])\n\n const handleReactionSelect = useCallback(\n (reaction: CommentReactionOption) => {\n onReactionSelect?.(_id, reaction)\n },\n [_id, onReactionSelect],\n )\n\n const handleEditSubmit = useCallback(\n (nextValue: CommentMessage) => {\n onEdit(_id, {message: nextValue})\n setIsEditing(false)\n },\n [_id, onEdit],\n )\n\n const handleOpenStatusChange = useCallback(() => {\n onStatusChange?.(_id, comment.status === 'open' ? 'resolved' : 'open')\n }, [_id, comment.status, onStatusChange])\n\n const toggleEdit = useCallback(() => {\n setIsEditing((v) => !v)\n }, [])\n\n const handleCloseMenu = useCallback(() => setMenuOpen(false), [])\n\n const handleRootKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && !hasChanges) {\n cancelEdit()\n }\n },\n [cancelEdit, hasChanges],\n )\n\n useDidUpdate(isEditing, handleCloseMenu)\n\n useClickOutsideEvent(!hasChanges && cancelEdit, () => [rootElementRef.current])\n\n const name = user?.displayName ? (\n <Text size={1} weight=\"medium\" textOverflow=\"ellipsis\" title={user.displayName}>\n {user.displayName}\n </Text>\n ) : (\n <TextSkeleton size={1} style={SKELETON_INLINE_STYLE} />\n )\n\n return (\n <RootStack\n data-menu-open={menuOpen ? 'true' : 'false'}\n data-testid=\"comments-list-item-layout\"\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n gap={4}\n >\n <InnerStack gap={1} data-muted={displayError}>\n <HeaderFlex align=\"center\" gap={FLEX_GAP} flex={1} $size={avatarSize}>\n {withAvatar && <CommentsAvatar user={user} size={avatarSize} />}\n\n <Flex direction=\"column\" gap={2} paddingY={intent ? 2 : 0}>\n <Flex\n align=\"center\"\n paddingBottom={comment.context?.intent ? 0 : 1}\n sizing=\"border\"\n flex={1}\n >\n <Flex align=\"flex-end\" gap={2}>\n <Box flex={1}>{name}</Box>\n\n {!displayError && (\n <Flex align=\"center\" gap={1}>\n <TimeText muted size={0}>\n <time dateTime={createdDate.toISOString()} title={formattedCreatedAt}>\n {createdTimeAgo}\n </time>\n </TimeText>\n\n {formattedLastEditAt && editedDate && (\n <TimeText muted size={0} title={formattedLastEditAt}>\n <time dateTime={editedDate.toISOString()} title={formattedLastEditAt}>\n ({t('list-item.layout-edited')})\n </time>\n </TimeText>\n )}\n </Flex>\n )}\n </Flex>\n </Flex>\n\n {intent && (\n <Box flex={1}>\n <IntentText muted size={0} textOverflow=\"ellipsis\">\n <Translate\n t={t}\n i18nKey=\"list-item.layout-context\"\n values={{title: intent.title, intent: 'edit'}}\n components={{\n IntentLink: ({children}) =>\n intent ? (\n <IntentLink params={intent.params} intent={intent.name}>\n {children}\n </IntentLink>\n ) : undefined,\n }}\n />\n </IntentText>\n </Box>\n )}\n </Flex>\n\n {!isEditing && !displayError && (\n <ContextMenuBox data-root-menu={isParent ? 'true' : 'false'} onClick={stopPropagation}>\n <CommentsListItemContextMenu\n canDelete={canDelete}\n canEdit={canEdit}\n isParent={isParent}\n mode={mode}\n onCopyLink={onCopyLink ? handleCopyLink : undefined}\n onDeleteStart={handleDelete}\n onEditStart={toggleEdit}\n onMenuClose={handleMenuClose}\n onMenuOpen={handleMenuOpen}\n onReactionSelect={handleReactionSelect}\n onStatusChange={onStatusChange ? handleOpenStatusChange : undefined}\n readOnly={readOnly}\n status={comment.status}\n />\n </ContextMenuBox>\n )}\n </HeaderFlex>\n\n {isTextSelectionComment(comment) && Boolean(comment?.contentSnapshot) && (\n <Flex gap={FLEX_GAP} marginBottom={3}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <CommentsListItemReferencedValue\n hasReferencedValue={hasReferencedValue}\n value={comment?.contentSnapshot}\n />\n </Flex>\n )}\n\n {isEditing && (\n <Flex align=\"flex-start\" gap={2}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Stack flex={1}>\n <CommentInput\n currentUser={currentUser}\n focusOnMount\n mentionOptions={mentionOptions}\n onChange={setValue}\n onDiscardCancel={cancelDiscard}\n onDiscardConfirm={confirmDiscard}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleEditSubmit}\n readOnly={readOnly}\n ref={commentInputRef}\n value={value}\n withAvatar={false}\n />\n </Stack>\n </Flex>\n )}\n\n {!isEditing && (\n <Flex gap={FLEX_GAP}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <CommentMessageSerializer blocks={message} />\n </Flex>\n )}\n\n {hasReactions && (\n <Flex gap={FLEX_GAP} marginTop={2}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Box onClick={stopPropagation}>\n <CommentReactionsBar\n currentUser={currentUser}\n mode={mode}\n onSelect={handleReactionSelect}\n reactions={reactions}\n readOnly={readOnly}\n />\n </Box>\n </Flex>\n )}\n </InnerStack>\n\n {displayError && (\n <ErrorFlex gap={FLEX_GAP} $size={avatarSize}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Flex align=\"center\" gap={1} flex={1}>\n <Text muted size={1}>\n {hasError && t('list-item.layout-failed-sent')}\n {isRetrying && t('list-item.layout-posting')}\n </Text>\n\n <Flex hidden={isRetrying}>\n <RetryCardButton\n __unstable_focusRing\n display=\"flex\"\n forwardedAs=\"button\"\n onClick={handleCreateRetry}\n padding={1}\n radius={2}\n tone=\"primary\"\n >\n <Text size={1} muted>\n {t('list-item.layout-retry')}\n </Text>\n </RetryCardButton>\n </Flex>\n </Flex>\n </ErrorFlex>\n )}\n </RootStack>\n )\n}\n","import {hues} from '@sanity/color'\nimport {Card} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\n\nexport const ThreadCard = styled(Card).attrs({padding: 3, radius: 3, sizing: 'border'})((props) => {\n const {theme} = props\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const activeBg = hues[COMMENTS_HIGHLIGHT_HUE_KEY][isDark ? 900 : 50].hex\n const defaultBg = hues.gray[isDark ? 900 : 50].hex\n\n return css`\n background-color: ${defaultBg};\n\n &[data-active='true'] {\n background-color: ${activeBg};\n }\n `\n})\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {type CurrentUser} from '@sanity/types'\nimport {type AvatarSize, Flex, Stack, type StackProps, useLayer} from '@sanity/ui'\nimport {\n type KeyboardEvent,\n memo,\n type MouseEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type CommentsSelectedPath} from '../../context/selected-path/types'\nimport {commentIntentIfDiffers, hasCommentMessageValue} from '../../helpers'\nimport {applyCommentIdAttr} from '../../hooks/useCommentsScroll'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentBaseCreatePayload,\n type CommentDocument,\n type CommentMessage,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {SpacerAvatar} from '../avatars/SpacerAvatar'\nimport {CommentInput, type CommentInputHandle} from '../pte/comment-input/CommentInput'\nimport {CommentsListItemLayout} from './CommentsListItemLayout'\nimport {ThreadCard} from './styles'\n\nconst EMPTY_ARRAY: [] = []\n\nconst MAX_COLLAPSED_REPLIES = 5\n\nconst DEFAULT_AVATAR_CONFIG: CommentsListItemProps['avatarConfig'] = {\n avatarSize: 1,\n parentCommentAvatar: true,\n replyAvatar: true,\n threadCommentsAvatar: true,\n}\n\n// data-active = when the comment is selected\n// data-hovered = when the mouse is over the comment\nconst StyledThreadCard = styled(ThreadCard)(() => {\n return css`\n position: relative;\n\n &:has(> [data-ui='GhostButton']:focus:focus-visible) {\n box-shadow:\n inset 0 0 0 1px var(--card-border-color),\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 2px var(--card-focus-ring-color);\n }\n\n // The hover styles is managed with the [data-hovered] attribute instead of the :hover pseudo class\n // since we want to show the hover styles when hovering over the menu items in the context menu as well.\n // The context menu is rendered using a portal, so the :hover pseudo class won't work when hovering over\n // the menu items.\n &:not([data-active='true']) {\n @media (hover: hover) {\n &[data-hovered='true'] {\n [data-root-menu='true'] {\n opacity: 1;\n }\n }\n }\n }\n `\n})\n\nconst ExpandButton = styled(Button)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {medium} = theme.sanity.fonts.text.weights\n\n return css`\n font-weight: ${medium};\n `\n})\n\nconst GhostButton = styled.button`\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n left: 0;\n`\n\nexport interface CommentsListItemProps {\n avatarConfig?: {\n avatarSize: AvatarSize\n parentCommentAvatar: boolean\n replyAvatar: boolean\n threadCommentsAvatar: boolean\n }\n canReply?: boolean\n currentUser: CurrentUser\n hasReferencedValue?: boolean\n innerPadding?: StackProps['padding']\n isSelected: boolean\n mentionOptions: UserListWithPermissionsHookValue\n mode: CommentsUIMode\n onCopyLink?: (id: string) => void\n onCreateRetry: (id: string) => void\n onDelete: (id: string) => void\n onEdit: (id: string, payload: CommentUpdatePayload) => void\n onKeyDown?: (event: KeyboardEvent) => void\n onPathSelect?: (nextPath: CommentsSelectedPath) => void\n onReactionSelect?: (id: string, reaction: CommentReactionOption) => void\n onReply: (payload: CommentBaseCreatePayload) => void\n onStatusChange?: (id: string, status: CommentStatus) => void\n parentComment: CommentDocument\n readOnly?: boolean\n replies: CommentDocument[] | undefined\n}\n\nexport const CommentsListItem = memo(function CommentsListItem(props: CommentsListItemProps) {\n const {\n avatarConfig = DEFAULT_AVATAR_CONFIG,\n canReply,\n currentUser,\n hasReferencedValue,\n innerPadding,\n isSelected,\n mentionOptions,\n mode,\n onCopyLink,\n onCreateRetry,\n onDelete,\n onEdit,\n onKeyDown,\n onPathSelect,\n onReactionSelect,\n onReply,\n onStatusChange,\n parentComment,\n readOnly,\n replies = EMPTY_ARRAY,\n } = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const [value, setValue] = useState<CommentMessage>(EMPTY_ARRAY)\n const [collapsed, setCollapsed] = useState<boolean>(true)\n const replyInputRef = useRef<CommentInputHandle>(null)\n\n const {isTopLayer} = useLayer()\n\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n const [mouseOver, setMouseOver] = useState<boolean>(false)\n\n const handleMouseEnter = () => setMouseOver(true)\n const handleMouseLeave = () => setMouseOver(false)\n\n const handleReplySubmit = (nextValue: CommentMessage) => {\n const nextComment: CommentBaseCreatePayload = {\n message: nextValue,\n parentCommentId: parentComment._id,\n status: parentComment?.status || 'open',\n // Since this is a reply to an existing comment, we use the same thread ID as the parent\n threadId: parentComment.threadId,\n // A new comment will not have any reactions\n reactions: EMPTY_ARRAY,\n\n payload: {\n fieldPath: parentComment.target.path?.field || '',\n },\n }\n\n onReply?.(nextComment)\n setValue(EMPTY_ARRAY)\n }\n\n const startDiscard = useCallback(() => {\n if (!hasValue) {\n setValue(EMPTY_ARRAY)\n return\n }\n\n replyInputRef.current?.discardDialogController.open()\n }, [hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n // Discard input text with Escape\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n },\n [startDiscard],\n )\n\n const cancelDiscard = useCallback(() => {\n replyInputRef.current?.discardDialogController.close()\n }, [])\n\n const confirmDiscard = useCallback(() => {\n setValue(EMPTY_ARRAY)\n replyInputRef.current?.discardDialogController.close()\n replyInputRef.current?.focus()\n }, [])\n\n const handleThreadRootClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation()\n\n // Don't act if the click was caused by clicking\n // outside e.g. a popover or a menu\n if (!isTopLayer) return\n\n onPathSelect?.({\n fieldPath: parentComment.target.path?.field || '',\n origin: 'inspector',\n threadId: parentComment.threadId,\n })\n },\n [isTopLayer, onPathSelect, parentComment.target.path?.field, parentComment.threadId],\n )\n\n const handleExpand = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n setCollapsed(false)\n }, [])\n\n const splicedReplies = useMemo(() => {\n if (collapsed) return replies?.slice(-MAX_COLLAPSED_REPLIES)\n return replies\n }, [replies, collapsed])\n\n const showCollapseButton = useMemo(() => {\n if (!replies) return false\n return replies.length > MAX_COLLAPSED_REPLIES\n }, [replies])\n\n const expandButtonText = `${replies?.length - MAX_COLLAPSED_REPLIES} more ${\n replies?.length - MAX_COLLAPSED_REPLIES === 1 ? 'comment' : 'comments'\n }`\n\n return (\n <StyledThreadCard\n data-active={isSelected ? 'true' : 'false'}\n data-hovered={mouseOver ? 'true' : 'false'}\n data-testid=\"comments-list-item\"\n data-ui=\"CommentsListItem\"\n onClick={handleThreadRootClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <GhostButton\n data-ui=\"GhostButton\"\n aria-label={t('list-item.go-to-field-button.aria-label')}\n />\n\n <Stack\n as=\"ul\"\n padding={innerPadding}\n // Add some extra padding to the bottom if there is no reply input.\n // This is to make the UI look more balanced.\n paddingBottom={canReply ? undefined : 1}\n gap={4}\n >\n <Stack as=\"li\" {...applyCommentIdAttr(parentComment._id)}>\n <CommentsListItemLayout\n avatarSize={avatarConfig.avatarSize}\n canDelete={parentComment.authorId === currentUser.id}\n canEdit={parentComment.authorId === currentUser.id}\n comment={parentComment}\n currentUser={currentUser}\n hasError={parentComment._state?.type === 'createError'}\n hasReferencedValue={hasReferencedValue}\n intent={parentComment.context?.intent}\n isParent\n isRetrying={parentComment._state?.type === 'createRetrying'}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={onCopyLink}\n onCreateRetry={onCreateRetry}\n onDelete={onDelete}\n onEdit={onEdit}\n onInputKeyDown={onKeyDown}\n onReactionSelect={onReactionSelect}\n onStatusChange={onStatusChange}\n readOnly={readOnly}\n withAvatar={avatarConfig.parentCommentAvatar}\n />\n </Stack>\n\n {showCollapseButton && collapsed && (\n <Flex gap={1} paddingY={1} sizing=\"border\">\n <SpacerAvatar />\n\n <ExpandButton\n iconRight={ChevronDownIcon}\n mode=\"bleed\"\n onClick={handleExpand}\n text={expandButtonText}\n />\n </Flex>\n )}\n\n {splicedReplies.map((reply) => (\n <Stack key={reply._id} as=\"li\" {...applyCommentIdAttr(reply._id)}>\n <CommentsListItemLayout\n avatarSize={avatarConfig.avatarSize}\n canDelete={reply.authorId === currentUser.id}\n canEdit={reply.authorId === currentUser.id}\n comment={reply}\n currentUser={currentUser}\n hasError={reply._state?.type === 'createError'}\n isRetrying={reply._state?.type === 'createRetrying'}\n intent={commentIntentIfDiffers(parentComment, reply)}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={onCopyLink}\n onCreateRetry={onCreateRetry}\n onDelete={onDelete}\n onEdit={onEdit}\n onInputKeyDown={handleInputKeyDown}\n onReactionSelect={onReactionSelect}\n readOnly={readOnly}\n withAvatar={avatarConfig.threadCommentsAvatar}\n />\n </Stack>\n ))}\n\n {canReply && (\n <CommentInput\n avatarSize={avatarConfig.avatarSize}\n currentUser={currentUser}\n expandOnFocus\n mentionOptions={mentionOptions}\n onChange={setValue}\n onDiscardCancel={cancelDiscard}\n onDiscardConfirm={confirmDiscard}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleReplySubmit}\n placeholder={\n mode === 'upsell'\n ? t('compose.reply-placeholder-upsell')\n : t('compose.reply-placeholder')\n }\n readOnly={readOnly || mode === 'upsell'}\n ref={replyInputRef}\n value={value}\n withAvatar={avatarConfig.replyAvatar}\n />\n )}\n </Stack>\n </StyledThreadCard>\n )\n})\nCommentsListItem.displayName = 'Memo(CommentsListItem)'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAASQ,cACPC,GACwF;CACxF,OAAO;EACLK,QAAQ;GACNH,OAAOF,EAAE,qBAAqB;GAC9BG,MAAMH,EAAE,oBAAoB;GAC5BI,mBAAmBJ,EAAE,uBAAuB;EAC9C;EACAM,SAAS;GACPJ,OAAOF,EAAE,sBAAsB;GAC/BG,MAAMH,EAAE,qBAAqB;GAC7BI,mBAAmBJ,EAAE,wBAAwB;EAC/C;CACF;AACF;;;;;AAmBA,SAAOgB,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAR,UAAAE,SAAAL,WAAAM,WAAAF,SAAAH,UAAkEQ,OAClE,EAAAjB,MAAYJ,eAAeE,uBAAuB,GAACsB;CAAA,AAAAF,EAAA,OAAAlB,IAChBoB,KAAAF,EAAA,MAAhBE,KAAArB,cAAcC,CAAC,GAACkB,EAAA,KAAAlB,GAAAkB,EAAA,KAAAE;CACnC,IAAA,EAAAlB,OAAAC,MAAAC,sBAAyCiB,GAAWV,WAAA,WAAA,YAAgCW;CAAA,AAAAJ,EAAA,OAAAV,aAAAU,EAAA,OAAAJ,aAEnDQ,WAAA;EAC/BR,UAAUN,SAAS;CAAC,GACrBU,EAAA,KAAAV,WAAAU,EAAA,KAAAJ,WAAAI,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAFD,IAAAK,eAAqBD,IAEKE;CAAA,AAAAN,EAAA,OAAAL,UAOnBW,KAAAN,EAAA,MAFaM,KAAA,EAAAC,SACHZ,QACX,GAACK,EAAA,KAAAL,SAAAK,EAAA,KAAAM;CAAA,IAAAE;CAAA,AAAAR,EAAA,OAAAd,qBAAAc,EAAA,OAAAK,gBAAAL,EAAA,OAAAN,WACcc,KAAA;EAAAd;EAAAa,SAEJF;EAAYI,MACfvB;EAAiBwB,MACjB;CACR,GAACV,EAAA,KAAAd,mBAAAc,EAAA,KAAAK,cAAAL,EAAA,KAAAN,SAAAM,EAAA,MAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,QAAAM,MAAAN,EAAA,QAAAQ,MATKG,KAAA;EAAAC,cACQN;EAEbO,eACcL;CAMjB,GAACR,EAAA,MAAAM,IAAAN,EAAA,MAAAQ,IAAAR,EAAA,MAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,QAAAf,OAO6B6B,KAAAd,EAAA,OAA5Bc,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAI7B,UAAAA;CAAX,CAAA,GAAuBe,EAAA,MAAAf,MAAAe,EAAA,MAAAc;CAAA,IAAAC;CAAA,AAAAf,EAAA,QAAAT,SAAAS,EAAA,QAAAlB,KAE3BiC,KAAAxB,SAAS,oBAAC,cAAD;EAAmB,MAAA;EAAYT,UAAAA,EAAE,qBAAqB;CAAzC,CAAA,GAA0DkB,EAAA,MAAAT,OAAAS,EAAA,MAAAlB,GAAAkB,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,QAAAc,MAAAd,EAAA,QAAAe,MAHnFC,KAAA,qBAAC,OAAD;EAAY,KAAA;EAAZ,UAAA,CACEF,IAECC,EAHG;KAIEf,EAAA,MAAAc,IAAAd,EAAA,MAAAe,IAAAf,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CACD,OADCjB,EAAA,QAAAL,WAAAK,EAAA,QAAAW,MAAAX,EAAA,QAAAgB,MAAAhB,EAAA,QAAAhB,SArBViC,KAAA,oBAAC,UAAD;EACU,QAAAN;EAWA3B,QAAAA;EACL,IAAA;EACMW;EACF,OAAA;EAEPqB,UAAAA;CAjBK,CAAA,GAsBEhB,EAAA,MAAAL,SAAAK,EAAA,MAAAW,IAAAX,EAAA,MAAAgB,IAAAhB,EAAA,MAAAhB,OAAAgB,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA,KAtBTiB;AAsBS;;;;;ACpEb,MAAaK,eAAeD,uBAAOE,IAAAA,WAAAA;;;AAA2BE,CAAAA,CAAAA,EAAAA,UAAU;CACtE,IAAMC,QAAQP,YAAYM,MAAMC,KAAK,GAC/B,EAACF,QAAQ,MAAKC;CACpB,OAAOL,GAAG,aACKM,MAAMC,OAAOC,MAAMJ,MAAM,EAAEK,KAAI;AAEhD,CAAC,GCVKI,YAAY;AAElB,SAAgBC,QAAQC,OAA4C;CAClEA,MAAME,gBAAgB;AACxB;AAEA,SAASC,kBAAkBC,KAAwB;CACjD,IAAMC,OAAOD,IAAIE,WAAW,MAAM,IAAIF,MAAM,WAAWA;CAEvD,OACE,oBAAC,KAAD;EAAmBC;EAAM,QAAO;EAAS,KAAI;EAA+BN;EACzEK,UAAAA;CACA,GAFKA,GAEL;AAEP;;;;AAKA,MAAaG,kBAA8BC,SACrC,OAAOA,QAAS,WACJA,KAAKE,MAAMZ,SAElBW,CAAK,CAACE,SAASC,SAChBA,KAAKC,MAAMf,SAAS,IACfK,kBAAkBS,IAAI,IAGxBA,IACR,IAGIJ,MC/BHS,cAA4B,CAACF,cAAc;;;;AAKjD,SAAgBG,kBAAkBC,MAA4B;CAG5D,OAFKC,MAAMC,QAAQF,IAAI,IAEhBA,KAAKG,SAASC,SAAS;EAC5B,IAAIC,kBAA+B,CAACD,IAAI;EAExC,KAAK,IAAME,cAAcR,aACvBO,kBAAkBA,gBAAgBF,QAAQG,UAAU;EAGtD,OAAOD;CACT,CAAC,IAVgCL;AAWnC;ACZA,MAAMmB,mBAAmBL,uBAAOL,KAAK,CAAC,CAAA,WAAA;;;AAAO,CAAA,CAAA,OACpCI,GAAG,8GASX,GAEKO,gBAAkB,CAAA;AAExB,SAAAC,uBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAI,WACkED,KAAAF,EAAA,MAAjCE,KAAAT,kBAAkBM,MAAKI,QAAS,GAACH,EAAA,KAAAD,MAAAI,UAAAH,EAAA,KAAAE;CAAhE,IAAAC,WAA+BD,IAAoDE;CAEvC,OAFuCJ,EAAA,OAAAG,WAEvCC,KAAAJ,EAAA,MAArCI,KAAA,oBAAC,aAAD,EAAcD,SAAF,CAAA,GAAyBH,EAAA,KAAAG,UAAAH,EAAA,KAAAI,KAArCA;AAAqC;AAG9C,MAAMC,aAAqC;CAEzCC,OAAO;EACLC,QAAQT;EACRU,IAAIV;EACJW,IAAIX;EACJY,IAAIZ;EACJa,IAAIb;EACJc,IAAId;EACJe,IAAIf;EACJgB,YAAYhB;EACZiB,MAAMjB;CACR;CAEAkB,MAAM;EACJC,QAAQ9B;EACR+B,QAAQ/B;EACRgC,YAAYhC;CACd;CAEAiC,UAAU;EACRH,QAAQnB;EACRoB,QAAQpB;EACRqB,YAAYrB;CACd;CAGAuB,OAAO;EACLC,QAAQnC;EACRoC,IAAIpC;EACJ4B,MAAM5B;EACNqC,WAAWrC;EACXsC,eAAetC;EACfuC,MAAMvC;CACR;CAEAwC,OAAO,EACLC,UAAU7B,UACD,oBAAC,oBAAD;EAAoB,QAAQA,OAAO8B,OAAOC;EAAQ,UAAU;CAAM,CAAA,EAE7E;AACF;;;;;AAUA,SAAOG,yBAAAlC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACL,EAAA+B,WAAiBjC,OAIQG,KAAA8B,UAAAnC,eAAqBO;CACzB,OADyBJ,EAAA,OAAAE,KACzBE,KAAAJ,EAAA,MAFnBI,KAAA,oBAAC,kBAAD,EAAA,UACE,oBAAC,cAAD;EAAqB,OAAAF;EAAmCG;CAAU,CAAA,EADnD,CAAA,GAEEL,EAAA,KAAAE,IAAAF,EAAA,KAAAI,KAFnBA;AAEmB;ACrFvB,SAAOgC,aAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,KAAAC;CAAA,AAAAH,EAAA,OAAAD,SACuBG,MAAAF,EAAA,IAAAG,OAAAH,EAAA,OAA5B,CAAAE,QAAAC,QAAuBJ,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,KAAAF,EAAA,KAAAG;CAAA,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAYxBN,KAAA,oBAAA,QAAA;EACI,GAAA;EACK,QAAA;EACM,aAAA;EACC,eAAA;CAAQ,CAAA,GAExBC,KAAA,oBAAA,QAAA;EACI,GAAA;EACK,QAAA;EACM,aAAA;EACC,eAAA;CAAQ,CAAA,GAExBC,KAAA,oBAAA,QAAA;EACI,GAAA;EACK,QAAA;EACM,aAAA;EACC,eAAA;CAAQ,CAAA,GAExBC,KAAA,oBAAA,QAAA;EACI,GAAA;EACK,QAAA;EACM,aAAA;CAAG,CAAA,GAElBC,KAAA,oBAAA,QAAA;EACW,UAAA;EACA,UAAA;EACP,GAAA;EACG,MAAA;CAAc,CAAA,GACnBR,EAAA,KAAAI,IAAAJ,EAAA,KAAAK,IAAAL,EAAA,KAAAM,IAAAN,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,OAAAJ,KAAAJ,EAAA,IAAAK,KAAAL,EAAA,IAAAM,KAAAN,EAAA,IAAAO,KAAAP,EAAA,IAAAQ,KAAAR,EAAA;CAAA,IAAAW;CACE,OADFX,EAAA,OAAAE,OAAAF,EAAA,OAAAG,QAtCJQ,KAAA,qBAAA,OAAA;EACmB,oBAAA;EACZ,MAAA;EACE,QAAA;EACFT;EACG,SAAA;EACF,OAAA;EACA,OAAA;EAA4B,GAC9BC;EARN,UAAA;GAUEC;GAMAC;GAMAC;GAMAC;GAKAC;EAMI;KAAAR,EAAA,KAAAE,KAAAF,EAAA,KAAAG,MAAAH,EAAA,MAAAW,MAAAA,KAAAX,EAAA,KAvCNW;AAuCM;ACzCV,MAAaG,YAAYD,OAAOD,IAAI,CAAC,CAAA,WAAA;;;;ACcrC,SAAOmB,qBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAN,SAAAC,aAA4BG,OAC5B,EAAAG,MAAYd,eAAeE,uBAAuB,GAClD,CAAAa,aAAAC,kBAAsCjB,SAAgC,IAAI,GAC1E,CAAAkB,cAAAC,mBAAwCnB,SAAiB,CAAC,GAACoB;CAAA,AAAAP,EAAA,OAAAG,cAkBxDI,KAAAP,EAAA,MAfDO,MAAAC,UAAA;EACE,IAAAC,eAAqBN,aAAWO,iBAAmB,QAAe,CAAC,CAAAC,UAA9C;EAKrB,AAHIH,MAAKI,QAAS,gBAChBN,iBAAgBO,UAAWA,OAAO,KAAKJ,YAAY,GAEjDD,MAAKI,QAAS,eAChBN,iBAAgBQ,YAAWD,SAAO,IAAIJ,gBAAgBA,YAAY;CACnE,GAOFT,EAAA,KAAAG,aAAAH,EAAA,KAAAO;CAhBH,IAAAQ,oBAA0BR,IAkBzBS;CAAA,AAAAhB,EAAA,OAAAJ,YAAAI,EAAA,OAAAL,WAAAK,EAAA,OAAAG,eAGCa,MAAAC,YAAA;EACE,IAAAC,QAAcf,cACVgB,MAAKC,KAAMjB,YAAWO,iBAAkB,QAAQ,CAAC,CAAC,CAAAW,QAASb,QAAKc,aAC/D,IAFS;EAId1B,AADAU,gBAAgBY,KAAK,GACrBtB,SAASD,QAAQuB,MAAM;CAAC,GACzBlB,EAAA,KAAAJ,UAAAI,EAAA,KAAAL,SAAAK,EAAA,KAAAG,aAAAH,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAPH,IAAAuB,oBAA0BP,IASzBQ,IAAAC;CAGDvC,AAHCc,EAAA,OAAAK,gBAAAL,EAAA,OAAAG,eAGSqB,WAAA;EACR,IAAI,CAACrB,aAAW;EAChB,IAAAuB,oBAA0BP,MAAKC,KAAMjB,YAAWO,iBAAkB,QAAQ,CAAC;EAC3E,AAAIgB,kBAAiBf,SAAU,KAC7Be,kBAAkBrB,aAAa,CAAAsB,MAAO;CACvC,GACAF,KAAA,CAACpB,cAAcF,WAAW,GAACH,EAAA,KAAAK,cAAAL,EAAA,KAAAG,aAAAH,EAAA,KAAAwB,IAAAxB,EAAA,KAAAyB,OAAAD,KAAAxB,EAAA,IAAAyB,KAAAzB,EAAA,KAN9Bd,UAAUsC,IAMPC,EAA2B;CAAC,IAAAG;CAAA,IAAA5B,EAAA,QAAAuB,qBAAAvB,EAAA,QAAAL,WAAAK,EAAA,QAAAE,GAAA;EAAA,IAAA2B;EA8BzB7B,AA9ByBA,EAAA,QAAAuB,qBAAAvB,EAAA,QAAAE,KAUd2B,MAAAC,MAAA;GACX,IAAAC,QAAc1C,wBAAwByC,EAACE;GAAW,OAGhD,oBAAC,QAAD;IAEc,cAAA9B,EAAE,mCAAmC,EAAA+B,cACjCH,EAACI,SAAUJ,EAACE,UAC5B,CAAC;IACI,MAAA;IACIT,SAAAA;IACA,SAAA;IACJ,MAAA;IACK,UAAA;IAEV,UAAA,oBAAC,WAAD;KAAiB,OAAA;KAAe,MAAA;KAC7BQ,UAAAA;IADO,CAAA;GAXH,GACFD,EAACE,SADC;EAcE,GAEdhC,EAAA,MAAAuB,mBAAAvB,EAAA,MAAAE,GAAAF,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KApBA4B,KAAAjC,QAAOwC,IAAKN,EAoBZ,GAAC7B,EAAA,MAAAuB,mBAAAvB,EAAA,MAAAL,SAAAK,EAAA,MAAAE,GAAAF,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CACG,OADH7B,EAAA,QAAAe,qBAAAf,EAAA,QAAA4B,MA3BJC,KAAA,oBAAC,MAAD;EACuBpC,qBAAAA;EAChB,KAAA;EACMsB,WAAAA;EACNX,KAAAA;EACA,MAAA;EAEJwB,UAAAA;CAPE,CAAA,GA4BE5B,EAAA,MAAAe,mBAAAf,EAAA,MAAA4B,IAAA5B,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KA5BP6B;AA4BO;AClFX,MAAMsB,8BAAkE,CAAC,OAAO,QAAQ;AAgBxF,SAAOiB,2BAAAP,OAAA;CAAA,IAAAQ,IAAAC,EAAA,EAAA,GACL,EAAAhB,aAAAC,YAAAC,UAAAE,SAAAC,UAAAC,kBAAAP,SAAuFQ,OACvF,CAAAU,eAAAC,oBAA0C9B,SAAmC,IAAI,GACjF+B,aAAmBhC,OAA8B,IAAI,GAErD,CAAAqB,MAAAY,WAAwBhC,SAAkB,EAAK,GAC/C,EAAAsB,MAAYnB,eAAeE,uBAAuB,GAAC4B;CAAA,AAAAN,EAAA,OAAAf,eAAAe,EAAA,OAAAd,cAAAc,EAAA,OAAAP,QAEnBa,WAAA;EAC9B,IAAAC,OAAa,CAACd;EAGd,AAFAY,QAAQE,IAAI,GAERA,OACFrB,aAAa,IAEbD,cAAc;CACf,GACFe,EAAA,KAAAf,aAAAe,EAAA,KAAAd,YAAAc,EAAA,KAAAP,MAAAO,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CATD,IAAAQ,cAAoBF,IASeG;CAAA,AAAAT,EAAA,OAAAf,eAAAe,EAAA,OAAAP,QAEHgB,WAAA;EACzBhB,SAELY,QAAQ,EAAK,GACbpB,cAAc;CAAC,GAChBe,EAAA,KAAAf,aAAAe,EAAA,KAAAP,MAAAO,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CALD,IAAAU,cAAoBD,IAKGE;CAAA,AAAAX,EAAA,OAAAE,iBAAAF,EAAA,OAAAU,eAAAV,EAAA,OAAAP,QAEiBkB,WAAA;EACjClB,SAELiB,YAAY,GACZR,eAAaU,MAAQ;CAAC,GACvBZ,EAAA,KAAAE,eAAAF,EAAA,KAAAU,aAAAV,EAAA,KAAAP,MAAAO,EAAA,MAAAW,MAAAA,KAAAX,EAAA;CALD,IAAAa,sBAA4BF,IAKUG;CAAA,AAAAd,EAAA,QAAAa,sBASnCC,KAAAd,EAAA,OANDc,MAAAC,UAAA;EACE,IAAA,EAAAC,KAAAC,aAAwBF;EAExB,CAAKE,YAAYD,QAAQ,SAAUA,QAAQ,YAAYA,QAAQ,UAC7DH,oBAAoB;CACrB,GACFb,EAAA,MAAAa,qBAAAb,EAAA,MAAAc;CAPH,IAAAI,gBAAsBJ,IASrBK;CAEDnD,AAFCgC,EAAA,QAAAE,gBAE0EiB,KAAAnB,EAAA,OAAzCmB,WAAM,CAACf,WAAUgB,SAAUlB,aAAa,GAACF,EAAA,MAAAE,eAAAF,EAAA,MAAAmB,KAA3EnD,qBAAqB0C,aAAaS,EAAyC;CAAC,IAAAE;CAAA,AAAArB,EAAA,QAAAU,eAAAV,EAAA,QAAAb,YAG1EkC,MAAAjC,WAAA;EAEEsB,AADAvB,SAASC,MAAM,GACfsB,YAAY;CAAC,GACdV,EAAA,MAAAU,aAAAV,EAAA,MAAAb,UAAAa,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAJH,IAAAsB,eAAqBD,IAMpBE;CAAA,IAAAvB,EAAA,QAAAQ,eAAAR,EAAA,QAAAhB,QAAAgB,EAAA,QAAAP,QAAAO,EAAA,QAAAV,YAAAU,EAAA,QAAAT,oBAAAS,EAAA,QAAAL,GAAA;EAIC,IAAA6B,MAAYjC,iBAAiB;GAAAE;GAAAC,gBAIrBC,EADJX,SAAS,WACH,+CACA,qCAAqC;GAACW;EAEhD,CAAC;EAUCK,AAPKuB,KAAAtD,aAAauD,KAAK;GAAA,iBACN/B;GAAI,iBACJ;GAAM,UACXH,YAAYN,SAAS;GAAQ,IACnC;GAAuB,SAClBwB;GAAW,KACfL;EACT,CAAC,GAACH,EAAA,MAAAQ,aAAAR,EAAA,MAAAhB,MAAAgB,EAAA,MAAAP,MAAAO,EAAA,MAAAV,UAAAU,EAAA,MAAAT,kBAAAS,EAAA,MAAAL,GAAAK,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAnBJ,IAAAyB,SAYEF,IAQ0DG;CAAA,AAAA1B,EAAA,QAAAsB,gBAAAtB,EAAA,QAAAX,WAUxDqC,KAAA,oBAAC,sBAAD;EAAgCJ,UAAAA;EAAuBjC;CAAO,CAAA,GAAIW,EAAA,MAAAsB,cAAAtB,EAAA,MAAAX,SAAAW,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAkB,iBAAAlB,EAAA,QAAA0B,MAPpEC,KAAA,oBAAC,MAAD;EACkB,mBAAA;EACLT,WAAAA;EACF,SAAA;EACD,QAAA;EACH,MAAA;EAELQ,UAAAA;CAPG,CAAA,GAQE1B,EAAA,MAAAkB,eAAAlB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CATT,IAAA4B,iBACED,IASDE;CAcW,OAdX7B,EAAA,QAAAyB,UAAAzB,EAAA,QAAAP,QAAAO,EAAA,QAAA4B,kBAGCC,KAAA,oBAAC,WAAD;EACE,eAAA;EACSD,SAAAA;EACW9C,oBAAAA;EACdW;EACI,WAAA;EACV,QAAA;EACKW,KAAAA;EACA,MAAA;EAEJqB,UAAAA;CAVK,CAAA,GAWEzB,EAAA,MAAAyB,QAAAzB,EAAA,MAAAP,MAAAO,EAAA,MAAA4B,gBAAA5B,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA,KAXV6B;AAWU;AC/Gd,MAEMkB,eAAeX,OAAOH,KAAK,CAAC,CAAA,WAAA;;;sBAI5Be,YAAYZ,OAAOa,IAAAA,WAAAA;;;AAAG,CAAA,CAAA,yBAItBC,aAAad,OAAOF,IAAI,CAAC,CAACiB,MAAM,EAACC,MAAMN,EAAS,CAAC,CAAC,CAAA,WAAA;;;yEAQlDO,UAAUjB,OAAOL,GAAG,CAAC,CAAA,WAAA;;;sCAKrBuB,4BAA4B;AAQlC,SAAAK,gBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACE,EAAAN,eAAAC,SAAAC,WAAyCE,OACzC,CAAAG,QAAetB,QAAQiB,MAAM,GAC7B,EAAAM,MAAYzB,eAAeI,uBAAuB;CAGlD,IADsBa,kBAAkBE,QACvB;EACf,IAAAQ,UAAgBT,UAAA,YAAAU,KAAAA,GAC8CC,KAAAL,MAAIM,aAAaC;EAAG,OAAHT,EAAA,OAAAK,WAAAL,EAAA,OAAAG,KAAAH,EAAA,OAAAO,MAAxEE,KAAAN,EAAE,2BAA2B;GAAAE;GAAAK,SAAmB,EAAAC,MAAOJ,GAAiB;EAAC,CAAC,GAACP,EAAA,KAAAK,SAAAL,EAAA,KAAAG,GAAAH,EAAA,KAAAO,IAAAP,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAA3ES;CAA2E;CACnF,IAAAF;CAE8E,OAF9EP,EAAA,OAAAG,KAAAH,EAAA,OAAAE,MAAAM,eAEMD,KAAAL,MAAIM,eAAiBL,EAAE,gDAAgD,GAACH,EAAA,KAAAG,GAAAH,EAAA,KAAAE,MAAAM,aAAAR,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IAAxEO;AAAwE;AAUjF,SAAOY,6BAAApB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAY,UAAAO;CAAA,AAAApB,EAAA,OAAAD,SACiCc,WAAAb,EAAA,IAAAoB,YAAApB,EAAA,OAAtC,CAAAa,aAAAO,aAAiCrB,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAa,UAAAb,EAAA,KAAAoB;CAAA,IAAAb;CAAA,AAAAP,EAAA,OAAAoB,YAI6Bb,KAAAP,EAAA,MAAtDO,KAAA,oBAAC,qCAAD,EAAoC,GAAKa,UAAS,CAAA,GAAIpB,EAAA,KAAAoB,WAAApB,EAAA,KAAAO;CAAA,IAAAE;CAAA,AAAAT,EAAA,OAAAa,WAI1CJ,KAAAT,EAAA,MAArBS,KAAA,oBAAA,OAAA,EAAMI,SAAe,CAAA,GAAAb,EAAA,KAAAa,UAAAb,EAAA,KAAAS;CAAA,IAAAY;CACb,OADarB,EAAA,OAAAO,MAAAP,EAAA,OAAAS,MALvBY,KAAA,oBAAC,WAAD;EACW,SAAAd;EACC,WAAA;EACV,QAAA;EAEAE,UAAAA;CALM,CAAA,GAMET,EAAA,KAAAO,IAAAP,EAAA,KAAAS,IAAAT,EAAA,KAAAqB,MAAAA,KAAArB,EAAA,IANVqB;AAMU;AAId,SAAAC,kBAAAf,IAAA;CAAA,IAAAP,IAAAC,EAAA,CAAA,GAA2B,EAAAN,eAAAuB,YAAAX,IAAoEE;CAAA,AAAAT,EAAA,OAAAuB,OAAAC,IAAA,2BAAA,KAC5Df,KAAA;EAAAgB,OAAQ;EAAMC,MAAQ;CAAa,GAAC1B,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAArE,IAAA2B,aAAmBlD,cAAcgC,EAAoC;CACrE,IAAIS,QAAOU,WAAY,GAAC,OAAS;CAAI,IAAAC;CAAA,IAAA7B,EAAA,OAAAL,iBAAAK,EAAA,OAAA2B,cAAA3B,EAAA,OAAAkB,SAAA;EAQrC,IAAAY,QAAcH,WAAUI,cAAeb,OAAO;EAC9CW,WAAsC,CAAA;EACtC,KAAA,IAAAG,IAAa,GAAGA,IAAIF,MAAKF,QAASI,KAAG;GACnC,IAAAC,OAAaH,MAAME;GAEnB,IAAIC,KAAIP,SAAU,WAAS;IAEzBG,SAAQK,KAAM,oBAAC,YAAD,EAAA,UAAkCD,KAAIE,MAA3B,GAAM,WAAWH,GAAjB,CAA+C;IACxE;GAAQ;GAGV,IAAAI,WAAiBN,MAAME,IAAI;GAG3B,IADEI,YAAYA,SAAQV,SAAU,aAAajC,0BAAyB6C,KAAMF,SAAQD,KAAM,GAC5D;IAG5B,IAAA,CAAAd,MAA6Be,SAAQD,MAAMI,MAAO9C,yBAA+B,KAApD,CAAA,GAAtB+C,gBAAAnB,OAAAf,KAAAA,IAAA,KAAAe;IAaPe,AAXAP,SAAQK,KAEN,qBAAC,WAAD,EAAA,UAAA,CACE,oBAAC,YAAD;KAAmB,QAAA;KACjB,UAAA,oBAAC,iBAAD;MAAgCvC;MAAwB,SAAAqC,MAAM;MAAW,QAAAC,KAAIE;KAAM,CAAA;IAD1E,CAAA,GAGX,oBAAC,YAAD,EAAA,UAAaK,cAAF,CAAA,CAJH,EAAA,GAAMP,KAAIE,KAAV,CAMZ,GAGAC,SAAQD,QAASC,SAAQD,MAAMM,MAAOD,cAAaZ,MAAO;IAC1D;GAAQ;GAKVC,SAAQK,KAEN,oBAAC,YAAD;IAAoC,QAAA;IAClC,UAAA,oBAAC,iBAAD;KAAgCvC;KAAwB,SAAAqC,MAAM;KAAW,QAAAC,KAAIE;IAAM,CAAA;GAD1E,GAAMF,KAAIE,KAAV,CAGb;EAAC;EACFnC,AAAAA,EAAA,KAAAL,eAAAK,EAAA,KAAA2B,YAAA3B,EAAA,KAAAkB,SAAAlB,EAAA,KAAA6B;CAAA,OAAAA,WAAA7B,EAAA;CAAA,OAEM6B;AAAQ;AAGjB,SAAAa,oCAAA3C,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGE,EAAAe,aAAAC,cAAAC,YAA6CnB,OAC7C,EAAAI,MAAYzB,eAAeI,uBAAuB,GAACyB;CAAA,AAAAP,EAAA,OAAAgB,eAAAhB,EAAA,OAAAkB,WAEtBX,WACtBS,cACE,oBAAC,mBAAD;EAAkC,eAAAA,YAAW2B;EAAczB;CAAO,CAAA,IADhD,MAE1BlB,EAAA,KAAAgB,aAAAhB,EAAA,KAAAkB,SAAAlB,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAHD,IAAA4C,WAAiBrC,IAQUE,KAAA5B,wBAAwBoC,eAAaI;CAAA,AAAArB,EAAA,OAAAS,KACrDY,KAAArB,EAAA,MAFPqB,KAAA,oBAAC,MAAD;EAAc,SAAA;EAAwB,eAAA;EAAe,YAAA;EACnD,UAAA,oBAAC,WAAD;GAAiB,MAAA;GAAIZ,UAAAA;EAAX,CAAA;CADP,CAAA,GAEET,EAAA,KAAAS,IAAAT,EAAA,KAAAqB;CAAA,IAAAwB;CAAA,AAAA7C,EAAA,OAAAiB,eAMmB4B,KAAA7C,EAAA,MAAd6C,KAAA,EAAA5B,aAAa,GAACjB,EAAA,KAAAiB,cAAAjB,EAAA,KAAA6C;CAAA,IAAAC;CAAA,AAAA9C,EAAA,OAAAiB,eAG6C6B,KAAA9C,EAAA,MAAnD8C,WAAM,oBAAC,YAAD;EAAY,OAAA;EAAO7B,UAAAA;CAAR,CAAA,GAAkCjB,EAAA,KAAAiB,cAAAjB,EAAA,KAAA8C;CAAA,IAAAC;CAAA,AAAA/C,EAAA,OAAA4C,YAAA5C,EAAA,QAAA8C,MAFvDC,KAAA;EAAAH;EAAAI,cAEIF;EAAmDzE,MAC3D4E;CAKR,GAACjD,EAAA,KAAA4C,UAAA5C,EAAA,MAAA8C,IAAA9C,EAAA,MAAA+C,MAAAA,KAAA/C,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAG,KAAAH,EAAA,QAAA6C,MAAA7C,EAAA,QAAA+C,MAbLG,KAAA,oBAAC,SAAD,EAAA,UACE,oBAAC,WAAD;EACK/C;EACK,SAAA;EACA,QAAA0C;EACI,YAAAE;CAQX,CAAA,EAbG,CAAA,GAeE/C,EAAA,MAAAG,GAAAH,EAAA,MAAA6C,IAAA7C,EAAA,MAAA+C,IAAA/C,EAAA,MAAAkD,MAAAA,KAAAlD,EAAA;CAAA,IAAAmD;CACG,OADHnD,EAAA,QAAAqB,MAAArB,EAAA,QAAAkD,MApBZC,KAAA,qBAAC,cAAD;EAAuB,SAAA;EAAvB,UAAA,CACE9B,IAIA6B,EALW;KAqBElD,EAAA,MAAAqB,IAAArB,EAAA,MAAAkD,IAAAlD,EAAA,MAAAmD,MAAAA,KAAAnD,EAAA,KArBfmD;AAqBe;AAjCnB,SAAAF,QAAA1C,IAAA;CAyBmB,IAAA,EAAAM,aAAAN;CAAU,OACf,qBAAA,YAAA,EAAA,UAAA;EACE,oBAAC,YAAD;GAAY,OAAA;GAAOM;EAAR,CAAA;EAA8B;EAAC,oBAAA,OAAA,CAAO,CAAA;EAAC;CAAG,EAAA,CAAA;AACpD;;;;;;;AC7JjB,MAAayC,kBAAkBD,OAAOD,IAAI,CAAC,CAAA,WAAA;;;;;;;;;;;;;;ACyB3C,SAASyB,qBAAqBC,WAAkC;CAC9D,IAAMC,UAAUD,UAAUE,QACvBC,KAAKC,aAAa;EACjB,IAAM,EAACC,cAAaD;EAQpB,OANKD,IAAIE,eACPF,IAAIE,aAAa,CAAA,IAGnBF,IAAIE,UAAU,CAACC,KAAKF,QAAQ,GAErBD;CACT,GACA,CAAC,CACH;CAYA,OAPeM,OAAOC,QAAQT,OAAO,CAAC,CAACU,MAAM,CAACC,QAAQ,CAACC,WACtCb,UAAUe,WAAWC,MAAMA,EAAEX,cAAcO,KAGnDE,IAFQd,UAAUe,WAAWC,MAAMA,EAAEX,cAAcQ,KAE1CI,CAGXT;AACT;AAEA,MAAMU,sBAAoB,EAACC,MAAMC,qBAE7B,oBAAC,QAAD;CAAU,UAAU;CAAG,MAAK;CAAQ,SAAS;CAAG,QAAO;CAAO,UAAUD;CACtE,UAAA,oBAAC,MAAD;EAAM,UAAU;EAAG,UAAU;EAC3B,UAAA,oBAAC,WAAD;GAAS,SAAA;GAAQ,SAASC;GAAgB,UAAUD;GAClD,UAAA,oBAAC,MAAD;IAAM,MAAM;IACV,UAAA,oBAAC,cAAD,CAAa,CAAA;GACT,CAAA;EACC,CAAA;CACL,CAAA;AACE,CAAA,GAYDO,sBAAsB5C,KAAK,SAAA4C,oBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAGtC,EAAAP,aAAAC,UAAAvB,WAAAwB,UAAAC,SAA2DE,OAAKG;CAAA,AAAAF,EAAA,OAAAL,WAQ7DO,KAAAF,EAAA,MANDE,MAAAC,SAAA;EACE,IAAAC,SAAe3C,yBAAwB4C,MAAMC,MAAOA,EAAC7B,cAAe0B,IAAI;EAExE,AAAIC,UACFT,SAASS,MAAM;CAChB,GACFJ,EAAA,KAAAL,UAAAK,EAAA,KAAAE;CAPH,IAAAK,eAAqBL;CAcjBR,aAAWc;CAAI,IAAAC;CAAA,IAAAT,EAAA,OAAAN,aAAAc,MAAAR,EAAA,OAAA5B,WAAA;EAAA,IAAAsC;EADmEV,AACnEA,EAAA,OAAAN,aAAAc,KAD0CE,KAAAV,EAAA,MAAnCU,MAAAtB,MAAOA,EAACuB,WAAYjB,aAAWc,IAAIR,EAAA,KAAAN,aAAAc,IAAAR,EAAA,KAAAU,KAApDD,KAAArC,UAASwC,OAAQF,EAAmC,CAAC,CAAAG,IAAKC,OAAkB,GAACd,EAAA,KAAAN,aAAAc,IAAAR,EAAA,KAAA5B,WAAA4B,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CADtF,IAAAe,2BACEN,IAC8BC;CAAA,AAAAV,EAAA,OAAA5B,YAOkCsC,KAAAV,EAAA,MAAzDU,KAHSvC,qBAAqBC,SAG9BC,CAAO,CAAAuC,OAAQI,QAAyC,GAAChB,EAAA,KAAA5B,WAAA4B,EAAA,KAAAU;CAJlE,IAAAO,mBAIEP,IACaQ;CAAA,AAAAlB,EAAA,OAAAiB,mBASbC,KAAAlB,EAAA,OAPmEkB,YAAO;EAAAC,WAG/DtC,OAAMuC,KAAMvC,OAAMwC,YAAaJ,gBAAgB,CAAC;EAACA,kBAE1C,CAAA;EAA6BK,iBAC9B,CAAA;CACnB,IAAEtB,EAAA,KAAAiB,kBAAAjB,EAAA,MAAAkB;CAPF,IAAA,CAAAK,wBAAAC,6BAA4DnE,SAAS6D,EAOnE,GAGF,EAAAI,oBAAwBC;CACxB,IAAIA,uBAAsBN,qBAAsBA,kBAAgB;EAC9D,IAAA,EAAAE,cAAoBI,wBAAsBE,IAAAC,IAAAC;EAAA,IAAA3B,EAAA,QAAAiB,oBAAAjB,EAAA,QAAAmB,WAAA;GAAA,IAAAS;GAkBQ5B,AAlBRA,EAAA,QAAAmB,YAczCS,KAAA5B,EAAA,OAbuC4B,MAAAC,IAAAC,OAAA;IAAC,IAAA,CAAA9C,SAAA6C,IAAS,CAAA5C,SAAA6C,IAChD5C,SAAeiC,UAASY,QAAS/C,KAAK,GACtCK,SAAe8B,UAASY,QAAS9C,KAAK;IAQrC,OANGC,WAAW,KACN,IAGLG,WAAW,KACN,KAGFH,SAASG;GAAM,GACvBW,EAAA,MAAAmB,WAAAnB,EAAA,MAAA4B,KAbDN,kBAAkBL,iBAAgBlC,KAAM6C,EAavC,GAEDJ,KAAAA,2BACEP,KAAAA,kBACWS,KAAAJ,gBAAeT,IAAKmB,QAAgB,GAAChC,EAAA,MAAAiB,kBAAAjB,EAAA,MAAAmB,WAAAnB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,IAAA3B,EAAA,MAAAsB;EAAA,OAAAA,AAAAG,KAAAzB,EAAA,KAAA0B,KAAA1B,EAAA,KAAA2B,KAAA3B,EAAA,KAAAsB,kBAAAtB,EAAA;EAFlDwB,GAA0B;GAAAP,kBACxBA;GAAgBE,WACLO;GAAqCJ;EAElD,CAAC;CAAC;CACH,IAAAG;CAAA,IAAAzB,EAAA,QAAAN,eAAAM,EAAA,QAAAe,4BAAAf,EAAA,QAAAO,gBAAAP,EAAA,QAAAH,QAAAG,EAAA,QAAAJ,YAAAI,EAAA,QAAAsB,iBAAA;EAAA,IAAAI;EAsCO1B,AAtCPA,EAAA,QAAAN,eAAAM,EAAA,QAAAe,4BAAAf,EAAA,QAAAO,gBAAAP,EAAA,QAAAH,QAAAG,EAAA,QAAAJ,YAK0B8B,MAAAC,OAAA;GAAC,IAAA,CAAAM,QAAAC,iBAAAP,IACpBQ,aAAmBpB,yBAAwBqB,SAAUjC,MAAI,GACzDkC,UAAgBH,cAAarB,IAAKyB,MAAe,GACjDC,QAAc/E,wBAAwB2C;GAAK,OAGzC,oBAAC,8BAAD;IAEeT;IACCS,cAAAA;IACLkC;IAET,UAAA,oBAAC,iBAAD;KAAsB,MAAA;KACpB,UAAA,oBAAC,QAAD;MACY,UAAAzC,YAAYC,SAAS;MAC1B,MAAA;MACI,eAAMU,aAAaJ,MAAI;MACvB,SAAA;MACF,QAAA;MACGgC,UAAAA;MACJ,MAAAA,aAAA,YAAA;MAEN,UAAA,qBAAC,MAAD;OAAY,OAAA;OAAc,KAAA;OAA1B,UAAA,CACE,oBAAC,WAAD;QAAiB,MAAA;QAAII,UAAAA;OAAX,CAAA,GAEV,oBAAC,MAAD;QAAY,MAAA;QAAW,QAAAJ,aAAA,aAAA;QACpBD,UAAAA,eAAaM;OADX,CAAA,CAHF;;KATE,CAAA;IADK,CAAA;GANW,GACtBrC,MADsB;EAyBE,GAElCH,EAAA,MAAAN,aAAAM,EAAA,MAAAe,0BAAAf,EAAA,MAAAO,cAAAP,EAAA,MAAAH,MAAAG,EAAA,MAAAJ,UAAAI,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA,KAjCAyB,KAAAH,gBAAeT,IAAKa,EAiCpB,GAAC1B,EAAA,MAAAN,aAAAM,EAAA,MAAAe,0BAAAf,EAAA,MAAAO,cAAAP,EAAA,MAAAH,MAAAG,EAAA,MAAAJ,UAAAI,EAAA,MAAAsB,iBAAAtB,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAAA,AAAA1B,EAAA,QAAAO,eAK4CmB,KAAA1B,EAAA,OAAhC0B,MAAAe,QAAOlC,aAAaD,IAAC7B,SAAU,GAACuB,EAAA,MAAAO,cAAAP,EAAA,MAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,QAAAH,QAAAG,EAAA,QAAAJ,YAAAI,EAAA,QAAA0B,MAH9CC,KAAA,oBAAC,iBAAD;EAAsB,MAAA;EACpB,UAAA,oBAAC,4BAAD;GACQ9B;GACI,UAAA6B;GACDjE,SAAAA;GACCmC;GACQN,kBAAAA;EAAgB,CAAA;CANtB,CAAA,GAQEU,EAAA,MAAAH,MAAAG,EAAA,MAAAJ,UAAAI,EAAA,MAAA0B,IAAA1B,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAEf,OAFe5B,EAAA,QAAAyB,MAAAzB,EAAA,QAAA2B,MA7CtBC,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAAQ,MAAA;EAChC,UAAA,qBAAC,6BAAD,EAAA,UAAA,CACGH,IAmCDE,EApCwB,EAAA,CAAA;CADvB,CAAA,GA+CE3B,EAAA,MAAAyB,IAAAzB,EAAA,MAAA2B,IAAA3B,EAAA,MAAA4B,MAAAA,KAAA5B,EAAA,KA/CP4B;AA+CO,CAEV;AACD9B,oBAAoB4C,cAAc;AAlHM,SAAA5B,QAAA6B,KAAA;CAAA,OAiBoCvD,IAACX;AAAU;AAjB/C,SAAAuC,SAAAd,IAAA;CAyBb,IAAA,CAAA0C,UAAA1C;CAAM,OAAK1C,wBAAwB2C;AAAK;AAzB3B,SAAA6B,SAAA9B,IAAA;CA0DF,IAAA,CAAA2C,UAAA3C;CAAM,OAAKC;AAAI;AA1Db,SAAAmC,OAAAQ,KAAA;CAAA,OAoEW1D,IAACuB;AAAO;ACpI3D,MAAM6D,oBAAoB,EACxBC,MACAC,gBACAC,QAMA,oBAAC,UAAD;CACE,cAAYA,EAAE,gDAAgD;CAC9D,MAAML;CACN,MAAK;CACL,UAAUG;CACV,cAAc,EAACG,SAASF,eAAc;AAAE,CAAA,GAItCG,gBAA4C,EAChDC,WAAW,aACb,GAEMC,eAAevB,OAAOJ,IAAI,CAAC,CAAA,WAAA;;;;AAsBjC,SAAO2C,4BAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAjB,WAAAC,SAAAC,UAAAC,MAAAC,YAAAC,eAAAC,aAAAC,aAAAC,YAAAC,kBAAAE,gBAAAC,UAAAC,WAcIE,OAEJG,iBAAuBC,GAAQf,cAAAC,iBAAAC,cAE/B,EAAAZ,MAAYZ,eAAeG,uBAAuB,GAElDmC,wBAA8BD,GAAQnB,aAAAC,WAAAG,aAAmCiB;CAAA,AAAAL,EAAA,OAAAb,QAAAa,EAAA,OAAAT,eAAAS,EAAA,OAAAR,cAAAQ,EAAA,OAAAP,oBAAAO,EAAA,OAAAJ,YAKhES,KAAAZ,oBACC,oBAAC,4BAAD;EACQN;EACOI;EACDC;EACFC,UAAAA;EACDzB,SAAAA;EACC4B;EACQrB;CAAgB,CAAA,GAErCyB,EAAA,KAAAb,MAAAa,EAAA,KAAAT,aAAAS,EAAA,KAAAR,YAAAQ,EAAA,KAAAP,kBAAAO,EAAA,KAAAJ,UAAAI,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAd,YAAAc,EAAA,OAAAL,kBAAAK,EAAA,OAAAJ,YAAAI,EAAA,OAAAH,UAAAG,EAAA,QAAAtB,KAEA4B,KAAApB,YAAAS,kBACC,oBAAC,UAAD;EAEI,cACIjB,EADJmB,WAAW,SACL,0CACA,uCAAuC;EAEnC,eAAA;EACFD,UAAAA;EACJ,MAAAC,WAAW,SAAX/C,sBAAAI;EACD,MAAA;EACIyC,SAAAA;EACK,cAAA,EAAAhB,SAGND,EADJmB,WAAW,SACL,uCACA,4BAA4B,EACtC;CAAC,CAAA,GAEJG,EAAA,KAAAd,UAAAc,EAAA,KAAAL,gBAAAK,EAAA,KAAAJ,UAAAI,EAAA,KAAAH,QAAAG,EAAA,MAAAtB,GAAAsB,EAAA,MAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,QAAAhB,aAAAgB,EAAA,QAAAf,WAAAe,EAAA,QAAAI,yBAAAJ,EAAA,QAAAb,QAAAa,EAAA,QAAAZ,cAAAY,EAAA,QAAAX,iBAAAW,EAAA,QAAAV,eAAAU,EAAA,QAAAT,eAAAS,EAAA,QAAAR,cAAAQ,EAAA,QAAAJ,YAAAI,EAAA,QAAAE,kBAAAF,EAAA,QAAAtB,KAEA6B,KAAAH,yBACC,oBAAC,cAAD;EACK,IAAA;EAED,QAAA,oBAAC,mBAAD;GACc,cAAA1B,EAAE,gCAAgC;GACpCkB,UAAAA;GACF,QAAA,CAACM;EAAc,CAAA;EAGnBV,QAAAA;EACCD,SAAAA;EAEP,MAAA,qBAAC,MAAD,EAAA,UAAA;GACE,oBAAC,YAAD;IACU,QAAA,CAACN;IACHlC,MAAAA;IACGuC,SAAAA;IACH,MAAAZ,EAAE,wBAAwB;IAE9B,cAAAS,SAAS,WAAT,EAAAR,SAA8BD,EAAE,+BAA+B,EAAa,IAA5E8B,KAAAA;IAEQ,UAAArB,SAAS;GAAQ,CAAA;GAG7B,oBAAC,YAAD;IACU,QAAA,CAACH;IACH/B,MAAAA;IACGoC,SAAAA;IACH,MAAAX,EAAE,0BAA0B;IAC7B,MAAA;GAAU,CAAA;GAGhBU,cAAc,oBAAC,aAAD,EAAqB,QAAA,CAACJ,aAAD,CAAeC,QAAO,CAAA;GAE1D,oBAAC,YAAD;IACU,QAAA,CAACG;IACHpC,MAAAA;IACGoC,SAAAA;IACH,MAAAV,EAAE,qBAAqB;GAAC,CAAA;EA1B7B,EAAA,CAAA;EA8BEE,SAAAA;CAAa,CAAA,GAEzBoB,EAAA,MAAAhB,WAAAgB,EAAA,MAAAf,SAAAe,EAAA,MAAAI,uBAAAJ,EAAA,MAAAb,MAAAa,EAAA,MAAAZ,YAAAY,EAAA,MAAAX,eAAAW,EAAA,MAAAV,aAAAU,EAAA,MAAAT,aAAAS,EAAA,MAAAR,YAAAQ,EAAA,MAAAJ,UAAAI,EAAA,MAAAE,gBAAAF,EAAA,MAAAtB,GAAAsB,EAAA,MAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAAS;CAGqB,OAHrBT,EAAA,QAAAK,MAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAO,MAjFPE,KAAA,oBAAC,6BAAD,EAAA,UACE,oBAAC,MAAD,EAAA,UACE,qBAAC,cAAD;EAAsB,SAAA;EAAe,QAAA;EAAY,SAAA;EAAW,QAAA;EAAU,QAAA;EAAtE,UAAA;GACGJ;GAYAC;GAqBAC;EAlCU;CADV,CAAA,EAAA,CAAA,EADmB,CAAA,GAoFEP,EAAA,MAAAK,IAAAL,EAAA,MAAAM,IAAAN,EAAA,MAAAO,IAAAP,EAAA,MAAAS,MAAAA,KAAAT,EAAA,KApF5BS;AAoF4B;AC9JhC,SAASkB,SAASC,KAAaC,SAAS,KAAK;CAE3C,OADID,IAAIC,UAAUA,SAAeD,MAC1B,GAAGA,IAAIE,MAAM,GAAGD,MAAM,EAAC;AAChC;AAQA,MAAMK,YAAYb,OAAOP,GAAG,CAAC,CAACqB,MAAM;CAACC,YAAY;CAAGC,aAAa;AAAC,CAAC,CAAC,CAAA,WAAA;;;2CAM9DC,kBAAkBjB,uBAAOL,KAAK,CAAC,CAAA,WAAA;;;AAAwB,CAAA,CAAA,EAAA,EAACiB,OAAOD,0BAAyB;CAC5F,IAAMO,SAASN,MAAMO,OAAOC,IAAIC,MAAMC,OAEhCC,MAAMZ,sBAAsBR,6BAA6B,QACzDqB,cAAcN,SAAS5B,KAAKiC,IAAI,CAAC,IAAI,CAACE,MAAMnC,KAAKiC,IAAI,CAAC,IAAI,CAACE;CAEjE,OAAO1B,GAAG,yBACiByB,YAAW;AAGxC,CAAC;AAOD,SAAOK,gCAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAL,oBAAAC,UAAoCE,OAEpC,EAAAG,MAAY/B,eAAeE,uBAAuB,GAAC8B;CAAA,AAAAH,EAAA,OAAAE,IACwBC,KAAAH,EAAA,MAAvDG,KAAAD,EAAE,oDAAoD,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAA3E,IAAAC,cAAoBD,IAAuDE;CAAAC,KAAA;EAGzE,IAAIC,MAAKC,QAASX,KAA0D,KAAhDA,OAAKY,OAAShD,uBAA8B,CAAC,CAAAgB,SAAG,GAAC;GAAA,IAAAiC;GAAA,IAAAV,EAAA,OAAAH,OAAA;IAC3E,IAAAc,OAAad,OAAKe,IAAMtD,WAAgB,CAAC,CAAAuD,KAAC,GAAG;IACbb,AAAdU,KAAAnC,SAASoC,IAAI,GAACX,EAAA,KAAAH,OAAAG,EAAA,KAAAU;GAAA,OAAAA,KAAAV,EAAA;GAEhCK,KAAOS;GAAP,MAAAR;EAAgB;EAGlBD,KAAO;CAAI;CARb,IAAAU,gBAAsBV;CAWtB,IAAI,CAACU,eAAa,OAAS;CAIF,IAAAL,KAAAM,EAAQpB,oBAAmBqB;CAAA,AAAAjB,EAAA,OAAAJ,sBAAAI,EAAA,OAAAI,eAU3Ca,KAAA,CAACrB,sBACA,oBAAC,WAAD;EAAkBQ,SAAAA;EAChB,UAAA,oBAAC,WAAD,EAAA,UACE,oBAAC,iBAAD,CAAgB,CAAA,EADR,CAAA;CADJ,CAAA,GAKTJ,EAAA,KAAAJ,oBAAAI,EAAA,KAAAI,aAAAJ,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAe,iBAAAf,EAAA,OAAAiB,MARLC,KAAA,oBAAC,MAAD;EAAY,OAAA;EACV,UAAA,qBAAC,MAAD;GAAY,MAAA;GAAG,OAAA;GAAf,UAAA,CACGD,IAQAF,aATE;;CADF,CAAA,GAYEf,EAAA,KAAAe,eAAAf,EAAA,KAAAiB,IAAAjB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CACS,OADTnB,EAAA,QAAAU,MAAAV,EAAA,QAAAkB,MArBTC,KAAA,oBAAC,iBAAD;EACuB,qBAAAT;EACT,eAAA;EACN,MAAA;EACM,aAAA;EACH,SAAA;EACI,aAAA;EACN,QAAA;EAEPQ,UAAAA;CATc,CAAA,GAsBElB,EAAA,MAAAU,IAAAV,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KAtBlBmB;AAsBkB;AC9CtB,MAAMgD,mBAAmBC,MAAwCA,EAAED,gBAAgB,GAE7EK,iBAAiBlC,OAAOf,GAAG,CAAC,CAAA,WAAA;;;MAE5BkD,wBAA6C,EAACE,OAAO,MAAK,GAE1DC,gBAAkB,CAAA,GAElBC,WAAWvC,uBAAOX,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACmD,YAAW;CAEzC,IAAMC,SAASD,MAAME,OAAOC,MAAMC,MAC5BC,KAAK/D,KAAKgE,KAAKL,SAAS,MAAM,IAAI,CAACM;CAEzC,OAAOhD,GAAG,yCAEW8C,GAAE;AAGzB,CAAC,GAEKG,aAAahD,uBAAOb,IAAI,CAAC,CAAA,WAAA;;;AAAuB+D,CAAAA,CAAAA,EAAAA,UAAU;CAC9D,IAAMV,QAAQhD,YAAY0D,MAAMV,KAAK;CAErC,OAAOzC,GAAG,cACMyC,MAAMW,OAAOC,MAAMF,MAAMD,MAAM,EAAEI,KAAI;AAEvD,CAAC,GAEKC,aAAatD,uBAAOX,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACmD,YAAW;CAE3C,IAAMC,SAASD,MAAME,OAAOC,MAAMC,MAC5BC,KAAK/D,KAAKgE,KAAKL,SAAS,MAAM,IAAI,CAACM;CAEzC,OAAOhD,GAAG,mBACW8C,GAAE;AAGzB,CAAC,GAEKU,aAAavD,OAAOZ,KAAK,CAAC,CAAA,WAAA;;;uFAS1BoE,YAAYxD,uBAAOb,IAAI,CAAC,CAAA,WAAA;;;AAAuB+D,CAAAA,CAAAA,EAAAA,UAAU;CAC7D,IAAMV,QAAQhD,YAAY0D,MAAMV,KAAK;CAErC,OAAOzC,GAAG,cACMyC,MAAMW,OAAOC,MAAMF,MAAMD,MAAM,EAAEI,KAAI;AAEvD,CAAC,GAEKI,kBAAkBzD,OAAOd,IAAI,CAAC,CAAA,WAAA;;;kDAO9BwE,YAAY1D,uBAAOZ,KAAK,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACoD,YAAW;CAE3C,IAAM,EAACmB,UAASnB,MAAME;CAEtB,OAAO3C,GAAG,0CAMJmC,eAAc,iEAKSyB,MAAM,GAAE,MAAQA,MAAM,GAAE,OAG/CzB,eAAc,sCAOZA,eAAc,yCAOhBA,eAAc;AAKtB,CAAC,GA0BKsD,wBAA6C,EAACC,mBAAmB,GAAI;AAE3E,SAAOC,uBAAAxC,OAAA;CAAA,IAAAyC,IAAAC,EAAA,GAAA,GACL,EAAA/B,YAAAgC,IAAA/B,WAAAC,SAAAC,SAAAC,aAAAC,UAAAC,oBAAAC,QAAAC,UAAAC,YAAAC,gBAAAC,MAAAC,YAAAE,eAAAC,UAAAC,QAAAE,gBAAAG,kBAAAE,gBAAAE,UAAAC,YAAAO,OAsBI5C,OArBFW,aAAAgC,OAAAE,KAAAA,IAAA,IAAAF,IAoBAN,aAAAO,OAAAC,KAAAA,KAAAD,IAEF,EAAAE,YAAAC,UAAAnB,SAAAoB,KAAAC,iBAA2DnC,SAC3D,CAAAoC,QAAe5F,QAAQyF,QAAQ,GAC/B,EAAAI,MAAY/F,eAAeM,uBAAuB,GAElD,CAAA0F,OAAAC,YAA0B1G,SAAyBiF,OAAO,GAC1D,CAAA0B,WAAAC,gBAAkC5G,SAAkB,EAAK,GACzD6G,iBAAuB9G,OAA8B,IAAI,GACzD+G,eAAqB/G,OAAuBkF,OAAO,GACnD,CAAA8B,UAAAC,eAAgChH,SAAkB,EAAK,GAEvDiH,kBAAwBlH,OAA2B,IAAI,GAEvDmH,aAAmBpG,qBAAqB2F,KAAK,GAACU;CAAA,AAAArB,EAAA,OAAAW,QACcU,KAAArB,EAAA,MAA7BqB,KAAAvG,uBAAuB6F,KAAK,GAACX,EAAA,KAAAW,OAAAX,EAAA,KAAAqB;CAA5D,IAAAC,WAA+BD,IAAuCE;CAAA,AAAAvB,EAAA,OAAA3B,QAAAmD,YAQpED,KAAAvB,EAAA,MALgBuB,MAChBlD,SAAOmD,WAAmBC,OAACC,KAAuD,KAAlF/E,cAAAA,CAAmF8E,OAC5EE,MAGR,GAAC3B,EAAA,KAAA3B,QAAAmD,WAAAxB,EAAA,KAAAuB;CALF,IAAAC,YAAkBD,IAOlBK,eAAqBC,EAAQL,WAASM,QAASC;CAAA,AAAA/B,EAAA,OAAAK,aAEmB0B,KAAA/B,EAAA,MAA9C+B,KAAA1B,aAAA,IAAiB2B,KAAK3B,UAAuB,oBAA7C,IAAwC2B,KAAK,GAAChC,EAAA,KAAAK,YAAAL,EAAA,KAAA+B;CAAlE,IAAAE,cAAoBF,IACpBG,aAAmB1B,eAAA,IAAmBwB,KAAKxB,YAAmB,IAA3C,MACnB2B,iBAAuB1H,gBAAgBwH,aAAapC,qBAAqB,GAACuC;CAAA,AAAApC,EAAA,OAAAqC,OAAAC,IAAA,2BAAA,KACjCF,KAAA;EAAAG,WAAY;EAAMC,WAAa;CAAQ,GAACxC,EAAA,KAAAoC,MAAAA,KAAApC,EAAA;CAAjF,IAAAyC,iBAAuBlI,kBAAkB6H,EAAwC,GAACM;CAAA,AAAA1C,EAAA,OAAAiC,eAAAjC,EAAA,OAAAyC,kBACvDC,KAAAD,eAAcE,OAAQV,WAAW,GAACjC,EAAA,KAAAiC,aAAAjC,EAAA,KAAAyC,gBAAAzC,EAAA,KAAA0C,MAAAA,KAAA1C,EAAA;CAA7D,IAAA4C,qBAA2BF,IAC3BG,sBAA4BX,aAAaO,eAAcE,OAAQT,UAAiB,IAApD,MAC5BY,eAAqBvE,YAAAI,YAAsBoE,IAAAC;CAK3CjJ,AAL2CiG,EAAA,QAAAa,aAAAb,EAAA,QAAAb,WAKjC4D,WAAA;EACJlC,cAEJG,aAAYiC,UAAW9D,SAEvByB,SAASzB,OAAO;CAAC,GAChB6D,KAAA,CAACnC,WAAW1B,OAAO,GAACa,EAAA,MAAAa,WAAAb,EAAA,MAAAb,SAAAa,EAAA,MAAA+C,IAAA/C,EAAA,MAAAgD,OAAAD,KAAA/C,EAAA,KAAAgD,KAAAhD,EAAA,MANvBjG,UAAUgJ,IAMPC,EAAoB;CAAC,IAAAE;CAAA,AAAAlD,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAEWY,WAAMhC,YAAY,EAAI,GAAClB,EAAA,MAAAkD,MAAAA,KAAAlD,EAAA;CAA1D,IAAAmD,iBAAuBD,IAAwCE;CAAA,AAAApD,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAC3Bc,YAAMlC,YAAY,EAAK,GAAClB,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAA5D,IAAAqD,kBAAwBD,KAAyCE;CAAA,AAAAtD,EAAA,QAAAO,OAAAP,EAAA,QAAAlB,cAC9BwE,YAAMxE,aAAayB,GAAG,GAACP,EAAA,MAAAO,KAAAP,EAAA,MAAAlB,YAAAkB,EAAA,MAAAsD,OAAAA,MAAAtD,EAAA;CAA1D,IAAAuD,iBAAuBD,KAAuDE;CAAA,AAAAxD,EAAA,QAAAO,OAAAP,EAAA,QAAAhB,iBAE5EwE,OAAArH,MAAA;EAEE6C,AADA7C,EAACD,gBAAiB,GAClB8C,gBAAgBuB,GAAG;CAAC,GACrBP,EAAA,MAAAO,KAAAP,EAAA,MAAAhB,eAAAgB,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAJH,IAAAyD,oBAA0BD,KAMzBE;CAAA,AAAA1D,EAAA,QAAAO,OAAAP,EAAA,QAAAf,YACgCyE,YAAMzE,SAASsB,GAAG,GAACP,EAAA,MAAAO,KAAAP,EAAA,MAAAf,UAAAe,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAApD,IAAA2D,eAAqBD,KAAiDE;CAAA,AAAA5D,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAEvCsB,YAAA;EAE7BhD,AADAE,aAAa,EAAK,GAClBF,SAASI,aAAYiC,OAAQ;CAAC,GAC/BjD,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAHD,IAAA6D,aAAmBD,KAGbE;CAAA,AAAA9D,EAAA,QAAAoB,cAAApB,EAAA,QAAAsB,YAE2BwC,YAAA;EAC/B,IAAI,CAACxC,YAAD,CAAcF,YAAU;GAC1ByC,WAAW;GAAC;EAAA;EAGd1C,gBAAe8B,SAAiCc,wBAAKC,KAAC;CAAC,GACxDhE,EAAA,MAAAoB,YAAApB,EAAA,MAAAsB,UAAAtB,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA;CAND,IAAAiE,eAAqBH,KAMiBI;CAAA,AAAAlE,EAAA,QAAAZ,kBAAAY,EAAA,QAAAiE,gBAGpCC,OAAA7E,UAAA;EAEMA,MAAK8E,mBAAoB,MAIzB9E,MAAK+E,QAAS,aAChB/E,MAAKgF,eAAgB,GACrBhF,MAAKnD,gBAAiB,GACtB+H,aAAa,IAGX7E,kBAAgBA,eAAeC,KAAK;CAAC,GAC1CW,EAAA,MAAAZ,gBAAAY,EAAA,MAAAiE,cAAAjE,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAdH,IAAAsE,qBAA2BJ,KAgB1BK;CAAA,AAAAvE,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAEiCiC,YAAA;EAChCpD,gBAAe8B,SAAiCc,wBAAMS,MAAC;CAAC,GACzDxE,EAAA,MAAAuE,OAAAA,MAAAvE,EAAA;CAFD,IAAAyE,gBAAsBF,KAEhBG;CAAA,AAAA1E,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAE6BoC,YAAA;EAEjCb,AADA1C,gBAAe8B,SAAiCc,wBAAMS,MAAC,GACvDX,WAAW;CAAC,GACb7D,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA;CAHD,IAAA2E,iBAAuBD,KAGPE;CAAA,AAAA5E,EAAA,QAAAO,OAAAP,EAAA,QAAAT,oBAGdqF,OAAApF,aAAA;EACED,mBAAmBgB,KAAKf,QAAQ;CAAC,GAClCQ,EAAA,MAAAO,KAAAP,EAAA,MAAAT,kBAAAS,EAAA,MAAA4E,OAAAA,MAAA5E,EAAA;CAHH,IAAA6E,uBAA6BD,KAK5BE;CAAA,AAAA9E,EAAA,QAAAO,OAAAP,EAAA,QAAAd,UAGC4F,OAAAC,cAAA;EAEEjE,AADA5B,OAAOqB,KAAK,EAAApB,SAAU4F,UAAS,CAAC,GAChCjE,aAAa,EAAK;CAAC,GACpBd,EAAA,MAAAO,KAAAP,EAAA,MAAAd,QAAAc,EAAA,MAAA8E,OAAAA,MAAA9E,EAAA;CAJH,IAAAgF,mBAAyBF,KAMxBG;CAAA,AAAAjF,EAAA,QAAAO,OAAAP,EAAA,QAAA3B,QAAAqB,UAAAM,EAAA,QAAAP,kBAE0CwF,YAAA;EACzCxF,iBAAiBc,KAAKlC,QAAOqB,WAAY,SAAnB,aAAA,MAA+C;CAAC,GACvEM,EAAA,MAAAO,KAAAP,EAAA,MAAA3B,QAAAqB,QAAAM,EAAA,MAAAP,gBAAAO,EAAA,MAAAiF,OAAAA,MAAAjF,EAAA;CAFD,IAAAkF,yBAA+BD,KAEUE;CAAA,AAAAnF,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAEV6C,YAAA;EAC7BrE,aAAasE,MAAS;CAAC,GACxBpF,EAAA,MAAAmF,OAAAA,MAAAnF,EAAA;CAFD,IAAAqF,aAAmBF,KAEbG;CAAA,AAAAtF,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAE8BgD,YAAMpE,YAAY,EAAK,GAAClB,EAAA,MAAAsF,OAAAA,MAAAtF,EAAA;CAA5D,IAAAuF,kBAAwBD,KAAyCE;CAAA,AAAAxF,EAAA,QAAAoB,aAO9DoE,MAAAxF,EAAA,OAJDwF,OAAAC,YAAA;EACE,AAAIpG,QAAK+E,QAAS,YAAd,CAA2BhD,cAC7ByC,WAAW;CACZ,GACF7D,EAAA,MAAAoB,YAAApB,EAAA,MAAAwF;CALH,IAAAE,oBAA0BF;CAS1BlL,aAAauG,WAAW0E,eAAe;CAAC,IAAAI;CAExC/L,AAFwCoG,EAAA,QAAAqC,OAAAC,IAAA,2BAAA,KAEQqD,YAAM,CAAC5E,eAAckC,OAAQ,GAACjD,EAAA,MAAA2F,OAAAA,MAAA3F,EAAA,KAA9EpG,qBAAqB,CAACwH,cAADyC,YAA2B8B,GAA8B;CAAC,IAAAC;CAAA,AAAA5F,EAAA,QAAAS,OAQ9EmF,MAAA5F,EAAA,OANY4F,MAAAnF,MAAIoF,cACf,oBAAC,MAAD;EAAY,MAAA;EAAU,QAAA;EAAsB,cAAA;EAAkB,OAAApF,KAAIoF;EAC/DpF,UAAAA,KAAIoF;CADF,CAAA,IAIL,oBAAC,cAAD;EAAoB,MAAA;EAAUrJ,OAAAA;CAAqB,CAAA,GACpDwD,EAAA,MAAAS,MAAAT,EAAA,MAAA4F;CAND,IAAAE,OAAaF,KASVG,KAAAhI,WACiBiI,MAAA/E,WAAA,SAAA,SAMfkF,KAAAvI,YACEyI,KAAAhJ,YAAgDmJ;CAAA,AAAAxG,EAAA,QAAA9B,cAAA8B,EAAA,QAAAS,QAAAT,EAAA,QAAAJ,cAC9C4G,MAAA5G,cAAc,oBAAC,gBAAD;EAAsBa;EAAYvC,MAAAA;CAAU,CAAA,GAAI8B,EAAA,MAAA9B,YAAA8B,EAAA,MAAAS,MAAAT,EAAA,MAAAJ,YAAAI,EAAA,MAAAwG,OAAAA,MAAAxG,EAAA;CAE9D,IAAAyG,KAAAjN,MAA0CoN,MAAAnI,SAAA,IAAA,GACxCoI,KAAArN,MAEgBuN,MAAA1I,UAAO2I,SAAgBvI,QAIrC0I,KAAA3N,MAA4B8N;CAAA,AAAAtH,EAAA,QAAA8F,OACDwB,MAAAtH,EAAA,OAA1BsH,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAIxB,UAAAA;CAAX,CAAA,GAAsB9F,EAAA,MAAA8F,MAAA9F,EAAA,MAAAsH;CAEzB,IAAAC,MAAA,CAACzE,gBACA,qBAAC,MAAD;EAAY,OAAA;EAAc,KAAA;EAA1B,UAAA,CACE,oBAAC,UAAD;GAAU,OAAA;GAAY,MAAA;GACpB,UAAA,oBAAA,QAAA;IAAgB,UAAAb,YAAWuF,YAAa;IAAU5E,OAAAA;IAC/CT,UAAAA;GACI,CAAA;EAHA,CAAA,GAMRU,uBAAAX,cACC,oBAAC,UAAD;GAAU,OAAA;GAAY,MAAA;GAAUW,OAAAA;GAC9B,UAAA,qBAAA,QAAA;IAAgB,UAAAX,WAAUsF,YAAa;IAAU3E,OAAAA;IAAjD,UAAA;KAAsE;KAClEnC,EAAE,yBAAyB;KAAE;IAC1B;;EAHA,CAAA,CARR;KAeN+G;CAAA,AAAAzH,EAAA,QAAAmH,MAAAnH,EAAA,QAAAsH,OAAAtH,EAAA,QAAAuH,OAnBHE,MAAA,qBAAC,IAAD;EAAY,OAAAL;EAAgB,KAAAC;EAA5B,UAAA,CACEC,KAECC,GAHE;KAoBEvH,EAAA,MAAAmH,IAAAnH,EAAA,MAAAsH,KAAAtH,EAAA,MAAAuH,KAAAvH,EAAA,MAAAyH,OAAAA,MAAAzH,EAAA;CAAA,IAAA0H;CAAA,AAAA1H,EAAA,QAAA6G,MAAA7G,EAAA,QAAA+G,OAAA/G,EAAA,QAAAyH,OA1BTC,MAAA,oBAAC,IAAD;EACQ,OAAAZ;EACS,eAAAC;EACR,QAAAE;EACD,MAAAC;EAENO,UAAAA;CANG,CAAA,GA2BEzH,EAAA,MAAA6G,IAAA7G,EAAA,MAAA+G,KAAA/G,EAAA,MAAAyH,KAAAzH,EAAA,MAAA0H,OAAAA,MAAA1H,EAAA;CAAA,IAAA2H;CAAA,AAAA3H,EAAA,QAAAvB,UAAAuB,EAAA,QAAAU,KAENiH,MAAAlJ,UACC,oBAAC,KAAD;EAAW,MAAA;EACT,UAAA,oBAAC,YAAD;GAAY,OAAA;GAAY,MAAA;GAAgB,cAAA;GACtC,UAAA,oBAAC,WAAD;IACKiC;IACK,SAAA;IACA,QAAA;KAAAkH,OAAQnJ,OAAMmJ;KAAMnJ,QAAU;IAAM;IAChC,YAAA,EAAAtE,aACE0N,QAAA;KAAC,IAAA,EAAAC,aAAAD;KAAU,OACrBpJ,SACE,oBAAC,YAAD;MAAoB,QAAAA,OAAMsJ;MAAiB,QAAAtJ,OAAMqH;MAC9CgC;KADQ,CAAA,IADb1H,KAAAA;IAIa,EACjB;GAAC,CAAA;EAZM,CAAA;CADT,CAAA,GAiBLJ,EAAA,MAAAvB,QAAAuB,EAAA,MAAAU,GAAAV,EAAA,MAAA2H,OAAAA,MAAA3H,EAAA;CAAA,IAAA6H;CAAA,AAAA7H,EAAA,QAAAyG,MAAAzG,EAAA,QAAA4G,OAAA5G,EAAA,QAAA0H,OAAA1H,EAAA,QAAA2H,OAhDHE,MAAA,qBAAC,IAAD;EAAgB,WAAAnB;EAAc,KAAAC;EAAa,UAAAC;EAA3C,UAAA,CACEc,KA6BCC,GA9BE;KAiDE3H,EAAA,MAAAyG,IAAAzG,EAAA,MAAA4G,KAAA5G,EAAA,MAAA0H,KAAA1H,EAAA,MAAA2H,KAAA3H,EAAA,MAAA6H,OAAAA,MAAA7H,EAAA;CAAA,IAAAgI;CAAA,AAAAhI,EAAA,QAAA7B,aAAA6B,EAAA,QAAA5B,WAAA4B,EAAA,QAAA3B,QAAAqB,UAAAM,EAAA,QAAA8C,gBAAA9C,EAAA,QAAAuD,kBAAAvD,EAAA,QAAA2D,gBAAA3D,EAAA,QAAAqD,mBAAArD,EAAA,QAAAmD,kBAAAnD,EAAA,QAAAkF,0BAAAlF,EAAA,QAAA6E,wBAAA7E,EAAA,QAAAa,aAAAb,EAAA,QAAAtB,YAAAsB,EAAA,QAAAnB,QAAAmB,EAAA,QAAAlB,cAAAkB,EAAA,QAAAP,kBAAAO,EAAA,QAAAL,YAAAK,EAAA,QAAAqF,cAEN2C,MAAA,CAACnH,aAAD,CAAeiC,gBACd,oBAAC,gBAAD;EAAgC,kBAAApE,WAAA,SAAA;EAAsCxC,SAAAA;EACpE,UAAA,oBAAC,6BAAD;GACaiC;GACFC;GACCM;GACJG;GACM,YAAAC,aAAAyE,iBAAAnD,KAAAA;GACGuD,eAAAA;GACF0B,aAAAA;GACAhC,aAAAA;GACDF,YAAAA;GACM0B,kBAAAA;GACF,gBAAApF,iBAAAyF,yBAAA9E,KAAAA;GACNT;GACF,QAAAtB,QAAOqB;EAAO,CAAA;CAdX,CAAA,GAiBhBM,EAAA,MAAA7B,WAAA6B,EAAA,MAAA5B,SAAA4B,EAAA,MAAA3B,QAAAqB,QAAAM,EAAA,MAAA8C,cAAA9C,EAAA,MAAAuD,gBAAAvD,EAAA,MAAA2D,cAAA3D,EAAA,MAAAqD,iBAAArD,EAAA,MAAAmD,gBAAAnD,EAAA,MAAAkF,wBAAAlF,EAAA,MAAA6E,sBAAA7E,EAAA,MAAAa,WAAAb,EAAA,MAAAtB,UAAAsB,EAAA,MAAAnB,MAAAmB,EAAA,MAAAlB,YAAAkB,EAAA,MAAAP,gBAAAO,EAAA,MAAAL,UAAAK,EAAA,MAAAqF,YAAArF,EAAA,MAAAgI,OAAAA,MAAAhI,EAAA;CAAA,IAAAiI;CAAA,AAAAjI,EAAA,QAAAqG,MAAArG,EAAA,QAAA9B,cAAA8B,EAAA,QAAAkI,KAAAlI,EAAA,QAAAwG,OAAAxG,EAAA,QAAA6H,OAAA7H,EAAA,QAAAgI,OAxEHC,MAAA,qBAAC,IAAD;EAAkB,OAAA3B;EAAc3K,KAAAA;EAAgB,MAAA4K;EAAUrI,OAAAA;EAA1D,UAAA;GACGsI;GAEDqB;GAmDCG;EAtDQ;KAyEEhI,EAAA,MAAAqG,IAAArG,EAAA,MAAA9B,YAAA8B,EAAA,MAAAkI,GAAAlI,EAAA,MAAAwG,KAAAxG,EAAA,MAAA6H,KAAA7H,EAAA,MAAAgI,KAAAhI,EAAA,MAAAiI,OAAAA,MAAAjI,EAAA;CAAA,IAAAmI;CAAA,AAAAnI,EAAA,QAAA9B,cAAA8B,EAAA,QAAA3B,WAAA2B,EAAA,SAAAxB,sBAAAwB,EAAA,SAAAJ,cAEZuI,MAAApN,uBAAuBsD,OAA4C,KAAhCwD,EAAQxD,SAAO+J,mBACjD,qBAAC,MAAD;EAAWzM,KAAAA;EAAwB,cAAA;EAAnC,UAAA,CACGiE,cAAc,oBAAC,cAAD,EAAqB1B,OAAAA,WAAU,CAAA,GAE9C,oBAAC,iCAAD;GACsBM;GACb,OAAAH,SAAO+J;EAAiB,CAAA,CAL9B;KAQNpI,EAAA,MAAA9B,YAAA8B,EAAA,MAAA3B,SAAA2B,EAAA,OAAAxB,oBAAAwB,EAAA,OAAAJ,YAAAI,EAAA,OAAAmI,OAAAA,MAAAnI,EAAA;CAAA,IAAAqI;CAAA,AAAArI,EAAA,SAAA9B,cAAA8B,EAAA,SAAAyE,iBAAAzE,EAAA,SAAA2E,kBAAA3E,EAAA,SAAA1B,eAAA0B,EAAA,SAAAgF,oBAAAhF,EAAA,SAAAsE,sBAAAtE,EAAA,SAAAa,aAAAb,EAAA,SAAApB,kBAAAoB,EAAA,SAAAL,YAAAK,EAAA,SAAAW,SAAAX,EAAA,SAAAJ,cAEAyI,MAAAxH,aACC,qBAAC,MAAD;EAAY,OAAA;EAAkB,KAAA;EAA9B,UAAA,CACGjB,cAAc,oBAAC,cAAD,EAAqB1B,OAAAA,WAAU,CAAA,GAE9C,oBAAC,OAAD;GAAa,MAAA;GACX,UAAA,oBAAC,cAAD;IACeI;IACb,cAAA;IACgBM;IACNgC,UAAAA;IACO6D,iBAAAA;IACCE,kBAAAA;IACPL,WAAAA;IACDU,UAAAA;IACArF;IACLwB,KAAAA;IACER;IACK,YAAA;GAAK,CAAA;EAbf,CAAA,CAHH;KAoBNX,EAAA,OAAA9B,YAAA8B,EAAA,OAAAyE,eAAAzE,EAAA,OAAA2E,gBAAA3E,EAAA,OAAA1B,aAAA0B,EAAA,OAAAgF,kBAAAhF,EAAA,OAAAsE,oBAAAtE,EAAA,OAAAa,WAAAb,EAAA,OAAApB,gBAAAoB,EAAA,OAAAL,UAAAK,EAAA,OAAAW,OAAAX,EAAA,OAAAJ,YAAAI,EAAA,OAAAqI,OAAAA,MAAArI,EAAA;CAAA,IAAAsI;CAAA,AAAAtI,EAAA,SAAA9B,cAAA8B,EAAA,SAAAa,aAAAb,EAAA,SAAAb,WAAAa,EAAA,SAAAJ,cAEA0I,MAAA,CAACzH,aACA,qBAAC,MAAD;EAAWlF,KAAAA;EAAX,UAAA,CACGiE,cAAc,oBAAC,cAAD,EAAqB1B,OAAAA,WAAU,CAAA,GAE9C,oBAAC,0BAAD,EAAkCiB,QAAAA,QAAO,CAAA,CAHtC;KAKNa,EAAA,OAAA9B,YAAA8B,EAAA,OAAAa,WAAAb,EAAA,OAAAb,SAAAa,EAAA,OAAAJ,YAAAI,EAAA,OAAAsI,OAAAA,MAAAtI,EAAA;CAAA,IAAAuI;CAAA,AAAAvI,EAAA,SAAA9B,cAAA8B,EAAA,SAAA1B,eAAA0B,EAAA,SAAA6E,wBAAA7E,EAAA,SAAA4B,gBAAA5B,EAAA,SAAAnB,QAAAmB,EAAA,SAAAwB,aAAAxB,EAAA,SAAAL,YAAAK,EAAA,SAAAJ,cAEA2I,MAAA3G,gBACC,qBAAC,MAAD;EAAWjG,KAAAA;EAAqB,WAAA;EAAhC,UAAA,CACGiE,cAAc,oBAAC,cAAD,EAAqB1B,OAAAA,WAAU,CAAA,GAE9C,oBAAC,KAAD;GAAchC,SAAAA;GACZ,UAAA,oBAAC,qBAAD;IACeoC;IACPO;IACIgG,UAAAA;IACCrD;IACD7B;GAAQ,CAAA;EANlB,CAAA,CAHD;KAaNK,EAAA,OAAA9B,YAAA8B,EAAA,OAAA1B,aAAA0B,EAAA,OAAA6E,sBAAA7E,EAAA,OAAA4B,cAAA5B,EAAA,OAAAnB,MAAAmB,EAAA,OAAAwB,WAAAxB,EAAA,OAAAL,UAAAK,EAAA,OAAAJ,YAAAI,EAAA,OAAAuI,OAAAA,MAAAvI,EAAA;CAAA,IAAAwI;CAAA,AAAAxI,EAAA,SAAAmG,MAAAnG,EAAA,SAAA8C,gBAAA9C,EAAA,SAAAiI,OAAAjI,EAAA,SAAAmI,OAAAnI,EAAA,SAAAqI,OAAArI,EAAA,SAAAsI,OAAAtI,EAAA,SAAAuI,OApIHC,MAAA,qBAAC,IAAD;EAAiB,KAAApC;EAAetD,cAAAA;EAAhC,UAAA;GACEmF;GA2ECE;GAWAE;GAuBAC;GAQAC;EAtHQ;KAqIEvI,EAAA,OAAAmG,IAAAnG,EAAA,OAAA8C,cAAA9C,EAAA,OAAAiI,KAAAjI,EAAA,OAAAmI,KAAAnI,EAAA,OAAAqI,KAAArI,EAAA,OAAAsI,KAAAtI,EAAA,OAAAuI,KAAAvI,EAAA,OAAAwI,OAAAA,MAAAxI,EAAA;CAAA,IAAAyI;CAAA,AAAAzI,EAAA,SAAA9B,cAAA8B,EAAA,SAAA8C,gBAAA9C,EAAA,SAAAyD,qBAAAzD,EAAA,SAAAzB,YAAAyB,EAAA,SAAArB,cAAAqB,EAAA,SAAAU,KAAAV,EAAA,SAAAJ,cAEZ6I,MAAA3F,gBACC,qBAAC,WAAD;EAAgBnH,KAAAA;EAAiBuC,OAAAA;EAAjC,UAAA,CACG0B,cAAc,oBAAC,cAAD,EAAqB1B,OAAAA,WAAU,CAAA,GAE9C,qBAAC,MAAD;GAAY,OAAA;GAAc,KAAA;GAAS,MAAA;GAAnC,UAAA,CACE,qBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IAAlB,UAAA,CACGK,YAAYmC,EAAE,8BAA8B,GAC5C/B,cAAc+B,EAAE,0BAA0B,CAFxC;GAKL,CAAA,GAAA,oBAAC,MAAD;IAAc/B,QAAAA;IACZ,UAAA,oBAAC,iBAAD;KACE,sBAAA;KACQ,SAAA;KACI,aAAA;KACH8E,SAAAA;KACA,SAAA;KACD,QAAA;KACH,MAAA;KAEL,UAAA,oBAAC,MAAD;MAAY,MAAA;MAAG,OAAA;MACZ/C,UAAAA,EAAE,wBAAwB;KADxB,CAAA;IATS,CAAA;GADb,CAAA,CANF;EAHG,CAAA,CAAA;KA0BXV,EAAA,OAAA9B,YAAA8B,EAAA,OAAA8C,cAAA9C,EAAA,OAAAyD,mBAAAzD,EAAA,OAAAzB,UAAAyB,EAAA,OAAArB,YAAAqB,EAAA,OAAAU,GAAAV,EAAA,OAAAJ,YAAAI,EAAA,OAAAyI,OAAAA,MAAAzI,EAAA;CAAA,IAAA0I;CACS,OADT1I,EAAA,SAAA+F,MAAA/F,EAAA,SAAA0F,qBAAA1F,EAAA,SAAAgG,OAAAhG,EAAA,SAAAwI,OAAAxI,EAAA,SAAAyI,OAzKHC,MAAA,qBAAC,IAAD;EACkB,kBAAA1C;EACJ,eAAAC;EACDP,WAAAA;EACN3E,KAAAA;EACA,KAAAmF;EALP,UAAA,CAOEsC,KAuICC,GA9IO;KA0KEzI,EAAA,OAAA+F,IAAA/F,EAAA,OAAA0F,mBAAA1F,EAAA,OAAAgG,KAAAhG,EAAA,OAAAwI,KAAAxI,EAAA,OAAAyI,KAAAzI,EAAA,OAAA0I,OAAAA,MAAA1I,EAAA,MA1KZ0I;AA0KY;AAjVT,SAAAtD,OAAAuD,GAAA;CAAA,OA4IiB,CAACA;AAAC;AA5InB,SAAAhH,OAAAiH,KAAA;CAAA,OA4CI,YAAYC,OAAK,eAAeA;AAAC;AA5CrC,SAAAnH,MAAAmH,GAAA;CAAA,OAyC+BA,GAACC,qBAAuB;AAAS;AC/MvE,MAAaM,aAAaF,uBAAOF,IAAI,CAAC,CAACK,MAAM;CAACC,SAAS;CAAGC,QAAQ;CAAGC,QAAQ;AAAQ,CAAC,CAAC,CAAA,WAAA;;;AAAEC,CAAAA,CAAAA,EAAAA,UAAU;CACjG,IAAM,EAACC,UAASD,OAEVE,SAASD,MAAME,OAAOC,MAAMC,MAC5BC,WAAWhB,KAAKI,2BAA2B,CAACQ,SAAS,MAAM,GAAG,CAACK,KAC/DC,YAAYlB,KAAKmB,KAAKP,SAAS,MAAM,GAAG,CAACK;CAE/C,OAAOf,GAAG,oBACYgB,UAAS,0CAGPF,SAAQ;AAGlC,CAAC,GCeKwC,cAAkB,CAAA,GAIlBE,wBAA+D;CACnEE,YAAY;CACZC,qBAAqB;CACrBC,aAAa;CACbC,sBAAsB;AACxB,GAIMC,mBAAmB7B,uBAAOoB,UAAU,CAAC,CAAA,WAAA;;;AAAO,CAAA,CAAA,OACzCrB,GAAG,kTAwBX,GAEK+B,eAAe9B,uBAAOC,QAAM,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAAC8B,YAAW;CAE/C,IAAM,EAACC,WAAUD,MAAME,OAAOC,MAAMC,KAAKC;CAEzC,OAAOrC,GAAG,eACOiC,OAAM;AAEzB,CAAC,GAEKK,cAAcrC,OAAOsC,OAAAA,WAAAA;;;AAAM,CAAA,CAAA,8DAqCpB2B,mBAAmBxE,KAAK,SAAAwE,iBAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,GACnC,EAAA7B,cAAA8B,IAAA7B,UAAAC,aAAAC,oBAAAC,cAAAC,YAAAC,gBAAAC,MAAAC,YAAAE,eAAAC,UAAAC,QAAAE,WAAAE,cAAAE,kBAAAE,SAAAC,gBAAAE,eAAAC,UAAAC,SAAAM,OAqBIJ,OApBF3B,eAAA8B,OAAAE,KAAAA,IAAAhD,wBAAA8C,IAmBAL,UAAAM,OAAAC,KAAAA,IAAAlD,cAAAiD,IAEF,EAAAE,MAAYrE,eAAeK,uBAAuB,GAClD,CAAAiE,OAAAC,YAA0B5E,SAAyBuB,WAAW,GAC9D,CAAAsD,WAAAC,gBAAkC9E,SAAkB,EAAI,GACxD+E,gBAAsBhF,OAA2B,IAAI,GAErD,EAAAiF,eAAqBvF,SAAS,GAACwF;CAAA,AAAAZ,EAAA,OAAAM,QAE6BM,KAAAZ,EAAA,MAA7BY,KAAAzE,uBAAuBmE,KAAK,GAACN,EAAA,KAAAM,OAAAN,EAAA,KAAAY;CAA5D,IAAAC,WAA+BD,IAE/B,CAAAE,WAAAC,gBAAkCpF,SAAkB,EAAK,GAACqF;CAAA,AAAAhB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAEjCF,WAAMD,aAAa,EAAI,GAACf,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAjD,IAAAmB,mBAAyBH,IAAwBI;CAAA,AAAApB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KACxBE,WAAML,aAAa,EAAK,GAACf,EAAA,KAAAoB,MAAAA,KAAApB,EAAA;CAAlD,IAAAqB,mBAAyBD,IAAyBE;CAAA,AAAAtB,EAAA,OAAAR,WAAAQ,EAAA,OAAAL,cAAA4B,OAAAvB,EAAA,OAAAL,cAAAD,UAAAM,EAAA,OAAAL,cAAA6B,OAAAC,MAAAC,SAAA1B,EAAA,OAAAL,cAAAgC,YAExBL,MAAAM,cAAA;EACxB,IAAAC,cAA8C;GAAAC,SACnCF;GAASG,iBACDpC,cAAa4B;GAAI7B,QAC1BC,eAAaD,UAAb;GAA+BiC,UAE7BhC,cAAagC;GAASK,WAErB9E;GAAW+B,SAEb,EAAAgD,WACItC,cAAa6B,OAAOC,MAAYC,SAAhC,GACb;EACF;EAGAnB,AADAf,UAAUqC,WAAW,GACrBtB,SAASrD,WAAW;CAAC,GACtB8C,EAAA,KAAAR,SAAAQ,EAAA,KAAAL,cAAA4B,KAAAvB,EAAA,KAAAL,cAAAD,QAAAM,EAAA,KAAAL,cAAA6B,OAAAC,MAAAC,OAAA1B,EAAA,KAAAL,cAAAgC,UAAA3B,EAAA,KAAAsB,MAAAA,KAAAtB,EAAA;CAjBD,IAAAkC,oBAA0BZ,IAiBzBa;CAAA,AAAAnC,EAAA,QAAAa,WASAsB,KAAAnC,EAAA,OAPgCmC,WAAA;EAC/B,IAAI,CAACtB,UAAQ;GACXN,SAASrD,WAAW;GAAC;EAAA;EAIvBwD,cAAa0B,SAAiCC,wBAAKC,KAAC;CAAC,GACtDtC,EAAA,MAAAa,UAAAb,EAAA,MAAAmC;CAPD,IAAAI,eAAqBJ,IAOPK;CAAA,AAAAxC,EAAA,QAAAuC,eAcXC,KAAAxC,EAAA,OAXDwC,MAAArD,UAAA;EAEMA,MAAKsD,mBAAoB,KAIzBtD,MAAKuD,QAAS,aAChBvD,MAAKwD,eAAgB,GACrBxD,MAAKyD,gBAAiB,GACtBL,aAAa;CACd,GACFvC,EAAA,MAAAuC,cAAAvC,EAAA,MAAAwC;CAZH,IAAAK,qBAA2BL,IAc1BM;CAAA,AAAA9C,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAEiC4B,WAAA;EAChCpC,cAAa0B,SAAiCC,wBAAMU,MAAC;CAAC,GACvD/C,EAAA,MAAA8C,MAAAA,KAAA9C,EAAA;CAFD,IAAAgD,gBAAsBF,IAEhBG;CAAA,AAAAjD,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAE6B+B,WAAA;EAGjCvC,AAFAH,SAASrD,WAAW,GACpBwD,cAAa0B,SAAiCC,wBAAMU,MAAC,GACrDrC,cAAa0B,SAAec,MAAC;CAAC,GAC/BlD,EAAA,MAAAiD,MAAAA,KAAAjD,EAAA;CAJD,IAAAmD,iBAAuBF,IAIjBG;CAgBuBzD,AAhBvBK,EAAA,QAAAW,cAAAX,EAAA,QAAAZ,gBAAAY,EAAA,QAAAL,cAAA6B,OAAAC,MAAAC,SAAA1B,EAAA,QAAAL,cAAAgC,YAGJyB,OAAAC,MAAA;EACEA,EAACT,gBAAiB,GAIbjC,cAELvB,eAAe;GAAA6C,WACFtC,cAAa6B,OAAOC,MAAYC,SAAhC;GAAsC4B,QACzC;GAAW3B,UACThC,cAAagC;EACzB,CAAC;CAAC,GACH3B,EAAA,MAAAW,YAAAX,EAAA,MAAAZ,cAAAY,EAAA,MAAAL,cAAA6B,OAAAC,MAAAC,OAAA1B,EAAA,MAAAL,cAAAgC,UAAA3B,EAAA,MAAAoD,OAAAA,MAAApD,EAAA,KAC0BL,cAAa6B,OAAOC,MAAYC;CAd7D,IAAA6B,wBAA8BH,KAe7BI;CAAA,AAAAxD,EAAA,QAAAiB,OAAAC,IAAA,2BAAA,KAEgCsC,OAAAC,QAAA;EAE/BhD,AADA4C,IAACT,gBAAiB,GAClBnC,aAAa,EAAK;CAAC,GACpBT,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAHD,IAAA0D,eAAqBF,KAGfG;CAAAC,KAAA;EAGJ,IAAIpD,WAAS;GAAA,IAAAqD;GAAEF,AAAF3D,EAAA,QAAAH,UAA+CgE,MAAA7D,EAAA,OAAtC6D,MAAAhE,SAAOiE,MAAQ,EAAsB,GAAC9D,EAAA,MAAAH,SAAAG,EAAA,MAAA6D,MAA7CF,MAAOE;GAAP,MAAAD;EAA6C;EAC5DD,MAAO9D;CAAO;CAFhB,IAAAkE,iBAAuBJ,KAGCE;CAAAG,KAAA;EAGtB,IAAI,CAACnE,SAAO;GAAEgE,MAAO;GAAP,MAAAG;EAAY;EAC1BH,MAAOhE,QAAOoE,SAAU9G;CAAqB;CAF/C,IAAA+G,qBAA2BL,KAK3BM,mBAAyB,GAAGtE,SAAOoE,SAAW9G,EAAqB,QACjE0C,SAAOoE,SAAW9G,KAA0B,IAA5C,YAAA,cAKeiH,MAAA3F,aAAA,SAAA,SACC4F,MAAAvD,YAAA,SAAA,SAA4BwD;CAAA,AAAAtE,EAAA,QAAAK,IASgBiE,MAAAtE,EAAA,OAA5CsE,MAAAjE,EAAE,yCAAyC,GAACL,EAAA,MAAAK,GAAAL,EAAA,MAAAsE;CAAA,IAAAC;CAAA,AAAAvE,EAAA,QAAAsE,MACxDC,MAAAvE,EAAA,OAHFuE,MAAA,oBAAC,aAAD;EACU,WAAA;EACI,cAAAD;CAA4C,CAAA,GACxDtE,EAAA,MAAAsE,KAAAtE,EAAA,MAAAuE;CAOe,IAAAC,MAAAnG,WAAA+B,KAAAA,IAAA,GAAwBqE;CAAA,AAAAzE,EAAA,QAAAL,cAAA4B,MAGiBkD,MAAAzE,EAAA,OAArCyE,MAAArI,mBAAmBuD,cAAa4B,GAAI,GAACvB,EAAA,MAAAL,cAAA4B,KAAAvB,EAAA,MAAAyE;CAGzC,IAAAC,MAAA/E,cAAagF,aAAcrG,YAAWO,IACxC+F,MAAAjF,cAAagF,aAAcrG,YAAWO,IAGrCgG,MAAAlF,cAAamF,QAAaC,SAAK,eAEjCC,MAAArF,cAAasF,SAAgBC,QAEzBC,MAAAxF,cAAamF,QAAaC,SAAK,kBAAgBK;CAAA,AAAApF,EAAA,QAAA5B,aAAAd,cAAA0C,EAAA,QAAA5B,aAAAb,uBAAAyC,EAAA,QAAA1B,eAAA0B,EAAA,QAAAzB,sBAAAyB,EAAA,QAAAtB,kBAAAsB,EAAA,QAAArB,QAAAqB,EAAA,QAAApB,cAAAoB,EAAA,QAAAlB,iBAAAkB,EAAA,QAAAjB,YAAAiB,EAAA,QAAAhB,UAAAgB,EAAA,QAAAd,aAAAc,EAAA,QAAAV,oBAAAU,EAAA,QAAAP,kBAAAO,EAAA,QAAAL,iBAAAK,EAAA,QAAAJ,YAAAI,EAAA,QAAA0E,OAAA1E,EAAA,QAAA4E,OAAA5E,EAAA,QAAA6E,OAAA7E,EAAA,QAAAgF,OAAAhF,EAAA,QAAAmF,OAV7DC,MAAA,oBAAC,wBAAD;EACc,YAAAhH,aAAYd;EACb,WAAAoH;EACF,SAAAE;EACAjF,SAAAA;EACIrB;EACH,UAAAuG;EACUtG;EACZ,QAAAyG;EACR,UAAA;EACY,YAAAG;EACIzG;EACVC;EACMC;EACGE;EACLC;EACFC;EACQE,gBAAAA;EACEI;EACFG;EACNG;EACE,YAAAxB,aAAYb;CAAoB,CAAA,GAC5CyC,EAAA,MAAA5B,aAAAd,YAAA0C,EAAA,MAAA5B,aAAAb,qBAAAyC,EAAA,MAAA1B,aAAA0B,EAAA,MAAAzB,oBAAAyB,EAAA,MAAAtB,gBAAAsB,EAAA,MAAArB,MAAAqB,EAAA,MAAApB,YAAAoB,EAAA,MAAAlB,eAAAkB,EAAA,MAAAjB,UAAAiB,EAAA,MAAAhB,QAAAgB,EAAA,MAAAd,WAAAc,EAAA,MAAAV,kBAAAU,EAAA,MAAAP,gBAAAO,EAAA,MAAAL,eAAAK,EAAA,MAAAJ,UAAAI,EAAA,MAAA0E,KAAA1E,EAAA,MAAA4E,KAAA5E,EAAA,MAAA6E,KAAA7E,EAAA,MAAAgF,KAAAhF,EAAA,MAAAmF,KAAAnF,EAAA,MAAAoF,OAAAA,MAAApF,EAAA;CAAA,IAAAqF;CAAA,AAAArF,EAAA,QAAAyE,OAAAzE,EAAA,QAAAoF,OAvBJC,MAAA,oBAAC,OAAD;EAAU,IAAA;EAAI,GAAKZ;EACjBW,UAAAA;CADI,CAAA,GAwBEpF,EAAA,MAAAyE,KAAAzE,EAAA,MAAAoF,KAAApF,EAAA,MAAAqF,OAAAA,MAAArF,EAAA;CAAA,IAAAsF;CAAA,AAAAtF,EAAA,QAAAQ,aAAAR,EAAA,QAAAmE,oBAAAnE,EAAA,QAAAkE,sBAEPoB,MAAApB,sBAAA1D,aACC,qBAAC,MAAD;EAAW,KAAA;EAAa,UAAA;EAAU,QAAA;EAAlC,UAAA,CACE,oBAAC,cAAD,CAAa,CAAA,GAEb,oBAAC,cAAD;GACa1F,WAAAA;GACN,MAAA;GACI4I,SAAAA;GACHS,MAAAA;EAAgB,CAAA,CAPrB;KAUNnE,EAAA,MAAAQ,WAAAR,EAAA,MAAAmE,kBAAAnE,EAAA,MAAAkE,oBAAAlE,EAAA,MAAAsF,OAAAA,MAAAtF,EAAA;CAAA,IAAAuF;CAAA,IAAAvF,EAAA,QAAA5B,aAAAd,cAAA0C,EAAA,QAAA5B,aAAAX,wBAAAuC,EAAA,QAAA1B,eAAA0B,EAAA,QAAA6C,sBAAA7C,EAAA,QAAAtB,kBAAAsB,EAAA,QAAArB,QAAAqB,EAAA,QAAApB,cAAAoB,EAAA,QAAAlB,iBAAAkB,EAAA,QAAAjB,YAAAiB,EAAA,QAAAhB,UAAAgB,EAAA,QAAAV,oBAAAU,EAAA,QAAAL,iBAAAK,EAAA,QAAAJ,YAAAI,EAAA,QAAA+D,gBAAA;EAAA,IAAAyB;EAyBCxF,AAzBDA,EAAA,QAAA5B,aAAAd,cAAA0C,EAAA,QAAA5B,aAAAX,wBAAAuC,EAAA,QAAA1B,eAAA0B,EAAA,QAAA6C,sBAAA7C,EAAA,QAAAtB,kBAAAsB,EAAA,QAAArB,QAAAqB,EAAA,QAAApB,cAAAoB,EAAA,QAAAlB,iBAAAkB,EAAA,QAAAjB,YAAAiB,EAAA,QAAAhB,UAAAgB,EAAA,QAAAV,oBAAAU,EAAA,QAAAL,iBAAAK,EAAA,QAAAJ,YAEmB4F,OAAAC,UAClB,oBAAC,OAAD;GAA0B,IAAA;GAAI,GAAKrJ,mBAAmBqJ,MAAKlE,GAAI;GAC7D,UAAA,oBAAC,wBAAD;IACc,YAAAnD,aAAYd;IACb,WAAAmI,MAAKd,aAAcrG,YAAWO;IAChC,SAAA4G,MAAKd,aAAcrG,YAAWO;IAC9B4G,SAAAA;IACInH;IACH,UAAAmH,MAAKX,QAAaC,SAAK;IACrB,YAAAU,MAAKX,QAAaC,SAAK;IAC3B,QAAA7I,uBAAuByD,eAAe8F,KAAK;IACnC/G;IACVC;IACMC;IACGE;IACLC;IACFC;IACQ6D,gBAAAA;IACEvD;IACRM;IACE,YAAAxB,aAAYX;GAAqB,CAAA;EAnB3C,GAAMgI,MAAKlE,GAAX,GAsBPvB,EAAA,MAAA5B,aAAAd,YAAA0C,EAAA,MAAA5B,aAAAX,sBAAAuC,EAAA,MAAA1B,aAAA0B,EAAA,MAAA6C,oBAAA7C,EAAA,MAAAtB,gBAAAsB,EAAA,MAAArB,MAAAqB,EAAA,MAAApB,YAAAoB,EAAA,MAAAlB,eAAAkB,EAAA,MAAAjB,UAAAiB,EAAA,MAAAhB,QAAAgB,EAAA,MAAAV,kBAAAU,EAAA,MAAAL,eAAAK,EAAA,MAAAJ,UAAAI,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA,KAvBAuF,MAAAxB,eAAc2B,IAAKF,GAuBnB,GAACxF,EAAA,MAAA5B,aAAAd,YAAA0C,EAAA,MAAA5B,aAAAX,sBAAAuC,EAAA,MAAA1B,aAAA0B,EAAA,MAAA6C,oBAAA7C,EAAA,MAAAtB,gBAAAsB,EAAA,MAAArB,MAAAqB,EAAA,MAAApB,YAAAoB,EAAA,MAAAlB,eAAAkB,EAAA,MAAAjB,UAAAiB,EAAA,MAAAhB,QAAAgB,EAAA,MAAAV,kBAAAU,EAAA,MAAAL,eAAAK,EAAA,MAAAJ,UAAAI,EAAA,MAAA+D,gBAAA/D,EAAA,MAAAuF;CAAA,OAAAA,MAAAvF,EAAA;CAAA,IAAAwF;CAAA,AAAAxF,EAAA,QAAA5B,aAAAd,cAAA0C,EAAA,QAAA5B,aAAAZ,eAAAwC,EAAA,QAAA3B,YAAA2B,EAAA,QAAA1B,eAAA0B,EAAA,QAAA6C,sBAAA7C,EAAA,QAAAkC,qBAAAlC,EAAA,QAAAtB,kBAAAsB,EAAA,QAAArB,QAAAqB,EAAA,QAAAJ,YAAAI,EAAA,QAAAK,KAAAL,EAAA,QAAAM,SAEDkF,MAAAnH,YACC,oBAAC,cAAD;EACc,YAAAD,aAAYd;EACXgB;EACb,eAAA;EACgBI;EACN6B,UAAAA;EACOyC,iBAAAA;EACCG,kBAAAA;EACPN,WAAAA;EACDX,UAAAA;EAER,aACI7B,EADJ1B,SAAS,WACH,qCACA,2BAA2B;EAEzB,UAAAiB,YAAYjB,SAAS;EAC1B+B,KAAAA;EACEJ;EACK,YAAAlC,aAAYZ;CAAY,CAAA,GAEvCwC,EAAA,MAAA5B,aAAAd,YAAA0C,EAAA,MAAA5B,aAAAZ,aAAAwC,EAAA,MAAA3B,UAAA2B,EAAA,MAAA1B,aAAA0B,EAAA,MAAA6C,oBAAA7C,EAAA,MAAAkC,mBAAAlC,EAAA,MAAAtB,gBAAAsB,EAAA,MAAArB,MAAAqB,EAAA,MAAAJ,UAAAI,EAAA,MAAAK,GAAAL,EAAA,MAAAM,OAAAN,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA;CAAA,IAAA2F;CAAA,AAAA3F,EAAA,QAAAxB,gBAAAwB,EAAA,SAAAwE,OAAAxE,EAAA,SAAAqF,OAAArF,EAAA,SAAAsF,OAAAtF,EAAA,SAAAuF,OAAAvF,EAAA,SAAAwF,OA7FHG,MAAA,qBAAC,OAAD;EACK,IAAA;EACMnH,SAAAA;EAGM,eAAAgG;EACV,KAAA;EANP,UAAA;GAQEa;GA0BCC;GAaAC;GAyBAC;EAxEG;KA8FExF,EAAA,MAAAxB,cAAAwB,EAAA,OAAAwE,KAAAxE,EAAA,OAAAqF,KAAArF,EAAA,OAAAsF,KAAAtF,EAAA,OAAAuF,KAAAvF,EAAA,OAAAwF,KAAAxF,EAAA,OAAA2F,OAAAA,MAAA3F,EAAA;CAAA,IAAA4F;CACS,OADT5F,EAAA,SAAAuD,yBAAAvD,EAAA,SAAAoE,OAAApE,EAAA,SAAAqE,OAAArE,EAAA,SAAAuE,OAAAvE,EAAA,SAAA2F,OA5GVC,MAAA,qBAAC,kBAAD;EACe,eAAAxB;EACC,gBAAAC;EACF,eAAA;EACJ,WAAA;EACCd,SAAAA;EACKpC,cAAAA;EACAE,cAAAA;EAPhB,UAAA,CASEkD,KAKAoB,GAde;KA6GE3F,EAAA,OAAAuD,uBAAAvD,EAAA,OAAAoE,KAAApE,EAAA,OAAAqE,KAAArE,EAAA,OAAAuE,KAAAvE,EAAA,OAAA2F,KAAA3F,EAAA,OAAA4F,OAAAA,MAAA5F,EAAA,MA7GnB4F;AA6GmB,CAEtB;AACD9F,iBAAiB+F,cAAc"}
|
|
1
|
+
{"version":3,"file":"CommentsListItem-C2Ac0esL.js","names":["Stack","Text","useCallback","Dialog","TextWithTone","useTranslation","TFunction","commentsLocaleNamespace","getDialogCopy","t","Record","title","body","confirmButtonText","thread","comment","CommentDeleteDialogProps","commentId","error","Error","isParent","loading","onClose","onConfirm","id","CommentDeleteDialog","props","$","_c","t0","dialogCopy","t1","handleDelete","t2","onClick","t3","text","tone","t4","cancelButton","confirmButton","t5","t6","t7","t8","AvatarSize","getTheme_v2","css","styled","SpacerAvatar","div","$size","props","theme","avatar","sizes","size","MouseEvent","ReactNode","Middleware","URL_REGEX","onClick","event","HTMLAnchorElement","stopPropagation","createLinkElement","url","href","startsWith","linkMiddleware","node","parts","split","flatMap","part","match","ReactNode","linkMiddleware","Middleware","middlewares","transformChildren","node","Array","isArray","flatMap","item","transformedItem","middleware","PortableText","PortableTextComponents","Stack","Fragment","PropsWithChildren","useMemo","css","styled","CommentMessage","transformChildren","MentionInlineBlock","NormalBlock","PortableTextWrap","EMPTY_ARRAY","NormalBlockTransformed","props","$","_c","t0","children","t1","components","block","normal","h1","h2","h3","h4","h5","h6","blockquote","code","list","bullet","number","checkmarks","listItem","marks","strong","em","underline","strikeThrough","link","types","mention","value","userId","CommentMessageSerializerProps","blocks","CommentMessageSerializer","RefAttributes","SVGProps","ReactionIcon","props","$","_c","ref","rest","t0","t1","t2","t3","t4","Symbol","for","t5","Text","styled","EmojiText","Button","UIButton","Grid","useCallback","useEffect","useState","useTranslation","COMMENT_REACTION_EMOJIS","commentsLocaleNamespace","CommentReactionOption","EmojiText","GRID_COLUMNS","CommentReactionsMenuProps","options","onSelect","option","CommentReactionsMenu","props","$","_c","t","rootElement","setRootElement","focusedIndex","setFocusedIndex","t0","event","focusableLen","querySelectorAll","length","key","prev","prev_0","handleRootKeyDown","t1","event_0","index","Array","from","indexOf","currentTarget","handleOptionClick","t2","t3","focusableElements","focus","t4","t5","o","emoji","shortName","reactionName","title","map","Card","useClickOutsideEvent","cloneElement","useCallback","useMemo","useRef","useState","Popover","PopoverProps","useTranslation","TFunction","commentsLocaleNamespace","CommentReactionOption","CommentsUIMode","CommentReactionsMenu","POPOVER_FALLBACK_PLACEMENTS","CommentReactionsMenuButtonProps","mode","onMenuClose","onMenuOpen","onSelect","option","options","readOnly","renderMenuButton","props","open","tooltipContent","t","React","JSX","Element","CommentReactionsMenuButton","$","_c","buttonElement","setButtonElement","popoverRef","setOpen","t0","next","handleClick","t1","handleClose","t2","focus","handleCloseAndFocus","t3","event","key","shiftKey","handleKeyDown","t4","current","t5","handleSelect","t6","btn","button","t7","t8","popoverContent","t9","CurrentUser","Box","Flex","Stack","Text","useCallback","styled","Tooltip","useListFormat","useTranslation","Translate","useUser","COMMENT_REACTION_EMOJIS","commentsLocaleNamespace","CommentReactionShortNames","EmojiText","TEXT_SIZE","ContentStack","TextGroup","div","InlineText","attrs","size","TextBox","LEADING_NON_WHITESPACE_RE","UserDisplayNameProps","currentUserId","isFirst","userId","UserDisplayName","props","$","_c","user","t","isCurrentUser","context","undefined","t0","displayName","t1","replace","name","CommentReactionsUsersTooltipProps","children","React","ReactNode","currentUser","reactionName","userIds","CommentReactionsUsersTooltip","restProps","t2","FormattedUserList","Symbol","for","style","type","listFormat","length","elements","parts","formatToParts","i","item","push","value","nextItem","nextLeadsWithNonWhitespace","test","match","nonWhitespace","slice","CommentReactionsUsersTooltipContent","id","UserList","t3","t4","t5","ReactionName","_temp","t6","t7","Card","styled","TransparentCard","CurrentUser","Button","UIButton","Flex","Text","memo","useCallback","useMemo","useState","Tooltip","TooltipDelayGroupProvider","COMMENT_REACTION_EMOJIS","COMMENT_REACTION_OPTIONS","CommentReactionItem","CommentReactionOption","CommentReactionShortNames","CommentsUIMode","ReactionIcon","CommentReactionsMenuButton","CommentReactionsUsersTooltip","EmojiText","TransparentCard","groupReactionsByName","reactions","grouped","reduce","acc","reaction","shortName","push","Record","sorted","Object","entries","sort","nameA","nameB","indexA","findIndex","r","indexB","renderMenuButton","open","tooltipContent","CommentReactionsBarProps","currentUser","onSelect","readOnly","mode","CommentReactionsBar","props","$","_c","t0","name","option","find","o","handleSelect","id","t1","t2","userId","filter","map","_temp","currentUserReactionNames","_temp2","groupedReactions","t3","sortOrder","keys","fromEntries","sortedReactions","sortedGroupedReactions","setSortedGroupedReactions","t4","t5","t6","t7","t8","t9","indexOf","_temp3","name_2","reactionsList","hasReacted","includes","userIds","_temp4","emoji","length","o_0","displayName","r_0","name_0","name_1","r_1","CheckmarkCircleIcon","EditIcon","LinkIcon","TrashIcon","UndoIcon","Card","Flex","Menu","MenuDivider","styled","Button","MenuButton","MenuButtonProps","MenuItem","TooltipDelayGroupProvider","ContextMenuButton","useTranslation","TFunction","COMMENT_REACTION_OPTIONS","commentsLocaleNamespace","CommentReactionOption","CommentStatus","CommentsUIMode","ReactionIcon","CommentReactionsMenuButton","renderMenuButton","open","tooltipContent","t","content","POPOVER_PROPS","placement","FloatingCard","CommentsListItemContextMenuProps","canDelete","canEdit","isParent","mode","onCopyLink","onDeleteStart","onEditStart","onMenuClose","onMenuOpen","onReactionSelect","option","onStatusChange","readOnly","status","CommentsListItemContextMenu","props","$","_c","showMenuButton","Boolean","hasContextMenuOptions","t0","t1","t2","undefined","t3","toPlainText","hues","LinkRemovedIcon","isPortableTextTextBlock","Box","Flex","Stack","Text","Theme","useMemo","css","styled","Tooltip","useTranslation","COMMENTS_HIGHLIGHT_HUE_KEY","commentsLocaleNamespace","CommentDocument","truncate","str","length","slice","BlockQuoteStackProps","$hasReferencedValue","theme","InlineBox","attrs","marginLeft","marginRight","BlockQuoteStack","isDark","sanity","v2","color","_dark","hue","borderColor","hex","CommentsListItemReferencedValueProps","hasReferencedValue","value","CommentsListItemReferencedValue","props","$","_c","t","t0","tooltipText","t1","bb0","Array","isArray","filter","t2","text","map","join","truncated","resolvedValue","Boolean","t3","t4","t5","hues","CurrentUser","AvatarSize","Box","Card","Flex","Stack","Text","TextSkeleton","useClickOutsideEvent","getTheme_v2","useCallback","useEffect","useMemo","useRef","useState","IntentLink","css","styled","useDidUpdate","useDateTimeFormat","RelativeTimeOptions","useRelativeTime","UserListWithPermissionsHookValue","useTranslation","Translate","useUser","hasCommentMessageValue","isTextSelectionComment","useCommentHasChanged","commentsLocaleNamespace","CommentContext","CommentDocument","CommentMessage","CommentReactionOption","CommentStatus","CommentsUIMode","CommentUpdatePayload","CommentsAvatar","SpacerAvatar","FLEX_GAP","CommentInput","CommentInputHandle","CommentMessageSerializer","CommentReactionsBar","CommentsListItemContextMenu","CommentsListItemReferencedValue","stopPropagation","e","React","MouseEvent","HTMLDivElement","ContextMenuBox","SKELETON_INLINE_STYLE","CSSProperties","width","EMPTY_ARRAY","TimeText","theme","isDark","sanity","color","dark","fg","gray","hex","HeaderFlex","$size","props","avatar","sizes","size","IntentText","InnerStack","ErrorFlex","RetryCardButton","RootStack","space","CommentsListItemLayoutProps","avatarSize","canDelete","canEdit","comment","currentUser","hasError","hasReferencedValue","intent","isParent","isRetrying","mentionOptions","mode","onCopyLink","id","onCreateRetry","onDelete","onEdit","message","onInputKeyDown","event","KeyboardEvent","onReactionSelect","reaction","onStatusChange","status","readOnly","withAvatar","RELATIVE_TIME_OPTIONS","useTemporalPhrase","CommentsListItemLayout","$","_c","t0","t1","undefined","_createdAt","authorId","_id","lastEditedAt","user","t","value","setValue","isEditing","setIsEditing","rootElementRef","startMessage","menuOpen","setMenuOpen","commentInputRef","hasChanges","t2","hasValue","t3","reactions","filter","_temp","_temp2","hasReactions","Boolean","length","t4","Date","createdDate","editedDate","createdTimeAgo","t5","Symbol","for","dateStyle","timeStyle","dateTimeFormat","t6","format","formattedCreatedAt","formattedLastEditAt","displayError","t7","t8","current","t9","handleMenuOpen","t10","handleMenuClose","t11","handleCopyLink","t12","handleCreateRetry","t13","handleDelete","t14","cancelEdit","t15","discardDialogController","open","startDiscard","t16","isDefaultPrevented","key","preventDefault","handleInputKeyDown","t17","close","cancelDiscard","t18","confirmDiscard","t19","handleReactionSelect","t20","nextValue","handleEditSubmit","t21","handleOpenStatusChange","t22","_temp3","toggleEdit","t23","handleCloseMenu","t24","event_0","handleRootKeyDown","t25","t26","displayName","name","T0","t27","t28","t29","T1","t30","T2","t31","t33","t34","T3","t35","t36","t37","T4","t38","t39","context","t40","t41","T5","t42","t43","t44","t45","toISOString","t46","t47","t48","title","t49","children","params","t50","t51","t32","t52","contentSnapshot","t53","t54","t55","t56","t57","t58","v","r_0","r","_optimisticState","hues","Card","css","styled","COMMENTS_HIGHLIGHT_HUE_KEY","ThreadCard","attrs","padding","radius","sizing","props","theme","isDark","sanity","color","dark","activeBg","hex","defaultBg","gray","ChevronDownIcon","CurrentUser","AvatarSize","Flex","Stack","StackProps","useLayer","KeyboardEvent","memo","MouseEvent","useCallback","useMemo","useRef","useState","css","styled","Button","UserListWithPermissionsHookValue","useTranslation","CommentsSelectedPath","commentIntentIfDiffers","hasCommentMessageValue","applyCommentIdAttr","commentsLocaleNamespace","CommentBaseCreatePayload","CommentDocument","CommentMessage","CommentReactionOption","CommentStatus","CommentsUIMode","CommentUpdatePayload","SpacerAvatar","CommentInput","CommentInputHandle","CommentsListItemLayout","ThreadCard","EMPTY_ARRAY","MAX_COLLAPSED_REPLIES","DEFAULT_AVATAR_CONFIG","CommentsListItemProps","avatarSize","parentCommentAvatar","replyAvatar","threadCommentsAvatar","StyledThreadCard","ExpandButton","theme","medium","sanity","fonts","text","weights","GhostButton","button","avatarConfig","canReply","currentUser","hasReferencedValue","innerPadding","isSelected","mentionOptions","mode","onCopyLink","id","onCreateRetry","onDelete","onEdit","payload","onKeyDown","event","onPathSelect","nextPath","onReactionSelect","reaction","onReply","onStatusChange","status","parentComment","readOnly","replies","CommentsListItem","props","$","_c","t0","t1","undefined","t","value","setValue","collapsed","setCollapsed","replyInputRef","isTopLayer","t2","hasValue","mouseOver","setMouseOver","t3","Symbol","for","handleMouseEnter","t4","handleMouseLeave","t5","_id","target","path","field","threadId","nextValue","nextComment","message","parentCommentId","reactions","fieldPath","handleReplySubmit","t6","current","discardDialogController","open","startDiscard","t7","isDefaultPrevented","key","preventDefault","stopPropagation","handleInputKeyDown","t8","close","cancelDiscard","t9","focus","confirmDiscard","t10","e","origin","handleThreadRootClick","t11","e_0","handleExpand","t12","bb0","t13","slice","splicedReplies","bb1","length","showCollapseButton","expandButtonText","t14","t15","t16","t17","t18","t19","t20","authorId","t21","t22","_state","type","t23","context","intent","t24","t25","t26","t27","t28","t29","reply","map","t30","t31","displayName"],"sources":["../src/core/comments/components/CommentDeleteDialog.tsx","../src/core/comments/components/avatars/SpacerAvatar.tsx","../src/core/comments/utils/transform-children/linkMiddleware.tsx","../src/core/comments/utils/transform-children/index.ts","../src/core/comments/components/pte/CommentMessageSerializer.tsx","../src/core/comments/components/icons/ReactionIcon.tsx","../src/core/comments/components/reactions/EmojiText.styled.ts","../src/core/comments/components/reactions/CommentReactionsMenu.tsx","../src/core/comments/components/reactions/CommentReactionsMenuButton.tsx","../src/core/comments/components/reactions/CommentReactionsUsersTooltip.tsx","../src/core/comments/components/reactions/TransparentCard.styled.ts","../src/core/comments/components/reactions/CommentReactionsBar.tsx","../src/core/comments/components/list/CommentsListItemContextMenu.tsx","../src/core/comments/components/list/CommentsListItemReferencedValue.tsx","../src/core/comments/components/list/CommentsListItemLayout.tsx","../src/core/comments/components/list/styles.ts","../src/core/comments/components/list/CommentsListItem.tsx"],"sourcesContent":["import {Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\n\nimport {Dialog} from '../../../ui-components/dialog/Dialog'\nimport {TextWithTone} from '../../components/textWithTone/TextWithTone'\nimport {useTranslation} from '../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../i18n/types'\nimport {commentsLocaleNamespace} from '../i18n'\n\nfunction getDialogCopy(\n t: TFunction,\n): Record<'thread' | 'comment', {title: string; body: string; confirmButtonText: string}> {\n return {\n thread: {\n title: t('delete-thread.title'),\n body: t('delete-thread.body'),\n confirmButtonText: t('delete-thread.confirm'),\n },\n comment: {\n title: t('delete-comment.title'),\n body: t('delete-comment.body'),\n confirmButtonText: t('delete-comment.confirm'),\n },\n }\n}\n\n/**\n * @beta\n * @hidden\n */\nexport interface CommentDeleteDialogProps {\n commentId: string\n error: Error | null\n isParent: boolean\n loading: boolean\n onClose: () => void\n onConfirm: (id: string) => void\n}\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentDeleteDialog(props: CommentDeleteDialogProps) {\n const {isParent, onClose, commentId, onConfirm, loading, error} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const dialogCopy = getDialogCopy(t)\n const {title, body, confirmButtonText} = dialogCopy[isParent ? 'thread' : 'comment']\n\n const handleDelete = useCallback(() => {\n onConfirm(commentId)\n }, [commentId, onConfirm])\n\n return (\n <Dialog\n footer={{\n cancelButton: {\n onClick: onClose,\n },\n confirmButton: {\n loading,\n onClick: handleDelete,\n text: confirmButtonText,\n tone: 'critical',\n },\n }}\n header={title}\n id=\"delete-comment-dialog\"\n onClose={onClose}\n width={0}\n >\n <Stack gap={4}>\n <Text size={1}>{body}</Text>\n\n {error && <TextWithTone tone=\"critical\">{t('delete-dialog.error')}</TextWithTone>}\n </Stack>\n </Dialog>\n )\n}\n","import {type AvatarSize} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {css, styled} from 'styled-components'\n\n/**\n * This component is used to as a spacer in situations where we want to align\n * components without avatars with components that have avatars.\n */\nexport const SpacerAvatar = styled.div<{$size?: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n const {$size = 1} = props\n return css`\n min-width: ${theme.avatar.sizes[$size]?.size}px;\n `\n})\n","import {type MouseEvent, type ReactNode} from 'react'\n\nimport {type Middleware} from './types'\n\nconst URL_REGEX = /\\b(https?:\\/\\/[^\\s,()]+(?:\\.[^\\s,()]+)*|www\\.[^\\s,()]+\\.[^\\s,()]{2,})\\b/g\n\nexport function onClick(event: MouseEvent<HTMLAnchorElement>): void {\n event.stopPropagation()\n}\n\nfunction createLinkElement(url: string): ReactNode {\n const href = url.startsWith('http') ? url : `https://${url}`\n\n return (\n <a key={url} href={href} target=\"_blank\" rel=\"noopener noreferrer\" onClick={onClick}>\n {url}\n </a>\n )\n}\n\n/**\n * Middleware that creates link elements for URLs in the text\n */\nexport const linkMiddleware: Middleware = (node) => {\n if (typeof node === 'string') {\n const parts = node.split(URL_REGEX)\n\n return parts.flatMap((part) => {\n if (part.match(URL_REGEX)) {\n return createLinkElement(part)\n }\n\n return part\n })\n }\n\n return node\n}\n","import {type ReactNode} from 'react'\n\nimport {linkMiddleware} from './linkMiddleware'\nimport {type Middleware} from './types'\n\nconst middlewares: Middleware[] = [linkMiddleware]\n\n/**\n * A function that transforms a ReactNode using a set of middlewares\n */\nexport function transformChildren(node: ReactNode): ReactNode {\n if (!Array.isArray(node)) return node\n\n return node.flatMap((item) => {\n let transformedItem: ReactNode[] = [item]\n\n for (const middleware of middlewares) {\n transformedItem = transformedItem.flatMap(middleware)\n }\n\n return transformedItem\n })\n}\n","import {PortableText, type PortableTextComponents} from '@portabletext/react'\nimport {Stack} from '@sanity/ui'\nimport {Fragment, type PropsWithChildren, useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {type CommentMessage} from '../../types'\nimport {transformChildren} from '../../utils/transform-children'\nimport {MentionInlineBlock} from './blocks/MentionInlineBlock'\nimport {NormalBlock} from './blocks/NormalBlock'\n\nconst PortableTextWrap = styled(Stack)(() => {\n return css`\n & > [data-ui='Text']:not(:first-child) {\n margin-top: 1em; // todo: improve\n }\n\n & > [data-ui='Text']:has(> span:empty) {\n display: none;\n }\n `\n})\n\nconst EMPTY_ARRAY: [] = []\n\nfunction NormalBlockTransformed(props: PropsWithChildren) {\n const children = useMemo(() => transformChildren(props.children), [props.children])\n\n return <NormalBlock>{children}</NormalBlock>\n}\n\nconst components: PortableTextComponents = {\n // Since we do not offer any formatting options, we can just use the normal block for all of these.\n block: {\n normal: NormalBlockTransformed,\n h1: NormalBlockTransformed,\n h2: NormalBlockTransformed,\n h3: NormalBlockTransformed,\n h4: NormalBlockTransformed,\n h5: NormalBlockTransformed,\n h6: NormalBlockTransformed,\n blockquote: NormalBlockTransformed,\n code: NormalBlockTransformed,\n },\n\n list: {\n bullet: Fragment,\n number: Fragment,\n checkmarks: Fragment,\n },\n\n listItem: {\n bullet: NormalBlockTransformed,\n number: NormalBlockTransformed,\n checkmarks: NormalBlockTransformed,\n },\n\n // Since we do not offer any formatting options, we can just use the normal block for all of these.\n marks: {\n strong: Fragment,\n em: Fragment,\n code: Fragment,\n underline: Fragment,\n strikeThrough: Fragment,\n link: Fragment,\n },\n\n types: {\n mention: (props) => {\n return <MentionInlineBlock userId={props?.value?.userId} selected={false} />\n },\n },\n}\n\ninterface CommentMessageSerializerProps {\n blocks: CommentMessage\n}\n\n/**\n * @beta\n * @hidden\n */\nexport function CommentMessageSerializer(props: CommentMessageSerializerProps): React.JSX.Element {\n const {blocks} = props\n\n return (\n <PortableTextWrap>\n <PortableText value={blocks || EMPTY_ARRAY} components={components} />\n </PortableTextWrap>\n )\n}\n","import {type RefAttributes, type SVGProps} from 'react'\n\nexport function ReactionIcon(props: SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>) {\n const {ref, ...rest} = props\n return (\n <svg\n data-sanity-icon=\"add-reaction\"\n fill=\"none\"\n height=\"1em\"\n ref={ref}\n viewBox=\"0 0 25 25\"\n width=\"1em\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.1044 10.4011L10.1044 10.9972\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M14.2393 10.4011L14.2393 10.9972\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M7.12128 14.1151C7.70803 15.0226 9.66113 16.8377 11.7735 16.8377C13.8859 16.8377 15.6713 15.0226 16.4257 14.1151\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinecap=\"square\"\n />\n <path\n d=\"M16.703 6.43905C15.3486 5.36511 13.6357 4.72374 11.773 4.72374C7.38731 4.72374 3.83203 8.27902 3.83203 12.6647C3.83203 17.0503 7.38731 20.6056 11.773 20.6056C16.0995 20.6056 19.618 17.1455 19.712 12.8415\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.1135 9.03425L19.1135 11.4903L20.3135 11.4903L20.3135 9.03425L22.7693 9.03425L22.7693 7.83425L20.3135 7.83425L20.3135 5.37941L19.1135 5.37941L19.1135 7.83425L16.6584 7.83425L16.6584 9.03425L19.1135 9.03425Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n","import {Text} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nexport const EmojiText = styled(Text)`\n font-family:\n 'Twemoji Mozilla', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji',\n 'EmojiOne Color', 'Android Emoji', sans-serif;\n`\n","// oxlint-disable-next-line no-restricted-imports\nimport {Button as UIButton, Grid} from '@sanity/ui'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {COMMENT_REACTION_EMOJIS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption} from '../../types'\nimport {EmojiText} from './EmojiText.styled'\n\nconst GRID_COLUMNS = 6\n\ninterface CommentReactionsMenuProps {\n options: CommentReactionOption[]\n onSelect: (option: CommentReactionOption) => void\n}\n\nexport function CommentReactionsMenu(props: CommentReactionsMenuProps) {\n const {options, onSelect} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [focusedIndex, setFocusedIndex] = useState<number>(0)\n\n const handleRootKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const focusableLen = rootElement?.querySelectorAll('button').length ?? 0\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prev) => (prev + 1) % focusableLen)\n }\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prev) => (prev - 1 + focusableLen) % focusableLen)\n }\n // if (event.key === 'ArrowDown') {\n // setFocusedIndex((prev) => (prev + GRID_COLUMNS) % focusableLen)\n // }\n // if (event.key === 'ArrowUp') {\n // setFocusedIndex((prev) => (prev - GRID_COLUMNS + focusableLen) % focusableLen)\n // }\n },\n [rootElement],\n )\n\n const handleOptionClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const index = rootElement\n ? Array.from(rootElement.querySelectorAll('button')).indexOf(event.currentTarget)\n : -1\n setFocusedIndex(index)\n onSelect(options[index])\n },\n [rootElement, onSelect, options],\n )\n\n // Focus the button at the focused index.\n useEffect(() => {\n if (!rootElement) return\n const focusableElements = Array.from(rootElement.querySelectorAll('button'))\n if (focusableElements.length > 0) {\n focusableElements[focusedIndex].focus()\n }\n }, [focusedIndex, rootElement])\n\n return (\n <Grid\n gridTemplateColumns={GRID_COLUMNS}\n gap={1}\n onKeyDown={handleRootKeyDown}\n ref={setRootElement}\n role=\"menu\"\n >\n {options.map((o) => {\n const emoji = COMMENT_REACTION_EMOJIS[o.shortName]\n\n return (\n <UIButton\n key={o.shortName}\n aria-label={t('reactions.react-with-aria-label', {\n reactionName: o.title || o.shortName,\n })}\n mode=\"bleed\"\n onClick={handleOptionClick}\n padding={2}\n role=\"menuitem\"\n tabIndex={-1}\n >\n <EmojiText align=\"center\" size={2}>\n {emoji}\n </EmojiText>\n </UIButton>\n )\n })}\n </Grid>\n )\n}\n","import {Card, useClickOutsideEvent} from '@sanity/ui'\nimport {cloneElement, useCallback, useMemo, useRef, useState} from 'react'\n\nimport {Popover, type PopoverProps} from '../../../../ui-components/popover/Popover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../i18n/types'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption, type CommentsUIMode} from '../../types'\nimport {CommentReactionsMenu} from './CommentReactionsMenu'\n\nconst POPOVER_FALLBACK_PLACEMENTS: PopoverProps['fallbackPlacements'] = ['top', 'bottom']\n\nexport interface CommentReactionsMenuButtonProps {\n mode: CommentsUIMode\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onSelect: (option: CommentReactionOption) => void\n options: CommentReactionOption[]\n readOnly?: boolean\n renderMenuButton: (props: {\n open: boolean\n tooltipContent: string\n t: TFunction\n }) => React.JSX.Element\n}\n\nexport function CommentReactionsMenuButton(props: CommentReactionsMenuButtonProps) {\n const {onMenuClose, onMenuOpen, onSelect, options, readOnly, renderMenuButton, mode} = props\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const [open, setOpen] = useState<boolean>(false)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const handleClick = useCallback(() => {\n const next = !open\n setOpen(next)\n\n if (next) {\n onMenuOpen?.()\n } else {\n onMenuClose?.()\n }\n }, [onMenuClose, onMenuOpen, open])\n\n const handleClose = useCallback(() => {\n if (!open) return\n\n setOpen(false)\n onMenuClose?.()\n }, [open, onMenuClose])\n\n const handleCloseAndFocus = useCallback(() => {\n if (!open) return\n\n handleClose()\n buttonElement?.focus()\n }, [buttonElement, handleClose, open])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const {key, shiftKey} = event\n\n if ((shiftKey && key === 'Tab') || key === 'Escape' || key === 'Tab') {\n handleCloseAndFocus()\n }\n },\n [handleCloseAndFocus],\n )\n\n useClickOutsideEvent(handleClose, () => [popoverRef.current, buttonElement])\n\n const handleSelect = useCallback(\n (option: CommentReactionOption) => {\n onSelect(option)\n handleClose()\n },\n [handleClose, onSelect],\n )\n\n const button = useMemo(() => {\n // Get the button element from the renderMenuButton function.\n const btn = renderMenuButton({\n open,\n tooltipContent:\n mode === 'upsell'\n ? t('list-item.context-menu-add-reaction-upsell')\n : t('list-item.context-menu-add-reaction'),\n t,\n })\n\n // Clone the button element and add the necessary props.\n return cloneElement(btn, {\n 'aria-expanded': open,\n 'aria-haspopup': 'true',\n 'disabled': readOnly || mode === 'upsell',\n 'id': 'reactions-menu-button',\n 'onClick': handleClick,\n 'ref': setButtonElement,\n })\n }, [handleClick, open, readOnly, renderMenuButton, t, mode])\n\n const popoverContent = (\n <Card\n aria-labelledby=\"reactions-menu-button\"\n onKeyDown={handleKeyDown}\n padding={1}\n radius={3}\n tone=\"default\"\n >\n <CommentReactionsMenu onSelect={handleSelect} options={options} />\n </Card>\n )\n\n return (\n <Popover\n constrainSize\n content={popoverContent}\n fallbackPlacements={POPOVER_FALLBACK_PLACEMENTS}\n open={open}\n placement=\"bottom\"\n portal\n ref={popoverRef}\n tone=\"default\"\n >\n {button}\n </Popover>\n )\n}\n","import {type CurrentUser} from '@sanity/types'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useListFormat} from '../../../hooks/useListFormat'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useUser} from '../../../store/user/hooks'\nimport {COMMENT_REACTION_EMOJIS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionShortNames} from '../../types'\nimport {EmojiText} from './EmojiText.styled'\n\nconst TEXT_SIZE: number | number[] = 1\n\nconst ContentStack = styled(Stack)`\n max-width: 180px;\n`\n\nconst TextGroup = styled.div`\n display: inline-block;\n`\n\nconst InlineText = styled(Text).attrs({size: TEXT_SIZE})`\n display: inline-block !important;\n\n & > span {\n white-space: break-spaces;\n }\n`\n\nconst TextBox = styled(Box)`\n line-height: 1;\n text-align: center;\n`\n\nconst LEADING_NON_WHITESPACE_RE = /^\\S+/\n\ninterface UserDisplayNameProps {\n currentUserId: string\n isFirst?: boolean\n userId: string\n}\n\nfunction UserDisplayName(props: UserDisplayNameProps): string {\n const {currentUserId, isFirst, userId} = props\n const [user] = useUser(userId)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const isCurrentUser = currentUserId === userId\n if (isCurrentUser) {\n const context = isFirst ? 'leading' : undefined\n return t('reactions.user-list.you', {context, replace: {name: user?.displayName}})\n }\n\n return user?.displayName || t('reactions.user-list.unknown-user-fallback-name')\n}\n\ninterface CommentReactionsUsersTooltipProps {\n children: React.ReactNode\n currentUser: CurrentUser\n reactionName: CommentReactionShortNames\n userIds: string[]\n}\n\nexport function CommentReactionsUsersTooltip(props: CommentReactionsUsersTooltipProps) {\n const {children, ...restProps} = props\n\n return (\n <Tooltip\n content={<CommentReactionsUsersTooltipContent {...restProps} />}\n placement=\"bottom\"\n portal\n >\n <div>{children}</div>\n </Tooltip>\n )\n}\n\nfunction FormattedUserList({currentUserId, userIds}: {currentUserId: string; userIds: string[]}) {\n const listFormat = useListFormat({style: 'long', type: 'conjunction'})\n if (userIds.length === 0) return null\n\n /**\n * We need to do some surgery on the list: in some locales (such as en-US), the literal segments\n * can contain oxford commas, which we want to include as the part of the element preceeding it.\n * This ensures that we do not wrap to a new line that starts with a comma. In general, we should\n * not special case on _comma_ per se, but rather by the presence of a non-whitespace character.\n */\n const parts = listFormat.formatToParts(userIds)\n const elements: React.JSX.Element[] = []\n for (let i = 0; i < parts.length; i++) {\n const item = parts[i]\n\n if (item.type === 'literal') {\n // Add literals as-is - the next case will rewrite literals to exclude leading non-whitespace\n elements.push(<InlineText key={`literal-${i}`}>{item.value}</InlineText>)\n continue\n }\n\n const nextItem = parts[i + 1]\n const nextLeadsWithNonWhitespace =\n nextItem && nextItem.type === 'literal' && LEADING_NON_WHITESPACE_RE.test(nextItem.value)\n if (nextLeadsWithNonWhitespace) {\n // This is the 'oxford comma' case, where we want to include any leading non-whitespace from\n // the literal as trailing characters to the element we are currently adding.\n const [nonWhitespace = ''] = nextItem.value.match(LEADING_NON_WHITESPACE_RE) || []\n\n elements.push(\n // Key (value) is user ID, thus unique\n <TextGroup key={item.value}>\n <InlineText weight=\"medium\">\n <UserDisplayName currentUserId={currentUserId} isFirst={i === 0} userId={item.value} />\n </InlineText>\n <InlineText>{nonWhitespace}</InlineText>\n </TextGroup>,\n )\n\n // Rewrite the next item to not contain this leading non-whitespace\n nextItem.value = nextItem.value.slice(nonWhitespace.length)\n continue\n }\n\n // Literals have been taken care of and returns early, so the only remaining case is that we're\n // in an element that does _not_ have a leading non-whitespace literal following it.\n elements.push(\n // Key (value) is user ID, thus unique\n <InlineText key={item.value} weight=\"medium\">\n <UserDisplayName currentUserId={currentUserId} isFirst={i === 0} userId={item.value} />\n </InlineText>,\n )\n }\n\n return elements\n}\n\nfunction CommentReactionsUsersTooltipContent(\n props: Omit<CommentReactionsUsersTooltipProps, 'children'>,\n) {\n const {currentUser, reactionName, userIds} = props\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const UserList = useCallback(() => {\n if (!currentUser) return null\n return <FormattedUserList currentUserId={currentUser.id} userIds={userIds} />\n }, [currentUser, userIds])\n\n return (\n <ContentStack padding={1}>\n <Flex justify=\"center\" paddingBottom={2} paddingTop={1}>\n <EmojiText size={4}>{COMMENT_REACTION_EMOJIS[reactionName]}</EmojiText>\n </Flex>\n\n <TextBox>\n <Translate\n t={t}\n i18nKey=\"reactions.users-reacted-with-reaction\"\n values={{reactionName}}\n components={{\n UserList,\n ReactionName: () => <InlineText muted>{reactionName}</InlineText>,\n Text: ({children}) => (\n <>\n <InlineText muted>{children}</InlineText> <wbr />{' '}\n </>\n ),\n }}\n />\n </TextBox>\n </ContentStack>\n )\n}\n","import {Card} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\n/**\n * Returns a styled `<Card>` without a background.\n * This is a temporary workaround to force nested Sanity UI components to adhere to a specific tone (and bypass color mixing).\n *\n * TODO: consider exposing an unstable prop in Sanity UI to facilitate this.\n */\nexport const TransparentCard = styled(Card)`\n background: none;\n`\n","import {type CurrentUser} from '@sanity/types'\nimport {\n // oxlint-disable-next-line no-restricted-imports\n Button as UIButton,\n Flex,\n Text,\n} from '@sanity/ui'\nimport {memo, useCallback, useMemo, useState} from 'react'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {COMMENT_REACTION_EMOJIS, COMMENT_REACTION_OPTIONS} from '../../constants'\nimport {\n type CommentReactionItem,\n type CommentReactionOption,\n type CommentReactionShortNames,\n type CommentsUIMode,\n} from '../../types'\nimport {ReactionIcon} from '../icons/ReactionIcon'\nimport {CommentReactionsMenuButton} from './CommentReactionsMenuButton'\nimport {CommentReactionsUsersTooltip} from './CommentReactionsUsersTooltip'\nimport {EmojiText} from './EmojiText.styled'\nimport {TransparentCard} from './TransparentCard.styled'\n\n/**\n * A function that groups reactions by name. For example:\n *\n * ```js\n * [\n * [':name:', [{shortName: ':name:', userId: 'user1'}, {shortName: ':name:', userId: 'user2'}],\n * [':name2:', [{shortName: ':name2:', userId: 'user1'}]\n * ]\n *```\n */\nfunction groupReactionsByName(reactions: CommentReactionItem[]) {\n const grouped = reactions.reduce(\n (acc, reaction) => {\n const {shortName} = reaction\n\n if (!acc[shortName]) {\n acc[shortName] = []\n }\n\n acc[shortName].push(reaction)\n\n return acc\n },\n {} as Record<CommentReactionShortNames, CommentReactionItem[]>,\n )\n\n // Sort based on the first appearance of the reaction in `reactions` array.\n // This is to ensure that the order of the reactions is consistent so that\n // the reactions are not jumping around when new reactions are added.\n const sorted = Object.entries(grouped).sort(([nameA], [nameB]) => {\n const indexA = reactions.findIndex((r) => r.shortName === nameA)\n const indexB = reactions.findIndex((r) => r.shortName === nameB)\n\n return indexA - indexB\n })\n\n return sorted as [CommentReactionShortNames, CommentReactionItem[]][]\n}\n\nconst renderMenuButton = ({open, tooltipContent}: {open: boolean; tooltipContent: string}) => {\n return (\n <UIButton fontSize={1} mode=\"ghost\" padding={0} radius=\"full\" selected={open}>\n <Flex paddingX={3} paddingY={2}>\n <Tooltip animate content={tooltipContent} disabled={open}>\n <Text size={1}>\n <ReactionIcon />\n </Text>\n </Tooltip>\n </Flex>\n </UIButton>\n )\n}\n\ninterface CommentReactionsBarProps {\n currentUser: CurrentUser\n onSelect: (reaction: CommentReactionOption) => void\n reactions: CommentReactionItem[]\n readOnly?: boolean\n mode: CommentsUIMode\n}\n\nexport const CommentReactionsBar = memo(function CommentReactionsBar(\n props: CommentReactionsBarProps,\n) {\n const {currentUser, onSelect, reactions, readOnly, mode} = props\n const handleSelect = useCallback(\n (name: CommentReactionShortNames) => {\n const option = COMMENT_REACTION_OPTIONS.find((o) => o.shortName === name)\n\n if (option) {\n onSelect(option)\n }\n },\n [onSelect],\n )\n\n // The list of the current user's reactions, e.g. [':+1:', ':heart:']\n const currentUserReactionNames = useMemo(() => {\n return reactions.filter((r) => r.userId === currentUser?.id).map((r) => r.shortName)\n }, [currentUser?.id, reactions])\n\n // Reactions grouped by name, e.g. [ [':+1:', [{shortName: ':+1:', userId: 'user1'}] ] ]\n const groupedReactions = useMemo(() => {\n const grouped = groupReactionsByName(reactions)\n\n // Filter out reactions that are not in the `COMMENT_REACTION_EMOJIS` map.\n return grouped.filter(([name]) => COMMENT_REACTION_EMOJIS[name])\n }, [reactions])\n\n const [sortedGroupedReactions, setSortedGroupedReactions] = useState(() => ({\n // An array of the initial order of the reactions. This is used to sort the reactions.\n // E.g. [':+1:', ':heart:']\n sortOrder: Object.keys(Object.fromEntries(groupedReactions)),\n // We cache the groupedReactions to know when we should update the sortedReactions, ensuring we don't run into an infinite render loop.\n groupedReactions: [] as typeof groupedReactions,\n sortedReactions: [] as typeof groupedReactions,\n }))\n // Sort the reactions based on the initial order to make sure that the reactions\n // are not jumping around when new reactions are added.\n let {sortedReactions} = sortedGroupedReactions\n if (sortedGroupedReactions.groupedReactions !== groupedReactions) {\n const {sortOrder} = sortedGroupedReactions\n sortedReactions = groupedReactions.sort(([nameA], [nameB]) => {\n const indexA = sortOrder.indexOf(nameA)\n const indexB = sortOrder.indexOf(nameB)\n\n if (indexA === -1) {\n return 1\n }\n\n if (indexB === -1) {\n return -1\n }\n\n return indexA - indexB\n })\n\n setSortedGroupedReactions({\n groupedReactions,\n sortOrder: sortedReactions.map(([name]) => name),\n sortedReactions,\n })\n }\n\n return (\n <Flex align=\"center\" gap={1} wrap=\"wrap\">\n <TooltipDelayGroupProvider>\n {sortedReactions.map(([name, reactionsList]) => {\n const hasReacted = currentUserReactionNames.includes(name)\n const userIds = reactionsList.map((r) => r.userId)\n const emoji = COMMENT_REACTION_EMOJIS[name]\n\n return (\n <CommentReactionsUsersTooltip\n key={name}\n currentUser={currentUser}\n reactionName={name}\n userIds={userIds}\n >\n <TransparentCard tone=\"default\">\n <UIButton\n disabled={readOnly || mode === 'upsell'}\n mode=\"ghost\"\n onClick={() => handleSelect(name)}\n padding={2}\n radius=\"full\"\n selected={hasReacted}\n tone={hasReacted ? 'primary' : 'default'}\n >\n <Flex align=\"center\" gap={1}>\n <EmojiText size={1}>{emoji}</EmojiText>\n\n <Text size={0} weight={hasReacted ? 'semibold' : 'medium'}>\n {reactionsList?.length}\n </Text>\n </Flex>\n </UIButton>\n </TransparentCard>\n </CommentReactionsUsersTooltip>\n )\n })}\n\n <TransparentCard tone=\"default\">\n <CommentReactionsMenuButton\n mode={mode}\n onSelect={(o) => handleSelect(o.shortName)}\n options={COMMENT_REACTION_OPTIONS}\n readOnly={readOnly}\n renderMenuButton={renderMenuButton}\n />\n </TransparentCard>\n </TooltipDelayGroupProvider>\n </Flex>\n )\n})\nCommentReactionsBar.displayName = 'Memo(CommentReactionsBar)'\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UndoIcon} from '@sanity/icons/Undo'\nimport {Card, Flex, Menu, MenuDivider} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton, type MenuButtonProps} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {TooltipDelayGroupProvider} from '../../../../ui-components/tooltipDelayGroupProvider/TooltipDelayGroupProvider'\nimport {ContextMenuButton} from '../../../components/contextMenuButton/ContextMenuButton'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type TFunction} from '../../../i18n/types'\nimport {COMMENT_REACTION_OPTIONS} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentReactionOption, type CommentStatus, type CommentsUIMode} from '../../types'\nimport {ReactionIcon} from '../icons/ReactionIcon'\nimport {CommentReactionsMenuButton} from '../reactions/CommentReactionsMenuButton'\n\nconst renderMenuButton = ({\n open,\n tooltipContent,\n t,\n}: {\n open: boolean\n tooltipContent: string\n t: TFunction\n}) => (\n <Button\n aria-label={t('list-item.context-menu-add-reaction-aria-label')}\n icon={ReactionIcon}\n mode=\"bleed\"\n selected={open}\n tooltipProps={{content: tooltipContent}}\n />\n)\n\nconst POPOVER_PROPS: MenuButtonProps['popover'] = {\n placement: 'bottom-end',\n}\n\nconst FloatingCard = styled(Card)`\n &:empty {\n display: none;\n }\n`\n\ninterface CommentsListItemContextMenuProps {\n canDelete: boolean | undefined\n canEdit: boolean | undefined\n isParent: boolean | undefined\n mode: CommentsUIMode\n onCopyLink?: () => void\n onDeleteStart?: () => void\n onEditStart?: () => void\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onReactionSelect?: (option: CommentReactionOption) => void\n onStatusChange?: () => void\n readOnly?: boolean\n status: CommentStatus\n}\n\nexport function CommentsListItemContextMenu(props: CommentsListItemContextMenuProps) {\n const {\n canDelete,\n canEdit,\n isParent,\n mode,\n onCopyLink,\n onDeleteStart,\n onEditStart,\n onMenuClose,\n onMenuOpen,\n onReactionSelect,\n onStatusChange,\n readOnly,\n status,\n } = props\n\n const showMenuButton = Boolean(onCopyLink || onDeleteStart || onEditStart)\n\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const hasContextMenuOptions = Boolean(canDelete || canEdit || onCopyLink)\n return (\n <TooltipDelayGroupProvider>\n <Flex>\n <FloatingCard display=\"flex\" shadow={2} padding={1} radius={2} sizing=\"border\">\n {onReactionSelect && (\n <CommentReactionsMenuButton\n mode={mode}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n onSelect={onReactionSelect}\n options={COMMENT_REACTION_OPTIONS}\n readOnly={readOnly}\n renderMenuButton={renderMenuButton}\n />\n )}\n\n {isParent && onStatusChange && (\n <Button\n aria-label={\n status === 'open'\n ? t('list-item.resolved-tooltip-aria-label')\n : t('list-item.re-open-resolved-aria-label')\n }\n data-testid=\"comments-list-item-status-button\"\n disabled={readOnly}\n icon={status === 'open' ? CheckmarkCircleIcon : UndoIcon}\n mode=\"bleed\"\n onClick={onStatusChange}\n tooltipProps={{\n content:\n status === 'open'\n ? t('list-item.resolved-tooltip-content')\n : t('list-item.re-open-resolved'),\n }}\n />\n )}\n\n {hasContextMenuOptions && (\n <MenuButton\n id=\"comment-actions-menu\"\n button={\n <ContextMenuButton\n aria-label={t('list-item.open-menu-aria-label')}\n disabled={readOnly}\n hidden={!showMenuButton}\n />\n }\n onOpen={onMenuOpen}\n onClose={onMenuClose}\n menu={\n <Menu>\n <MenuItem\n hidden={!canEdit}\n icon={EditIcon}\n onClick={onEditStart}\n text={t('list-item.edit-comment')}\n tooltipProps={\n mode === 'upsell' ? {content: t('list-item.edit-comment-upsell')} : undefined\n }\n disabled={mode === 'upsell'}\n />\n\n <MenuItem\n hidden={!canDelete}\n icon={TrashIcon}\n onClick={onDeleteStart}\n text={t('list-item.delete-comment')}\n tone=\"critical\"\n />\n\n {onCopyLink && <MenuDivider hidden={!canDelete && !canEdit} />}\n\n <MenuItem\n hidden={!onCopyLink}\n icon={LinkIcon}\n onClick={onCopyLink}\n text={t('list-item.copy-link')}\n />\n </Menu>\n }\n popover={POPOVER_PROPS}\n />\n )}\n </FloatingCard>\n </Flex>\n </TooltipDelayGroupProvider>\n )\n}\n","import {toPlainText} from '@portabletext/react'\nimport {hues} from '@sanity/color'\nimport {LinkRemovedIcon} from '@sanity/icons/LinkRemoved'\nimport {isPortableTextTextBlock} from '@sanity/types'\nimport {Box, Flex, Stack, Text, type Theme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {type CommentDocument} from '../../types'\n\nfunction truncate(str: string, length = 250) {\n if (str.length <= length) return str\n return `${str.slice(0, length)}...`\n}\n\ninterface BlockQuoteStackProps {\n $hasReferencedValue: boolean\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n theme: Theme\n}\n\nconst InlineBox = styled(Box).attrs({marginLeft: 1, marginRight: 2})`\n &:not([data-hidden]) {\n display: inline;\n }\n`\n\nconst BlockQuoteStack = styled(Stack)<BlockQuoteStackProps>(({theme, $hasReferencedValue}) => {\n const isDark = theme.sanity.v2?.color._dark\n\n const hue = $hasReferencedValue ? COMMENTS_HIGHLIGHT_HUE_KEY : 'gray'\n const borderColor = isDark ? hues[hue][700].hex : hues[hue][300].hex\n\n return css`\n border-left: 2px solid ${borderColor};\n word-break: break-word;\n `\n})\n\ninterface CommentsListItemReferencedValueProps {\n hasReferencedValue: boolean | undefined\n value: CommentDocument['contentSnapshot']\n}\n\nexport function CommentsListItemReferencedValue(props: CommentsListItemReferencedValueProps) {\n const {hasReferencedValue, value} = props\n\n const {t} = useTranslation(commentsLocaleNamespace)\n const tooltipText = t('list-item.missing-referenced-value-tooltip-content')\n\n const resolvedValue = useMemo(() => {\n if (Array.isArray(value) && value?.filter(isPortableTextTextBlock).length > 0) {\n const text = value?.map(toPlainText).join(' ')\n const truncated = truncate(text)\n\n return truncated\n }\n\n return null\n }, [value])\n\n if (!resolvedValue) return null\n\n return (\n <BlockQuoteStack\n $hasReferencedValue={Boolean(hasReferencedValue)}\n data-testid=\"comments-list-item-referenced-value\"\n flex={1}\n forwardedAs=\"blockquote\"\n padding={1}\n paddingLeft={2}\n sizing=\"border\"\n >\n <Flex align=\"flex-start\">\n <Text size={1} muted>\n {!hasReferencedValue && (\n <Tooltip content={tooltipText}>\n <InlineBox>\n <LinkRemovedIcon />\n </InlineBox>\n </Tooltip>\n )}\n\n {resolvedValue}\n </Text>\n </Flex>\n </BlockQuoteStack>\n )\n}\n","import {hues} from '@sanity/color'\nimport {type CurrentUser} from '@sanity/types'\nimport {\n type AvatarSize,\n Box,\n Card,\n Flex,\n Stack,\n Text,\n TextSkeleton,\n useClickOutsideEvent,\n} from '@sanity/ui'\nimport {getTheme_v2} from '@sanity/ui/theme'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {css, styled} from 'styled-components'\n\nimport {useDidUpdate} from '../../../form/hooks/useDidUpdate'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {type RelativeTimeOptions, useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {useUser} from '../../../store/user/hooks'\nimport {hasCommentMessageValue, isTextSelectionComment, useCommentHasChanged} from '../../helpers'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentContext,\n type CommentDocument,\n type CommentMessage,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {CommentsAvatar} from '../avatars/CommentsAvatar'\nimport {SpacerAvatar} from '../avatars/SpacerAvatar'\nimport {FLEX_GAP} from '../constants'\nimport {CommentInput, type CommentInputHandle} from '../pte/comment-input/CommentInput'\nimport {CommentMessageSerializer} from '../pte/CommentMessageSerializer'\nimport {CommentReactionsBar} from '../reactions/CommentReactionsBar'\nimport {CommentsListItemContextMenu} from './CommentsListItemContextMenu'\nimport {CommentsListItemReferencedValue} from './CommentsListItemReferencedValue'\n\nconst stopPropagation = (e: React.MouseEvent<HTMLDivElement>) => e.stopPropagation()\n\nconst ContextMenuBox = styled(Box)``\n\nconst SKELETON_INLINE_STYLE: React.CSSProperties = {width: '50%'}\n\nconst EMPTY_ARRAY: [] = []\n\nconst TimeText = styled(Text)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const fg = hues.gray[isDark ? 200 : 800].hex\n\n return css`\n min-width: max-content;\n --card-fg-color: ${fg};\n color: var(--card-fg-color);\n `\n})\n\nconst HeaderFlex = styled(Flex)<{$size: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n min-height: ${theme.avatar.sizes[props.$size]?.size}px;\n `\n})\n\nconst IntentText = styled(Text)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const fg = hues.gray[isDark ? 200 : 800].hex\n\n return css`\n --card-fg-color: ${fg};\n color: var(--card-fg-color);\n `\n})\n\nconst InnerStack = styled(Stack)`\n transition: opacity 200ms ease;\n\n &[data-muted='true'] {\n transition: unset;\n opacity: 0.5;\n }\n`\n\nconst ErrorFlex = styled(Flex)<{$size: AvatarSize}>((props) => {\n const theme = getTheme_v2(props.theme)\n\n return css`\n min-height: ${theme.avatar.sizes[props.$size]?.size}px;\n `\n})\n\nconst RetryCardButton = styled(Card)`\n /* Add not on hover */\n &:not(:hover) {\n background-color: transparent;\n }\n`\n\nconst RootStack = styled(Stack)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {space} = theme.sanity\n\n return css`\n position: relative;\n\n /* Only show the floating layer on hover when hover is supported.\n Else, the layer is always visible. */\n @media (hover: hover) {\n ${ContextMenuBox} {\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(${space[1]}px, -${space[1]}px);\n }\n\n ${ContextMenuBox} {\n &:focus-within {\n opacity: 1;\n }\n }\n\n &:hover {\n ${ContextMenuBox} {\n opacity: 1;\n }\n }\n }\n\n &[data-menu-open='true'] {\n ${ContextMenuBox} {\n opacity: 1;\n }\n }\n `\n})\n\ninterface CommentsListItemLayoutProps {\n avatarSize?: AvatarSize\n canDelete?: boolean\n canEdit?: boolean\n comment: CommentDocument\n currentUser: CurrentUser\n hasError?: boolean\n hasReferencedValue?: boolean\n intent?: CommentContext['intent']\n isParent?: boolean\n isRetrying?: boolean\n mentionOptions: UserListWithPermissionsHookValue\n mode: CommentsUIMode\n onCopyLink?: (id: string) => void\n onCreateRetry?: (id: string) => void\n onDelete: (id: string) => void\n onEdit: (id: string, message: CommentUpdatePayload) => void\n onInputKeyDown?: (event: React.KeyboardEvent) => void\n onReactionSelect?: (id: string, reaction: CommentReactionOption) => void\n onStatusChange?: (id: string, status: CommentStatus) => void\n readOnly?: boolean\n withAvatar?: boolean\n}\n\nconst RELATIVE_TIME_OPTIONS: RelativeTimeOptions = {useTemporalPhrase: true}\n\nexport function CommentsListItemLayout(props: CommentsListItemLayoutProps) {\n const {\n avatarSize = 1,\n canDelete,\n canEdit,\n comment,\n currentUser,\n hasError,\n hasReferencedValue,\n intent,\n isParent,\n isRetrying,\n mentionOptions,\n mode,\n onCopyLink,\n onCreateRetry,\n onDelete,\n onEdit,\n onInputKeyDown,\n onReactionSelect,\n onStatusChange,\n readOnly,\n withAvatar = true,\n } = props\n const {_createdAt, authorId, message, _id, lastEditedAt} = comment\n const [user] = useUser(authorId)\n const {t} = useTranslation(commentsLocaleNamespace)\n\n const [value, setValue] = useState<CommentMessage>(message)\n const [isEditing, setIsEditing] = useState<boolean>(false)\n const rootElementRef = useRef<HTMLDivElement | null>(null)\n const startMessage = useRef<CommentMessage>(message)\n const [menuOpen, setMenuOpen] = useState<boolean>(false)\n\n const commentInputRef = useRef<CommentInputHandle>(null)\n\n const hasChanges = useCommentHasChanged(value)\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n // Filter out reactions that's been optimistically removed from the comment.\n const reactions = (\n comment?.reactions?.filter((r) => r?._optimisticState !== 'removed') || EMPTY_ARRAY\n ).filter((r) => {\n // Filter out reactions that might have to incorrect format\n return 'userId' in r && 'shortName' in r\n })\n\n const hasReactions = Boolean(reactions?.length)\n\n const createdDate = _createdAt ? new Date(_createdAt) : new Date()\n const editedDate = lastEditedAt ? new Date(lastEditedAt) : null\n const createdTimeAgo = useRelativeTime(createdDate, RELATIVE_TIME_OPTIONS)\n const dateTimeFormat = useDateTimeFormat({dateStyle: 'full', timeStyle: 'medium'})\n const formattedCreatedAt = dateTimeFormat.format(createdDate)\n const formattedLastEditAt = editedDate ? dateTimeFormat.format(editedDate) : null\n const displayError = hasError || isRetrying\n\n // If the message has changed we need to update the value in the state\n // so that, when the user starts editing, the input is populated with the\n // latest message value.\n useEffect(() => {\n if (isEditing) return\n\n startMessage.current = message\n // oxlint-disable-next-line react/react-compiler\n setValue(message)\n }, [isEditing, message])\n\n const handleMenuOpen = useCallback(() => setMenuOpen(true), [])\n const handleMenuClose = useCallback(() => setMenuOpen(false), [])\n const handleCopyLink = useCallback(() => onCopyLink?.(_id), [_id, onCopyLink])\n const handleCreateRetry = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation()\n onCreateRetry?.(_id)\n },\n [_id, onCreateRetry],\n )\n const handleDelete = useCallback(() => onDelete(_id), [_id, onDelete])\n\n const cancelEdit = useCallback(() => {\n setIsEditing(false)\n setValue(startMessage.current)\n }, [])\n\n const startDiscard = useCallback(() => {\n if (!hasValue || !hasChanges) {\n cancelEdit()\n return\n }\n commentInputRef.current?.discardDialogController.open()\n }, [cancelEdit, hasChanges, hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n // Discard the input text\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n // Call parent handler\n if (onInputKeyDown) onInputKeyDown(event)\n },\n [onInputKeyDown, startDiscard],\n )\n\n const cancelDiscard = useCallback(() => {\n commentInputRef.current?.discardDialogController.close()\n }, [])\n\n const confirmDiscard = useCallback(() => {\n commentInputRef.current?.discardDialogController.close()\n cancelEdit()\n }, [cancelEdit])\n\n const handleReactionSelect = useCallback(\n (reaction: CommentReactionOption) => {\n onReactionSelect?.(_id, reaction)\n },\n [_id, onReactionSelect],\n )\n\n const handleEditSubmit = useCallback(\n (nextValue: CommentMessage) => {\n onEdit(_id, {message: nextValue})\n setIsEditing(false)\n },\n [_id, onEdit],\n )\n\n const handleOpenStatusChange = useCallback(() => {\n onStatusChange?.(_id, comment.status === 'open' ? 'resolved' : 'open')\n }, [_id, comment.status, onStatusChange])\n\n const toggleEdit = useCallback(() => {\n setIsEditing((v) => !v)\n }, [])\n\n const handleCloseMenu = useCallback(() => setMenuOpen(false), [])\n\n const handleRootKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && !hasChanges) {\n cancelEdit()\n }\n },\n [cancelEdit, hasChanges],\n )\n\n useDidUpdate(isEditing, handleCloseMenu)\n\n useClickOutsideEvent(!hasChanges && cancelEdit, () => [rootElementRef.current])\n\n const name = user?.displayName ? (\n <Text size={1} weight=\"medium\" textOverflow=\"ellipsis\" title={user.displayName}>\n {user.displayName}\n </Text>\n ) : (\n <TextSkeleton size={1} style={SKELETON_INLINE_STYLE} />\n )\n\n return (\n <RootStack\n data-menu-open={menuOpen ? 'true' : 'false'}\n data-testid=\"comments-list-item-layout\"\n onKeyDown={handleRootKeyDown}\n ref={rootElementRef}\n gap={4}\n >\n <InnerStack gap={1} data-muted={displayError}>\n <HeaderFlex align=\"center\" gap={FLEX_GAP} flex={1} $size={avatarSize}>\n {withAvatar && <CommentsAvatar user={user} size={avatarSize} />}\n\n <Flex direction=\"column\" gap={2} paddingY={intent ? 2 : 0}>\n <Flex\n align=\"center\"\n paddingBottom={comment.context?.intent ? 0 : 1}\n sizing=\"border\"\n flex={1}\n >\n <Flex align=\"flex-end\" gap={2}>\n <Box flex={1}>{name}</Box>\n\n {!displayError && (\n <Flex align=\"center\" gap={1}>\n <TimeText muted size={0}>\n <time dateTime={createdDate.toISOString()} title={formattedCreatedAt}>\n {createdTimeAgo}\n </time>\n </TimeText>\n\n {formattedLastEditAt && editedDate && (\n <TimeText muted size={0} title={formattedLastEditAt}>\n <time dateTime={editedDate.toISOString()} title={formattedLastEditAt}>\n ({t('list-item.layout-edited')})\n </time>\n </TimeText>\n )}\n </Flex>\n )}\n </Flex>\n </Flex>\n\n {intent && (\n <Box flex={1}>\n <IntentText muted size={0} textOverflow=\"ellipsis\">\n <Translate\n t={t}\n i18nKey=\"list-item.layout-context\"\n values={{title: intent.title, intent: 'edit'}}\n components={{\n IntentLink: ({children}) =>\n intent ? (\n <IntentLink params={intent.params} intent={intent.name}>\n {children}\n </IntentLink>\n ) : undefined,\n }}\n />\n </IntentText>\n </Box>\n )}\n </Flex>\n\n {!isEditing && !displayError && (\n <ContextMenuBox data-root-menu={isParent ? 'true' : 'false'} onClick={stopPropagation}>\n <CommentsListItemContextMenu\n canDelete={canDelete}\n canEdit={canEdit}\n isParent={isParent}\n mode={mode}\n onCopyLink={onCopyLink ? handleCopyLink : undefined}\n onDeleteStart={handleDelete}\n onEditStart={toggleEdit}\n onMenuClose={handleMenuClose}\n onMenuOpen={handleMenuOpen}\n onReactionSelect={handleReactionSelect}\n onStatusChange={onStatusChange ? handleOpenStatusChange : undefined}\n readOnly={readOnly}\n status={comment.status}\n />\n </ContextMenuBox>\n )}\n </HeaderFlex>\n\n {isTextSelectionComment(comment) && Boolean(comment?.contentSnapshot) && (\n <Flex gap={FLEX_GAP} marginBottom={3}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <CommentsListItemReferencedValue\n hasReferencedValue={hasReferencedValue}\n value={comment?.contentSnapshot}\n />\n </Flex>\n )}\n\n {isEditing && (\n <Flex align=\"flex-start\" gap={2}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Stack flex={1}>\n <CommentInput\n currentUser={currentUser}\n focusOnMount\n mentionOptions={mentionOptions}\n onChange={setValue}\n onDiscardCancel={cancelDiscard}\n onDiscardConfirm={confirmDiscard}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleEditSubmit}\n readOnly={readOnly}\n ref={commentInputRef}\n value={value}\n withAvatar={false}\n />\n </Stack>\n </Flex>\n )}\n\n {!isEditing && (\n <Flex gap={FLEX_GAP}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <CommentMessageSerializer blocks={message} />\n </Flex>\n )}\n\n {hasReactions && (\n <Flex gap={FLEX_GAP} marginTop={2}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Box onClick={stopPropagation}>\n <CommentReactionsBar\n currentUser={currentUser}\n mode={mode}\n onSelect={handleReactionSelect}\n reactions={reactions}\n readOnly={readOnly}\n />\n </Box>\n </Flex>\n )}\n </InnerStack>\n\n {displayError && (\n <ErrorFlex gap={FLEX_GAP} $size={avatarSize}>\n {withAvatar && <SpacerAvatar $size={avatarSize} />}\n\n <Flex align=\"center\" gap={1} flex={1}>\n <Text muted size={1}>\n {hasError && t('list-item.layout-failed-sent')}\n {isRetrying && t('list-item.layout-posting')}\n </Text>\n\n <Flex hidden={isRetrying}>\n <RetryCardButton\n __unstable_focusRing\n display=\"flex\"\n forwardedAs=\"button\"\n onClick={handleCreateRetry}\n padding={1}\n radius={2}\n tone=\"primary\"\n >\n <Text size={1} muted>\n {t('list-item.layout-retry')}\n </Text>\n </RetryCardButton>\n </Flex>\n </Flex>\n </ErrorFlex>\n )}\n </RootStack>\n )\n}\n","import {hues} from '@sanity/color'\nimport {Card} from '@sanity/ui'\nimport {css, styled} from 'styled-components'\n\nimport {COMMENTS_HIGHLIGHT_HUE_KEY} from '../../constants'\n\nexport const ThreadCard = styled(Card).attrs({padding: 3, radius: 3, sizing: 'border'})((props) => {\n const {theme} = props\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const isDark = theme.sanity.color.dark\n const activeBg = hues[COMMENTS_HIGHLIGHT_HUE_KEY][isDark ? 900 : 50].hex\n const defaultBg = hues.gray[isDark ? 900 : 50].hex\n\n return css`\n background-color: ${defaultBg};\n\n &[data-active='true'] {\n background-color: ${activeBg};\n }\n `\n})\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {type CurrentUser} from '@sanity/types'\nimport {type AvatarSize, Flex, Stack, type StackProps, useLayer} from '@sanity/ui'\nimport {\n type KeyboardEvent,\n memo,\n type MouseEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {css, styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {type UserListWithPermissionsHookValue} from '../../../hooks/useUserListWithPermissions'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {type CommentsSelectedPath} from '../../context/selected-path/types'\nimport {commentIntentIfDiffers, hasCommentMessageValue} from '../../helpers'\nimport {applyCommentIdAttr} from '../../hooks/useCommentsScroll'\nimport {commentsLocaleNamespace} from '../../i18n'\nimport {\n type CommentBaseCreatePayload,\n type CommentDocument,\n type CommentMessage,\n type CommentReactionOption,\n type CommentStatus,\n type CommentsUIMode,\n type CommentUpdatePayload,\n} from '../../types'\nimport {SpacerAvatar} from '../avatars/SpacerAvatar'\nimport {CommentInput, type CommentInputHandle} from '../pte/comment-input/CommentInput'\nimport {CommentsListItemLayout} from './CommentsListItemLayout'\nimport {ThreadCard} from './styles'\n\nconst EMPTY_ARRAY: [] = []\n\nconst MAX_COLLAPSED_REPLIES = 5\n\nconst DEFAULT_AVATAR_CONFIG: CommentsListItemProps['avatarConfig'] = {\n avatarSize: 1,\n parentCommentAvatar: true,\n replyAvatar: true,\n threadCommentsAvatar: true,\n}\n\n// data-active = when the comment is selected\n// data-hovered = when the mouse is over the comment\nconst StyledThreadCard = styled(ThreadCard)(() => {\n return css`\n position: relative;\n\n &:has(> [data-ui='GhostButton']:focus:focus-visible) {\n box-shadow:\n inset 0 0 0 1px var(--card-border-color),\n 0 0 0 1px var(--card-bg-color),\n 0 0 0 2px var(--card-focus-ring-color);\n }\n\n // The hover styles is managed with the [data-hovered] attribute instead of the :hover pseudo class\n // since we want to show the hover styles when hovering over the menu items in the context menu as well.\n // The context menu is rendered using a portal, so the :hover pseudo class won't work when hovering over\n // the menu items.\n &:not([data-active='true']) {\n @media (hover: hover) {\n &[data-hovered='true'] {\n [data-root-menu='true'] {\n opacity: 1;\n }\n }\n }\n }\n `\n})\n\nconst ExpandButton = styled(Button)(({theme}) => {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const {medium} = theme.sanity.fonts.text.weights\n\n return css`\n font-weight: ${medium};\n `\n})\n\nconst GhostButton = styled.button`\n opacity: 0;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n left: 0;\n`\n\nexport interface CommentsListItemProps {\n avatarConfig?: {\n avatarSize: AvatarSize\n parentCommentAvatar: boolean\n replyAvatar: boolean\n threadCommentsAvatar: boolean\n }\n canReply?: boolean\n currentUser: CurrentUser\n hasReferencedValue?: boolean\n innerPadding?: StackProps['padding']\n isSelected: boolean\n mentionOptions: UserListWithPermissionsHookValue\n mode: CommentsUIMode\n onCopyLink?: (id: string) => void\n onCreateRetry: (id: string) => void\n onDelete: (id: string) => void\n onEdit: (id: string, payload: CommentUpdatePayload) => void\n onKeyDown?: (event: KeyboardEvent) => void\n onPathSelect?: (nextPath: CommentsSelectedPath) => void\n onReactionSelect?: (id: string, reaction: CommentReactionOption) => void\n onReply: (payload: CommentBaseCreatePayload) => void\n onStatusChange?: (id: string, status: CommentStatus) => void\n parentComment: CommentDocument\n readOnly?: boolean\n replies: CommentDocument[] | undefined\n}\n\nexport const CommentsListItem = memo(function CommentsListItem(props: CommentsListItemProps) {\n const {\n avatarConfig = DEFAULT_AVATAR_CONFIG,\n canReply,\n currentUser,\n hasReferencedValue,\n innerPadding,\n isSelected,\n mentionOptions,\n mode,\n onCopyLink,\n onCreateRetry,\n onDelete,\n onEdit,\n onKeyDown,\n onPathSelect,\n onReactionSelect,\n onReply,\n onStatusChange,\n parentComment,\n readOnly,\n replies = EMPTY_ARRAY,\n } = props\n const {t} = useTranslation(commentsLocaleNamespace)\n const [value, setValue] = useState<CommentMessage>(EMPTY_ARRAY)\n const [collapsed, setCollapsed] = useState<boolean>(true)\n const replyInputRef = useRef<CommentInputHandle>(null)\n\n const {isTopLayer} = useLayer()\n\n const hasValue = useMemo(() => hasCommentMessageValue(value), [value])\n\n const [mouseOver, setMouseOver] = useState<boolean>(false)\n\n const handleMouseEnter = () => setMouseOver(true)\n const handleMouseLeave = () => setMouseOver(false)\n\n const handleReplySubmit = (nextValue: CommentMessage) => {\n const nextComment: CommentBaseCreatePayload = {\n message: nextValue,\n parentCommentId: parentComment._id,\n status: parentComment?.status || 'open',\n // Since this is a reply to an existing comment, we use the same thread ID as the parent\n threadId: parentComment.threadId,\n // A new comment will not have any reactions\n reactions: EMPTY_ARRAY,\n\n payload: {\n fieldPath: parentComment.target.path?.field || '',\n },\n }\n\n onReply?.(nextComment)\n setValue(EMPTY_ARRAY)\n }\n\n const startDiscard = useCallback(() => {\n if (!hasValue) {\n setValue(EMPTY_ARRAY)\n return\n }\n\n replyInputRef.current?.discardDialogController.open()\n }, [hasValue])\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n // Don't act if the input already prevented this event\n if (event.isDefaultPrevented()) {\n return\n }\n // Discard input text with Escape\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n startDiscard()\n }\n },\n [startDiscard],\n )\n\n const cancelDiscard = useCallback(() => {\n replyInputRef.current?.discardDialogController.close()\n }, [])\n\n const confirmDiscard = useCallback(() => {\n setValue(EMPTY_ARRAY)\n replyInputRef.current?.discardDialogController.close()\n replyInputRef.current?.focus()\n }, [])\n\n const handleThreadRootClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n e.stopPropagation()\n\n // Don't act if the click was caused by clicking\n // outside e.g. a popover or a menu\n if (!isTopLayer) return\n\n onPathSelect?.({\n fieldPath: parentComment.target.path?.field || '',\n origin: 'inspector',\n threadId: parentComment.threadId,\n })\n },\n [isTopLayer, onPathSelect, parentComment.target.path?.field, parentComment.threadId],\n )\n\n const handleExpand = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n setCollapsed(false)\n }, [])\n\n const splicedReplies = useMemo(() => {\n if (collapsed) return replies?.slice(-MAX_COLLAPSED_REPLIES)\n return replies\n }, [replies, collapsed])\n\n const showCollapseButton = useMemo(() => {\n if (!replies) return false\n return replies.length > MAX_COLLAPSED_REPLIES\n }, [replies])\n\n const expandButtonText = `${replies?.length - MAX_COLLAPSED_REPLIES} more ${\n replies?.length - MAX_COLLAPSED_REPLIES === 1 ? 'comment' : 'comments'\n }`\n\n return (\n <StyledThreadCard\n data-active={isSelected ? 'true' : 'false'}\n data-hovered={mouseOver ? 'true' : 'false'}\n data-testid=\"comments-list-item\"\n data-ui=\"CommentsListItem\"\n onClick={handleThreadRootClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <GhostButton\n data-ui=\"GhostButton\"\n aria-label={t('list-item.go-to-field-button.aria-label')}\n />\n\n <Stack\n as=\"ul\"\n padding={innerPadding}\n // Add some extra padding to the bottom if there is no reply input.\n // This is to make the UI look more balanced.\n paddingBottom={canReply ? undefined : 1}\n gap={4}\n >\n <Stack as=\"li\" {...applyCommentIdAttr(parentComment._id)}>\n <CommentsListItemLayout\n avatarSize={avatarConfig.avatarSize}\n canDelete={parentComment.authorId === currentUser.id}\n canEdit={parentComment.authorId === currentUser.id}\n comment={parentComment}\n currentUser={currentUser}\n hasError={parentComment._state?.type === 'createError'}\n hasReferencedValue={hasReferencedValue}\n intent={parentComment.context?.intent}\n isParent\n isRetrying={parentComment._state?.type === 'createRetrying'}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={onCopyLink}\n onCreateRetry={onCreateRetry}\n onDelete={onDelete}\n onEdit={onEdit}\n onInputKeyDown={onKeyDown}\n onReactionSelect={onReactionSelect}\n onStatusChange={onStatusChange}\n readOnly={readOnly}\n withAvatar={avatarConfig.parentCommentAvatar}\n />\n </Stack>\n\n {showCollapseButton && collapsed && (\n <Flex gap={1} paddingY={1} sizing=\"border\">\n <SpacerAvatar />\n\n <ExpandButton\n iconRight={ChevronDownIcon}\n mode=\"bleed\"\n onClick={handleExpand}\n text={expandButtonText}\n />\n </Flex>\n )}\n\n {splicedReplies.map((reply) => (\n <Stack key={reply._id} as=\"li\" {...applyCommentIdAttr(reply._id)}>\n <CommentsListItemLayout\n avatarSize={avatarConfig.avatarSize}\n canDelete={reply.authorId === currentUser.id}\n canEdit={reply.authorId === currentUser.id}\n comment={reply}\n currentUser={currentUser}\n hasError={reply._state?.type === 'createError'}\n isRetrying={reply._state?.type === 'createRetrying'}\n intent={commentIntentIfDiffers(parentComment, reply)}\n mentionOptions={mentionOptions}\n mode={mode}\n onCopyLink={onCopyLink}\n onCreateRetry={onCreateRetry}\n onDelete={onDelete}\n onEdit={onEdit}\n onInputKeyDown={handleInputKeyDown}\n onReactionSelect={onReactionSelect}\n readOnly={readOnly}\n withAvatar={avatarConfig.threadCommentsAvatar}\n />\n </Stack>\n ))}\n\n {canReply && (\n <CommentInput\n avatarSize={avatarConfig.avatarSize}\n currentUser={currentUser}\n expandOnFocus\n mentionOptions={mentionOptions}\n onChange={setValue}\n onDiscardCancel={cancelDiscard}\n onDiscardConfirm={confirmDiscard}\n onKeyDown={handleInputKeyDown}\n onSubmit={handleReplySubmit}\n placeholder={\n mode === 'upsell'\n ? t('compose.reply-placeholder-upsell')\n : t('compose.reply-placeholder')\n }\n readOnly={readOnly || mode === 'upsell'}\n ref={replyInputRef}\n value={value}\n withAvatar={avatarConfig.replyAvatar}\n />\n )}\n </Stack>\n </StyledThreadCard>\n )\n})\nCommentsListItem.displayName = 'Memo(CommentsListItem)'\n"],"mappings":"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"}
|