1 line
12 KiB
Plaintext
1 line
12 KiB
Plaintext
{"version":3,"sources":["../../src/core/classnames.ts","../../src/core/markdown.ts","../../src/react/index.tsx"],"names":["React","jsx","Typography"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { TypographyClassOptions } from \"./types\";\n\nconst BASE_CLASS = \"tach-typography\";\n\nconst join = (...parts: Array<string | undefined | null | false>): string =>\n parts.filter(Boolean).join(\" \");\n\nexport const tachTypographyClassName = ({\n variant = \"Body\",\n color = \"primary\",\n weight = \"normal\",\n clickable = false,\n className,\n}: TypographyClassOptions = {}): string => {\n return join(\n BASE_CLASS,\n `${BASE_CLASS}--${variant}`,\n `${BASE_CLASS}--color-${color}`,\n weight === \"bold\" && `${BASE_CLASS}--bold`,\n clickable && `${BASE_CLASS}--pointer`,\n className,\n );\n};\n\nexport const tachTypographyClassList = (options: TypographyClassOptions = {}): string[] => {\n return tachTypographyClassName(options)\n .split(\" \")\n .filter(Boolean);\n};\n","const TOKEN_PREFIX = \"TACHMDTOKEN\";\nconst SAFE_HREF_PATTERN = /^(https?:|mailto:|tel:|\\/|#)/i;\n\nconst escapeHtml = (value: string): string =>\n value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n\nconst normalizeMarkdown = (value: string): string => value.replace(/\\r\\n?/g, \"\\n\");\n\nconst sanitizeHref = (value: string): string | null => {\n const href = value.trim();\n\n if (!href || !SAFE_HREF_PATTERN.test(href)) {\n return null;\n }\n\n return href;\n};\n\nexport const tachTypographyMarkdownToHtml = (markdown: string): string => {\n const source = normalizeMarkdown(markdown);\n const tokenMap = new Map<string, string>();\n let tokenId = 0;\n\n const tokenized = source\n .replace(/`([^`\\n]+)`/g, (_match, code: string) => {\n const token = `${TOKEN_PREFIX}${tokenId++}`;\n tokenMap.set(\n token,\n `<code class=\"tach-typography__md-code\">${escapeHtml(code)}</code>`,\n );\n return token;\n })\n .replace(/\\[([^\\]\\n]+)\\]\\(([^)\\n]+)\\)/g, (_match, label: string, hrefRaw: string) => {\n const token = `${TOKEN_PREFIX}${tokenId++}`;\n const href = sanitizeHref(hrefRaw);\n\n if (!href) {\n tokenMap.set(token, escapeHtml(label));\n return token;\n }\n\n tokenMap.set(\n token,\n `<a class=\"tach-typography__md-link\" href=\"${escapeHtml(href)}\" target=\"_blank\" rel=\"noopener noreferrer\">${escapeHtml(label)}</a>`,\n );\n return token;\n });\n\n let html = escapeHtml(tokenized)\n .replace(/\\*\\*([^*\\n]+)\\*\\*/g, \"<strong>$1</strong>\")\n .replace(/__([^_\\n]+)__/g, \"<strong>$1</strong>\")\n .replace(/\\*([^*\\n]+)\\*/g, \"<em>$1</em>\")\n .replace(/_([^_\\n]+)_/g, \"<em>$1</em>\")\n .replace(/~~([^~\\n]+)~~/g, \"<del>$1</del>\")\n .replace(/\\n/g, \"<br />\");\n\n html = html.replace(new RegExp(`${TOKEN_PREFIX}\\\\d+`, \"g\"), token => tokenMap.get(token) || token);\n\n return html;\n};\n","import React from \"react\";\n\nimport { Typography } from \"antd\";\nimport type { LinkProps } from \"antd/lib/typography/Link\";\nimport type { ParagraphProps } from \"antd/lib/typography/Paragraph\";\nimport type { TextProps } from \"antd/lib/typography/Text\";\nimport type { TitleProps } from \"antd/lib/typography/Title\";\n\nimport {\n tachTypographyMarkdownToHtml,\n tachTypographyClassName,\n type TypographyColor,\n type TypographyVariant,\n type TypographyWeight,\n} from \"../core\";\n\ninterface AdditionalProps {\n color?: TypographyColor;\n weight?: TypographyWeight;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n className?: string | undefined;\n markdownEnabled?: boolean;\n children?: React.ReactNode;\n}\n\nconst createTypographyVariant = <P extends object>(\n Component: React.ComponentType<P>,\n variant: TypographyVariant,\n) => {\n const Variant = React.forwardRef<HTMLElement, P & AdditionalProps>(\n (\n {\n color = \"primary\",\n weight = \"normal\",\n className,\n onClick,\n markdownEnabled = false,\n children,\n ...rest\n },\n ref,\n ) => {\n const markdownHtml =\n markdownEnabled && typeof children === \"string\"\n ? tachTypographyMarkdownToHtml(children)\n : undefined;\n const renderedChildren = markdownHtml ? (\n <span dangerouslySetInnerHTML={{ __html: markdownHtml }} />\n ) : (\n children\n );\n const contentProps = { children: renderedChildren } as unknown as P;\n\n return (\n <Component\n ref={ref as never}\n className={tachTypographyClassName({\n variant,\n color,\n weight,\n className,\n clickable: Boolean(onClick),\n })}\n onClick={onClick}\n {...(rest as P)}\n {...contentProps}\n />\n );\n },\n );\n\n Variant.displayName = String(variant);\n\n return Variant;\n};\n\nconst createTypographyComponent = <P extends object>(Component: React.ComponentType<P>) => ({\n LargeTitle: createTypographyVariant(Component, \"LargeTitle\"),\n Title1: createTypographyVariant(Component, \"Title1\"),\n Title2: createTypographyVariant(Component, \"Title2\"),\n Title3: createTypographyVariant(Component, \"Title3\"),\n Headline: createTypographyVariant(Component, \"Headline\"),\n Body: createTypographyVariant(Component, \"Body\"),\n Inputs: createTypographyVariant(Component, \"Inputs\"),\n Subheadline: createTypographyVariant(Component, \"Subheadline\"),\n FootnoteUnderline: createTypographyVariant(Component, \"FootnoteUnderline\"),\n Footnote: createTypographyVariant(Component, \"Footnote\"),\n Caption: createTypographyVariant(Component, \"Caption\"),\n Caption2: createTypographyVariant(Component, \"Caption2\"),\n\n AccentH1: createTypographyVariant(Component, \"AccentH1\"),\n AccentH2: createTypographyVariant(Component, \"AccentH2\"),\n AccentSubttl: createTypographyVariant(Component, \"AccentSubttl\"),\n AccentSubttl2: createTypographyVariant(Component, \"AccentSubttl2\"),\n AccentCaption: createTypographyVariant(Component, \"AccentCaption\"),\n AccentCaption2: createTypographyVariant(Component, \"AccentCaption2\"),\n AccentRegularM: createTypographyVariant(Component, \"AccentRegularM\"),\n AccentRegularS: createTypographyVariant(Component, \"AccentRegularS\"),\n AccentLargeTtl: createTypographyVariant(Component, \"AccentLargeTtl\"),\n AppMediumBody: createTypographyVariant(Component, \"AppMediumBody\"),\n AppMediumSubtext: createTypographyVariant(Component, \"AppMediumSubtext\"),\n AppMediumSubtextUnderline: createTypographyVariant(Component, \"AppMediumSubtextUnderline\"),\n});\n\nexport const TachTypography = {\n Text: createTypographyComponent<TextProps & Pick<ParagraphProps, \"ellipsis\">>(Typography.Text),\n Paragraph: createTypographyComponent<ParagraphProps>(Typography.Paragraph),\n Link: createTypographyComponent<LinkProps>(Typography.Link),\n Title: createTypographyComponent<TitleProps>(Typography.Title),\n};\n"]} |