1 line
27 KiB
Plaintext
1 line
27 KiB
Plaintext
{"version":3,"sources":["../../src/core/parser.ts","../../src/react/components/content-text.tsx","../../src/react/components/content-text-with-suggestions.tsx","../../src/react/components/content-title-with-suggestions.tsx"],"names":["jsx","React","TachTypography","useRef","useState","useMemo","useCallback","useEffect","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n ContentEntity,\n LinkEntity,\n MentionEntity,\n ParsedMention,\n ProcessedContent,\n TagEntity,\n} from \"./types\";\n\nexport const mentionLinkRegexp =\n /@\\[[^\\]]+]\\([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\)/g;\n\nexport const parseMention = (mention: string): ParsedMention | null => {\n const regex = /@\\[([^\\]]+)\\]\\(([\\w-]{36})\\)/;\n const match = mention.match(regex);\n\n if (!match) {\n return null;\n }\n\n const mentionText = match[1];\n const mentionId = match[2];\n if (!mentionText || !mentionId) {\n return null;\n }\n\n return {\n mention: `@${mentionText}`,\n id: mentionId,\n };\n};\n\nexport const findMentions = (text: string): MentionEntity[] => {\n let match: RegExpExecArray | null;\n const matches: MentionEntity[] = [];\n\n while ((match = mentionLinkRegexp.exec(text)) !== null) {\n const parsed = parseMention(match[0]);\n const baseMention: Omit<MentionEntity, \"userId\"> = {\n start: match.index,\n end: mentionLinkRegexp.lastIndex,\n text: match[0],\n type: \"mention\",\n displayText: parsed?.mention ?? match[0],\n };\n\n matches.push(parsed?.id ? { ...baseMention, userId: parsed.id } : baseMention);\n }\n\n return matches;\n};\n\nexport const findTags = (content: string): TagEntity[] => {\n const regex = /#[^\\s]{1,201}/g;\n const results: TagEntity[] = [];\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(content)) !== null) {\n const value = match[0];\n results.push({\n start: match.index,\n end: match.index + value.length,\n text: value,\n type: \"tag\",\n tag: value.replace(\"#\", \"\"),\n });\n }\n\n return results;\n};\n\nexport const findLinks = (content: string): LinkEntity[] => {\n const regex =\n /\\b((https?:\\/\\/)?(?:[\\w-]+\\.)+[a-z]{2,}(\\/[\\w\\-._~:/?#[\\]@!$&'()*+,;=]*)?)/gi;\n const results: LinkEntity[] = [];\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(content)) !== null) {\n const rawUrl = match[0];\n const hasProtocol = /^https?:\\/\\//i.test(rawUrl);\n const fullUrl = hasProtocol ? rawUrl : `https://${rawUrl}`;\n\n results.push({\n start: match.index,\n end: match.index + rawUrl.length,\n text: rawUrl,\n url: fullUrl,\n type: \"link\",\n });\n }\n\n return results;\n};\n\nexport const findAllEntities = (content: string): ContentEntity[] => {\n const mentions = findMentions(content);\n const tags = findTags(content);\n const links = findLinks(content);\n\n return [...mentions, ...tags, ...links].sort((a, b) => a.start - b.start);\n};\n\nexport const processContent = (content: string): ProcessedContent => {\n const processedText = content.replace(mentionLinkRegexp, match => {\n const parsed = parseMention(match);\n return parsed ? parsed.mention : match;\n });\n\n const tags = findTags(content).map(tag => tag.tag);\n\n return {\n processedText,\n tags,\n };\n};\n","import type { ComponentProps, CSSProperties, ReactNode } from \"react\";\nimport type { EllipsisConfig } from \"antd/lib/typography/Base\";\nimport type {\n ContentEntity,\n LinkEntity,\n MentionEntity,\n TagEntity,\n} from \"../../core\";\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { TachTypography } from \"@hublib-web/tach-typography/react\";\nimport { findAllEntities } from \"../../core\";\n\ntype CustomEllipsisConfig =\n | ({\n count: number;\n rows?: never;\n expandable?: boolean;\n } & Partial<EllipsisConfig>)\n | ({\n rows: number;\n count?: never;\n expandable?: boolean;\n } & Partial<EllipsisConfig>)\n | false;\n\ntype ParagraphBodyProps = ComponentProps<typeof TachTypography.Paragraph.Body>;\ntype TextBodyProps = ComponentProps<typeof TachTypography.Text.Body>;\ntype TitleBodyProps = ComponentProps<typeof TachTypography.Title.Body>;\n\nconst joinClassName = (...values: Array<string | false | undefined>) =>\n values.filter(Boolean).join(\" \");\n\nconst baseSelectableStyle: CSSProperties = {\n whiteSpace: \"pre-wrap\",\n WebkitTouchCallout: \"default\",\n WebkitUserSelect: \"text\",\n KhtmlUserSelect: \"text\",\n MozUserSelect: \"text\",\n msUserSelect: \"text\",\n userSelect: \"text\",\n};\n\nconst blurStyle: CSSProperties = {\n filter: \"blur(3px)\",\n WebkitUserSelect: \"none\",\n KhtmlUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n pointerEvents: \"none\",\n};\n\nconst ReadMoreButton: React.FC<{\n onClick: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n symbol?: EllipsisConfig[\"symbol\"];\n expanded?: boolean;\n TitleComponent: React.ComponentType<TitleBodyProps>;\n}> = ({ onClick, symbol = \"Читать полностью\", expanded = false, TitleComponent }) => (\n <TitleComponent\n onClick={event => {\n event.preventDefault();\n event.stopPropagation();\n onClick(event);\n }}\n weight=\"bold\"\n level={5}\n >\n {typeof symbol === \"function\" ? symbol(expanded) : symbol}\n </TitleComponent>\n);\n\nexport interface ContentTextProps {\n className?: string;\n weight?: TextBodyProps[\"weight\"];\n text?: string | null;\n ellipsis?: CustomEllipsisConfig;\n blur?: boolean;\n style?: TextBodyProps[\"style\"];\n onView?: () => void;\n renderMention?: (entity: MentionEntity, index: number) => ReactNode;\n renderTag?: (entity: TagEntity, index: number) => ReactNode;\n renderLink?: (entity: LinkEntity, index: number) => ReactNode;\n ParagraphComponent?: React.ComponentType<ParagraphBodyProps>;\n TextComponent?: React.ComponentType<TextBodyProps>;\n TitleComponent?: React.ComponentType<TitleBodyProps>;\n}\n\nexport const ContentText: React.NamedExoticComponent<ContentTextProps> = React.memo(\n ({\n text,\n className,\n ellipsis = false,\n blur = false,\n weight = \"normal\",\n style,\n onView,\n renderMention,\n renderTag,\n renderLink,\n ParagraphComponent = TachTypography.Paragraph.Body,\n TextComponent = TachTypography.Text.Body,\n TitleComponent = TachTypography.Title.Body,\n ...props\n }: ContentTextProps) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [expanded, setExpanded] = useState(false);\n const [containerInsideView, setContainerInsideView] = useState(false);\n const [viewed, setViewed] = useState(false);\n const content = text || \"\";\n\n const entities = useMemo<ContentEntity[]>(() => findAllEntities(content), [content]);\n\n const wrapWithKey = (node: ReactNode, key: React.Key) => {\n if (React.isValidElement(node)) {\n return React.cloneElement(node, { key });\n }\n\n return <React.Fragment key={key}>{node}</React.Fragment>;\n };\n\n const buildMentionNode = (entity: MentionEntity, index: number) => {\n const defaultNode = (\n <TextComponent color=\"link\" weight={weight}>\n {entity.displayText}\n </TextComponent>\n );\n const customNode = renderMention?.(entity, index) ?? defaultNode;\n return wrapWithKey(customNode, `mention-${entity.start}-${index}`);\n };\n\n const buildTagNode = (entity: TagEntity, index: number) => {\n const defaultNode = (\n <TextComponent color=\"link\" weight={weight}>\n {entity.text}\n </TextComponent>\n );\n const customNode = renderTag?.(entity, index) ?? defaultNode;\n return wrapWithKey(customNode, `tag-${entity.start}-${index}`);\n };\n\n const buildLinkNode = (entity: LinkEntity, index: number) => {\n const defaultNode = (\n <TachTypography.Link.Body\n target=\"_blank\"\n referrerPolicy=\"no-referrer\"\n color=\"link\"\n weight={weight}\n href={entity.url}\n >\n {entity.text}\n </TachTypography.Link.Body>\n );\n const customNode = renderLink?.(entity, index) ?? defaultNode;\n return wrapWithKey(customNode, `link-${entity.start}-${index}`);\n };\n\n const buildParts = (upto: number | null = null): ReactNode[] => {\n let lastIndex = 0;\n const nodes: ReactNode[] = [];\n\n for (const [i, entity] of entities.entries()) {\n\n if (upto !== null && entity.start >= upto) {\n break;\n }\n\n const textEnd = upto !== null ? Math.min(entity.start, upto) : entity.start;\n if (entity.start > lastIndex && lastIndex < textEnd) {\n nodes.push(content.slice(lastIndex, textEnd));\n }\n\n if (upto === null || entity.end <= upto) {\n if (entity.type === \"mention\") {\n nodes.push(buildMentionNode(entity, i));\n } else if (entity.type === \"tag\") {\n nodes.push(buildTagNode(entity, i));\n } else if (entity.type === \"link\") {\n nodes.push(buildLinkNode(entity, i));\n }\n }\n\n lastIndex = entity.end;\n }\n\n if (upto === null) {\n if (lastIndex < content.length) {\n nodes.push(content.slice(lastIndex));\n }\n } else if (lastIndex < upto) {\n nodes.push(content.slice(lastIndex, upto));\n }\n\n return nodes;\n };\n\n const ellipsisConfig = ellipsis && typeof ellipsis === \"object\" ? ellipsis : null;\n const expandedFromProps =\n ellipsisConfig && typeof ellipsisConfig.expanded === \"boolean\"\n ? ellipsisConfig.expanded\n : undefined;\n const isExpandedControlled = expandedFromProps !== undefined;\n const mergedExpanded = isExpandedControlled ? expandedFromProps : expanded;\n\n const handleExpand = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (!isExpandedControlled) {\n setExpanded(true);\n }\n\n ellipsisConfig?.onExpand?.(event, { expanded: true });\n },\n [ellipsisConfig, isExpandedControlled],\n );\n\n useEffect(() => {\n if (isExpandedControlled) {\n return;\n }\n\n if (ellipsisConfig && \"count\" in ellipsisConfig) {\n const count = ellipsisConfig.count ?? 0;\n if (content.length <= count && !expanded) {\n setExpanded(true);\n }\n }\n }, [content.length, ellipsisConfig, expanded, isExpandedControlled]);\n\n useEffect(() => {\n if (mergedExpanded && !viewed && containerInsideView) {\n setViewed(true);\n onView?.();\n }\n }, [mergedExpanded, viewed, containerInsideView, onView]);\n\n useEffect(() => {\n const ref = containerRef.current;\n if (!ref) {\n return;\n }\n\n const observer = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n\n if (entry.isIntersecting && !containerInsideView) {\n setContainerInsideView(true);\n }\n }, { threshold: 0.5 });\n\n observer.observe(ref);\n\n return () => {\n observer.unobserve(ref);\n };\n }, [containerInsideView]);\n\n const mergedStyle: CSSProperties = {\n ...baseSelectableStyle,\n ...(blur ? blurStyle : undefined),\n ...(style as CSSProperties | undefined),\n };\n\n if (ellipsisConfig && \"count\" in ellipsisConfig) {\n const { count, expandable } = ellipsisConfig;\n\n if (!mergedExpanded && count && content.length > count) {\n let cutoff = count;\n let extended = true;\n\n while (extended) {\n extended = false;\n for (const entity of entities) {\n if (entity.start < cutoff && entity.end > cutoff) {\n cutoff = entity.end;\n extended = true;\n }\n }\n }\n\n const truncatedNodes = buildParts(cutoff);\n\n return (\n <ParagraphComponent\n ref={containerRef}\n weight={weight}\n className={joinClassName(className)}\n style={mergedStyle}\n {...(props as ParagraphBodyProps)}\n >\n {truncatedNodes}…\n {expandable && (\n <ReadMoreButton\n symbol={ellipsisConfig.symbol}\n onClick={handleExpand}\n expanded={mergedExpanded}\n TitleComponent={TitleComponent}\n />\n )}\n </ParagraphComponent>\n );\n }\n }\n\n if (ellipsisConfig && \"rows\" in ellipsisConfig) {\n const paragraphEllipsis = mergedExpanded\n ? false\n : {\n ...ellipsisConfig,\n symbol: ellipsisConfig.expandable ? (\n <ReadMoreButton\n symbol={ellipsisConfig.symbol}\n onClick={handleExpand}\n expanded={mergedExpanded}\n TitleComponent={TitleComponent}\n />\n ) : (\n ellipsisConfig.symbol\n ),\n };\n\n return (\n <ParagraphComponent\n ref={containerRef}\n weight={weight}\n className={joinClassName(className)}\n style={mergedStyle}\n ellipsis={paragraphEllipsis}\n {...(props as ParagraphBodyProps)}\n >\n {buildParts()}\n </ParagraphComponent>\n );\n }\n\n return (\n <ParagraphComponent\n ref={containerRef}\n weight={weight}\n className={joinClassName(className)}\n style={mergedStyle}\n {...(props as ParagraphBodyProps)}\n >\n {buildParts()}\n </ParagraphComponent>\n );\n },\n);\n\nContentText.displayName = \"ContentText\";\n","import type { ComponentProps } from \"react\";\nimport type { MentionEntity, TagEntity } from \"../../core\";\n\nimport React from \"react\";\n\nimport { TachTypography } from \"@hublib-web/tach-typography/react\";\nimport { ContentText } from \"./content-text\";\n\ntype BaseContentTextProps = Omit<\n ComponentProps<typeof ContentText>,\n \"renderMention\" | \"renderTag\"\n> & {\n renderMention?: (entity: MentionEntity, index: number) => React.ReactNode;\n renderTag?: (entity: TagEntity, index: number) => React.ReactNode;\n};\n\nconst DefaultMention = ({ entity }: { entity: MentionEntity }) => (\n <TachTypography.Text.Body color=\"link\">{entity.displayText}</TachTypography.Text.Body>\n);\n\nconst DefaultTag = ({ entity }: { entity: TagEntity }) => (\n <TachTypography.Text.Body color=\"link\">\n {entity.text}\n </TachTypography.Text.Body>\n);\n\nexport const ContentTextWithSuggestions = ({\n renderMention,\n renderTag,\n ...props\n}: BaseContentTextProps) => {\n return (\n <ContentText\n {...props}\n renderMention={(entity, index) =>\n renderMention ? renderMention(entity, index) : <DefaultMention entity={entity} />\n }\n renderTag={(entity, index) =>\n renderTag ? (\n renderTag(entity, index)\n ) : (\n <DefaultTag entity={entity} />\n )\n }\n />\n );\n};\n","import type { ComponentProps } from \"react\";\n\nimport React from \"react\";\n\nimport { ContentTextWithSuggestions } from \"./content-text-with-suggestions\";\n\ntype ContentTitleWithSuggestionsProps = Omit<\n ComponentProps<typeof ContentTextWithSuggestions>,\n \"weight\"\n>;\n\nexport const ContentTitleWithSuggestions = ({\n text,\n ellipsis,\n blur = false,\n ...rest\n}: ContentTitleWithSuggestionsProps) => {\n const normalizedEllipsis = ellipsis === undefined ? { rows: 2 } : ellipsis;\n const textProps = text === undefined ? {} : { text };\n\n return (\n <ContentTextWithSuggestions\n weight=\"bold\"\n blur={blur}\n ellipsis={normalizedEllipsis}\n {...textProps}\n {...rest}\n />\n );\n};\n"]} |