@liveblocks/react-ui 2.24.0 → 2.25.0-aiprivatebeta0
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/dist/_private/index.cjs +6 -0
- package/dist/_private/index.cjs.map +1 -1
- package/dist/_private/index.d.cts +166 -10
- package/dist/_private/index.d.ts +166 -10
- package/dist/_private/index.js +3 -0
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AiChat/AiChat.cjs +200 -0
- package/dist/components/AiChat/AiChat.cjs.map +1 -0
- package/dist/components/AiChat/AiChat.js +198 -0
- package/dist/components/AiChat/AiChat.js.map +1 -0
- package/dist/components/internal/AiChatAssistantMessage.cjs +353 -0
- package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -0
- package/dist/components/internal/AiChatAssistantMessage.js +351 -0
- package/dist/components/internal/AiChatAssistantMessage.js.map +1 -0
- package/dist/components/internal/AiChatComposer.cjs +385 -0
- package/dist/components/internal/AiChatComposer.cjs.map +1 -0
- package/dist/components/internal/AiChatComposer.js +379 -0
- package/dist/components/internal/AiChatComposer.js.map +1 -0
- package/dist/components/internal/AiChatUserMessage.cjs +187 -0
- package/dist/components/internal/AiChatUserMessage.cjs.map +1 -0
- package/dist/components/internal/AiChatUserMessage.js +185 -0
- package/dist/components/internal/AiChatUserMessage.js.map +1 -0
- package/dist/icons/Copy.cjs +26 -0
- package/dist/icons/Copy.cjs.map +1 -0
- package/dist/icons/Copy.js +24 -0
- package/dist/icons/Copy.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +65 -4
- package/dist/index.d.ts +65 -4
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/overrides.cjs +13 -1
- package/dist/overrides.cjs.map +1 -1
- package/dist/overrides.js +13 -1
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/Chat/Composer/index.cjs +323 -0
- package/dist/primitives/Chat/Composer/index.cjs.map +1 -0
- package/dist/primitives/Chat/Composer/index.js +315 -0
- package/dist/primitives/Chat/Composer/index.js.map +1 -0
- package/dist/primitives/index.cjs +9 -4
- package/dist/primitives/index.cjs.map +1 -1
- package/dist/primitives/index.d.cts +108 -2
- package/dist/primitives/index.d.ts +108 -2
- package/dist/primitives/index.js +1 -0
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/internal/Collapsible.cjs +99 -0
- package/dist/primitives/internal/Collapsible.cjs.map +1 -0
- package/dist/primitives/internal/Collapsible.js +95 -0
- package/dist/primitives/internal/Collapsible.js.map +1 -0
- package/dist/primitives/internal/Markdown.cjs +444 -0
- package/dist/primitives/internal/Markdown.cjs.map +1 -0
- package/dist/primitives/internal/Markdown.js +440 -0
- package/dist/primitives/internal/Markdown.js.map +1 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +5 -5
- package/src/styles/constants.css +4 -0
- package/src/styles/dark/index.css +1 -0
- package/src/styles/index.css +510 -0
- package/styles/dark/attributes.css +1 -1
- package/styles/dark/attributes.css.map +1 -1
- package/styles/dark/media-query.css +1 -1
- package/styles/dark/media-query.css.map +1 -1
- package/styles.css +1 -1
- package/styles.css.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markdown.cjs","sources":["../../../src/primitives/internal/Markdown.tsx"],"sourcesContent":["import { Lexer, type Tokens } from \"marked\";\nimport { type ReactNode, useMemo } from \"react\";\n\nexport type MarkdownProps = {\n content: string;\n};\nexport function Markdown({ content }: { content: string }) {\n const tokens = useMemo(() => {\n return new Lexer().lex(content);\n }, [content]);\n\n return tokens.map((token, index) => {\n return <BlockTokenComp token={token as BlockToken} key={index} />;\n });\n}\n\n/**\n * Block level tokens include:\n * - space\n * - code\n * - blockquote\n * - html\n * - heading\n * - hr\n * - list\n * - paragraph\n * - table\n */\nexport type BlockToken =\n | Tokens.Space\n | Tokens.Code\n | Tokens.Blockquote\n | Tokens.HTML\n | Tokens.Heading\n | Tokens.Hr\n | Tokens.List\n | Tokens.Paragraph\n | Tokens.Table;\n\nexport function BlockTokenComp({ token }: { token: BlockToken }) {\n switch (token.type) {\n case \"space\": {\n return null;\n }\n case \"code\": {\n let language: string | null = null;\n if (token.lang !== undefined) {\n language = token.lang.match(/^\\S*/)?.[0] ?? null;\n }\n return (\n <pre data-language={language || undefined}>\n <code>{token.text}</code>\n </pre>\n );\n }\n case \"blockquote\": {\n const tokens: BlockToken[] = [];\n for (let i = 0; i < token.tokens.length; i++) {\n switch (token.tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n tokens.push(token.tokens[i] as BlockToken);\n break;\n }\n case \"text\": {\n const texts: Tokens.Text[] = [token.tokens[i] as Tokens.Text];\n while (\n i + 1 < token.tokens.length &&\n token.tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(token.tokens[i] as Tokens.Text);\n }\n tokens.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <blockquote>\n {tokens.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </blockquote>\n );\n }\n case \"html\": {\n return token.text;\n }\n case \"heading\": {\n let HeadingTag: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n switch (token.depth) {\n case 1:\n HeadingTag = \"h1\";\n break;\n case 2:\n HeadingTag = \"h2\";\n break;\n case 3:\n HeadingTag = \"h3\";\n break;\n case 4:\n HeadingTag = \"h4\";\n break;\n case 5:\n HeadingTag = \"h5\";\n break;\n case 6:\n HeadingTag = \"h6\";\n break;\n default:\n HeadingTag = \"h1\";\n break;\n }\n return (\n <HeadingTag>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </HeadingTag>\n );\n }\n case \"hr\": {\n return <hr />;\n }\n case \"list\": {\n const ListTag = token.ordered ? \"ol\" : \"ul\";\n\n return (\n <ListTag>\n {token.items.map((item, index) => {\n // A 'loose' list item in Markdown is one where the content is wrapped in a paragraph (or potentially other block) token\n if (item.loose) {\n // If the list item is a task list item, we need to add a checkbox to the start of the token\n if (item.task) {\n const tokens = [...item.tokens];\n if (tokens[0]?.type === \"paragraph\") {\n const token = tokens[0] as Tokens.Paragraph;\n token.tokens.unshift(\n {\n type: \"checkbox\",\n checked: item.checked,\n raw: \"\",\n },\n {\n type: \"text\",\n text: \" \",\n raw: \" \",\n escaped: false,\n }\n );\n } else {\n tokens.unshift(\n {\n type: \"checkbox\",\n checked: item.checked,\n raw: \"\",\n },\n {\n type: \"text\",\n text: \" \",\n raw: \" \",\n escaped: false,\n }\n );\n }\n\n const items: BlockToken[] = [];\n for (let i = 0; i < tokens.length; i++) {\n switch (tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n items.push(tokens[i] as BlockToken);\n break;\n }\n case \"text\":\n case \"checkbox\": {\n const texts: (\n | Tokens.Text\n | {\n type: \"checkbox\";\n checked: boolean;\n raw: string;\n text: string;\n }\n )[] = [\n tokens[i] as\n | Tokens.Text\n | {\n type: \"checkbox\";\n checked: boolean;\n raw: string;\n text: string;\n },\n ];\n while (\n i + 1 < tokens.length &&\n tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(tokens[i] as Tokens.Text);\n }\n items.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <li key={index}>\n {items.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </li>\n );\n } else {\n const tokens: BlockToken[] = [];\n for (let i = 0; i < item.tokens.length; i++) {\n switch (item.tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n tokens.push(item.tokens[i] as BlockToken);\n break;\n }\n case \"text\": {\n const texts: Tokens.Text[] = [\n item.tokens[i] as Tokens.Text,\n ];\n while (\n i + 1 < item.tokens.length &&\n item.tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(item.tokens[i] as Tokens.Text);\n }\n tokens.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <li key={index}>\n {tokens.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </li>\n );\n }\n } else {\n const Items: ReactNode = item.tokens.map((token, index) => {\n switch (token.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n return (\n <BlockTokenComp token={token as BlockToken} key={index} />\n );\n }\n case \"text\": {\n return (\n <InlineTokenComp\n token={token as Tokens.Text}\n key={index}\n />\n );\n }\n default: {\n return null;\n }\n }\n });\n if (item.task) {\n return (\n <li key={index}>\n <input type=\"checkbox\" disabled checked={item.checked} />{\" \"}\n {Items}\n </li>\n );\n } else {\n return <li key={index}>{Items}</li>;\n }\n }\n })}\n </ListTag>\n );\n }\n case \"paragraph\": {\n return (\n <p>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </p>\n );\n }\n case \"table\": {\n return (\n <table>\n <thead>\n <tr>\n {token.header.map((cell, index) => {\n return (\n <th key={index} align={cell.align ?? undefined}>\n {cell.tokens.map((token, index) => (\n <InlineTokenComp\n key={index}\n token={token as InlineToken}\n />\n ))}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {token.rows.map((row, index) => {\n return (\n <tr key={index}>\n {row.map((cell, index) => {\n return (\n <td key={index} align={cell.align ?? undefined}>\n {cell.tokens.map((token, index) => (\n <InlineTokenComp\n key={index}\n token={token as InlineToken}\n />\n ))}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n }\n }\n}\n\n/**\n * Inline tokens include:\n * - strong\n * - em\n * - codespan\n * - br\n * - del\n * - link\n * - image\n * - text\n */\ntype InlineToken =\n | Tokens.Strong\n | Tokens.Em\n | Tokens.Codespan\n | Tokens.Br\n | Tokens.Del\n | Tokens.Link\n | Tokens.Image\n | Tokens.Text\n | Tokens.Escape;\nfunction InlineTokenComp({\n token,\n}: {\n token: InlineToken | { type: \"checkbox\"; checked: boolean };\n}) {\n switch (token.type) {\n case \"strong\": {\n return (\n <strong>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </strong>\n );\n }\n case \"em\": {\n return (\n <em>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </em>\n );\n }\n case \"codespan\": {\n return <code>{parseHtmlEntities(token.text)}</code>;\n }\n case \"br\": {\n return <br />;\n }\n case \"del\": {\n return (\n <del>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </del>\n );\n }\n case \"link\": {\n let href: string | null;\n try {\n const url = new URL(token.href);\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n href = url.toString();\n } else {\n href = null;\n }\n } catch {\n href = null;\n }\n\n if (href === null) {\n return token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ));\n }\n\n return (\n <a\n href={href}\n title={token.title ? token.title : undefined}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </a>\n );\n }\n case \"image\": {\n let href: string | null;\n try {\n const url = new URL(token.href);\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n href = url.toString();\n } else {\n href = null;\n }\n } catch {\n href = null;\n }\n\n if (href === null) {\n return token.text;\n }\n\n return (\n <img src={href} alt={token.text} title={token.title ?? undefined} />\n );\n }\n case \"text\": {\n if (token.tokens !== undefined) {\n return token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ));\n } else {\n return parseHtmlEntities(token.text);\n }\n }\n case \"escape\": {\n return token.text;\n }\n case \"checkbox\": {\n return <input type=\"checkbox\" disabled checked={token.checked} />;\n }\n default: {\n return null;\n }\n }\n}\n\nexport function parseHtmlEntities(input: string) {\n const document = new DOMParser().parseFromString(\n `<!doctype html><body>${input}`,\n \"text/html\"\n );\n\n return document.body.textContent;\n}\n"],"names":["useMemo","Lexer","jsx","token","index","jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Lexer } from 'marked';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
function Markdown({ content }) {
|
|
6
|
+
const tokens = useMemo(() => {
|
|
7
|
+
return new Lexer().lex(content);
|
|
8
|
+
}, [content]);
|
|
9
|
+
return tokens.map((token, index) => {
|
|
10
|
+
return /* @__PURE__ */ jsx(BlockTokenComp, {
|
|
11
|
+
token
|
|
12
|
+
}, index);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function BlockTokenComp({ token }) {
|
|
16
|
+
switch (token.type) {
|
|
17
|
+
case "space": {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
case "code": {
|
|
21
|
+
let language = null;
|
|
22
|
+
if (token.lang !== void 0) {
|
|
23
|
+
language = token.lang.match(/^\S*/)?.[0] ?? null;
|
|
24
|
+
}
|
|
25
|
+
return /* @__PURE__ */ jsx("pre", {
|
|
26
|
+
"data-language": language || void 0,
|
|
27
|
+
children: /* @__PURE__ */ jsx("code", {
|
|
28
|
+
children: token.text
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
case "blockquote": {
|
|
33
|
+
const tokens = [];
|
|
34
|
+
for (let i = 0; i < token.tokens.length; i++) {
|
|
35
|
+
switch (token.tokens[i].type) {
|
|
36
|
+
case "space":
|
|
37
|
+
case "code":
|
|
38
|
+
case "blockquote":
|
|
39
|
+
case "html":
|
|
40
|
+
case "heading":
|
|
41
|
+
case "hr":
|
|
42
|
+
case "list":
|
|
43
|
+
case "paragraph":
|
|
44
|
+
case "table": {
|
|
45
|
+
tokens.push(token.tokens[i]);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case "text": {
|
|
49
|
+
const texts = [token.tokens[i]];
|
|
50
|
+
while (i + 1 < token.tokens.length && token.tokens[i + 1].type === "text") {
|
|
51
|
+
i++;
|
|
52
|
+
texts.push(token.tokens[i]);
|
|
53
|
+
}
|
|
54
|
+
tokens.push({
|
|
55
|
+
type: "paragraph",
|
|
56
|
+
tokens: texts,
|
|
57
|
+
raw: texts.map((text) => text.raw).join(""),
|
|
58
|
+
text: texts.map((text) => text.text).join("")
|
|
59
|
+
});
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
default: {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return /* @__PURE__ */ jsx("blockquote", {
|
|
68
|
+
children: tokens.map((token2, index) => {
|
|
69
|
+
return /* @__PURE__ */ jsx(BlockTokenComp, {
|
|
70
|
+
token: token2
|
|
71
|
+
}, index);
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
case "html": {
|
|
76
|
+
return token.text;
|
|
77
|
+
}
|
|
78
|
+
case "heading": {
|
|
79
|
+
let HeadingTag;
|
|
80
|
+
switch (token.depth) {
|
|
81
|
+
case 1:
|
|
82
|
+
HeadingTag = "h1";
|
|
83
|
+
break;
|
|
84
|
+
case 2:
|
|
85
|
+
HeadingTag = "h2";
|
|
86
|
+
break;
|
|
87
|
+
case 3:
|
|
88
|
+
HeadingTag = "h3";
|
|
89
|
+
break;
|
|
90
|
+
case 4:
|
|
91
|
+
HeadingTag = "h4";
|
|
92
|
+
break;
|
|
93
|
+
case 5:
|
|
94
|
+
HeadingTag = "h5";
|
|
95
|
+
break;
|
|
96
|
+
case 6:
|
|
97
|
+
HeadingTag = "h6";
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
HeadingTag = "h1";
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
return /* @__PURE__ */ jsx(HeadingTag, {
|
|
104
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
105
|
+
token: token2
|
|
106
|
+
}, index))
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
case "hr": {
|
|
110
|
+
return /* @__PURE__ */ jsx("hr", {});
|
|
111
|
+
}
|
|
112
|
+
case "list": {
|
|
113
|
+
const ListTag = token.ordered ? "ol" : "ul";
|
|
114
|
+
return /* @__PURE__ */ jsx(ListTag, {
|
|
115
|
+
children: token.items.map((item, index) => {
|
|
116
|
+
if (item.loose) {
|
|
117
|
+
if (item.task) {
|
|
118
|
+
const tokens = [...item.tokens];
|
|
119
|
+
if (tokens[0]?.type === "paragraph") {
|
|
120
|
+
const token2 = tokens[0];
|
|
121
|
+
token2.tokens.unshift(
|
|
122
|
+
{
|
|
123
|
+
type: "checkbox",
|
|
124
|
+
checked: item.checked,
|
|
125
|
+
raw: ""
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: "text",
|
|
129
|
+
text: " ",
|
|
130
|
+
raw: " ",
|
|
131
|
+
escaped: false
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
} else {
|
|
135
|
+
tokens.unshift(
|
|
136
|
+
{
|
|
137
|
+
type: "checkbox",
|
|
138
|
+
checked: item.checked,
|
|
139
|
+
raw: ""
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: "text",
|
|
143
|
+
text: " ",
|
|
144
|
+
raw: " ",
|
|
145
|
+
escaped: false
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
const items = [];
|
|
150
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
151
|
+
switch (tokens[i].type) {
|
|
152
|
+
case "space":
|
|
153
|
+
case "code":
|
|
154
|
+
case "blockquote":
|
|
155
|
+
case "html":
|
|
156
|
+
case "heading":
|
|
157
|
+
case "hr":
|
|
158
|
+
case "list":
|
|
159
|
+
case "paragraph":
|
|
160
|
+
case "table": {
|
|
161
|
+
items.push(tokens[i]);
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
case "text":
|
|
165
|
+
case "checkbox": {
|
|
166
|
+
const texts = [
|
|
167
|
+
tokens[i]
|
|
168
|
+
];
|
|
169
|
+
while (i + 1 < tokens.length && tokens[i + 1].type === "text") {
|
|
170
|
+
i++;
|
|
171
|
+
texts.push(tokens[i]);
|
|
172
|
+
}
|
|
173
|
+
items.push({
|
|
174
|
+
type: "paragraph",
|
|
175
|
+
tokens: texts,
|
|
176
|
+
raw: texts.map((text) => text.raw).join(""),
|
|
177
|
+
text: texts.map((text) => text.text).join("")
|
|
178
|
+
});
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
default: {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return /* @__PURE__ */ jsx("li", {
|
|
187
|
+
children: items.map((token2, index2) => {
|
|
188
|
+
return /* @__PURE__ */ jsx(BlockTokenComp, {
|
|
189
|
+
token: token2
|
|
190
|
+
}, index2);
|
|
191
|
+
})
|
|
192
|
+
}, index);
|
|
193
|
+
} else {
|
|
194
|
+
const tokens = [];
|
|
195
|
+
for (let i = 0; i < item.tokens.length; i++) {
|
|
196
|
+
switch (item.tokens[i].type) {
|
|
197
|
+
case "space":
|
|
198
|
+
case "code":
|
|
199
|
+
case "blockquote":
|
|
200
|
+
case "html":
|
|
201
|
+
case "heading":
|
|
202
|
+
case "hr":
|
|
203
|
+
case "list":
|
|
204
|
+
case "paragraph":
|
|
205
|
+
case "table": {
|
|
206
|
+
tokens.push(item.tokens[i]);
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
case "text": {
|
|
210
|
+
const texts = [
|
|
211
|
+
item.tokens[i]
|
|
212
|
+
];
|
|
213
|
+
while (i + 1 < item.tokens.length && item.tokens[i + 1].type === "text") {
|
|
214
|
+
i++;
|
|
215
|
+
texts.push(item.tokens[i]);
|
|
216
|
+
}
|
|
217
|
+
tokens.push({
|
|
218
|
+
type: "paragraph",
|
|
219
|
+
tokens: texts,
|
|
220
|
+
raw: texts.map((text) => text.raw).join(""),
|
|
221
|
+
text: texts.map((text) => text.text).join("")
|
|
222
|
+
});
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
default: {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return /* @__PURE__ */ jsx("li", {
|
|
231
|
+
children: tokens.map((token2, index2) => {
|
|
232
|
+
return /* @__PURE__ */ jsx(BlockTokenComp, {
|
|
233
|
+
token: token2
|
|
234
|
+
}, index2);
|
|
235
|
+
})
|
|
236
|
+
}, index);
|
|
237
|
+
}
|
|
238
|
+
} else {
|
|
239
|
+
const Items = item.tokens.map((token2, index2) => {
|
|
240
|
+
switch (token2.type) {
|
|
241
|
+
case "space":
|
|
242
|
+
case "code":
|
|
243
|
+
case "blockquote":
|
|
244
|
+
case "html":
|
|
245
|
+
case "heading":
|
|
246
|
+
case "hr":
|
|
247
|
+
case "list":
|
|
248
|
+
case "paragraph":
|
|
249
|
+
case "table": {
|
|
250
|
+
return /* @__PURE__ */ jsx(BlockTokenComp, {
|
|
251
|
+
token: token2
|
|
252
|
+
}, index2);
|
|
253
|
+
}
|
|
254
|
+
case "text": {
|
|
255
|
+
return /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
256
|
+
token: token2
|
|
257
|
+
}, index2);
|
|
258
|
+
}
|
|
259
|
+
default: {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
if (item.task) {
|
|
265
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
266
|
+
children: [
|
|
267
|
+
/* @__PURE__ */ jsx("input", {
|
|
268
|
+
type: "checkbox",
|
|
269
|
+
disabled: true,
|
|
270
|
+
checked: item.checked
|
|
271
|
+
}),
|
|
272
|
+
" ",
|
|
273
|
+
Items
|
|
274
|
+
]
|
|
275
|
+
}, index);
|
|
276
|
+
} else {
|
|
277
|
+
return /* @__PURE__ */ jsx("li", {
|
|
278
|
+
children: Items
|
|
279
|
+
}, index);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
})
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
case "paragraph": {
|
|
286
|
+
return /* @__PURE__ */ jsx("p", {
|
|
287
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
288
|
+
token: token2
|
|
289
|
+
}, index))
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
case "table": {
|
|
293
|
+
return /* @__PURE__ */ jsxs("table", {
|
|
294
|
+
children: [
|
|
295
|
+
/* @__PURE__ */ jsx("thead", {
|
|
296
|
+
children: /* @__PURE__ */ jsx("tr", {
|
|
297
|
+
children: token.header.map((cell, index) => {
|
|
298
|
+
return /* @__PURE__ */ jsx("th", {
|
|
299
|
+
align: cell.align ?? void 0,
|
|
300
|
+
children: cell.tokens.map((token2, index2) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
301
|
+
token: token2
|
|
302
|
+
}, index2))
|
|
303
|
+
}, index);
|
|
304
|
+
})
|
|
305
|
+
})
|
|
306
|
+
}),
|
|
307
|
+
/* @__PURE__ */ jsx("tbody", {
|
|
308
|
+
children: token.rows.map((row, index) => {
|
|
309
|
+
return /* @__PURE__ */ jsx("tr", {
|
|
310
|
+
children: row.map((cell, index2) => {
|
|
311
|
+
return /* @__PURE__ */ jsx("td", {
|
|
312
|
+
align: cell.align ?? void 0,
|
|
313
|
+
children: cell.tokens.map((token2, index3) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
314
|
+
token: token2
|
|
315
|
+
}, index3))
|
|
316
|
+
}, index2);
|
|
317
|
+
})
|
|
318
|
+
}, index);
|
|
319
|
+
})
|
|
320
|
+
})
|
|
321
|
+
]
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
function InlineTokenComp({
|
|
327
|
+
token
|
|
328
|
+
}) {
|
|
329
|
+
switch (token.type) {
|
|
330
|
+
case "strong": {
|
|
331
|
+
return /* @__PURE__ */ jsx("strong", {
|
|
332
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
333
|
+
token: token2
|
|
334
|
+
}, index))
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
case "em": {
|
|
338
|
+
return /* @__PURE__ */ jsx("em", {
|
|
339
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
340
|
+
token: token2
|
|
341
|
+
}, index))
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
case "codespan": {
|
|
345
|
+
return /* @__PURE__ */ jsx("code", {
|
|
346
|
+
children: parseHtmlEntities(token.text)
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
case "br": {
|
|
350
|
+
return /* @__PURE__ */ jsx("br", {});
|
|
351
|
+
}
|
|
352
|
+
case "del": {
|
|
353
|
+
return /* @__PURE__ */ jsx("del", {
|
|
354
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
355
|
+
token: token2
|
|
356
|
+
}, index))
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
case "link": {
|
|
360
|
+
let href;
|
|
361
|
+
try {
|
|
362
|
+
const url = new URL(token.href);
|
|
363
|
+
if (url.protocol === "http:" || url.protocol === "https:") {
|
|
364
|
+
href = url.toString();
|
|
365
|
+
} else {
|
|
366
|
+
href = null;
|
|
367
|
+
}
|
|
368
|
+
} catch {
|
|
369
|
+
href = null;
|
|
370
|
+
}
|
|
371
|
+
if (href === null) {
|
|
372
|
+
return token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
373
|
+
token: token2
|
|
374
|
+
}, index));
|
|
375
|
+
}
|
|
376
|
+
return /* @__PURE__ */ jsx("a", {
|
|
377
|
+
href,
|
|
378
|
+
title: token.title ? token.title : void 0,
|
|
379
|
+
target: "_blank",
|
|
380
|
+
rel: "noopener noreferrer",
|
|
381
|
+
children: token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
382
|
+
token: token2
|
|
383
|
+
}, index))
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
case "image": {
|
|
387
|
+
let href;
|
|
388
|
+
try {
|
|
389
|
+
const url = new URL(token.href);
|
|
390
|
+
if (url.protocol === "http:" || url.protocol === "https:") {
|
|
391
|
+
href = url.toString();
|
|
392
|
+
} else {
|
|
393
|
+
href = null;
|
|
394
|
+
}
|
|
395
|
+
} catch {
|
|
396
|
+
href = null;
|
|
397
|
+
}
|
|
398
|
+
if (href === null) {
|
|
399
|
+
return token.text;
|
|
400
|
+
}
|
|
401
|
+
return /* @__PURE__ */ jsx("img", {
|
|
402
|
+
src: href,
|
|
403
|
+
alt: token.text,
|
|
404
|
+
title: token.title ?? void 0
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
case "text": {
|
|
408
|
+
if (token.tokens !== void 0) {
|
|
409
|
+
return token.tokens.map((token2, index) => /* @__PURE__ */ jsx(InlineTokenComp, {
|
|
410
|
+
token: token2
|
|
411
|
+
}, index));
|
|
412
|
+
} else {
|
|
413
|
+
return parseHtmlEntities(token.text);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
case "escape": {
|
|
417
|
+
return token.text;
|
|
418
|
+
}
|
|
419
|
+
case "checkbox": {
|
|
420
|
+
return /* @__PURE__ */ jsx("input", {
|
|
421
|
+
type: "checkbox",
|
|
422
|
+
disabled: true,
|
|
423
|
+
checked: token.checked
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
default: {
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
function parseHtmlEntities(input) {
|
|
432
|
+
const document = new DOMParser().parseFromString(
|
|
433
|
+
`<!doctype html><body>${input}`,
|
|
434
|
+
"text/html"
|
|
435
|
+
);
|
|
436
|
+
return document.body.textContent;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
export { BlockTokenComp, Markdown, parseHtmlEntities };
|
|
440
|
+
//# sourceMappingURL=Markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markdown.js","sources":["../../../src/primitives/internal/Markdown.tsx"],"sourcesContent":["import { Lexer, type Tokens } from \"marked\";\nimport { type ReactNode, useMemo } from \"react\";\n\nexport type MarkdownProps = {\n content: string;\n};\nexport function Markdown({ content }: { content: string }) {\n const tokens = useMemo(() => {\n return new Lexer().lex(content);\n }, [content]);\n\n return tokens.map((token, index) => {\n return <BlockTokenComp token={token as BlockToken} key={index} />;\n });\n}\n\n/**\n * Block level tokens include:\n * - space\n * - code\n * - blockquote\n * - html\n * - heading\n * - hr\n * - list\n * - paragraph\n * - table\n */\nexport type BlockToken =\n | Tokens.Space\n | Tokens.Code\n | Tokens.Blockquote\n | Tokens.HTML\n | Tokens.Heading\n | Tokens.Hr\n | Tokens.List\n | Tokens.Paragraph\n | Tokens.Table;\n\nexport function BlockTokenComp({ token }: { token: BlockToken }) {\n switch (token.type) {\n case \"space\": {\n return null;\n }\n case \"code\": {\n let language: string | null = null;\n if (token.lang !== undefined) {\n language = token.lang.match(/^\\S*/)?.[0] ?? null;\n }\n return (\n <pre data-language={language || undefined}>\n <code>{token.text}</code>\n </pre>\n );\n }\n case \"blockquote\": {\n const tokens: BlockToken[] = [];\n for (let i = 0; i < token.tokens.length; i++) {\n switch (token.tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n tokens.push(token.tokens[i] as BlockToken);\n break;\n }\n case \"text\": {\n const texts: Tokens.Text[] = [token.tokens[i] as Tokens.Text];\n while (\n i + 1 < token.tokens.length &&\n token.tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(token.tokens[i] as Tokens.Text);\n }\n tokens.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <blockquote>\n {tokens.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </blockquote>\n );\n }\n case \"html\": {\n return token.text;\n }\n case \"heading\": {\n let HeadingTag: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n switch (token.depth) {\n case 1:\n HeadingTag = \"h1\";\n break;\n case 2:\n HeadingTag = \"h2\";\n break;\n case 3:\n HeadingTag = \"h3\";\n break;\n case 4:\n HeadingTag = \"h4\";\n break;\n case 5:\n HeadingTag = \"h5\";\n break;\n case 6:\n HeadingTag = \"h6\";\n break;\n default:\n HeadingTag = \"h1\";\n break;\n }\n return (\n <HeadingTag>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </HeadingTag>\n );\n }\n case \"hr\": {\n return <hr />;\n }\n case \"list\": {\n const ListTag = token.ordered ? \"ol\" : \"ul\";\n\n return (\n <ListTag>\n {token.items.map((item, index) => {\n // A 'loose' list item in Markdown is one where the content is wrapped in a paragraph (or potentially other block) token\n if (item.loose) {\n // If the list item is a task list item, we need to add a checkbox to the start of the token\n if (item.task) {\n const tokens = [...item.tokens];\n if (tokens[0]?.type === \"paragraph\") {\n const token = tokens[0] as Tokens.Paragraph;\n token.tokens.unshift(\n {\n type: \"checkbox\",\n checked: item.checked,\n raw: \"\",\n },\n {\n type: \"text\",\n text: \" \",\n raw: \" \",\n escaped: false,\n }\n );\n } else {\n tokens.unshift(\n {\n type: \"checkbox\",\n checked: item.checked,\n raw: \"\",\n },\n {\n type: \"text\",\n text: \" \",\n raw: \" \",\n escaped: false,\n }\n );\n }\n\n const items: BlockToken[] = [];\n for (let i = 0; i < tokens.length; i++) {\n switch (tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n items.push(tokens[i] as BlockToken);\n break;\n }\n case \"text\":\n case \"checkbox\": {\n const texts: (\n | Tokens.Text\n | {\n type: \"checkbox\";\n checked: boolean;\n raw: string;\n text: string;\n }\n )[] = [\n tokens[i] as\n | Tokens.Text\n | {\n type: \"checkbox\";\n checked: boolean;\n raw: string;\n text: string;\n },\n ];\n while (\n i + 1 < tokens.length &&\n tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(tokens[i] as Tokens.Text);\n }\n items.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <li key={index}>\n {items.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </li>\n );\n } else {\n const tokens: BlockToken[] = [];\n for (let i = 0; i < item.tokens.length; i++) {\n switch (item.tokens[i]!.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n tokens.push(item.tokens[i] as BlockToken);\n break;\n }\n case \"text\": {\n const texts: Tokens.Text[] = [\n item.tokens[i] as Tokens.Text,\n ];\n while (\n i + 1 < item.tokens.length &&\n item.tokens[i + 1]!.type === \"text\"\n ) {\n i++;\n texts.push(item.tokens[i] as Tokens.Text);\n }\n tokens.push({\n type: \"paragraph\",\n tokens: texts,\n raw: texts.map((text) => text.raw).join(\"\"),\n text: texts.map((text) => text.text).join(\"\"),\n } satisfies Tokens.Paragraph);\n break;\n }\n default: {\n continue;\n }\n }\n }\n\n return (\n <li key={index}>\n {tokens.map((token, index) => {\n return <BlockTokenComp token={token} key={index} />;\n })}\n </li>\n );\n }\n } else {\n const Items: ReactNode = item.tokens.map((token, index) => {\n switch (token.type) {\n case \"space\":\n case \"code\":\n case \"blockquote\":\n case \"html\":\n case \"heading\":\n case \"hr\":\n case \"list\":\n case \"paragraph\":\n case \"table\": {\n return (\n <BlockTokenComp token={token as BlockToken} key={index} />\n );\n }\n case \"text\": {\n return (\n <InlineTokenComp\n token={token as Tokens.Text}\n key={index}\n />\n );\n }\n default: {\n return null;\n }\n }\n });\n if (item.task) {\n return (\n <li key={index}>\n <input type=\"checkbox\" disabled checked={item.checked} />{\" \"}\n {Items}\n </li>\n );\n } else {\n return <li key={index}>{Items}</li>;\n }\n }\n })}\n </ListTag>\n );\n }\n case \"paragraph\": {\n return (\n <p>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </p>\n );\n }\n case \"table\": {\n return (\n <table>\n <thead>\n <tr>\n {token.header.map((cell, index) => {\n return (\n <th key={index} align={cell.align ?? undefined}>\n {cell.tokens.map((token, index) => (\n <InlineTokenComp\n key={index}\n token={token as InlineToken}\n />\n ))}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {token.rows.map((row, index) => {\n return (\n <tr key={index}>\n {row.map((cell, index) => {\n return (\n <td key={index} align={cell.align ?? undefined}>\n {cell.tokens.map((token, index) => (\n <InlineTokenComp\n key={index}\n token={token as InlineToken}\n />\n ))}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n }\n }\n}\n\n/**\n * Inline tokens include:\n * - strong\n * - em\n * - codespan\n * - br\n * - del\n * - link\n * - image\n * - text\n */\ntype InlineToken =\n | Tokens.Strong\n | Tokens.Em\n | Tokens.Codespan\n | Tokens.Br\n | Tokens.Del\n | Tokens.Link\n | Tokens.Image\n | Tokens.Text\n | Tokens.Escape;\nfunction InlineTokenComp({\n token,\n}: {\n token: InlineToken | { type: \"checkbox\"; checked: boolean };\n}) {\n switch (token.type) {\n case \"strong\": {\n return (\n <strong>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </strong>\n );\n }\n case \"em\": {\n return (\n <em>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </em>\n );\n }\n case \"codespan\": {\n return <code>{parseHtmlEntities(token.text)}</code>;\n }\n case \"br\": {\n return <br />;\n }\n case \"del\": {\n return (\n <del>\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </del>\n );\n }\n case \"link\": {\n let href: string | null;\n try {\n const url = new URL(token.href);\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n href = url.toString();\n } else {\n href = null;\n }\n } catch {\n href = null;\n }\n\n if (href === null) {\n return token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ));\n }\n\n return (\n <a\n href={href}\n title={token.title ? token.title : undefined}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ))}\n </a>\n );\n }\n case \"image\": {\n let href: string | null;\n try {\n const url = new URL(token.href);\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n href = url.toString();\n } else {\n href = null;\n }\n } catch {\n href = null;\n }\n\n if (href === null) {\n return token.text;\n }\n\n return (\n <img src={href} alt={token.text} title={token.title ?? undefined} />\n );\n }\n case \"text\": {\n if (token.tokens !== undefined) {\n return token.tokens.map((token, index) => (\n <InlineTokenComp key={index} token={token as InlineToken} />\n ));\n } else {\n return parseHtmlEntities(token.text);\n }\n }\n case \"escape\": {\n return token.text;\n }\n case \"checkbox\": {\n return <input type=\"checkbox\" disabled checked={token.checked} />;\n }\n default: {\n return null;\n }\n }\n}\n\nexport function parseHtmlEntities(input: string) {\n const document = new DOMParser().parseFromString(\n `<!doctype html><body>${input}`,\n \"text/html\"\n );\n\n return document.body.textContent;\n}\n"],"names":["token","index"],"mappings":"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"}
|
package/dist/version.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const PKG_NAME = "@liveblocks/react-ui";
|
|
4
|
-
const PKG_VERSION = typeof "2.
|
|
4
|
+
const PKG_VERSION = typeof "2.25.0-aiprivatebeta0" === "string" && "2.25.0-aiprivatebeta0";
|
|
5
5
|
const PKG_FORMAT = typeof "cjs" === "string" && "cjs";
|
|
6
6
|
|
|
7
7
|
exports.PKG_FORMAT = PKG_FORMAT;
|
package/dist/version.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,
|
|
1
|
+
{"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,uBAAA,KAAgB,QAAY,IAAA,wBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const PKG_NAME = "@liveblocks/react-ui";
|
|
2
|
-
const PKG_VERSION = typeof "2.
|
|
2
|
+
const PKG_VERSION = typeof "2.25.0-aiprivatebeta0" === "string" && "2.25.0-aiprivatebeta0";
|
|
3
3
|
const PKG_FORMAT = typeof "esm" === "string" && "esm";
|
|
4
4
|
|
|
5
5
|
export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,uBAAA,KAAgB,QAAY,IAAA,wBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liveblocks/react-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.25.0-aiprivatebeta0",
|
|
4
4
|
"description": "A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -76,15 +76,15 @@
|
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@floating-ui/react-dom": "^2.1.2",
|
|
79
|
-
"@liveblocks/client": "2.
|
|
80
|
-
"@liveblocks/core": "2.
|
|
81
|
-
"@liveblocks/react": "2.
|
|
79
|
+
"@liveblocks/client": "2.25.0-aiprivatebeta0",
|
|
80
|
+
"@liveblocks/core": "2.25.0-aiprivatebeta0",
|
|
81
|
+
"@liveblocks/react": "2.25.0-aiprivatebeta0",
|
|
82
82
|
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
|
83
83
|
"@radix-ui/react-popover": "^1.1.2",
|
|
84
84
|
"@radix-ui/react-slot": "^1.1.0",
|
|
85
85
|
"@radix-ui/react-toggle": "^1.1.0",
|
|
86
86
|
"@radix-ui/react-tooltip": "^1.1.3",
|
|
87
|
-
"frimousse": "^0.
|
|
87
|
+
"frimousse": "^0.1.0",
|
|
88
88
|
"slate": "^0.110.2",
|
|
89
89
|
"slate-history": "^0.110.3",
|
|
90
90
|
"slate-hyperscript": "^0.100.0",
|
package/src/styles/constants.css
CHANGED
|
@@ -10,6 +10,10 @@ $lb-elevation-shadow:
|
|
|
10
10
|
0 0 0 1px rgb(0 0 0 / 4%),
|
|
11
11
|
0 2px 6px rgb(0 0 0 / 8%),
|
|
12
12
|
0 8px 26px rgb(0 0 0 / 12%);
|
|
13
|
+
$lb-elevation-shadow-small:
|
|
14
|
+
0 0 0 1px rgb(0 0 0 / 4%),
|
|
15
|
+
0 2px 6px rgb(0 0 0 / 6%),
|
|
16
|
+
0 8px 26px rgb(0 0 0 / 8%);
|
|
13
17
|
$lb-tooltip-shadow:
|
|
14
18
|
0 2px 4px rgb(0 0 0 / 8%),
|
|
15
19
|
0 4px 12px rgb(0 0 0 / 12%);
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
--lb-inset-shadow: inset 0 0 0 1px rgb(255 255 255 / 6%);
|
|
19
19
|
--lb-highlight-shadow: inset 0 0 0 1px rgb(255 255 255 / 12%);
|
|
20
20
|
--lb-elevation-shadow: $lb-elevation-shadow;
|
|
21
|
+
--lb-elevation-shadow-small: $lb-elevation-shadow-small;
|
|
21
22
|
--lb-tooltip-shadow: $lb-tooltip-shadow;
|
|
22
23
|
|
|
23
24
|
color-scheme: dark;
|