@liveblocks/react-ui 2.25.0-aiprivatebeta4 → 2.25.0-aiprivatebeta6
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 +4 -0
- package/dist/_private/index.cjs.map +1 -1
- package/dist/_private/index.d.cts +31 -94
- package/dist/_private/index.d.ts +31 -94
- package/dist/_private/index.js +2 -0
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AiChat.cjs +217 -0
- package/dist/components/AiChat.cjs.map +1 -0
- package/dist/components/AiChat.js +215 -0
- package/dist/components/AiChat.js.map +1 -0
- package/dist/components/Comment.cjs +2 -2
- package/dist/components/Comment.cjs.map +1 -1
- package/dist/components/Comment.js +1 -1
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/Composer.cjs +1 -2
- package/dist/components/Composer.cjs.map +1 -1
- package/dist/components/Composer.js +1 -2
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.cjs +83 -124
- package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.js +81 -122
- package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
- package/dist/components/internal/AiChatComposer.cjs +30 -266
- package/dist/components/internal/AiChatComposer.cjs.map +1 -1
- package/dist/components/internal/AiChatComposer.js +35 -267
- package/dist/components/internal/AiChatComposer.js.map +1 -1
- package/dist/components/internal/AiChatUserMessage.cjs +18 -168
- package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatUserMessage.js +20 -170
- package/dist/components/internal/AiChatUserMessage.js.map +1 -1
- package/dist/constants.cjs +2 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/icon.cjs +4 -0
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.js +2 -0
- package/dist/icon.js.map +1 -1
- package/dist/icons/Copy.cjs +8 -9
- package/dist/icons/Copy.cjs.map +1 -1
- package/dist/icons/Copy.js +8 -9
- package/dist/icons/Copy.js.map +1 -1
- package/dist/icons/Retry.cjs +21 -0
- package/dist/icons/Retry.cjs.map +1 -0
- package/dist/icons/Retry.js +19 -0
- package/dist/icons/Retry.js.map +1 -0
- package/dist/icons/index.cjs +4 -0
- package/dist/icons/index.cjs.map +1 -1
- package/dist/icons/index.js +2 -0
- package/dist/icons/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -43
- package/dist/index.d.ts +32 -43
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/overrides.cjs +10 -10
- package/dist/overrides.cjs.map +1 -1
- package/dist/overrides.js +10 -10
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/AiChatComposer/index.cjs +203 -0
- package/dist/primitives/AiChatComposer/index.cjs.map +1 -0
- package/dist/primitives/AiChatComposer/index.js +196 -0
- package/dist/primitives/AiChatComposer/index.js.map +1 -0
- package/dist/primitives/Comment/index.cjs +2 -2
- package/dist/primitives/Comment/index.cjs.map +1 -1
- package/dist/primitives/Comment/index.js +1 -1
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Composer/index.cjs +19 -14
- package/dist/primitives/Composer/index.cjs.map +1 -1
- package/dist/primitives/Composer/index.js +18 -13
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.cjs +3 -3
- package/dist/primitives/Composer/slate/plugins/auto-formatting.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.js +3 -3
- package/dist/primitives/Composer/slate/plugins/auto-formatting.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.cjs +7 -2
- package/dist/primitives/Composer/slate/plugins/auto-links.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.js +8 -3
- package/dist/primitives/Composer/slate/plugins/auto-links.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.cjs +8 -3
- package/dist/primitives/Composer/slate/plugins/custom-links.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.js +9 -4
- package/dist/primitives/Composer/slate/plugins/custom-links.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/mentions.cjs +9 -10
- package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/mentions.js +6 -6
- package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/paste.cjs +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.cjs.map +1 -0
- package/dist/{slate → primitives/Composer/slate}/plugins/paste.js +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.js.map +1 -0
- package/dist/primitives/Composer/utils.cjs +4 -4
- package/dist/primitives/Composer/utils.cjs.map +1 -1
- package/dist/primitives/Composer/utils.js +4 -4
- package/dist/primitives/Composer/utils.js.map +1 -1
- package/dist/primitives/index.cjs +2 -5
- package/dist/primitives/index.cjs.map +1 -1
- package/dist/primitives/index.d.cts +33 -62
- package/dist/primitives/index.d.ts +33 -62
- package/dist/primitives/index.js +6 -5
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/internal/{Collapsible.cjs → Collapsible/index.cjs} +23 -17
- package/dist/primitives/internal/Collapsible/index.cjs.map +1 -0
- package/dist/primitives/internal/{Collapsible.js → Collapsible/index.js} +23 -17
- package/dist/primitives/internal/Collapsible/index.js.map +1 -0
- package/dist/primitives/slate/plugins/empty-clear-formatting.cjs.map +1 -0
- package/dist/primitives/slate/plugins/empty-clear-formatting.js.map +1 -0
- package/dist/{slate → primitives/slate}/plugins/normalize.cjs +0 -5
- package/dist/primitives/slate/plugins/normalize.cjs.map +1 -0
- package/dist/{slate → primitives/slate}/plugins/normalize.js +0 -5
- package/dist/primitives/slate/plugins/normalize.js.map +1 -0
- package/dist/primitives/slate/utils/get-character.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-character.js.map +1 -0
- package/dist/primitives/slate/utils/get-dom-range.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-dom-range.js.map +1 -0
- package/dist/primitives/slate/utils/get-match-range.cjs.map +1 -0
- package/dist/primitives/slate/utils/get-match-range.js.map +1 -0
- package/dist/primitives/slate/utils/is-empty-string.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-empty-string.js.map +1 -0
- package/dist/primitives/slate/utils/is-empty.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-empty.js.map +1 -0
- package/dist/primitives/slate/utils/is-text.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-text.js.map +1 -0
- package/dist/primitives/slate/utils/is-whitespace-character.cjs.map +1 -0
- package/dist/primitives/slate/utils/is-whitespace-character.js.map +1 -0
- package/dist/{slate → primitives/slate}/utils/marks.cjs +9 -9
- package/dist/primitives/slate/utils/marks.cjs.map +1 -0
- package/dist/{slate → primitives/slate}/utils/marks.js +9 -9
- package/dist/primitives/slate/utils/marks.js.map +1 -0
- package/dist/primitives/slate/utils/selection-contains-inlines.cjs.map +1 -0
- package/dist/primitives/slate/utils/selection-contains-inlines.js.map +1 -0
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/src/styles/index.css +120 -133
- package/src/styles/utils.css +7 -2
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/dist/components/AiChat/AiChat.cjs +0 -211
- package/dist/components/AiChat/AiChat.cjs.map +0 -1
- package/dist/components/AiChat/AiChat.js +0 -209
- package/dist/components/AiChat/AiChat.js.map +0 -1
- package/dist/primitives/Chat/Composer/index.cjs +0 -323
- package/dist/primitives/Chat/Composer/index.cjs.map +0 -1
- package/dist/primitives/Chat/Composer/index.js +0 -315
- package/dist/primitives/Chat/Composer/index.js.map +0 -1
- package/dist/primitives/internal/Collapsible.cjs.map +0 -1
- package/dist/primitives/internal/Collapsible.js.map +0 -1
- package/dist/slate/plugins/auto-formatting.cjs.map +0 -1
- package/dist/slate/plugins/auto-formatting.js.map +0 -1
- package/dist/slate/plugins/auto-links.cjs.map +0 -1
- package/dist/slate/plugins/auto-links.js.map +0 -1
- package/dist/slate/plugins/custom-links.cjs.map +0 -1
- package/dist/slate/plugins/custom-links.js.map +0 -1
- package/dist/slate/plugins/empty-clear-formatting.cjs.map +0 -1
- package/dist/slate/plugins/empty-clear-formatting.js.map +0 -1
- package/dist/slate/plugins/mentions.cjs.map +0 -1
- package/dist/slate/plugins/mentions.js.map +0 -1
- package/dist/slate/plugins/normalize.cjs.map +0 -1
- package/dist/slate/plugins/normalize.js.map +0 -1
- package/dist/slate/plugins/paste.cjs.map +0 -1
- package/dist/slate/plugins/paste.js.map +0 -1
- package/dist/slate/utils/get-character.cjs.map +0 -1
- package/dist/slate/utils/get-character.js.map +0 -1
- package/dist/slate/utils/get-dom-range.cjs.map +0 -1
- package/dist/slate/utils/get-dom-range.js.map +0 -1
- package/dist/slate/utils/get-match-range.cjs.map +0 -1
- package/dist/slate/utils/get-match-range.js.map +0 -1
- package/dist/slate/utils/is-empty-string.cjs.map +0 -1
- package/dist/slate/utils/is-empty-string.js.map +0 -1
- package/dist/slate/utils/is-empty.cjs.map +0 -1
- package/dist/slate/utils/is-empty.js.map +0 -1
- package/dist/slate/utils/is-text.cjs.map +0 -1
- package/dist/slate/utils/is-text.js.map +0 -1
- package/dist/slate/utils/is-whitespace-character.cjs.map +0 -1
- package/dist/slate/utils/is-whitespace-character.js.map +0 -1
- package/dist/slate/utils/marks.cjs.map +0 -1
- package/dist/slate/utils/marks.js.map +0 -1
- package/dist/slate/utils/selection-contains-inlines.cjs.map +0 -1
- package/dist/slate/utils/selection-contains-inlines.js.map +0 -1
- /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.cjs +0 -0
- /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-character.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-character.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-dom-range.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-dom-range.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-match-range.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/get-match-range.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty-string.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty-string.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-empty.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-text.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-text.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.js +0 -0
- /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.cjs +0 -0
- /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-text.js","sources":["../../../../src/primitives/slate/utils/is-text.ts"],"sourcesContent":["import type { Node as SlateNode, Text as SlateText } from \"slate\";\n\nexport function isText(element: SlateNode): element is SlateText {\n return (\n !(\"type\" in element) &&\n \"text\" in element &&\n typeof element.text === \"string\"\n );\n}\n\nexport function isPlainText(node: SlateNode): boolean {\n return isText(node) && Object.keys(node).length === 1;\n}\n"],"names":[],"mappings":"AAEO,SAAS,OAAO,OAA0C,EAAA;AAC/D,EAAA,OACE,EAAE,MAAU,IAAA,OAAA,CAAA,IACZ,UAAU,OACV,IAAA,OAAO,QAAQ,IAAS,KAAA,QAAA,CAAA;AAE5B,CAAA;AAEO,SAAS,YAAY,IAA0B,EAAA;AACpD,EAAA,OAAO,OAAO,IAAI,CAAA,IAAK,OAAO,IAAK,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AACtD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-whitespace-character.cjs","sources":["../../../../src/primitives/slate/utils/is-whitespace-character.ts"],"sourcesContent":["const WHITESPACE_REGEX = /\\s/;\n\nexport function isWhitespaceCharacter(character?: string): boolean {\n return character ? WHITESPACE_REGEX.test(character) : false;\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAmB,GAAA,IAAA,CAAA;AAElB,SAAS,sBAAsB,SAA6B,EAAA;AACjE,EAAA,OAAO,SAAY,GAAA,gBAAA,CAAiB,IAAK,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AACxD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-whitespace-character.js","sources":["../../../../src/primitives/slate/utils/is-whitespace-character.ts"],"sourcesContent":["const WHITESPACE_REGEX = /\\s/;\n\nexport function isWhitespaceCharacter(character?: string): boolean {\n return character ? WHITESPACE_REGEX.test(character) : false;\n}\n"],"names":[],"mappings":"AAAA,MAAM,gBAAmB,GAAA,IAAA,CAAA;AAElB,SAAS,sBAAsB,SAA6B,EAAA;AACjE,EAAA,OAAO,SAAY,GAAA,gBAAA,CAAiB,IAAK,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AACxD;;;;"}
|
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
var slate = require('slate');
|
|
4
4
|
var getCharacter = require('./get-character.cjs');
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const defaultComposerBodyMarks = {
|
|
7
7
|
bold: false,
|
|
8
8
|
italic: false,
|
|
9
9
|
strikethrough: false,
|
|
10
10
|
code: false
|
|
11
11
|
};
|
|
12
|
-
function
|
|
13
|
-
const marks = slate.Editor.marks(editor);
|
|
14
|
-
return marks ? marks[mark] === true : false;
|
|
15
|
-
}
|
|
16
|
-
function getMarks(editor) {
|
|
12
|
+
function getComposerBodyMarks(editor) {
|
|
17
13
|
if (!editor) {
|
|
18
|
-
return { ...
|
|
14
|
+
return { ...defaultComposerBodyMarks };
|
|
19
15
|
}
|
|
20
16
|
const marks = slate.Editor.marks(editor);
|
|
21
|
-
return { ...
|
|
17
|
+
return { ...defaultComposerBodyMarks, ...marks };
|
|
18
|
+
}
|
|
19
|
+
function isMarkActive(editor, mark) {
|
|
20
|
+
const marks = slate.Editor.marks(editor);
|
|
21
|
+
return marks ? marks[mark] === true : false;
|
|
22
22
|
}
|
|
23
23
|
function filterActiveMarks(value) {
|
|
24
24
|
return Object.keys(value ?? {}).filter(
|
|
@@ -54,7 +54,7 @@ function leaveMarkEdge(editor, edge) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
exports.filterActiveMarks = filterActiveMarks;
|
|
57
|
-
exports.
|
|
57
|
+
exports.getComposerBodyMarks = getComposerBodyMarks;
|
|
58
58
|
exports.isMarkActive = isMarkActive;
|
|
59
59
|
exports.leaveMarkEdge = leaveMarkEdge;
|
|
60
60
|
exports.removeMarks = removeMarks;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marks.cjs","sources":["../../../../src/primitives/slate/utils/marks.ts"],"sourcesContent":["import type { Text } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\nimport type { ComposerBodyMarks } from \"../../../types\";\nimport { getCharacterAfter, getCharacterBefore } from \"./get-character\";\n\nconst defaultComposerBodyMarks: Required<ComposerBodyMarks> = {\n bold: false,\n italic: false,\n strikethrough: false,\n code: false,\n};\n\nexport function getComposerBodyMarks(editor?: SlateEditor) {\n if (!editor) {\n return { ...defaultComposerBodyMarks };\n }\n\n const marks = SlateEditor.marks(editor);\n\n return { ...defaultComposerBodyMarks, ...marks };\n}\n\nexport function isMarkActive<M = ComposerBodyMarks>(\n editor: SlateEditor,\n mark: keyof M\n) {\n const marks = SlateEditor.marks(editor) as M | null;\n\n return marks ? marks[mark] === true : false;\n}\n\nexport function filterActiveMarks(\n value: Text | ComposerBodyMarks | null | undefined\n) {\n return Object.keys(value ?? {}).filter(\n (key) => key !== \"text\"\n ) as (keyof ComposerBodyMarks)[];\n}\n\nexport function toggleMark(editor: SlateEditor, mark: keyof ComposerBodyMarks) {\n const isActive = isMarkActive(editor, mark);\n\n if (isActive) {\n SlateEditor.removeMark(editor, mark);\n } else {\n SlateEditor.addMark(editor, mark, true);\n }\n}\n\nexport function removeMarks(editor: SlateEditor) {\n const marks = SlateEditor.marks(editor);\n\n if (marks) {\n for (const mark in marks) {\n SlateEditor.removeMark(editor, mark);\n }\n }\n}\n\nexport function leaveMarkEdge(editor: SlateEditor, edge: \"start\" | \"end\") {\n if (editor.selection && SlateRange.isCollapsed(editor.selection)) {\n const marks = Object.keys(SlateEditor.marks(editor) ?? {});\n\n if (marks.length > 0) {\n const sibling =\n edge === \"start\"\n ? getCharacterBefore(editor, editor.selection)\n : getCharacterAfter(editor, editor.selection);\n\n if (!sibling) {\n removeMarks(editor);\n }\n }\n }\n}\n"],"names":["SlateEditor","SlateRange","getCharacterBefore","getCharacterAfter"],"mappings":";;;;;AAMA,MAAM,wBAAwD,GAAA;AAAA,EAC5D,IAAM,EAAA,KAAA;AAAA,EACN,MAAQ,EAAA,KAAA;AAAA,EACR,aAAe,EAAA,KAAA;AAAA,EACf,IAAM,EAAA,KAAA;AACR,CAAA,CAAA;AAEO,SAAS,qBAAqB,MAAsB,EAAA;AACzD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,EAAE,GAAG,wBAAyB,EAAA,CAAA;AAAA,GACvC;AAEA,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,OAAO,EAAE,GAAG,wBAA0B,EAAA,GAAG,KAAM,EAAA,CAAA;AACjD,CAAA;AAEgB,SAAA,YAAA,CACd,QACA,IACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAO,OAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAA,KAAU,IAAO,GAAA,KAAA,CAAA;AACxC,CAAA;AAEO,SAAS,kBACd,KACA,EAAA;AACA,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,KAAS,IAAA,EAAE,CAAE,CAAA,MAAA;AAAA,IAC9B,CAAC,QAAQ,GAAQ,KAAA,MAAA;AAAA,GACnB,CAAA;AACF,CAAA;AAEgB,SAAA,UAAA,CAAW,QAAqB,IAA+B,EAAA;AAC7E,EAAM,MAAA,QAAA,GAAW,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAE1C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAYA,YAAA,CAAA,OAAA,CAAQ,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,SAAS,YAAY,MAAqB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACF;AACF,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAqB,IAAuB,EAAA;AACxE,EAAA,IAAI,OAAO,SAAa,IAAAC,WAAA,CAAW,WAAY,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAAD,YAAA,CAAY,MAAM,MAAM,CAAA,IAAK,EAAE,CAAA,CAAA;AAEzD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAM,MAAA,OAAA,GACJ,IAAS,KAAA,OAAA,GACLE,+BAAmB,CAAA,MAAA,EAAQ,MAAO,CAAA,SAAS,CAC3C,GAAAC,8BAAA,CAAkB,MAAQ,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAEhD,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF;AACF;;;;;;;;;"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { Editor, Range } from 'slate';
|
|
2
2
|
import { getCharacterBefore, getCharacterAfter } from './get-character.js';
|
|
3
3
|
|
|
4
|
-
const
|
|
4
|
+
const defaultComposerBodyMarks = {
|
|
5
5
|
bold: false,
|
|
6
6
|
italic: false,
|
|
7
7
|
strikethrough: false,
|
|
8
8
|
code: false
|
|
9
9
|
};
|
|
10
|
-
function
|
|
11
|
-
const marks = Editor.marks(editor);
|
|
12
|
-
return marks ? marks[mark] === true : false;
|
|
13
|
-
}
|
|
14
|
-
function getMarks(editor) {
|
|
10
|
+
function getComposerBodyMarks(editor) {
|
|
15
11
|
if (!editor) {
|
|
16
|
-
return { ...
|
|
12
|
+
return { ...defaultComposerBodyMarks };
|
|
17
13
|
}
|
|
18
14
|
const marks = Editor.marks(editor);
|
|
19
|
-
return { ...
|
|
15
|
+
return { ...defaultComposerBodyMarks, ...marks };
|
|
16
|
+
}
|
|
17
|
+
function isMarkActive(editor, mark) {
|
|
18
|
+
const marks = Editor.marks(editor);
|
|
19
|
+
return marks ? marks[mark] === true : false;
|
|
20
20
|
}
|
|
21
21
|
function filterActiveMarks(value) {
|
|
22
22
|
return Object.keys(value ?? {}).filter(
|
|
@@ -51,5 +51,5 @@ function leaveMarkEdge(editor, edge) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
export { filterActiveMarks,
|
|
54
|
+
export { filterActiveMarks, getComposerBodyMarks, isMarkActive, leaveMarkEdge, removeMarks, toggleMark };
|
|
55
55
|
//# sourceMappingURL=marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marks.js","sources":["../../../../src/primitives/slate/utils/marks.ts"],"sourcesContent":["import type { Text } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\nimport type { ComposerBodyMarks } from \"../../../types\";\nimport { getCharacterAfter, getCharacterBefore } from \"./get-character\";\n\nconst defaultComposerBodyMarks: Required<ComposerBodyMarks> = {\n bold: false,\n italic: false,\n strikethrough: false,\n code: false,\n};\n\nexport function getComposerBodyMarks(editor?: SlateEditor) {\n if (!editor) {\n return { ...defaultComposerBodyMarks };\n }\n\n const marks = SlateEditor.marks(editor);\n\n return { ...defaultComposerBodyMarks, ...marks };\n}\n\nexport function isMarkActive<M = ComposerBodyMarks>(\n editor: SlateEditor,\n mark: keyof M\n) {\n const marks = SlateEditor.marks(editor) as M | null;\n\n return marks ? marks[mark] === true : false;\n}\n\nexport function filterActiveMarks(\n value: Text | ComposerBodyMarks | null | undefined\n) {\n return Object.keys(value ?? {}).filter(\n (key) => key !== \"text\"\n ) as (keyof ComposerBodyMarks)[];\n}\n\nexport function toggleMark(editor: SlateEditor, mark: keyof ComposerBodyMarks) {\n const isActive = isMarkActive(editor, mark);\n\n if (isActive) {\n SlateEditor.removeMark(editor, mark);\n } else {\n SlateEditor.addMark(editor, mark, true);\n }\n}\n\nexport function removeMarks(editor: SlateEditor) {\n const marks = SlateEditor.marks(editor);\n\n if (marks) {\n for (const mark in marks) {\n SlateEditor.removeMark(editor, mark);\n }\n }\n}\n\nexport function leaveMarkEdge(editor: SlateEditor, edge: \"start\" | \"end\") {\n if (editor.selection && SlateRange.isCollapsed(editor.selection)) {\n const marks = Object.keys(SlateEditor.marks(editor) ?? {});\n\n if (marks.length > 0) {\n const sibling =\n edge === \"start\"\n ? getCharacterBefore(editor, editor.selection)\n : getCharacterAfter(editor, editor.selection);\n\n if (!sibling) {\n removeMarks(editor);\n }\n }\n }\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;;AAMA,MAAM,wBAAwD,GAAA;AAAA,EAC5D,IAAM,EAAA,KAAA;AAAA,EACN,MAAQ,EAAA,KAAA;AAAA,EACR,aAAe,EAAA,KAAA;AAAA,EACf,IAAM,EAAA,KAAA;AACR,CAAA,CAAA;AAEO,SAAS,qBAAqB,MAAsB,EAAA;AACzD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,EAAE,GAAG,wBAAyB,EAAA,CAAA;AAAA,GACvC;AAEA,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,OAAO,EAAE,GAAG,wBAA0B,EAAA,GAAG,KAAM,EAAA,CAAA;AACjD,CAAA;AAEgB,SAAA,YAAA,CACd,QACA,IACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAO,OAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAA,KAAU,IAAO,GAAA,KAAA,CAAA;AACxC,CAAA;AAEO,SAAS,kBACd,KACA,EAAA;AACA,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,KAAS,IAAA,EAAE,CAAE,CAAA,MAAA;AAAA,IAC9B,CAAC,QAAQ,GAAQ,KAAA,MAAA;AAAA,GACnB,CAAA;AACF,CAAA;AAEgB,SAAA,UAAA,CAAW,QAAqB,IAA+B,EAAA;AAC7E,EAAM,MAAA,QAAA,GAAW,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAE1C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAYA,MAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAYA,MAAA,CAAA,OAAA,CAAQ,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,SAAS,YAAY,MAAqB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAYA,MAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACF;AACF,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAqB,IAAuB,EAAA;AACxE,EAAA,IAAI,OAAO,SAAa,IAAAC,KAAA,CAAW,WAAY,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAAD,MAAA,CAAY,MAAM,MAAM,CAAA,IAAK,EAAE,CAAA,CAAA;AAEzD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAM,MAAA,OAAA,GACJ,IAAS,KAAA,OAAA,GACL,kBAAmB,CAAA,MAAA,EAAQ,MAAO,CAAA,SAAS,CAC3C,GAAA,iBAAA,CAAkB,MAAQ,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAEhD,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-contains-inlines.cjs","sources":["../../../../src/primitives/slate/utils/selection-contains-inlines.ts"],"sourcesContent":["import type { Node as SlateNode } from \"slate\";\nimport {\n Editor as SlateEditor,\n Element as SlateElement,\n Range as SlateRange,\n} from \"slate\";\n\nexport function selectionContainsInlines(\n editor: SlateEditor,\n match: (node: SlateNode) => boolean\n) {\n const { selection } = editor;\n if (!selection) {\n return false;\n }\n\n const roots = Array.from(\n SlateEditor.nodes(editor, {\n at: selection,\n match: (node) =>\n SlateElement.isElement(node) && SlateEditor.isBlock(editor, node),\n mode: \"lowest\",\n })\n );\n\n for (const [, rootPath] of roots) {\n const intersectingSelection = SlateRange.isRange(selection)\n ? SlateRange.intersection(selection, SlateEditor.range(editor, rootPath))\n : selection;\n\n if (!intersectingSelection) {\n continue;\n }\n\n const matches = Array.from(\n SlateEditor.nodes(editor, {\n at: intersectingSelection,\n match: (node) =>\n SlateEditor.isInline(editor, node as SlateElement) && match(node),\n })\n );\n\n if (matches.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":["SlateEditor","SlateElement","SlateRange"],"mappings":";;;;AAOgB,SAAA,wBAAA,CACd,QACA,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,IAAA;AAAA,IAClBA,YAAA,CAAY,MAAM,MAAQ,EAAA;AAAA,MACxB,EAAI,EAAA,SAAA;AAAA,MACJ,KAAA,EAAO,CAAC,IAAA,KACNC,aAAa,CAAA,SAAA,CAAU,IAAI,CAAK,IAAAD,YAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,MAClE,IAAM,EAAA,QAAA;AAAA,KACP,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,KAAA,MAAW,GAAG,QAAQ,CAAA,IAAK,KAAO,EAAA;AAChC,IAAA,MAAM,qBAAwB,GAAAE,WAAA,CAAW,OAAQ,CAAA,SAAS,CACtD,GAAAA,WAAA,CAAW,YAAa,CAAA,SAAA,EAAWF,YAAY,CAAA,KAAA,CAAM,MAAQ,EAAA,QAAQ,CAAC,CACtE,GAAA,SAAA,CAAA;AAEJ,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,MAAM,UAAU,KAAM,CAAA,IAAA;AAAA,MACpBA,YAAA,CAAY,MAAM,MAAQ,EAAA;AAAA,QACxB,EAAI,EAAA,qBAAA;AAAA,QACJ,KAAA,EAAO,CAAC,IACN,KAAAA,YAAA,CAAY,SAAS,MAAQ,EAAA,IAAoB,CAAK,IAAA,KAAA,CAAM,IAAI,CAAA;AAAA,OACnE,CAAA;AAAA,KACH,CAAA;AAEA,IAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-contains-inlines.js","sources":["../../../../src/primitives/slate/utils/selection-contains-inlines.ts"],"sourcesContent":["import type { Node as SlateNode } from \"slate\";\nimport {\n Editor as SlateEditor,\n Element as SlateElement,\n Range as SlateRange,\n} from \"slate\";\n\nexport function selectionContainsInlines(\n editor: SlateEditor,\n match: (node: SlateNode) => boolean\n) {\n const { selection } = editor;\n if (!selection) {\n return false;\n }\n\n const roots = Array.from(\n SlateEditor.nodes(editor, {\n at: selection,\n match: (node) =>\n SlateElement.isElement(node) && SlateEditor.isBlock(editor, node),\n mode: \"lowest\",\n })\n );\n\n for (const [, rootPath] of roots) {\n const intersectingSelection = SlateRange.isRange(selection)\n ? SlateRange.intersection(selection, SlateEditor.range(editor, rootPath))\n : selection;\n\n if (!intersectingSelection) {\n continue;\n }\n\n const matches = Array.from(\n SlateEditor.nodes(editor, {\n at: intersectingSelection,\n match: (node) =>\n SlateEditor.isInline(editor, node as SlateElement) && match(node),\n })\n );\n\n if (matches.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":["SlateEditor","SlateElement","SlateRange"],"mappings":";;AAOgB,SAAA,wBAAA,CACd,QACA,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,IAAA;AAAA,IAClBA,MAAA,CAAY,MAAM,MAAQ,EAAA;AAAA,MACxB,EAAI,EAAA,SAAA;AAAA,MACJ,KAAA,EAAO,CAAC,IAAA,KACNC,OAAa,CAAA,SAAA,CAAU,IAAI,CAAK,IAAAD,MAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,MAClE,IAAM,EAAA,QAAA;AAAA,KACP,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,KAAA,MAAW,GAAG,QAAQ,CAAA,IAAK,KAAO,EAAA;AAChC,IAAA,MAAM,qBAAwB,GAAAE,KAAA,CAAW,OAAQ,CAAA,SAAS,CACtD,GAAAA,KAAA,CAAW,YAAa,CAAA,SAAA,EAAWF,MAAY,CAAA,KAAA,CAAM,MAAQ,EAAA,QAAQ,CAAC,CACtE,GAAA,SAAA,CAAA;AAEJ,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,MAAM,UAAU,KAAM,CAAA,IAAA;AAAA,MACpBA,MAAA,CAAY,MAAM,MAAQ,EAAA;AAAA,QACxB,EAAI,EAAA,qBAAA;AAAA,QACJ,KAAA,EAAO,CAAC,IACN,KAAAA,MAAA,CAAY,SAAS,MAAQ,EAAA,IAAoB,CAAK,IAAA,KAAA,CAAM,IAAI,CAAA;AAAA,OACnE,CAAA;AAAA,KACH,CAAA;AAEA,IAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|
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.25.0-
|
|
4
|
+
const PKG_VERSION = typeof "2.25.0-aiprivatebeta6" === "string" && "2.25.0-aiprivatebeta6";
|
|
5
5
|
const PKG_FORMAT = typeof "cjs" === "string" && "cjs";
|
|
6
6
|
|
|
7
7
|
exports.PKG_FORMAT = PKG_FORMAT;
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const PKG_NAME = "@liveblocks/react-ui";
|
|
2
|
-
const PKG_VERSION = typeof "2.25.0-
|
|
2
|
+
const PKG_VERSION = typeof "2.25.0-aiprivatebeta6" === "string" && "2.25.0-aiprivatebeta6";
|
|
3
3
|
const PKG_FORMAT = typeof "esm" === "string" && "esm";
|
|
4
4
|
|
|
5
5
|
export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liveblocks/react-ui",
|
|
3
|
-
"version": "2.25.0-
|
|
3
|
+
"version": "2.25.0-aiprivatebeta6",
|
|
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,9 +76,9 @@
|
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@floating-ui/react-dom": "^2.1.2",
|
|
79
|
-
"@liveblocks/client": "2.25.0-
|
|
80
|
-
"@liveblocks/core": "2.25.0-
|
|
81
|
-
"@liveblocks/react": "2.25.0-
|
|
79
|
+
"@liveblocks/client": "2.25.0-aiprivatebeta6",
|
|
80
|
+
"@liveblocks/core": "2.25.0-aiprivatebeta6",
|
|
81
|
+
"@liveblocks/react": "2.25.0-aiprivatebeta6",
|
|
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",
|
package/src/styles/index.css
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
@import "./constants";
|
|
3
3
|
|
|
4
4
|
.lb-root {
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
6
|
* Basic
|
|
7
7
|
*/
|
|
8
8
|
--lb-radius: 0.5em;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
--lb-background: #fff;
|
|
15
15
|
--lb-foreground: #111;
|
|
16
16
|
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
18
|
* Advanced
|
|
19
19
|
*/
|
|
20
20
|
--lb-line-height: 1.5;
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
--lb-destructive-contrast: 8%;
|
|
33
33
|
--lb-foreground-contrast: 8%;
|
|
34
34
|
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
36
|
* Colors
|
|
37
37
|
*/
|
|
38
38
|
--lb-background-foreground-faint: color-mix-scale(
|
|
@@ -2137,75 +2137,25 @@
|
|
|
2137
2137
|
margin-inline-end: auto;
|
|
2138
2138
|
}
|
|
2139
2139
|
|
|
2140
|
-
/*************************************
|
|
2141
|
-
* Chat composer attachments *
|
|
2142
|
-
*************************************/
|
|
2143
|
-
.lb-ai-chat-composer-attachments {
|
|
2144
|
-
display: flex;
|
|
2145
|
-
flex-direction: column;
|
|
2146
|
-
gap: calc(0.75 * var(--lb-spacing));
|
|
2147
|
-
padding-inline: var(--lb-spacing);
|
|
2148
|
-
padding-block-start: calc(0.75 * var(--lb-spacing));
|
|
2149
|
-
}
|
|
2150
|
-
|
|
2151
|
-
.lb-ai-chat-composer-editor-container:where([data-drop]) * {
|
|
2152
|
-
pointer-events: none;
|
|
2153
|
-
}
|
|
2154
|
-
|
|
2155
2140
|
/*************************************
|
|
2156
2141
|
* Chat message *
|
|
2157
2142
|
*************************************/
|
|
2158
|
-
.lb-ai-chat-user-message {
|
|
2159
|
-
display: flex;
|
|
2160
|
-
flex-direction: column;
|
|
2161
|
-
gap: calc(0.75 * var(--lb-spacing));
|
|
2162
|
-
|
|
2163
|
-
&,
|
|
2164
|
-
* {
|
|
2165
|
-
line-height: var(--lb-line-height);
|
|
2166
|
-
}
|
|
2167
|
-
}
|
|
2168
|
-
|
|
2169
|
-
.lb-ai-chat-user-message-content {
|
|
2170
|
-
padding: calc(0.75 * var(--lb-spacing)) calc(1.375 * var(--lb-spacing));
|
|
2171
|
-
border-radius: calc(3 * var(--lb-radius));
|
|
2172
|
-
background: var(--lb-background-foreground-faint);
|
|
2173
|
-
color: var(--lb-foreground);
|
|
2174
|
-
white-space: break-spaces;
|
|
2175
|
-
}
|
|
2176
|
-
|
|
2177
|
-
.lb-ai-chat-user-message-attachments {
|
|
2178
|
-
display: flex;
|
|
2179
|
-
flex-direction: column;
|
|
2180
|
-
gap: calc(0.75 * var(--lb-spacing));
|
|
2181
|
-
}
|
|
2182
|
-
|
|
2183
|
-
.lb-ai-chat-user-message-media-attachments {
|
|
2184
|
-
display: flex;
|
|
2185
|
-
flex-wrap: wrap;
|
|
2186
|
-
gap: calc(0.75 * var(--lb-spacing));
|
|
2187
|
-
justify-content: flex-end;
|
|
2188
|
-
}
|
|
2189
|
-
|
|
2190
|
-
.lb-ai-chat-user-message-attachment {
|
|
2191
|
-
flex-shrink: 1;
|
|
2192
|
-
flex-basis: 300px;
|
|
2193
|
-
}
|
|
2194
2143
|
|
|
2195
|
-
.lb-ai-chat-
|
|
2144
|
+
.lb-ai-chat-message {
|
|
2196
2145
|
display: flex;
|
|
2197
2146
|
flex-direction: column;
|
|
2198
2147
|
gap: calc(0.75 * var(--lb-spacing));
|
|
2148
|
+
color: var(--lb-foreground);
|
|
2199
2149
|
|
|
2200
2150
|
@media (hover: hover) {
|
|
2201
|
-
&:where(.lb-ai-chat-
|
|
2202
|
-
:where(.lb-ai-chat-
|
|
2151
|
+
&:where(.lb-ai-chat-message\:show-actions-hover) {
|
|
2152
|
+
:where(.lb-ai-chat-message-actions) {
|
|
2203
2153
|
opacity: 0;
|
|
2204
2154
|
transition-property: opacity;
|
|
2205
2155
|
}
|
|
2206
2156
|
|
|
2207
2157
|
&:where(:is(:hover, :focus-within)) {
|
|
2208
|
-
:where(.lb-ai-chat-
|
|
2158
|
+
:where(.lb-ai-chat-message-actions) {
|
|
2209
2159
|
opacity: 1;
|
|
2210
2160
|
}
|
|
2211
2161
|
}
|
|
@@ -2213,11 +2163,21 @@
|
|
|
2213
2163
|
}
|
|
2214
2164
|
}
|
|
2215
2165
|
|
|
2216
|
-
.lb-ai-chat-
|
|
2166
|
+
.lb-ai-chat-message-content {
|
|
2217
2167
|
inline-size: 100%;
|
|
2168
|
+
white-space: break-spaces;
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
.lb-ai-chat-user-message {
|
|
2172
|
+
:where(.lb-ai-chat-message-content) {
|
|
2173
|
+
padding: calc(0.5 * var(--lb-spacing)) var(--lb-spacing);
|
|
2174
|
+
border-radius: calc(3 * var(--lb-radius));
|
|
2175
|
+
background: var(--lb-background-foreground-faint);
|
|
2176
|
+
color: var(--lb-foreground);
|
|
2177
|
+
}
|
|
2218
2178
|
}
|
|
2219
2179
|
|
|
2220
|
-
.lb-ai-chat-
|
|
2180
|
+
.lb-ai-chat-message-text {
|
|
2221
2181
|
display: flex;
|
|
2222
2182
|
flex-direction: column;
|
|
2223
2183
|
|
|
@@ -2356,15 +2316,11 @@
|
|
|
2356
2316
|
}
|
|
2357
2317
|
}
|
|
2358
2318
|
|
|
2359
|
-
.lb-ai-chat-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
user-select: none;
|
|
2363
|
-
animation: lb-animation-shimmer-small 8s linear infinite;
|
|
2319
|
+
.lb-ai-chat-message-tool {
|
|
2320
|
+
margin-block: calc(0.25 * var(--lb-spacing));
|
|
2364
2321
|
}
|
|
2365
2322
|
|
|
2366
|
-
.lb-ai-chat-
|
|
2367
|
-
.lb-ai-chat-assistant-message-deleted {
|
|
2323
|
+
.lb-ai-chat-message-deleted {
|
|
2368
2324
|
position: relative;
|
|
2369
2325
|
align-items: center;
|
|
2370
2326
|
inline-size: 100%;
|
|
@@ -2373,7 +2329,7 @@
|
|
|
2373
2329
|
text-wrap: balance;
|
|
2374
2330
|
}
|
|
2375
2331
|
|
|
2376
|
-
.lb-
|
|
2332
|
+
.lb-ai-chat-message-error {
|
|
2377
2333
|
--lb-dynamic-background: var(--lb-background-destructive-subtle);
|
|
2378
2334
|
|
|
2379
2335
|
position: relative;
|
|
@@ -2393,7 +2349,7 @@
|
|
|
2393
2349
|
}
|
|
2394
2350
|
}
|
|
2395
2351
|
|
|
2396
|
-
.lb-ai-chat-assistant-message-
|
|
2352
|
+
.lb-ai-chat-assistant-message-collapsible {
|
|
2397
2353
|
position: relative;
|
|
2398
2354
|
display: flex;
|
|
2399
2355
|
flex-direction: column;
|
|
@@ -2402,19 +2358,16 @@
|
|
|
2402
2358
|
font-size: 0.875em;
|
|
2403
2359
|
}
|
|
2404
2360
|
|
|
2405
|
-
.lb-ai-chat-
|
|
2361
|
+
.lb-ai-chat-message-collapsible-trigger {
|
|
2406
2362
|
@include truncate;
|
|
2407
2363
|
|
|
2408
2364
|
display: flex;
|
|
2409
2365
|
gap: calc(0.25 * var(--lb-spacing));
|
|
2410
2366
|
align-items: center;
|
|
2411
|
-
|
|
2412
|
-
&:where([data-reasoning]) {
|
|
2413
|
-
animation: lb-animation-shimmer-small 8s linear infinite;
|
|
2414
|
-
}
|
|
2367
|
+
cursor: pointer;
|
|
2415
2368
|
}
|
|
2416
2369
|
|
|
2417
|
-
.lb-ai-chat-
|
|
2370
|
+
.lb-ai-chat-message-collapsible-content {
|
|
2418
2371
|
display: flex;
|
|
2419
2372
|
gap: calc(0.5 * var(--lb-spacing));
|
|
2420
2373
|
line-height: var(--lb-line-height);
|
|
@@ -2424,26 +2377,12 @@
|
|
|
2424
2377
|
}
|
|
2425
2378
|
}
|
|
2426
2379
|
|
|
2427
|
-
.lb-ai-chat-
|
|
2380
|
+
.lb-ai-chat-message-actions {
|
|
2428
2381
|
display: flex;
|
|
2429
2382
|
gap: calc(0.125 * var(--lb-spacing));
|
|
2430
2383
|
align-items: center;
|
|
2431
2384
|
}
|
|
2432
2385
|
|
|
2433
|
-
.lb-ai-chat {
|
|
2434
|
-
--lb-ai-chat-container-width: 100%;
|
|
2435
|
-
|
|
2436
|
-
display: flex;
|
|
2437
|
-
flex-direction: column;
|
|
2438
|
-
inline-size: 100%;
|
|
2439
|
-
block-size: 100%;
|
|
2440
|
-
background: var(--lb-background);
|
|
2441
|
-
|
|
2442
|
-
/* overflow-block: auto; doesn't work as expected */
|
|
2443
|
-
/* stylelint-disable-next-line plugin/use-logical-properties-and-values */
|
|
2444
|
-
overflow-y: auto;
|
|
2445
|
-
}
|
|
2446
|
-
|
|
2447
2386
|
.lb-ai-chat-messages {
|
|
2448
2387
|
display: flex;
|
|
2449
2388
|
flex-direction: column;
|
|
@@ -2456,84 +2395,132 @@
|
|
|
2456
2395
|
margin-inline: auto;
|
|
2457
2396
|
padding-block-start: var(--lb-spacing);
|
|
2458
2397
|
padding-block-end: calc(5 * var(--lb-spacing));
|
|
2459
|
-
}
|
|
2460
2398
|
|
|
2461
|
-
.lb-ai-chat-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
flex: 1 1 auto;
|
|
2465
|
-
}
|
|
2399
|
+
:where(.lb-ai-chat-user-message) {
|
|
2400
|
+
max-inline-size: 80%;
|
|
2401
|
+
margin-inline-start: auto;
|
|
2466
2402
|
|
|
2467
|
-
.lb-ai-chat-
|
|
2468
|
-
|
|
2469
|
-
|
|
2403
|
+
:where(.lb-ai-chat-message-actions) {
|
|
2404
|
+
margin-inline-start: auto;
|
|
2405
|
+
}
|
|
2406
|
+
}
|
|
2470
2407
|
}
|
|
2471
2408
|
|
|
2472
2409
|
.lb-ai-chat-footer {
|
|
2473
|
-
position:
|
|
2474
|
-
inset-block-end: 0;
|
|
2410
|
+
position: relative;
|
|
2475
2411
|
display: flex;
|
|
2476
2412
|
flex-direction: column;
|
|
2477
2413
|
gap: calc(0.75 * var(--lb-spacing));
|
|
2478
2414
|
inline-size: 100%;
|
|
2479
|
-
|
|
2480
|
-
padding: var(--lb-spacing);
|
|
2481
|
-
padding-block-start: 0;
|
|
2415
|
+
}
|
|
2482
2416
|
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2417
|
+
.lb-ai-chat {
|
|
2418
|
+
--lb-ai-chat-container-width: 100%;
|
|
2419
|
+
|
|
2420
|
+
display: flex;
|
|
2421
|
+
flex-direction: column;
|
|
2422
|
+
inline-size: 100%;
|
|
2423
|
+
block-size: 100%;
|
|
2424
|
+
background: var(--lb-background);
|
|
2425
|
+
isolation: isolate;
|
|
2426
|
+
|
|
2427
|
+
/* overflow-block: auto; doesn't work as expected */
|
|
2428
|
+
/* stylelint-disable-next-line plugin/use-logical-properties-and-values */
|
|
2429
|
+
overflow-y: auto;
|
|
2430
|
+
|
|
2431
|
+
:where(.lb-ai-chat-footer) {
|
|
2432
|
+
position: sticky;
|
|
2433
|
+
inset-block-end: 0;
|
|
2434
|
+
z-index: 1;
|
|
2435
|
+
margin-block-start: auto;
|
|
2436
|
+
padding: var(--lb-spacing);
|
|
2437
|
+
padding-block-start: 0;
|
|
2438
|
+
|
|
2439
|
+
&::before {
|
|
2440
|
+
content: "";
|
|
2441
|
+
position: absolute;
|
|
2442
|
+
inset: 0;
|
|
2443
|
+
inset-block-start: calc(-3 * var(--lb-spacing));
|
|
2444
|
+
background: linear-gradient(
|
|
2445
|
+
to bottom,
|
|
2446
|
+
transparent 0%,
|
|
2447
|
+
var(--lb-background) calc(3.5 * var(--lb-spacing))
|
|
2448
|
+
);
|
|
2449
|
+
pointer-events: none;
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
:where(.lb-ai-chat-composer) {
|
|
2454
|
+
max-inline-size: var(--lb-ai-chat-container-width);
|
|
2455
|
+
margin-inline: auto;
|
|
2456
|
+
border-radius: calc(2 * var(--lb-radius));
|
|
2457
|
+
background: var(--lb-dynamic-background);
|
|
2458
|
+
box-shadow: var(--lb-elevation-shadow-small);
|
|
2494
2459
|
}
|
|
2495
2460
|
}
|
|
2496
2461
|
|
|
2497
2462
|
.lb-ai-chat-footer-actions {
|
|
2498
2463
|
position: absolute;
|
|
2499
2464
|
inset-inline: 0;
|
|
2500
|
-
inset-block-start: calc(-
|
|
2465
|
+
inset-block-start: calc(-1 * var(--lb-spacing));
|
|
2501
2466
|
display: flex;
|
|
2502
2467
|
justify-content: center;
|
|
2503
2468
|
pointer-events: none;
|
|
2469
|
+
transform: translateY(-100%);
|
|
2504
2470
|
}
|
|
2505
2471
|
|
|
2506
2472
|
.lb-ai-chat-composer {
|
|
2507
2473
|
position: relative;
|
|
2508
2474
|
inline-size: 100%;
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
border-radius:
|
|
2513
|
-
|
|
2514
|
-
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2477
|
+
.lb-ai-chat-scroll-indicator {
|
|
2478
|
+
border-radius: $lb-radius-full;
|
|
2479
|
+
color: var(--lb-foreground-moderate);
|
|
2480
|
+
opacity: 0;
|
|
2481
|
+
pointer-events: none;
|
|
2482
|
+
transition-property: transform, opacity, background;
|
|
2483
|
+
transform: scale(0.8);
|
|
2484
|
+
transform-origin: bottom;
|
|
2485
|
+
|
|
2486
|
+
&:where([data-visible]) {
|
|
2487
|
+
opacity: 1;
|
|
2488
|
+
pointer-events: all;
|
|
2489
|
+
transform: scale(1);
|
|
2490
|
+
}
|
|
2491
|
+
}
|
|
2492
|
+
|
|
2493
|
+
.lb-ai-chat-scroll-indicator-button {
|
|
2494
|
+
@include button-base;
|
|
2495
|
+
|
|
2496
|
+
padding: calc(0.375 * var(--lb-spacing));
|
|
2497
|
+
border-radius: $lb-radius-full;
|
|
2498
|
+
color: var(--lb-foreground-moderate);
|
|
2499
|
+
transition-property: opacity, color;
|
|
2500
|
+
|
|
2501
|
+
&:where(:hover, :focus-visible) {
|
|
2502
|
+
color: var(--lb-foreground-secondary);
|
|
2503
|
+
}
|
|
2515
2504
|
|
|
2516
2505
|
&::after {
|
|
2517
2506
|
content: "";
|
|
2518
2507
|
position: absolute;
|
|
2519
2508
|
inset: 0;
|
|
2520
|
-
z-index: 1;
|
|
2521
2509
|
border-radius: inherit;
|
|
2522
|
-
box-shadow: var(--lb-inset-shadow);
|
|
2523
2510
|
pointer-events: none;
|
|
2511
|
+
transition-property: box-shadow;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
&:where(:focus-visible)::after {
|
|
2515
|
+
box-shadow: inset var(--lb-accent) 0 0 0 2px;
|
|
2524
2516
|
}
|
|
2525
2517
|
}
|
|
2526
2518
|
|
|
2527
|
-
.lb-ai-chat-
|
|
2528
|
-
|
|
2529
|
-
opacity: 0;
|
|
2530
|
-
pointer-events: none;
|
|
2531
|
-
transition-property: opacity;
|
|
2519
|
+
.lb-ai-chat-pending {
|
|
2520
|
+
@include truncate;
|
|
2532
2521
|
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
pointer-events: all;
|
|
2536
|
-
}
|
|
2522
|
+
user-select: none;
|
|
2523
|
+
animation: lb-animation-shimmer-small 8s linear infinite;
|
|
2537
2524
|
}
|
|
2538
2525
|
|
|
2539
2526
|
/*************************************
|
package/src/styles/utils.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Because of `all: unset`, we have to re-define some these values. */
|
|
2
|
-
@mixin button {
|
|
2
|
+
@mixin button-base {
|
|
3
3
|
all: unset;
|
|
4
4
|
position: relative;
|
|
5
5
|
box-sizing: inherit;
|
|
@@ -8,8 +8,13 @@
|
|
|
8
8
|
user-select: none;
|
|
9
9
|
transition-timing-function: var(--lb-transition-easing);
|
|
10
10
|
transition-duration: var(--lb-transition-duration);
|
|
11
|
-
transition-property: background, color, opacity;
|
|
12
11
|
-webkit-tap-highlight-color: transparent;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@mixin button {
|
|
15
|
+
@include button-base;
|
|
16
|
+
|
|
17
|
+
transition-property: background, color, opacity;
|
|
13
18
|
|
|
14
19
|
&::after {
|
|
15
20
|
content: "";
|