Skip to content

Commit 54fcacd

Browse files
committed
Feature component for rendering md with code
1 parent a75d626 commit 54fcacd

File tree

3 files changed

+238
-3
lines changed

3 files changed

+238
-3
lines changed

docs/Markdown.tsx

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
import React, { useMemo } from "react";
2+
import ReactMarkdown from "react-markdown";
3+
import { PrismLight as SyntaxHighlighter } from "react-syntax-highlighter";
4+
import type { Components } from "react-markdown";
5+
import tsx from "react-syntax-highlighter/dist/cjs/languages/prism/tsx";
6+
import typescript from "react-syntax-highlighter/dist/cjs/languages/prism/typescript";
7+
import bash from "react-syntax-highlighter/dist/cjs/languages/prism/bash";
8+
import json from "react-syntax-highlighter/dist/cjs/languages/prism/json";
9+
import diff from "react-syntax-highlighter/dist/cjs/languages/prism/diff";
10+
import rangeParser from "parse-numeric-range";
11+
import oneDark from "react-syntax-highlighter/dist/esm/styles/prism/one-dark";
12+
import oneLight from "react-syntax-highlighter/dist/esm/styles/prism/one-light";
13+
import { createMakeAndWithStyles } from "tss-react";
14+
import { useIsDark } from "../dist";
15+
import { useConstCallback } from "../dist/lib/tools/powerhooks/useConstCallback";
16+
import { memoize } from "../dist/lib/tools/memoize";
17+
18+
const { makeStyles } = createMakeAndWithStyles({
19+
"useTheme": () => useIsDark().isDark
20+
});
21+
22+
SyntaxHighlighter.registerLanguage("tsx", tsx);
23+
SyntaxHighlighter.registerLanguage("typescript", typescript);
24+
SyntaxHighlighter.registerLanguage("bash", bash);
25+
SyntaxHighlighter.registerLanguage("json", json);
26+
SyntaxHighlighter.registerLanguage("diff", diff);
27+
28+
//SEE: https://amirardalan.com/blog/syntax-highlight-code-in-markdown
29+
30+
export type MarkdownProps = {
31+
className?: string;
32+
/** Default false */
33+
doShowLineNumber?: boolean;
34+
children: string;
35+
};
36+
37+
export function Markdown(props: MarkdownProps) {
38+
const { className, doShowLineNumber = false, children } = props;
39+
40+
const { Code } = createCode(doShowLineNumber);
41+
42+
const components: Components = useMemo(() => ({ "code": Code }), [Code]);
43+
44+
return (
45+
<ReactMarkdown className={className} components={components}>
46+
{children}
47+
</ReactMarkdown>
48+
);
49+
}
50+
51+
export default Markdown;
52+
53+
const createCode = memoize((doShowLineNumber: boolean) => {
54+
const Code: Components["code"] = ({ node, className, ...props }) => {
55+
const match = /language-(\w+)/.exec(className || "");
56+
57+
const hasMeta = !!node?.data?.meta;
58+
59+
const applyHighlights = useConstCallback((applyHighlights: number) => {
60+
if (!hasMeta) {
61+
return {};
62+
}
63+
const RE = /{([\d,-]+)}/;
64+
const metadata = (node as any).data.meta?.replace(/\s/g, "");
65+
const strlineNumbers = RE?.test(metadata) ? (RE as any)?.exec(metadata)[1] : "0";
66+
const highlightLines = rangeParser(strlineNumbers);
67+
const highlight = highlightLines;
68+
const data = highlight.includes(applyHighlights) ? "highlight" : null;
69+
70+
return { data };
71+
});
72+
73+
const { theme: isDark, classes, cx } = useStyles();
74+
75+
if (match === null) {
76+
return <code className={className} {...props} />;
77+
}
78+
79+
return (
80+
<SyntaxHighlighter
81+
className={cx(classes.root, className)}
82+
style={isDark ? oneDark : (oneLight as any)}
83+
language={match[1]}
84+
PreTag="div"
85+
showLineNumbers={true}
86+
wrapLines={hasMeta}
87+
useInlineStyles={true}
88+
lineProps={applyHighlights as any}
89+
{...(props as any)}
90+
/>
91+
);
92+
};
93+
94+
const useStyles = makeStyles({ "name": { Markdown } })(isDark => ({
95+
"root": {
96+
"& code": {
97+
"transform": "translateZ(0)",
98+
"minWidth": "100%",
99+
"float": "left",
100+
"& > span": {
101+
"display": "block"
102+
}
103+
},
104+
"& pre code": {
105+
// Your code-block styles here
106+
},
107+
"& h3 code": {
108+
"color": "inherit"
109+
},
110+
"& span.linenumber": {
111+
"display": doShowLineNumber ? undefined : "none !important"
112+
},
113+
'& [data="highlight"]': {
114+
// Your custom line highlight styles here
115+
"background": isDark ? "#37394e" : "#efefef",
116+
"margin": "0 -1.5rem",
117+
"padding": "0 1.5rem"
118+
}
119+
}
120+
}));
121+
122+
return { Code };
123+
});

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"format": "yarn _format --write",
2222
"format:check": "yarn _format --list-different",
2323
"grant_exec_perms": "node dist/bin/tools/grant_exec_perms",
24-
"storybook": "yarn build && start-storybook -p 6006",
24+
"storybook": "yarn build && ((tsc -w -p src) & start-storybook -p 6006)",
2525
"build-storybook": "yarn build && build-storybook"
2626
},
2727
"bin": {
@@ -74,6 +74,7 @@
7474
"devDependencies": {
7575
"@babel/core": "^7.20.2",
7676
"@emotion/react": "^11.10.4",
77+
"tss-react": "^4.4.4",
7778
"@emotion/styled": "^11.10.4",
7879
"@gouvfr/dsfr": "1.8.4",
7980
"@mui/material": "^5.10.7",
@@ -90,6 +91,7 @@
9091
"@types/node": "^18.7.18",
9192
"@types/react": "18.0.21",
9293
"@types/react-dom": "18.0.6",
94+
"@types/react-syntax-highlighter": "^15.5.5",
9395
"@typescript-eslint/eslint-plugin": "^5.43.0",
9496
"@typescript-eslint/parser": "^5.43.0",
9597
"babel-loader": "^8.3.0",
@@ -103,10 +105,12 @@
103105
"memoizee": "^0.4.15",
104106
"next": "12.3.1",
105107
"oppa": "^0.4.0",
108+
"parse-numeric-range": "^1.3.0",
106109
"prettier": "^2.3.0",
107110
"react": "18.2.0",
108111
"react-dom": "18.2.0",
109112
"react-markdown": "^8.0.3",
113+
"react-syntax-highlighter": "^15.5.0",
110114
"remixicon": "^2.5.0",
111115
"storybook-dark-mode": "^1.1.2",
112116
"ts-node": "^10.9.1",

yarn.lock

Lines changed: 110 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,7 @@
10851085
dependencies:
10861086
regenerator-runtime "^0.13.2"
10871087

1088-
"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.5.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
1088+
"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
10891089
version "7.20.1"
10901090
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9"
10911091
integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==
@@ -1248,6 +1248,17 @@
12481248
source-map "^0.5.7"
12491249
stylis "4.0.13"
12501250

1251+
"@emotion/cache@*":
1252+
version "11.10.5"
1253+
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12"
1254+
integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==
1255+
dependencies:
1256+
"@emotion/memoize" "^0.8.0"
1257+
"@emotion/sheet" "^1.2.1"
1258+
"@emotion/utils" "^1.2.0"
1259+
"@emotion/weak-memoize" "^0.3.0"
1260+
stylis "4.1.3"
1261+
12511262
"@emotion/cache@^11.10.0", "@emotion/cache@^11.10.3":
12521263
version "11.10.3"
12531264
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.3.tgz#c4f67904fad10c945fea5165c3a5a0583c164b87"
@@ -1290,6 +1301,17 @@
12901301
"@emotion/weak-memoize" "^0.3.0"
12911302
hoist-non-react-statics "^3.3.1"
12921303

1304+
"@emotion/serialize@*":
1305+
version "1.1.1"
1306+
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0"
1307+
integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==
1308+
dependencies:
1309+
"@emotion/hash" "^0.9.0"
1310+
"@emotion/memoize" "^0.8.0"
1311+
"@emotion/unitless" "^0.8.0"
1312+
"@emotion/utils" "^1.2.0"
1313+
csstype "^3.0.2"
1314+
12931315
"@emotion/serialize@^1.1.0":
12941316
version "1.1.0"
12951317
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.0.tgz#b1f97b1011b09346a40e9796c37a3397b4ea8ea8"
@@ -1306,6 +1328,11 @@
13061328
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.0.tgz#771b1987855839e214fc1741bde43089397f7be5"
13071329
integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==
13081330

1331+
"@emotion/sheet@^1.2.1":
1332+
version "1.2.1"
1333+
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c"
1334+
integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==
1335+
13091336
"@emotion/styled@^11.10.4":
13101337
version "11.10.4"
13111338
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.4.tgz#e93f84a4d54003c2acbde178c3f97b421fce1cd4"
@@ -1328,7 +1355,7 @@
13281355
resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df"
13291356
integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==
13301357

1331-
"@emotion/utils@^1.2.0":
1358+
"@emotion/utils@*", "@emotion/utils@^1.2.0":
13321359
version "1.2.0"
13331360
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561"
13341361
integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
@@ -2997,6 +3024,13 @@
29973024
dependencies:
29983025
"@types/react" "*"
29993026

3027+
"@types/react-syntax-highlighter@^15.5.5":
3028+
version "15.5.5"
3029+
resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.5.tgz#4d3b51f8956195f1f63360ff03f8822c5d74c516"
3030+
integrity sha512-QH3JZQXa2usAvJvSsdSUJ4Yu4j8ReuZpgRrEW+XP+Rmosbn425YshW9iGEb/pAARm8496axHhHUPRH3UmTiB6A==
3031+
dependencies:
3032+
"@types/react" "*"
3033+
30003034
"@types/react-transition-group@^4.4.5":
30013035
version "4.4.5"
30023036
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416"
@@ -6156,6 +6190,13 @@ fastq@^1.6.0:
61566190
dependencies:
61576191
reusify "^1.0.4"
61586192

6193+
fault@^1.0.0:
6194+
version "1.0.4"
6195+
resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13"
6196+
integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==
6197+
dependencies:
6198+
format "^0.2.0"
6199+
61596200
fb-watchman@^2.0.0:
61606201
version "2.0.2"
61616202
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
@@ -6381,6 +6422,11 @@ form-data@^3.0.0:
63816422
combined-stream "^1.0.8"
63826423
mime-types "^2.1.12"
63836424

6425+
format@^0.2.0:
6426+
version "0.2.2"
6427+
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
6428+
integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
6429+
63846430
forwarded@0.2.0:
63856431
version "0.2.0"
63866432
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
@@ -6879,6 +6925,11 @@ he@^1.2.0:
68796925
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
68806926
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
68816927

6928+
highlight.js@^10.4.1, highlight.js@~10.7.0:
6929+
version "10.7.3"
6930+
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
6931+
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
6932+
68826933
hmac-drbg@^1.0.1:
68836934
version "1.0.1"
68846935
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -8048,6 +8099,14 @@ lower-case@^2.0.2:
80488099
dependencies:
80498100
tslib "^2.0.3"
80508101

8102+
lowlight@^1.17.0:
8103+
version "1.20.0"
8104+
resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888"
8105+
integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==
8106+
dependencies:
8107+
fault "^1.0.0"
8108+
highlight.js "~10.7.0"
8109+
80518110
lru-cache@^5.1.1:
80528111
version "5.1.1"
80538112
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -9357,6 +9416,11 @@ parse-json@^5.0.0:
93579416
json-parse-even-better-errors "^2.3.0"
93589417
lines-and-columns "^1.1.6"
93599418

9419+
parse-numeric-range@^1.3.0:
9420+
version "1.3.0"
9421+
resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3"
9422+
integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==
9423+
93609424
parse5@^6.0.0:
93619425
version "6.0.1"
93629426
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
@@ -9752,6 +9816,16 @@ pretty-hrtime@^1.0.3:
97529816
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
97539817
integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==
97549818

9819+
prismjs@^1.27.0:
9820+
version "1.29.0"
9821+
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
9822+
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
9823+
9824+
prismjs@~1.27.0:
9825+
version "1.27.0"
9826+
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057"
9827+
integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==
9828+
97559829
process-nextick-args@~2.0.0:
97569830
version "2.0.1"
97579831
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -10050,6 +10124,17 @@ react-refresh@^0.11.0:
1005010124
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
1005110125
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
1005210126

10127+
react-syntax-highlighter@^15.5.0:
10128+
version "15.5.0"
10129+
resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20"
10130+
integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==
10131+
dependencies:
10132+
"@babel/runtime" "^7.3.1"
10133+
highlight.js "^10.4.1"
10134+
lowlight "^1.17.0"
10135+
prismjs "^1.27.0"
10136+
refractor "^3.6.0"
10137+
1005310138
react-transition-group@^4.4.5:
1005410139
version "4.4.5"
1005510140
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
@@ -10157,6 +10242,15 @@ redent@^3.0.0:
1015710242
indent-string "^4.0.0"
1015810243
strip-indent "^3.0.0"
1015910244

10245+
refractor@^3.6.0:
10246+
version "3.6.0"
10247+
resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a"
10248+
integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==
10249+
dependencies:
10250+
hastscript "^6.0.0"
10251+
parse-entities "^2.0.0"
10252+
prismjs "~1.27.0"
10253+
1016010254
regenerate-unicode-properties@^10.1.0:
1016110255
version "10.1.0"
1016210256
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c"
@@ -11209,6 +11303,11 @@ stylis@4.0.13:
1120911303
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91"
1121011304
integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==
1121111305

11306+
stylis@4.1.3:
11307+
version "4.1.3"
11308+
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
11309+
integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
11310+
1121211311
supports-color@8.1.1, supports-color@^8.0.0:
1121311312
version "8.1.1"
1121411313
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
@@ -11580,6 +11679,15 @@ tslib@^2.1.0, tslib@^2.4.0:
1158011679
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
1158111680
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
1158211681

11682+
tss-react@^4.4.4:
11683+
version "4.4.4"
11684+
resolved "https://registry.yarnpkg.com/tss-react/-/tss-react-4.4.4.tgz#12207842dfc58676a9f4d0f532741257428a78e7"
11685+
integrity sha512-Bzyg99bIQq3Lk4Rwc5XMOps58c1biw1rghCkApIX5XkAB+/VjGCIFSl63PePhmiRNvKRxJRpawGPPxHytiw1TA==
11686+
dependencies:
11687+
"@emotion/cache" "*"
11688+
"@emotion/serialize" "*"
11689+
"@emotion/utils" "*"
11690+
1158311691
tsutils@^3.21.0:
1158411692
version "3.21.0"
1158511693
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"

0 commit comments

Comments
 (0)