@mybricks/plugin-ai 0.0.1 → 0.0.3
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/_virtual/_rollupPluginBabelHelpers.js +164 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/agents/app.js +335 -0
- package/dist/agents/app.js.map +1 -0
- package/dist/agents/common.js +483 -0
- package/dist/agents/common.js.map +1 -0
- package/dist/agents/custom.js +16 -0
- package/dist/agents/custom.js.map +1 -0
- package/dist/agents/index.js +38 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/knowledges/knowledge-base.js +579 -0
- package/dist/agents/knowledges/knowledge-base.js.map +1 -0
- package/dist/agents/knowledges/knowledge-node.js +228 -0
- package/dist/agents/knowledges/knowledge-node.js.map +1 -0
- package/dist/agents/knowledges/types.js +105 -0
- package/dist/agents/knowledges/types.js.map +1 -0
- package/dist/agents/utils/config.js +229 -0
- package/dist/agents/utils/config.js.map +1 -0
- package/dist/agents/workspace/coding-manager.js +20 -0
- package/dist/agents/workspace/coding-manager.js.map +1 -0
- package/dist/agents/workspace/components-manager.js +113 -0
- package/dist/agents/workspace/components-manager.js.map +1 -0
- package/dist/agents/workspace/outline-focus.js +167 -0
- package/dist/agents/workspace/outline-focus.js.map +1 -0
- package/dist/agents/workspace/outline-info.js +430 -0
- package/dist/agents/workspace/outline-info.js.map +1 -0
- package/dist/agents/workspace/page-tree-generator.js +70 -0
- package/dist/agents/workspace/page-tree-generator.js.map +1 -0
- package/dist/agents/workspace/workspace.js +251 -0
- package/dist/agents/workspace/workspace.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/test.js +242 -0
- package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
- package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
- package/dist/api/cloud-components.js +85 -0
- package/dist/api/cloud-components.js.map +1 -0
- package/dist/api-record-replay/manager.js +168 -0
- package/dist/api-record-replay/manager.js.map +1 -0
- package/dist/api-record-replay/recorder.js +107 -0
- package/dist/api-record-replay/recorder.js.map +1 -0
- package/dist/api-record-replay/replayer.js +136 -0
- package/dist/api-record-replay/replayer.js.map +1 -0
- package/dist/components/attachments/index.js +124 -0
- package/dist/components/attachments/index.js.map +1 -0
- package/dist/components/attachments/index.less.js +8 -0
- package/dist/components/attachments/index.less.js.map +1 -0
- package/dist/components/icons/index.js +112 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/icons/index.less.js +8 -0
- package/dist/components/icons/index.less.js.map +1 -0
- package/dist/components/mention/index.js +19 -0
- package/dist/components/mention/index.js.map +1 -0
- package/dist/components/mention/index.less.js +8 -0
- package/dist/components/mention/index.less.js.map +1 -0
- package/dist/components/messages/index.js +429 -0
- package/dist/components/messages/index.js.map +1 -0
- package/dist/components/messages/index.less.js +8 -0
- package/dist/components/messages/index.less.js.map +1 -0
- package/dist/components/sender/index.js +244 -0
- package/dist/components/sender/index.js.map +1 -0
- package/dist/components/sender/index.less.js +8 -0
- package/dist/components/sender/index.less.js.map +1 -0
- package/dist/context/RequestStatusTracker.js +44 -0
- package/dist/context/RequestStatusTracker.js.map +1 -0
- package/dist/context/index.js +45 -0
- package/dist/context/index.js.map +1 -0
- package/dist/data.js +4 -0
- package/dist/data.js.map +1 -0
- package/dist/index.js +306 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist/plugin-ai/package.json.js +8 -0
- package/dist/plugin-ai/package.json.js.map +1 -0
- package/dist/plugin-ai/test/index.js +206 -0
- package/dist/plugin-ai/test/index.js.map +1 -0
- package/dist/preset/createTemplates.js +29 -0
- package/dist/preset/createTemplates.js.map +1 -0
- package/dist/preset/index.js +13 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/preset/prompts.js +34 -0
- package/dist/preset/prompts.js.map +1 -0
- package/dist/preset/user.js +7 -0
- package/dist/preset/user.js.map +1 -0
- package/dist/requestAsStream.js +269 -0
- package/dist/requestAsStream.js.map +1 -0
- package/dist/rxai/node_modules/idb/build/index.js +277 -0
- package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
- package/dist/rxai/src/agent/base.js +16 -0
- package/dist/rxai/src/agent/base.js.map +1 -0
- package/dist/rxai/src/agent/planning.js +1076 -0
- package/dist/rxai/src/agent/planning.js.map +1 -0
- package/dist/rxai/src/agent/rxai.js +254 -0
- package/dist/rxai/src/agent/rxai.js.map +1 -0
- package/dist/rxai/src/error/base.js +39 -0
- package/dist/rxai/src/error/base.js.map +1 -0
- package/dist/rxai/src/prompt/base.js +11 -0
- package/dist/rxai/src/prompt/base.js.map +1 -0
- package/dist/rxai/src/prompt/planning.js +23 -0
- package/dist/rxai/src/prompt/planning.js.map +1 -0
- package/dist/rxai/src/prompt/tool.js +14 -0
- package/dist/rxai/src/prompt/tool.js.map +1 -0
- package/dist/rxai/src/request/request.js +123 -0
- package/dist/rxai/src/request/request.js.map +1 -0
- package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
- package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
- package/dist/rxai/src/tool/util.js +424 -0
- package/dist/rxai/src/tool/util.js.map +1 -0
- package/dist/rxai/src/utils/events.js +43 -0
- package/dist/rxai/src/utils/events.js.map +1 -0
- package/dist/rxai/src/utils/idb.js +240 -0
- package/dist/rxai/src/utils/idb.js.map +1 -0
- package/dist/rxai/src/utils/retry.js +32 -0
- package/dist/rxai/src/utils/retry.js.map +1 -0
- package/dist/rxai/src/utils/uuid.js +7 -0
- package/dist/rxai/src/utils/uuid.js.map +1 -0
- package/dist/startView/components/header/header.js +12 -0
- package/dist/startView/components/header/header.js.map +1 -0
- package/dist/startView/components/header/header.less.js +8 -0
- package/dist/startView/components/header/header.less.js.map +1 -0
- package/dist/startView/index.js +62 -0
- package/dist/startView/index.js.map +1 -0
- package/dist/startView/index.less.js +8 -0
- package/dist/startView/index.less.js.map +1 -0
- package/dist/tools/analyze-and-expand-prd.js +116 -0
- package/dist/tools/analyze-and-expand-prd.js.map +1 -0
- package/dist/tools/analyze-requirement-and-components.js +208 -0
- package/dist/tools/analyze-requirement-and-components.js.map +1 -0
- package/dist/tools/answer.js +33 -0
- package/dist/tools/answer.js.map +1 -0
- package/dist/tools/build-process.js +550 -0
- package/dist/tools/build-process.js.map +1 -0
- package/dist/tools/coding-subagent-as-tool.js +101 -0
- package/dist/tools/coding-subagent-as-tool.js.map +1 -0
- package/dist/tools/generate-ui-content.js +528 -0
- package/dist/tools/generate-ui-content.js.map +1 -0
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/open-dsl.js +49 -0
- package/dist/tools/open-dsl.js.map +1 -0
- package/dist/tools/refactor-ui-content.js +292 -0
- package/dist/tools/refactor-ui-content.js.map +1 -0
- package/dist/tools/utils.js +832 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/view/components/header/header.js +59 -0
- package/dist/view/components/header/header.js.map +1 -0
- package/dist/view/components/header/header.less.js +8 -0
- package/dist/view/components/header/header.less.js.map +1 -0
- package/dist/view/index.js +184 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/index.less.js +8 -0
- package/dist/view/index.less.js.map +1 -0
- package/package.json +33 -6
- package/src/agents/app.ts +0 -173
- package/src/agents/common.ts +0 -111
- package/src/agents/index.ts +0 -7
- package/src/components/icons/index.less +0 -8
- package/src/components/icons/index.tsx +0 -24
- package/src/components/messages/index.less +0 -806
- package/src/components/messages/index.tsx +0 -236
- package/src/context/index.ts +0 -21
- package/src/data.ts +0 -5
- package/src/index.tsx +0 -84
- package/src/mock.ts +0 -1267
- package/src/startView/index.less +0 -216
- package/src/startView/index.tsx +0 -229
- package/src/tools/analyze-and-expand-prd.ts +0 -166
- package/src/tools/answer-user.ts +0 -35
- package/src/tools/focus-element.ts +0 -47
- package/src/tools/generate-page.ts +0 -750
- package/src/tools/get-component-info-by-ids.ts +0 -166
- package/src/tools/get-component-info.ts +0 -53
- package/src/tools/get-components-doc-and-prd.ts +0 -137
- package/src/tools/get-focus-mybricks-dsl.ts +0 -26
- package/src/tools/get-mybricks-dsl.ts +0 -73
- package/src/tools/index.ts +0 -25
- package/src/tools/modify-component.ts +0 -385
- package/src/tools/type.d.ts +0 -12
- package/src/tools/utils.ts +0 -62
- package/src/types.d.ts +0 -65
- package/src/view/components/header/header.less +0 -17
- package/src/view/components/header/header.tsx +0 -15
- package/src/view/components/index.ts +0 -3
- package/src/view/components/messages/messages.less +0 -228
- package/src/view/components/messages/messages.tsx +0 -172
- package/src/view/components/sender/sender.less +0 -44
- package/src/view/components/sender/sender.tsx +0 -62
- package/src/view/index.less +0 -5
- package/src/view/index.tsx +0 -18
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { useRef, useState, useLayoutEffect, useEffect } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import markdownit from 'markdown-it';
|
|
5
|
+
import { Loading, Chat, Success } from '../icons/index.js';
|
|
6
|
+
import { AttachmentsList } from '../attachments/index.js';
|
|
7
|
+
import { MentionTag } from '../mention/index.js';
|
|
8
|
+
import { Sender } from '../sender/index.js';
|
|
9
|
+
import { context } from '../../context/index.js';
|
|
10
|
+
import css from './index.less.js';
|
|
11
|
+
|
|
12
|
+
var md = markdownit();
|
|
13
|
+
var Messages = params => {
|
|
14
|
+
var {
|
|
15
|
+
user,
|
|
16
|
+
rxai,
|
|
17
|
+
copilot,
|
|
18
|
+
onSend,
|
|
19
|
+
onMentionClick
|
|
20
|
+
} = params;
|
|
21
|
+
var mainRef = useRef(null);
|
|
22
|
+
var destroysRef = useRef([]);
|
|
23
|
+
var [plans, setPlans] = useState([]);
|
|
24
|
+
var [styleTag] = useState(() => {
|
|
25
|
+
var styleTag = document.createElement('style');
|
|
26
|
+
document.head.appendChild(styleTag);
|
|
27
|
+
var prefix = ".".concat(css['ai-chat-messages'], " .").concat(css['chat-bubble-container'], ":nth-last-child(1)");
|
|
28
|
+
return {
|
|
29
|
+
setStyle: height => {
|
|
30
|
+
styleTag.innerHTML = "".concat(prefix, " {\n min-height: ").concat(height - 1, "px;\n }");
|
|
31
|
+
},
|
|
32
|
+
remove: () => {
|
|
33
|
+
document.head.removeChild(styleTag);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
useLayoutEffect(() => {
|
|
38
|
+
destroysRef.current.push(rxai.events.on('plan', plans => {
|
|
39
|
+
setPlans([...plans]);
|
|
40
|
+
}, true));
|
|
41
|
+
styleTag.setStyle(mainRef.current.clientHeight);
|
|
42
|
+
}, []);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
var autoScroller = new AutoScroller(mainRef.current, {
|
|
45
|
+
resizeObserverCallback: () => {
|
|
46
|
+
var _mainRef$current;
|
|
47
|
+
var height = (_mainRef$current = mainRef.current) === null || _mainRef$current === void 0 ? void 0 : _mainRef$current.clientHeight;
|
|
48
|
+
if (height && height > 0) {
|
|
49
|
+
styleTag.setStyle(height);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
mutationCallback: mutations => {
|
|
53
|
+
var mutationRecord = mutations[0];
|
|
54
|
+
if (mutationRecord.target === mainRef.current && mutationRecord.addedNodes.length) {
|
|
55
|
+
mainRef.current.scrollTop = mainRef.current.scrollHeight;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return () => {
|
|
60
|
+
autoScroller.destroy();
|
|
61
|
+
for (var destroy of destroysRef.current) {
|
|
62
|
+
destroy();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}, []);
|
|
66
|
+
return /*#__PURE__*/React.createElement("main", {
|
|
67
|
+
ref: mainRef,
|
|
68
|
+
className: css['ai-chat-messages']
|
|
69
|
+
}, plans.map((plan, index) => {
|
|
70
|
+
return /*#__PURE__*/React.createElement(Bubble, {
|
|
71
|
+
key: plan.id,
|
|
72
|
+
user: user,
|
|
73
|
+
plan: plan,
|
|
74
|
+
copilot: copilot,
|
|
75
|
+
onSend: onSend,
|
|
76
|
+
onMentionClick: onMentionClick
|
|
77
|
+
});
|
|
78
|
+
}));
|
|
79
|
+
};
|
|
80
|
+
var Bubble = params => {
|
|
81
|
+
var {
|
|
82
|
+
user,
|
|
83
|
+
plan,
|
|
84
|
+
copilot,
|
|
85
|
+
onSend,
|
|
86
|
+
onMentionClick
|
|
87
|
+
} = params;
|
|
88
|
+
var [userMessage, setUserMessage] = useState();
|
|
89
|
+
var destroysRef = useRef([]);
|
|
90
|
+
useLayoutEffect(() => {
|
|
91
|
+
destroysRef.current.push(plan.events.on('userMessage', userMessage => {
|
|
92
|
+
setUserMessage(userMessage);
|
|
93
|
+
}));
|
|
94
|
+
}, []);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
return () => {
|
|
97
|
+
for (var destroy of destroysRef.current) {
|
|
98
|
+
destroy();
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}, []);
|
|
102
|
+
return userMessage && /*#__PURE__*/React.createElement("div", {
|
|
103
|
+
className: css['chat-bubble-container']
|
|
104
|
+
}, /*#__PURE__*/React.createElement(BubbleUser, {
|
|
105
|
+
user: user,
|
|
106
|
+
message: userMessage,
|
|
107
|
+
plan: plan,
|
|
108
|
+
onMentionClick: onMentionClick
|
|
109
|
+
}), /*#__PURE__*/React.createElement(BubbleCopilot, {
|
|
110
|
+
copilot: copilot,
|
|
111
|
+
plan: plan
|
|
112
|
+
}), /*#__PURE__*/React.createElement(BubbleAction, {
|
|
113
|
+
plan: plan,
|
|
114
|
+
onSend: onSend
|
|
115
|
+
}));
|
|
116
|
+
};
|
|
117
|
+
var BubbleAction = props => {
|
|
118
|
+
var _mentions;
|
|
119
|
+
var {
|
|
120
|
+
plan,
|
|
121
|
+
onSend: _onSend
|
|
122
|
+
} = props;
|
|
123
|
+
var destroysRef = useRef([]);
|
|
124
|
+
var [status, setStatus] = useState();
|
|
125
|
+
var [showRender, setShowRender] = useState(false);
|
|
126
|
+
var senderRef = useRef(null);
|
|
127
|
+
useLayoutEffect(() => {
|
|
128
|
+
destroysRef.current.push(plan.events.on('status', status => {
|
|
129
|
+
setStatus(status);
|
|
130
|
+
}, true));
|
|
131
|
+
}, []);
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
return () => {
|
|
134
|
+
for (var destroy of destroysRef.current) {
|
|
135
|
+
destroy();
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}, []);
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
if (showRender) {
|
|
141
|
+
senderRef.current.setMentions(plan.extension.mentions || []);
|
|
142
|
+
senderRef.current.focus();
|
|
143
|
+
}
|
|
144
|
+
}, [showRender]);
|
|
145
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
146
|
+
className: css['chat-bubble-action']
|
|
147
|
+
}, status !== "pending" && _onSend && ((_mentions = plan.extension.mentions) === null || _mentions === void 0 || (_mentions = _mentions[0]) === null || _mentions === void 0 ? void 0 : _mentions.pageId) && /*#__PURE__*/React.createElement("div", {
|
|
148
|
+
className: classNames(css['chat-bubble-action-chat'], {
|
|
149
|
+
[css['focus']]: showRender
|
|
150
|
+
}),
|
|
151
|
+
"data-mybricks-tip": "基于本次回答继续对话",
|
|
152
|
+
onClick: () => {
|
|
153
|
+
setShowRender(!showRender);
|
|
154
|
+
}
|
|
155
|
+
}, /*#__PURE__*/React.createElement(Chat, null))), showRender && /*#__PURE__*/React.createElement(Sender, {
|
|
156
|
+
ref: senderRef,
|
|
157
|
+
placeholder: "\u60A8\u597D\uFF0C\u6211\u662F".concat(context.name, "\uFF0C\u8BF7\u8BE6\u7EC6\u63CF\u8FF0\u60A8\u7684\u9700\u6C42"),
|
|
158
|
+
onSend: params => {
|
|
159
|
+
_onSend(_objectSpread2(_objectSpread2({}, params), {}, {
|
|
160
|
+
insertAfter: plan
|
|
161
|
+
}));
|
|
162
|
+
setShowRender(false);
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
165
|
+
};
|
|
166
|
+
var BubbleMessage = params => {
|
|
167
|
+
var {
|
|
168
|
+
message
|
|
169
|
+
} = params;
|
|
170
|
+
var messageRef = useRef(null);
|
|
171
|
+
useEffect(() => {
|
|
172
|
+
messageRef.current.innerHTML = md.render(message);
|
|
173
|
+
}, [message]);
|
|
174
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
175
|
+
ref: messageRef
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
var BubbleUser = params => {
|
|
179
|
+
var _plan$extension;
|
|
180
|
+
var {
|
|
181
|
+
user,
|
|
182
|
+
message,
|
|
183
|
+
plan,
|
|
184
|
+
onMentionClick
|
|
185
|
+
} = params;
|
|
186
|
+
var mentions = ((_plan$extension = plan.extension) === null || _plan$extension === void 0 ? void 0 : _plan$extension.mentions) || [];
|
|
187
|
+
var content = "";
|
|
188
|
+
var attachments = [];
|
|
189
|
+
if (typeof message.content === "string") {
|
|
190
|
+
content = message.content;
|
|
191
|
+
} else {
|
|
192
|
+
message.content.forEach(item => {
|
|
193
|
+
if (item.type === "text") {
|
|
194
|
+
content = item.text;
|
|
195
|
+
} else if (item.type === "image_url") {
|
|
196
|
+
attachments.push({
|
|
197
|
+
type: "image",
|
|
198
|
+
content: item.image_url.url
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return /*#__PURE__*/React.createElement("article", {
|
|
204
|
+
className: css['chat-bubble']
|
|
205
|
+
}, /*#__PURE__*/React.createElement("header", {
|
|
206
|
+
className: css['chat-bubble-header']
|
|
207
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
208
|
+
className: css['chat-bubble-header-avatar']
|
|
209
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
210
|
+
className: css['user-avatar'],
|
|
211
|
+
src: user.avatar
|
|
212
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
213
|
+
className: css['chat-bubble-header-name']
|
|
214
|
+
}, user.name)), /*#__PURE__*/React.createElement("section", {
|
|
215
|
+
className: classNames(css['chat-message-container'], css['user-message'], {
|
|
216
|
+
[css['mention']]: mentions.length
|
|
217
|
+
})
|
|
218
|
+
}, mentions.length ? /*#__PURE__*/React.createElement(MentionTag, {
|
|
219
|
+
mention: mentions[0],
|
|
220
|
+
focusarea: true,
|
|
221
|
+
onClick: onMentionClick
|
|
222
|
+
}) : null, /*#__PURE__*/React.createElement("span", null, content), attachments.length ? /*#__PURE__*/React.createElement(AttachmentsList, {
|
|
223
|
+
className: css['attachments-list'],
|
|
224
|
+
attachments: attachments
|
|
225
|
+
}) : null));
|
|
226
|
+
};
|
|
227
|
+
var BubbleCopilot = params => {
|
|
228
|
+
var {
|
|
229
|
+
copilot,
|
|
230
|
+
plan
|
|
231
|
+
} = params;
|
|
232
|
+
var destroysRef = useRef([]);
|
|
233
|
+
var [loading, setLoading] = useState(false);
|
|
234
|
+
var [streamMessage, setStreamMessage] = useState("");
|
|
235
|
+
var [summary, setSummary] = useState("");
|
|
236
|
+
var [commands, setCommands] = useState([]);
|
|
237
|
+
var [error, setError] = useState("");
|
|
238
|
+
var [planningMessage, setPlanningMessage] = useState("");
|
|
239
|
+
useLayoutEffect(() => {
|
|
240
|
+
destroysRef.current.push(plan.events.on('loading', loading => {
|
|
241
|
+
setLoading(loading);
|
|
242
|
+
}), plan.events.on('streamMessage', chunk => {
|
|
243
|
+
setStreamMessage(streamMessage => {
|
|
244
|
+
return streamMessage + chunk;
|
|
245
|
+
});
|
|
246
|
+
}), plan.events.on('summary', summary => {
|
|
247
|
+
setSummary(summary);
|
|
248
|
+
}), plan.events.on('commands', commands => {
|
|
249
|
+
setCommands([...commands]);
|
|
250
|
+
setStreamMessage("");
|
|
251
|
+
}), plan.events.on('error', error => {
|
|
252
|
+
setError(error);
|
|
253
|
+
}), plan.events.on('planningMessage', planningMessage => {
|
|
254
|
+
setPlanningMessage(planningMessage);
|
|
255
|
+
}));
|
|
256
|
+
}, []);
|
|
257
|
+
useEffect(() => {
|
|
258
|
+
return () => {
|
|
259
|
+
for (var destroy of destroysRef.current) {
|
|
260
|
+
destroy();
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
}, []);
|
|
264
|
+
return /*#__PURE__*/React.createElement("article", {
|
|
265
|
+
className: css['chat-bubble']
|
|
266
|
+
}, /*#__PURE__*/React.createElement("header", {
|
|
267
|
+
className: css['chat-bubble-header']
|
|
268
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
269
|
+
className: css['chat-bubble-header-name']
|
|
270
|
+
}, copilot.name)), /*#__PURE__*/React.createElement("section", {
|
|
271
|
+
className: classNames(css['chat-message-container'], css['ai-message'])
|
|
272
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
273
|
+
className: css['markdown-body']
|
|
274
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
275
|
+
className: css['think']
|
|
276
|
+
}, planningMessage ? /*#__PURE__*/React.createElement(BubbleMessage, {
|
|
277
|
+
message: "".concat(planningMessage).concat(loading ? "..." : "")
|
|
278
|
+
}) : loading ? /*#__PURE__*/React.createElement("span", null, "\u6B63\u5728\u601D\u8003") : null, loading && !planningMessage && /*#__PURE__*/React.createElement(Loading, null)), commands.map((command, index) => {
|
|
279
|
+
if (!command.status || command.status === "error") {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
return /*#__PURE__*/React.createElement(BubbleCopilotTool, {
|
|
283
|
+
key: index + command.status,
|
|
284
|
+
command: command,
|
|
285
|
+
last: index === commands.length - 1
|
|
286
|
+
});
|
|
287
|
+
}), error && /*#__PURE__*/React.createElement(BubbleError, {
|
|
288
|
+
message: error,
|
|
289
|
+
plan: plan
|
|
290
|
+
}), summary && /*#__PURE__*/React.createElement(BubbleMessage, {
|
|
291
|
+
message: summary
|
|
292
|
+
}))));
|
|
293
|
+
};
|
|
294
|
+
var BubbleCopilotTool = params => {
|
|
295
|
+
var {
|
|
296
|
+
command,
|
|
297
|
+
last
|
|
298
|
+
} = params;
|
|
299
|
+
var [message, setMessage] = useState("");
|
|
300
|
+
var [expand, setExpand] = useState(false);
|
|
301
|
+
useEffect(() => {
|
|
302
|
+
var _command$events;
|
|
303
|
+
if (command.status === "success") {
|
|
304
|
+
setMessage(command.content.display || command.content.llm);
|
|
305
|
+
if (last) {
|
|
306
|
+
setExpand(true);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
var destory = (_command$events = command.events) === null || _command$events === void 0 ? void 0 : _command$events.on("streamMessage", _ref => {
|
|
310
|
+
var {
|
|
311
|
+
message,
|
|
312
|
+
status
|
|
313
|
+
} = _ref;
|
|
314
|
+
setMessage(message);
|
|
315
|
+
if (status === "start") {
|
|
316
|
+
setExpand(true);
|
|
317
|
+
} else if (status === "complete") {
|
|
318
|
+
if (!last) {
|
|
319
|
+
setExpand(false);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
return () => {
|
|
324
|
+
destory === null || destory === void 0 || destory();
|
|
325
|
+
};
|
|
326
|
+
}, []);
|
|
327
|
+
var renderMessage = shouldRender => shouldRender && message ? /*#__PURE__*/React.createElement("div", {
|
|
328
|
+
className: css['ai-chat-collapsible-response'],
|
|
329
|
+
style: {
|
|
330
|
+
display: expand ? "block" : "none"
|
|
331
|
+
}
|
|
332
|
+
}, /*#__PURE__*/React.createElement(BubbleMessage, {
|
|
333
|
+
message: message
|
|
334
|
+
})) : null;
|
|
335
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, renderMessage(command.status === "pending"), /*#__PURE__*/React.createElement("div", {
|
|
336
|
+
className: classNames(css['ai-chat-collapsible-code-block'], css['collapsed']),
|
|
337
|
+
onClick: () => {
|
|
338
|
+
if (command.status !== "pending") {
|
|
339
|
+
setExpand(expand => !expand);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
343
|
+
className: classNames(css['code-header'], css['collapsed'])
|
|
344
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
345
|
+
className: classNames(css['code-title'], css['collapsed'])
|
|
346
|
+
}, command.tool.displayName || command.tool.name), command.status === "pending" && /*#__PURE__*/React.createElement("span", {
|
|
347
|
+
className: classNames(css['code-title-status'], css['collapsed'], css['pending'])
|
|
348
|
+
}, /*#__PURE__*/React.createElement(Loading, null)), command.status === "success" && /*#__PURE__*/React.createElement("span", {
|
|
349
|
+
className: classNames(css['code-title-status'], css['collapsed'], css['success'])
|
|
350
|
+
}, /*#__PURE__*/React.createElement(Success, null)))), renderMessage(command.status === "success"));
|
|
351
|
+
};
|
|
352
|
+
var BubbleError = params => {
|
|
353
|
+
var {
|
|
354
|
+
message,
|
|
355
|
+
plan
|
|
356
|
+
} = params;
|
|
357
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
358
|
+
className: css['ai-chat-error-code-block']
|
|
359
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
360
|
+
className: css['ai-chat-error-code-block-message']
|
|
361
|
+
}, /*#__PURE__*/React.createElement("span", null, message)), !plan.enableRetry ? null : /*#__PURE__*/React.createElement("div", {
|
|
362
|
+
className: css['ai-chat-error-code-block-retry'],
|
|
363
|
+
onClick: () => plan.retry()
|
|
364
|
+
}, "\u91CD\u8BD5"));
|
|
365
|
+
};
|
|
366
|
+
class AutoScroller {
|
|
367
|
+
constructor(container, options) {
|
|
368
|
+
_defineProperty(this, "isLockedToBottom", true);
|
|
369
|
+
_defineProperty(this, "resizeObserver", null);
|
|
370
|
+
_defineProperty(this, "mutationObserver", null);
|
|
371
|
+
this.container = container;
|
|
372
|
+
this.options = options;
|
|
373
|
+
this.isLockedToBottom = true;
|
|
374
|
+
this.init();
|
|
375
|
+
}
|
|
376
|
+
init() {
|
|
377
|
+
// 监听滚动事件
|
|
378
|
+
this.container.addEventListener('scroll', this.handleScroll.bind(this));
|
|
379
|
+
|
|
380
|
+
// 使用ResizeObserver监听内容大小变化
|
|
381
|
+
this.resizeObserver = new ResizeObserver((entries, observer) => {
|
|
382
|
+
if (this.isLockedToBottom) {
|
|
383
|
+
this.scrollToBottom();
|
|
384
|
+
}
|
|
385
|
+
this.options.resizeObserverCallback(entries, observer);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// 监听容器内部元素大小变化
|
|
389
|
+
this.resizeObserver.observe(this.container);
|
|
390
|
+
|
|
391
|
+
// 同时监听DOM变化
|
|
392
|
+
this.mutationObserver = new MutationObserver((mutations, observer) => {
|
|
393
|
+
if (this.isLockedToBottom) {
|
|
394
|
+
Promise.resolve().then(() => {
|
|
395
|
+
this.scrollToBottom();
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
this.options.mutationCallback(mutations, observer);
|
|
399
|
+
});
|
|
400
|
+
this.mutationObserver.observe(this.container, {
|
|
401
|
+
childList: true,
|
|
402
|
+
subtree: true
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
handleScroll() {
|
|
406
|
+
var isAtBottom = this.isAtBottom();
|
|
407
|
+
this.isLockedToBottom = isAtBottom;
|
|
408
|
+
}
|
|
409
|
+
isAtBottom() {
|
|
410
|
+
var threshold = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
|
411
|
+
var {
|
|
412
|
+
scrollTop,
|
|
413
|
+
scrollHeight,
|
|
414
|
+
clientHeight
|
|
415
|
+
} = this.container;
|
|
416
|
+
return Math.abs(scrollHeight - scrollTop - clientHeight) <= threshold;
|
|
417
|
+
}
|
|
418
|
+
scrollToBottom() {
|
|
419
|
+
this.container.scrollTop = this.container.scrollHeight;
|
|
420
|
+
}
|
|
421
|
+
destroy() {
|
|
422
|
+
if (this.mutationObserver) this.mutationObserver.disconnect();
|
|
423
|
+
if (this.resizeObserver) this.resizeObserver.disconnect();
|
|
424
|
+
this.container.removeEventListener('scroll', this.handleScroll);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
export { Messages };
|
|
429
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/messages/index.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect, useLayoutEffect } from \"react\"\nimport classNames from \"classnames\"\nimport { Rxai } from \"@mybricks/rxai\"\nimport markdownit from 'markdown-it'\nimport { Extension } from \"../types\";\nimport { Loading, Success, Chat } from \"../icons\";\nimport { AttachmentsList } from \"../attachments\";\nimport { MentionTag } from \"../mention\";\nimport { Mention } from \"../types\";\nimport { Sender, SenderRef, SenderProps } from \"../sender\";\nimport { context } from \"../../context\";\nimport css from \"./index.less\"\n\nconst md = markdownit()\n\ninterface User {\n /** 名称 */\n name: string;\n /** 头像地址 */\n avatar: string;\n}\n\ninterface MessagesParams {\n /** 用户信息 */\n user: User;\n /** ai助手信息 */\n copilot: User;\n\n rxai: Rxai;\n\n onMentionClick?: (mention: Mention) => void;\n\n onSend?: SenderProps['onSend'];\n}\n\ntype Plans = Rxai['cacheMessages'];\n\nconst Messages = (params: MessagesParams) => {\n const { user, rxai, copilot, onSend, onMentionClick } = params;\n\n const mainRef = useRef<HTMLElement>(null);\n const destroysRef = useRef<(() => void)[]>([]);\n const [plans, setPlans] = useState<Plans>([]);\n\n const [styleTag] = useState(() => {\n const styleTag = document.createElement('style')\n document.head.appendChild(styleTag)\n const prefix = `.${css['ai-chat-messages']} .${css['chat-bubble-container']}:nth-last-child(1)`;\n return {\n setStyle: (height: number) => {\n styleTag.innerHTML = `${prefix} {\n min-height: ${height - 1}px;\n }`\n },\n remove: () => {\n document.head.removeChild(styleTag);\n }\n };\n })\n\n useLayoutEffect(() => {\n destroysRef.current.push(rxai.events.on('plan', (plans) => {\n setPlans([...plans])\n }, true))\n\n styleTag.setStyle(mainRef.current!.clientHeight);\n }, [])\n\n useEffect(() => {\n const autoScroller = new AutoScroller(mainRef.current!, {\n resizeObserverCallback: () => {\n const height = mainRef.current?.clientHeight;\n if (height && height > 0) {\n styleTag.setStyle(height)\n }\n },\n mutationCallback: (mutations) => {\n const mutationRecord = mutations[0];\n\n if (mutationRecord.target === mainRef.current && mutationRecord.addedNodes.length) {\n mainRef.current!.scrollTop = mainRef.current!.scrollHeight;\n }\n }\n });\n \n return () => {\n autoScroller.destroy();\n\n for (const destroy of destroysRef.current) {\n destroy()\n }\n }\n }, [])\n\n return (\n <main ref={mainRef} className={css['ai-chat-messages']}>\n {plans.map((plan, index) => {\n return (\n <Bubble\n key={plan.id}\n user={user}\n plan={plan}\n copilot={copilot}\n onSend={onSend}\n onMentionClick={onMentionClick}\n />\n )\n })}\n </main>\n )\n}\n\ntype Plan = Rxai['cacheMessages'][number];\n\ninterface BubbleParams {\n user: User;\n copilot: User;\n plan: Plan;\n onSend?: SenderProps['onSend'];\n onMentionClick?: (mention: Mention) => void;\n}\nconst Bubble = (params: BubbleParams) => {\n const { user, plan, copilot, onSend, onMentionClick } = params;\n const [userMessage, setUserMessage] = useState<ReturnType<Plan['getUserMessage']>>();\n const destroysRef = useRef<(() => void)[]>([]);\n\n useLayoutEffect(() => {\n destroysRef.current.push(\n plan.events.on('userMessage', (userMessage) => {\n setUserMessage(userMessage);\n }),\n )\n }, [])\n\n useEffect(() => {\n return () => {\n for (const destroy of destroysRef.current) {\n destroy()\n }\n }\n }, [])\n\n return userMessage && (\n <div className={css['chat-bubble-container']}>\n <BubbleUser user={user} message={userMessage} plan={plan} onMentionClick={onMentionClick}/>\n <BubbleCopilot copilot={copilot} plan={plan}/>\n <BubbleAction plan={plan} onSend={onSend}/>\n </div>\n )\n}\n\nconst BubbleAction = (props: { plan: Plan, onSend?: SenderProps['onSend']; }) => {\n const { plan, onSend } = props;\n\n const destroysRef = useRef<(() => void)[]>([]);\n const [status, setStatus] = useState<Plan['status']>();\n const [showRender, setShowRender] = useState(false);\n const senderRef = useRef<SenderRef>(null);\n\n useLayoutEffect(() => {\n destroysRef.current.push(\n plan.events.on('status', (status) => {\n setStatus(status)\n }, true),\n )\n }, [])\n\n useEffect(() => {\n return () => {\n for (const destroy of destroysRef.current) {\n destroy()\n }\n }\n }, [])\n\n useEffect(() => {\n if (showRender) {\n senderRef.current!.setMentions((plan.extension as any).mentions || []);\n senderRef.current!.focus();\n }\n }, [showRender])\n\n return (\n <>\n <div className={css['chat-bubble-action']}>\n {/* TODO 兼容处理,没有pageId,不允许追加 */}\n {status !== \"pending\" && onSend && (plan.extension as any).mentions?.[0]?.pageId && <div\n className={classNames(css['chat-bubble-action-chat'], {\n [css['focus']]: showRender\n })}\n data-mybricks-tip={\"基于本次回答继续对话\"}\n onClick={() => {\n setShowRender(!showRender);\n }}\n >\n <Chat />\n </div>}\n </div>\n {showRender && (\n <Sender\n ref={senderRef}\n placeholder={`您好,我是${context.name},请详细描述您的需求`}\n onSend={(params) => {\n onSend!({...params, insertAfter: plan});\n setShowRender(false);\n }}\n />\n )}\n </>\n )\n}\n\ninterface BubbleMessageParams {\n message: string;\n}\nconst BubbleMessage = (params: BubbleMessageParams) => {\n const { message } = params;\n const messageRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messageRef.current!.innerHTML = md.render(message);\n }, [message])\n\n return <span ref={messageRef} />\n}\n\ninterface BubbleUserParams {\n user: User;\n message: ReturnType<Plan['getUserMessage']>\n plan: Plan;\n onMentionClick?: (mention: Mention) => void;\n}\n\nconst BubbleUser = (params: BubbleUserParams) => {\n const { user, message, plan, onMentionClick } = params;\n const mentions = (plan.extension as Extension)?.mentions || [];\n let content = \"\";\n let attachments: Plan[\"options\"][\"attachments\"] = [];\n\n if (typeof message.content === \"string\") {\n content = message.content\n } else {\n message.content.forEach((item: any) => {\n if (item.type === \"text\") {\n content = item.text\n } else if (item.type === \"image_url\") {\n attachments.push({\n type: \"image\",\n content: item.image_url.url\n });\n }\n })\n }\n\n return (\n <article className={css['chat-bubble']}>\n <header className={css['chat-bubble-header']}>\n <span className={css['chat-bubble-header-avatar']}>\n <img className={css['user-avatar']} src={user.avatar} />\n </span>\n <span className={css['chat-bubble-header-name']}>{user.name}</span>\n </header>\n <section className={classNames(css['chat-message-container'], css['user-message'], {\n [css['mention']]: mentions.length\n })}>\n {mentions.length ? (\n <MentionTag mention={mentions[0]} focusarea={true} onClick={onMentionClick}/>\n ) : null}\n <span>\n {content}\n </span>\n {attachments.length ? (\n <AttachmentsList className={css['attachments-list']} attachments={attachments}/>\n ) : null}\n </section>\n </article>\n )\n}\n\ninterface BubbleCopilotParams {\n copilot: User;\n plan: Plan;\n}\nconst BubbleCopilot = (params: BubbleCopilotParams) => {\n const { copilot, plan } = params;\n const destroysRef = useRef<(() => void)[]>([]);\n const [loading, setLoading] = useState(false);\n const [streamMessage, setStreamMessage] = useState(\"\");\n const [summary, setSummary] = useState(\"\");\n const [commands, setCommands] = useState<Plan['commands']>([]);\n const [error, setError] = useState(\"\");\n const [planningMessage, setPlanningMessage] = useState(\"\")\n\n useLayoutEffect(() => {\n destroysRef.current.push(\n plan.events.on('loading', (loading) => {\n setLoading(loading);\n }),\n plan.events.on('streamMessage', (chunk) => {\n setStreamMessage((streamMessage) => {\n return streamMessage + chunk\n });\n }),\n plan.events.on('summary', (summary) => {\n setSummary(summary);\n }),\n plan.events.on('commands', (commands) => {\n setCommands([...commands]);\n setStreamMessage(\"\");\n }),\n plan.events.on('error', (error) => {\n setError(error);\n }),\n plan.events.on('planningMessage', (planningMessage) => {\n setPlanningMessage(planningMessage);\n })\n )\n }, [])\n\n useEffect(() => {\n return () => {\n for (const destroy of destroysRef.current) {\n destroy()\n }\n }\n }, [])\n\n return (\n <article className={css['chat-bubble']}>\n <header className={css['chat-bubble-header']}>\n {/* <span className={css['chat-bubble-header-avatar']}>\n <img className={css['copilot-avatar']} src={copilot.avatar} />\n </span> */}\n <span className={css['chat-bubble-header-name']}>{copilot.name}</span>\n </header>\n <section className={classNames(css['chat-message-container'], css['ai-message'])}>\n <div className={css['markdown-body']}>\n <div className={css['think']}>\n {planningMessage ? <BubbleMessage message={`${planningMessage}${loading ? \"...\" : \"\"}`} /> : (loading ? <span>正在思考</span> : null)}\n {loading && !planningMessage && <Loading />}\n </div>\n {commands.map((command, index) => {\n if (!command.status || command.status === \"error\") {\n return null;\n }\n return <BubbleCopilotTool key={index + command.status} command={command} last={index === commands.length - 1}/>\n })}\n {error && <BubbleError message={error} plan={plan}/>}\n {summary && <BubbleMessage message={summary} />}\n {/* {streamMessage && <BubbleMessage message={streamMessage} />} */}\n {/* {!streamMessage && loading && (\n <div className={css['think']}>\n <span>正在思考</span>\n <Loading />\n </div>\n )} */}\n </div>\n </section>\n </article>\n )\n}\n\ninterface BubbleCopilotToolParams {\n command: Plan['commands'][number];\n last: boolean;\n}\nconst BubbleCopilotTool = (params: BubbleCopilotToolParams) => {\n const { command, last } = params;\n const [message, setMessage] = useState(\"\");\n const [expand, setExpand] = useState(false);\n\n useEffect(() => {\n if (command.status === \"success\") {\n setMessage(command.content.display || command.content.llm)\n if (last) {\n setExpand(true)\n }\n }\n const destory = command.events?.on(\"streamMessage\", ({ message, status }) => {\n setMessage(message)\n if (status === \"start\") {\n setExpand(true)\n } else if (status === \"complete\") {\n if (!last) {\n setExpand(false)\n }\n }\n })\n\n return () => {\n destory?.();\n }\n }, [])\n\n const renderMessage = (shouldRender: boolean) =>\n shouldRender && message ? (\n <div\n className={css['ai-chat-collapsible-response']}\n style={{ display: expand ? \"block\" : \"none\" }}\n >\n <BubbleMessage message={message} />\n </div>\n ) : null;\n\n return (\n <>\n {renderMessage(command.status === \"pending\")}\n <div\n className={classNames(css['ai-chat-collapsible-code-block'], css['collapsed'])}\n onClick={() => {\n if (command.status !== \"pending\") {\n setExpand((expand) => !expand);\n }\n }}\n >\n <span className={classNames(css['code-header'], css['collapsed'])}>\n <span className={classNames(css['code-title'], css['collapsed'])}>{command.tool.displayName || command.tool.name}</span>\n {command.status === \"pending\" && (\n <span className={classNames(css['code-title-status'], css['collapsed'], css['pending'])}>\n <Loading />\n </span>\n )}\n {command.status === \"success\" && (\n <span className={classNames(css['code-title-status'], css['collapsed'], css['success'])}>\n <Success />\n </span>\n )}\n </span>\n </div>\n {renderMessage(command.status === \"success\")}\n </>\n )\n}\n\ninterface BubbleErrorParams {\n message: string;\n plan: Plan;\n}\nconst BubbleError = (params: BubbleErrorParams) => {\n const { message, plan } = params;\n\n return (\n <div className={css['ai-chat-error-code-block']}>\n <div className={css['ai-chat-error-code-block-message']}>\n <span>{message}</span>\n </div>\n {!plan.enableRetry ? null : (\n <div\n className={css['ai-chat-error-code-block-retry']}\n onClick={() => plan.retry()}\n >重试</div>\n )}\n </div>\n )\n}\n\nexport { Messages }\n\nclass AutoScroller {\n private isLockedToBottom: boolean = true;\n private resizeObserver: ResizeObserver | null = null;\n private mutationObserver: MutationObserver | null = null;\n constructor(private container: HTMLElement, private options: { resizeObserverCallback: ResizeObserverCallback, mutationCallback: MutationCallback }) {\n this.isLockedToBottom = true;\n \n this.init();\n }\n \n init() {\n // 监听滚动事件\n this.container.addEventListener('scroll', this.handleScroll.bind(this));\n \n // 使用ResizeObserver监听内容大小变化\n this.resizeObserver = new ResizeObserver((entries, observer) => {\n if (this.isLockedToBottom) {\n this.scrollToBottom();\n }\n this.options.resizeObserverCallback(entries, observer);\n });\n \n // 监听容器内部元素大小变化\n this.resizeObserver.observe(this.container);\n \n // 同时监听DOM变化\n this.mutationObserver = new MutationObserver((mutations, observer) => {\n if (this.isLockedToBottom) {\n Promise.resolve().then(() => {\n this.scrollToBottom();\n });\n }\n this.options.mutationCallback(mutations, observer);\n });\n \n this.mutationObserver.observe(this.container, {\n childList: true,\n subtree: true,\n });\n }\n \n handleScroll() {\n const isAtBottom = this.isAtBottom();\n this.isLockedToBottom = isAtBottom;\n }\n \n isAtBottom(threshold = 5) {\n const { scrollTop, scrollHeight, clientHeight } = this.container;\n return Math.abs(scrollHeight - scrollTop - clientHeight) <= threshold;\n }\n \n scrollToBottom() {\n this.container.scrollTop = this.container.scrollHeight;\n }\n \n destroy() {\n if (this.mutationObserver) this.mutationObserver.disconnect();\n if (this.resizeObserver) this.resizeObserver.disconnect();\n this.container.removeEventListener('scroll', this.handleScroll);\n }\n}\n"],"names":["md","markdownit","Messages","params","user","rxai","copilot","onSend","onMentionClick","mainRef","useRef","destroysRef","plans","setPlans","useState","styleTag","document","createElement","head","appendChild","prefix","concat","css","setStyle","height","innerHTML","remove","removeChild","useLayoutEffect","current","push","events","on","clientHeight","useEffect","autoScroller","AutoScroller","resizeObserverCallback","_mainRef$current","mutationCallback","mutations","mutationRecord","target","addedNodes","length","scrollTop","scrollHeight","destroy","React","ref","className","map","plan","index","Bubble","key","id","userMessage","setUserMessage","BubbleUser","message","BubbleCopilot","BubbleAction","props","_mentions","status","setStatus","showRender","setShowRender","senderRef","setMentions","extension","mentions","focus","Fragment","pageId","classNames","onClick","Chat","Sender","placeholder","context","name","_objectSpread","insertAfter","BubbleMessage","messageRef","render","_plan$extension","content","attachments","forEach","item","type","text","image_url","url","src","avatar","MentionTag","mention","focusarea","AttachmentsList","loading","setLoading","streamMessage","setStreamMessage","summary","setSummary","commands","setCommands","error","setError","planningMessage","setPlanningMessage","chunk","Loading","command","BubbleCopilotTool","last","BubbleError","setMessage","expand","setExpand","_command$events","display","llm","destory","_ref","renderMessage","shouldRender","style","tool","displayName","Success","enableRetry","retry","constructor","container","options","_defineProperty","isLockedToBottom","init","addEventListener","handleScroll","bind","resizeObserver","ResizeObserver","entries","observer","scrollToBottom","observe","mutationObserver","MutationObserver","Promise","resolve","then","childList","subtree","isAtBottom","threshold","arguments","undefined","Math","abs","disconnect","removeEventListener"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import styleInject from '../../plugin-ai/node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".index_loading-shimmer__5nvVP {\n -webkit-text-fill-color: transparent;\n animation-duration: 3s;\n animation-iteration-count: infinite;\n animation-name: index_loading-shimmer__5nvVP;\n background: #adadad linear-gradient(to right, #adadad 0, #1a1a1abf 40%, #1a1a1abf 60%, #adadad 100%);\n -webkit-background-clip: text;\n background-clip: text;\n background-repeat: no-repeat;\n background-size: 50% 200%;\n display: inline-block;\n}\n@keyframes index_loading-shimmer__5nvVP {\n 0% {\n background-position: -100% 0;\n }\n 100% {\n background-position: 250% 0;\n }\n}\n.index_ai-chat-messages__i1Rz4 {\n font-size: 12px;\n overflow: hidden auto;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n}\n.index_ai-chat-messages__i1Rz4 > .index_chat-bubble-container__zU-LF:nth-last-child(2) {\n display: table;\n}\n.index_ai-chat-messages__i1Rz4::-webkit-scrollbar-thumb {\n background-color: transparent !important;\n}\n.index_ai-chat-messages__i1Rz4:hover {\n background: transparent;\n}\n.index_ai-chat-messages__i1Rz4:hover::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.3) !important;\n}\n.index_ai-chat-messages__i1Rz4:has(.index_ai-chat-messages-skeleton__VTW-F) {\n padding: 16px;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-chat-messages-skeleton-header__E1xZt {\n display: flex;\n align-items: center;\n justify-content: start;\n gap: 8px;\n margin-bottom: 8px;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-chat-messages-skeleton-header__E1xZt.index_user__xtiSF {\n flex-direction: row-reverse;\n justify-content: end;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-chat-messages-skeleton-header__E1xZt.index_user__xtiSF .index_uipaas-skeleton-paragraph__XwEGv {\n align-items: end;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-chat-messages-skeleton-item__KJv0N {\n width: 100%;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-container__zU-LF {\n width: 100%;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble__hSNE5 {\n display: flex;\n flex-direction: column;\n color: #333;\n border-radius: 6px;\n border: 1px solid transparent;\n padding: 8px 13px 0;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble__hSNE5:has(.index_has-popover__IQ-lW) .index_chat-bubble-options__mXCoa,\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble__hSNE5:hover .index_chat-bubble-options__mXCoa {\n opacity: 1;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble__hSNE5 .index_chat-message-container__OolNo:has(.index_user-message__qB5Pt) {\n padding: 8px 13px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-action__GfKXE {\n display: flex;\n flex-direction: column;\n color: #AAA;\n border-radius: 6px;\n border: 1px solid transparent;\n padding: 0 13px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-action__GfKXE svg {\n width: 14px;\n height: 14px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-action__GfKXE .index_chat-bubble-action-chat__0Bg70 {\n cursor: pointer;\n width: 14px;\n height: 14px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-action__GfKXE .index_chat-bubble-action-chat__0Bg70.index_focus__L6GAX {\n color: var(--mybricks-color-primary, #FA6400);\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-action__GfKXE .index_chat-bubble-action-chat__0Bg70:hover {\n color: var(--mybricks-color-primary, #FA6400);\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu {\n display: flex;\n align-items: center;\n justify-content: start;\n gap: 8px;\n padding-bottom: 8px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu .index_chat-bubble-header-avatar__FlADk {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n box-sizing: content-box;\n border: 2px solid transparent;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu .index_chat-bubble-header-avatar__FlADk .index_copilot-avatar__802gu {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu .index_chat-bubble-header-avatar__FlADk .index_user-avatar__IRN8w {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu:has(.index_user-avatar__IRN8w) {\n justify-content: end;\n flex-direction: row-reverse;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-header__PlDPu .index_chat-bubble-header-name__rm9Es {\n font-size: 12px;\n color: #999;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-message-container__OolNo {\n user-select: text;\n width: 100%;\n font-size: 12px;\n border-radius: 6px;\n padding: 0;\n}\n + .index_ai-chat-messages__i1Rz4 .index_chat-message-container__OolNo {\n margin-top: 8px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-message-container__OolNo .index_chat-box-attachment-image__NQ3LU {\n margin-bottom: 0;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-message-container__OolNo .index_chat-box-attachment-image-item__FdpW- {\n max-width: 100px;\n width: auto;\n height: auto;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-options__mXCoa {\n padding: 10px 10px 0;\n opacity: 0;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-options__mXCoa .index_chat-bubble-option-container__tiL4Y {\n display: flex;\n align-items: center;\n justify-content: start;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-option-icon__lfk21 {\n font-size: 12px;\n padding: 4px;\n color: #00000080;\n}\n + .index_ai-chat-messages__i1Rz4 .index_chat-bubble-option-icon__lfk21 {\n margin-left: 6px;\n}\n.index_ai-chat-messages__i1Rz4 .index_chat-bubble-option-icon__lfk21 + .index_chat-bubble-option-more__Juqab {\n margin-left: 6px;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_welcome-message-self-introduction__Tw9RJ {\n margin-top: 8px;\n margin-bottom: 16px;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW {\n flex-shrink: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n padding: 4px 8px;\n border: 1px solid #eeeeee;\n border-radius: 6px;\n color: #666;\n background-color: #f3f3f3;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW .index_shortcuts-item-label__4sfwR {\n font-size: 12px;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW .index_shortcuts-item-icon__i3-eD {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-right: 8px;\n font-size: 12px;\n background: #666;\n border-radius: 6px;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-blue__5rlwU {\n color: #0871f0;\n border-color: #d0e5ff;\n background-color: #ecf4ff;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-blue__5rlwU .index_shortcuts-item-icon__i3-eD {\n color: #fff;\n background-color: #2885f6;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-orange__nTRW0 {\n color: #f9a254;\n border-color: #fae7d5;\n background-color: #fff4e2;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-orange__nTRW0 .index_shortcuts-item-icon__i3-eD {\n background-color: #f9a254;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-green__eonQC {\n color: #70bc70;\n border-color: #d4eed4;\n background-color: #ecffec;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-green__eonQC .index_shortcuts-item-icon__i3-eD {\n background-color: #70bc70;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-gray__bZKBo {\n border-color: transparent;\n}\n.index_ai-chat-messages__i1Rz4 .index_welcome-message__aIn52 .index_shortcuts__phpXo .index_shortcuts-item__Q1koW.index_shortcuts-theme-gray__bZKBo:hover {\n background-color: #f7f7f7;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt {\n width: fit-content;\n max-width: calc(100% - 16px);\n align-self: flex-end;\n align-items: end;\n background: #fff;\n border-radius: 6px;\n padding: 8px;\n border-color: transparent;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt .index_chat-bubble-option-container__tiL4Y {\n justify-content: end;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt .index_mentions-container__gvQGj {\n display: inline-flex;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt span {\n font-size: 12px;\n line-height: 20px;\n white-space: pre-wrap;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt:has(.index_mentions-container__gvQGj) span {\n margin-left: 4px;\n}\n.index_ai-chat-messages__i1Rz4 .index_user-message__qB5Pt .index_attachments-list__GdIFm {\n padding-top: 8px;\n justify-content: flex-end;\n}\n.index_ai-chat-messages__i1Rz4 .index_mention__-UilH > :first-child {\n margin-right: 4px;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-message__6zohG {\n width: 100%;\n}\n.index_ai-chat-messages__i1Rz4 .index_ai-message__6zohG.index_error-message__u9PpU {\n background-color: #fff2f2;\n border-color: #fd9696;\n color: #f44;\n}\n.index_ai-chat-markdown__BwJ1z {\n color: #333;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.index_ai-chat-markdown__BwJ1z p {\n margin: 8px 0;\n}\n.index_ai-chat-markdown__BwJ1z h1,\n.index_ai-chat-markdown__BwJ1z h2,\n.index_ai-chat-markdown__BwJ1z h3,\n.index_ai-chat-markdown__BwJ1z h4,\n.index_ai-chat-markdown__BwJ1z h5,\n.index_ai-chat-markdown__BwJ1z h6 {\n margin-top: 20px;\n margin-bottom: 10px;\n font-weight: 600;\n line-height: 1.5;\n}\n.index_ai-chat-markdown__BwJ1z h1 {\n font-size: 2em;\n border-bottom: 1px solid #eaecef;\n padding-bottom: 0.3em;\n}\n.index_ai-chat-markdown__BwJ1z h2 {\n font-size: 1.5em;\n border-bottom: 1px solid #eaecef;\n padding-bottom: 0.3em;\n}\n.index_ai-chat-markdown__BwJ1z h3 {\n font-size: 1.25em;\n}\n.index_ai-chat-markdown__BwJ1z h4 {\n font-size: 1em;\n}\n.index_ai-chat-markdown__BwJ1z h5 {\n font-size: 0.875em;\n}\n.index_ai-chat-markdown__BwJ1z h6 {\n font-size: 0.85em;\n color: #6a737d;\n}\n.index_ai-chat-markdown__BwJ1z a {\n color: #0366d6;\n text-decoration: none;\n}\n.index_ai-chat-markdown__BwJ1z a:hover {\n text-decoration: underline;\n}\n.index_ai-chat-markdown__BwJ1z img,\n.index_ai-chat-markdown__BwJ1z .index_markdown-image__ZG-rv {\n max-width: 100%;\n height: auto;\n margin: 10px 0;\n border-radius: 6px;\n display: block;\n}\n.index_ai-chat-markdown__BwJ1z .index_markdown-image-container__evt-a {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n}\n.index_ai-chat-markdown__BwJ1z .index_markdown-image-clickable__4cgxg {\n cursor: pointer;\n max-width: 100%;\n height: auto;\n}\n.index_ai-chat-markdown__BwJ1z .index_missing-image__WGMwr {\n color: #666;\n background-color: #f3f3f3;\n border: 1px dashed #ccc;\n border-radius: 6px;\n padding: 8px 12px;\n display: inline-block;\n margin: 10px 0;\n}\n.index_ai-chat-markdown__BwJ1z blockquote {\n padding: 0 1em;\n color: #6a737d;\n border-left: 0.25em solid #dfe2e5;\n margin: 16px 0;\n}\n.index_ai-chat-markdown__BwJ1z blockquote > p {\n margin-top: 0;\n margin-bottom: 0;\n}\n.index_ai-chat-markdown__BwJ1z table {\n width: fit-content;\n border-collapse: separate;\n border-spacing: 0;\n margin: 16px 0;\n overflow-x: auto;\n display: block;\n font-size: 12px;\n border-radius: 6px;\n background-color: #fff;\n border: 1px solid #eaeaea;\n}\n.index_ai-chat-markdown__BwJ1z table thead td,\n.index_ai-chat-markdown__BwJ1z table th,\n.index_ai-chat-markdown__BwJ1z table td {\n padding: 10px 16px;\n border-bottom: 1px solid #eaeaea;\n border-right: none;\n text-align: left;\n word-break: break-word;\n}\n.index_ai-chat-markdown__BwJ1z table th:last-child,\n.index_ai-chat-markdown__BwJ1z table td:last-child {\n border-right: none;\n}\n.index_ai-chat-markdown__BwJ1z table tr:last-child td {\n border-bottom: none;\n}\n.index_ai-chat-markdown__BwJ1z table th:first-child {\n border-top-left-radius: 4px;\n}\n.index_ai-chat-markdown__BwJ1z table th:last-child {\n border-top-right-radius: 4px;\n}\n.index_ai-chat-markdown__BwJ1z table tr:last-child td:first-child {\n border-bottom-left-radius: 4px;\n}\n.index_ai-chat-markdown__BwJ1z table tr:last-child td:last-child {\n border-bottom-right-radius: 4px;\n}\n.index_ai-chat-markdown__BwJ1z table th {\n background-color: #f6f8fa;\n font-weight: 600;\n border-bottom: 1px solid #eaeaea;\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.index_ai-chat-markdown__BwJ1z table tr:hover {\n background-color: #f1f8ff !important;\n}\n.index_ai-chat-markdown__BwJ1z ol,\n.index_ai-chat-markdown__BwJ1z ul {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 0;\n margin-inline-end: 0;\n padding-inline-start: 0;\n margin: 8px 0;\n padding-left: 0;\n}\n.index_ai-chat-markdown__BwJ1z ol ol,\n.index_ai-chat-markdown__BwJ1z ul ol,\n.index_ai-chat-markdown__BwJ1z ol li,\n.index_ai-chat-markdown__BwJ1z ul li {\n padding-left: 1em;\n}\n.index_ai-chat-markdown__BwJ1z li {\n position: relative;\n margin: 4px 0;\n padding-left: 1rem;\n list-style-type: none;\n}\n.index_ai-chat-markdown__BwJ1z ul li:before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 0.75em;\n width: 3px;\n height: 3px;\n background-color: currentColor;\n border-radius: 50%;\n}\n.index_ai-chat-markdown__BwJ1z ol {\n counter-reset: item;\n}\n.index_ai-chat-markdown__BwJ1z ol li {\n padding-left: 0;\n counter-increment: item;\n}\n.index_ai-chat-markdown__BwJ1z ol li:before {\n content: counter(item) \".\";\n margin-right: 4px;\n}\n.index_ai-chat-markdown__BwJ1z > *:first-child {\n margin-top: 0;\n}\n.index_ai-chat-markdown__BwJ1z > *:first-child > *:first-child {\n margin-top: 0;\n}\n.index_ai-chat-markdown__BwJ1z > *:last-child {\n margin-bottom: 0;\n}\n.index_ai-chat-markdown__BwJ1z > *:last-child > *:last-child {\n margin-bottom: 0;\n}\n.index_ai-chat-markdown__BwJ1z code {\n font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;\n background-color: #1b1f230d;\n border-radius: 6px;\n font-size: 85%;\n padding: 0.2em 0.4em;\n text-wrap: auto;\n}\n.index_ai-chat-markdown__BwJ1z pre {\n margin: 0;\n overflow: hidden auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.index_ai-chat-markdown__BwJ1z pre code {\n padding: 0;\n background-color: transparent;\n font-size: 100%;\n white-space: pre;\n text-wrap: auto;\n}\n.index_ai-chat-markdown__BwJ1z hr {\n border: 0;\n height: 1px;\n background-color: #eaecef;\n margin: 16px 0;\n}\n.index_ai-chat-markdown__BwJ1z .index_indent-2__1iNzJ {\n margin-left: 1rem;\n}\n.index_ai-chat-markdown__BwJ1z .index_indent-4__bKXph {\n margin-left: 2rem;\n}\n.index_ai-chat-markdown__BwJ1z .index_indent-6__nPzjB {\n margin-left: 3rem;\n}\n.index_ai-chat-markdown__BwJ1z .index_indent-8__73HWp {\n margin-left: 4rem;\n}\n.index_ai-chat-markdown__BwJ1z li {\n margin-bottom: 0.25rem;\n}\n.index_ai-chat-markdown__BwJ1z strong {\n font-weight: 700;\n}\n.index_ai-chat-markdown__BwJ1z em {\n font-style: italic;\n}\n.index_ai-chat-markdown__BwJ1z code {\n background-color: #0000000d;\n border-radius: 6px;\n padding: 0.2em 0.4em;\n font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;\n font-size: 85%;\n text-wrap: auto;\n}\n.index_ai-chat-markdown__BwJ1z .index_loading-shimmer__5nvVP {\n -webkit-text-fill-color: transparent;\n animation-delay: 0.5s;\n animation-duration: 3s;\n animation-iteration-count: infinite;\n animation-name: index_loading-shimmer__5nvVP;\n background: #adadad linear-gradient(to right, #adadad 0, #1a1a1abf 40%, #1a1a1abf 60%, #adadad 100%);\n -webkit-background-clip: text;\n background-clip: text;\n background-repeat: no-repeat;\n background-size: 50% 200%;\n display: inline-block;\n}\n.index_ai-chat-request-resource__bPkLm {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: #0366d6;\n background-color: #e3f2fd85;\n border-radius: 6px;\n padding: 4px 8px;\n font-size: 12px;\n}\n.index_ai-chat-request-resource-message__W2QqY {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.index_ai-chat-request-resource-button__imvDU {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n cursor: pointer;\n}\n.index_ai-chat-request-resource-icon-success__4H-Wm {\n font-size: 12px;\n color: #05aa2d;\n}\n.index_ai-chat-request-resource-icon-failed__UuovU {\n font-size: 12px;\n color: #d54941;\n}\n.index_ai-chat-error-code-block__SCCqL {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: #d54941;\n background-color: #fff0ed;\n border-radius: 6px;\n border: 1px solid #ffd8d2;\n padding: 4px 8px;\n gap: 8px;\n}\n.index_ai-chat-error-code-block-retry__6LLPI {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n min-width: fit-content;\n color: #d54941;\n background: #fff;\n cursor: pointer;\n font-size: 12px;\n padding: 0 8px;\n border: 1px solid #ffd8d2;\n border-radius: 6px;\n}\n.index_ai-chat-error-code-block-retry__6LLPI span {\n white-space: nowrap;\n}\n.index_ai-chat-error-code-block-retry__6LLPI:hover {\n border-radius: 6px;\n}\n.index_ai-chat-error-code-block-message__B4RYS {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 12px;\n overflow: hidden;\n}\n.index_ai-chat-error-code-block-message__B4RYS span {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.index_ai-chat-collapsible-code-block__wQEps {\n cursor: pointer;\n background-color: #f3f3f3;\n border-radius: 6px;\n margin-bottom: 8px;\n padding: 6px;\n will-change: padding, height, transform;\n transform-origin: top;\n}\n.index_ai-chat-collapsible-code-block__wQEps:has(.index_collapsed__3t5Xu) {\n padding: 4px 8px;\n transform: translateY(-1px);\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko {\n display: flex;\n align-items: center;\n justify-content: space-between;\n user-select: none;\n border-radius: 6px;\n min-height: 22px;\n padding-bottom: 8px;\n box-sizing: content-box;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko:has(.index_collapsed__3t5Xu) {\n padding-bottom: 0;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title__iwshu {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: currentColor;\n font-weight: 400;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm svg {\n width: 10px;\n height: 10px;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_pending__KhuUS {\n transform: translate(-2px);\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_success__O7uIb {\n color: #05aa2d;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_success__O7uIb svg {\n width: 14px;\n height: 14px;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_error__PShyx {\n color: #d54941;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_error__PShyx svg {\n transform: translate(-2px, 0px);\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-title-status__ATAZm.index_aborted__pfK1o {\n color: #faad14;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-toggle-button__-Agui {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n cursor: pointer;\n border: none;\n color: #666;\n background-color: transparent;\n border-radius: 6px;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-toggle-button__-Agui:hover {\n color: #333;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-toggle-button__-Agui.index_expanded__QEFU2 {\n transform: rotate(0);\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-header__d5Yko .index_code-toggle-button__-Agui.index_collapsed__3t5Xu {\n transform: rotate(-90deg);\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-content__XSVtj {\n background-color: #fff;\n border-radius: 6px;\n width: 100%;\n overflow: hidden;\n transform-origin: top;\n}\n.index_ai-chat-collapsible-code-block__wQEps .index_code-content__XSVtj .index_code-content-inner__42GA- {\n padding: 8px 12px;\n}\n.index_ai-chat-collapsible-response__PLh0p {\n margin-bottom: 8px;\n}\n.index_think__-4-Jg {\n display: flex;\n align-items: center;\n}\n.index_think__-4-Jg svg {\n width: 10px;\n height: 10px;\n margin-left: 4px;\n}\n.index_markdown-body__F2Zfu {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;\n font-size: 12px;\n line-height: 1.6;\n color: #24292e;\n word-wrap: break-word;\n}\n.index_markdown-body__F2Zfu > *:first-child {\n margin-top: 0;\n}\n.index_markdown-body__F2Zfu > *:first-child > *:first-child {\n margin-top: 0;\n}\n.index_markdown-body__F2Zfu > *:last-child {\n margin-bottom: 0;\n}\n.index_markdown-body__F2Zfu > *:last-child > *:last-child {\n margin-bottom: 0;\n}\n.index_markdown-body__F2Zfu h1,\n.index_markdown-body__F2Zfu h2,\n.index_markdown-body__F2Zfu h3,\n.index_markdown-body__F2Zfu h4,\n.index_markdown-body__F2Zfu h5,\n.index_markdown-body__F2Zfu h6 {\n margin-top: 16px;\n margin-bottom: 8px;\n font-weight: 600;\n line-height: 1;\n}\n.index_markdown-body__F2Zfu h1 {\n font-size: 14px;\n}\n.index_markdown-body__F2Zfu h2 {\n font-size: 13px;\n}\n.index_markdown-body__F2Zfu p {\n margin-top: 0;\n margin-bottom: 8px;\n white-space: pre-wrap;\n}\n.index_markdown-body__F2Zfu code {\n padding: 0.2em 0.4em;\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n text-wrap: auto;\n}\n.index_markdown-body__F2Zfu pre {\n padding: 16px;\n overflow: auto;\n font-size: 12px;\n line-height: 1.45;\n background-color: #f6f8fa;\n border-radius: 6px;\n}\n.index_markdown-body__F2Zfu blockquote {\n padding: 0 1em;\n color: #6a737d;\n border-left: 0.25em solid #dfe2e5;\n margin: 0 0 16px 0;\n}\n.index_markdown-body__F2Zfu table {\n border-spacing: 0;\n border-collapse: collapse;\n margin-top: 0;\n margin-bottom: 8px;\n}\n.index_markdown-body__F2Zfu table th,\n.index_markdown-body__F2Zfu table td {\n padding: 6px 13px;\n border: 1px solid #dfe2e5;\n}\n.index_markdown-body__F2Zfu table th {\n font-weight: 600;\n background-color: #f6f8fa;\n}\n.index_markdown-body__F2Zfu ul,\n.index_markdown-body__F2Zfu ol {\n padding-left: 16px;\n margin-top: 0;\n margin-bottom: 8px;\n}\n.index_markdown-body__F2Zfu li {\n word-wrap: break-all;\n list-style: outside;\n}\n.index_markdown-body__F2Zfu li > *:first-child {\n margin-top: 0;\n margin-bottom: 0;\n}\n.index_markdown-body__F2Zfu li > *:first-child > *:first-child {\n margin-top: 0;\n}\n.index_markdown-body__F2Zfu li > *:last-child {\n margin-bottom: 0;\n}\n.index_markdown-body__F2Zfu li > *:last-child > *:last-child {\n margin-bottom: 0;\n}\n";
|
|
4
|
+
var css = {"ai-chat-messages":"index_ai-chat-messages__i1Rz4","chat-bubble-container":"index_chat-bubble-container__zU-LF","chat-bubble":"index_chat-bubble__hSNE5","chat-message-container":"index_chat-message-container__OolNo","user-message":"index_user-message__qB5Pt","chat-bubble-action":"index_chat-bubble-action__GfKXE","chat-bubble-action-chat":"index_chat-bubble-action-chat__0Bg70","focus":"index_focus__L6GAX","chat-bubble-header":"index_chat-bubble-header__PlDPu","chat-bubble-header-avatar":"index_chat-bubble-header-avatar__FlADk","user-avatar":"index_user-avatar__IRN8w","chat-bubble-header-name":"index_chat-bubble-header-name__rm9Es","attachments-list":"index_attachments-list__GdIFm","mention":"index_mention__-UilH","ai-message":"index_ai-message__6zohG","ai-chat-error-code-block":"index_ai-chat-error-code-block__SCCqL","ai-chat-error-code-block-retry":"index_ai-chat-error-code-block-retry__6LLPI","ai-chat-error-code-block-message":"index_ai-chat-error-code-block-message__B4RYS","ai-chat-collapsible-code-block":"index_ai-chat-collapsible-code-block__wQEps","collapsed":"index_collapsed__3t5Xu","code-header":"index_code-header__d5Yko","code-title":"index_code-title__iwshu","code-title-status":"index_code-title-status__ATAZm","pending":"index_pending__KhuUS","success":"index_success__O7uIb","ai-chat-collapsible-response":"index_ai-chat-collapsible-response__PLh0p","think":"index_think__-4-Jg","markdown-body":"index_markdown-body__F2Zfu"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { css as default };
|
|
8
|
+
//# sourceMappingURL=index.less.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.less.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|