@blocklet/pages-kit 0.2.359 → 0.2.360

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.
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAssetUrl = getAssetUrl;
4
+ const ufo_1 = require("ufo");
5
+ const request_1 = require("./request");
6
+ const presets = {
7
+ avatar: { w: 80 },
8
+ };
9
+ function getAssetUrl({ blockletDid, aid, filename, w, preset, }) {
10
+ var _a;
11
+ const url = filename && aid && !(filename === null || filename === void 0 ? void 0 : filename.startsWith('http'))
12
+ ? (0, ufo_1.withQuery)((0, ufo_1.joinURL)((0, request_1.getAIRuntimeApiPrefix)(), '/api/agents', aid, 'assets', filename), {
13
+ blockletDid,
14
+ })
15
+ : filename;
16
+ if (!url)
17
+ return url;
18
+ const width = w !== null && w !== void 0 ? w : (_a = presets[preset]) === null || _a === void 0 ? void 0 : _a.w;
19
+ return (0, ufo_1.withQuery)(url, {
20
+ imageFilter: width ? 'resize' : undefined,
21
+ w: width,
22
+ });
23
+ }
@@ -46,6 +46,7 @@ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
46
46
  const react_1 = __importStar(require("react"));
47
47
  const ux_1 = require("../../../../arcblock/ux");
48
48
  const session_1 = require("../../../../session");
49
+ const asset_1 = require("../../api/asset");
49
50
  const MarkdownRenderer_1 = __importDefault(require("../../components/MarkdownRenderer"));
50
51
  const ShareActions_1 = __importDefault(require("../../components/ShareActions"));
51
52
  const use_appearances_1 = require("../../hooks/use-appearances");
@@ -112,13 +113,13 @@ function UserMessage({ message, hideAvatar }) {
112
113
  }
113
114
  function AgentMessage({ message, hideAvatar }) {
114
115
  var _a, _b, _c, _d, _e, _f;
115
- const { aid } = (0, runtime_1.useRuntimeState)();
116
+ const { blockletDid, aid } = (0, runtime_1.useRuntimeState)();
116
117
  const profile = (0, use_appearances_1.useProfile)({ aid });
117
118
  const showMainMessage = !!((_a = message.outputs) === null || _a === void 0 ? void 0 : _a.content);
118
119
  const isMessageLoading = (message.loading || !message.outputs) && !message.error;
119
120
  const theme = (0, material_1.useTheme)();
120
121
  const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('sm'));
121
- return ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: profile.avatar }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, { flex: 1, width: 0, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [profile.name, (0, jsx_runtime_1.jsx)(MessageTime, { time: message.createdAt })] })), (0, jsx_runtime_1.jsxs)(react_1.default.Suspense, { children: [showMainMessage ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { placement: "right-start", slotProps: {
122
+ return ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: (0, asset_1.getAssetUrl)({ blockletDid, aid, filename: profile.avatar, preset: 'avatar' }) }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, { flex: 1, width: 0, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [profile.name, (0, jsx_runtime_1.jsx)(MessageTime, { time: message.createdAt })] })), (0, jsx_runtime_1.jsxs)(react_1.default.Suspense, { children: [showMainMessage ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { placement: "right-start", slotProps: {
122
123
  popper: {
123
124
  disablePortal: true,
124
125
  modifiers: [
@@ -147,10 +148,10 @@ function AgentMessage({ message, hideAvatar }) {
147
148
  function MessageItemWrapper(_a) {
148
149
  var _b;
149
150
  var { hideAvatar, agentMessage } = _a, props = __rest(_a, ["hideAvatar", "agentMessage"]);
150
- const { aid } = (0, runtime_1.useRuntimeState)();
151
+ const { blockletDid, aid } = (0, runtime_1.useRuntimeState)();
151
152
  const profile = (0, use_appearances_1.useProfile)({ aid });
152
153
  const [time] = (0, react_1.useState)(() => new Date().toISOString());
153
- return ((0, jsx_runtime_1.jsx)(MessageItemContainer, Object.assign({}, props, { className: (0, css_1.cx)('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: agentMessage && ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: profile.avatar }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, { flex: 1, width: 0, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [profile.name, (0, jsx_runtime_1.jsx)(MessageTime, { time: time })] })), agentMessage] })] })) })));
154
+ return ((0, jsx_runtime_1.jsx)(MessageItemContainer, Object.assign({}, props, { className: (0, css_1.cx)('ai-chat-message-item', hideAvatar && 'hide-avatar', props.className), children: agentMessage && ((0, jsx_runtime_1.jsxs)(material_1.Stack, { className: "ai-chat-message-ai", direction: "row", gap: 1.5, children: [!hideAvatar && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(ux_1.Avatar, { size: 40, did: (_b = globalThis.blocklet) === null || _b === void 0 ? void 0 : _b.appId, variant: "circle", shape: "circle", src: (0, asset_1.getAssetUrl)({ blockletDid, aid, filename: profile.avatar, preset: 'avatar' }) }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, { flex: 1, width: 0, children: [!hideAvatar && ((0, jsx_runtime_1.jsxs)(MessageUserName, { children: [profile.name, (0, jsx_runtime_1.jsx)(MessageTime, { time: time })] })), agentMessage] })] })) })));
154
155
  }
155
156
  function MessageUserName({ children }) {
156
157
  return ((0, jsx_runtime_1.jsx)(material_1.Typography, { component: "div", noWrap: true, sx: {
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = BackgroundImage;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const material_1 = require("@mui/material");
6
+ const asset_1 = require("../../api/asset");
6
7
  const ComponentPreferences_1 = require("../../contexts/ComponentPreferences");
8
+ const runtime_1 = require("../../state/runtime");
7
9
  function BackgroundImage() {
8
10
  var _a, _b;
11
+ const { blockletDid, aid } = (0, runtime_1.useRuntimeState)();
9
12
  const preferences = (0, ComponentPreferences_1.useComponentPreferences)();
10
13
  if (!((_a = preferences === null || preferences === void 0 ? void 0 : preferences.backgroundImage) === null || _a === void 0 ? void 0 : _a.url))
11
14
  return null;
@@ -15,7 +18,7 @@ function BackgroundImage() {
15
18
  top: 0,
16
19
  right: 0,
17
20
  bottom: 0,
18
- backgroundImage: `url(${(_b = preferences.backgroundImage) === null || _b === void 0 ? void 0 : _b.url}) !important`,
21
+ backgroundImage: `url(${(0, asset_1.getAssetUrl)({ blockletDid, aid, filename: (_b = preferences.backgroundImage) === null || _b === void 0 ? void 0 : _b.url })}) !important`,
19
22
  backgroundRepeat: 'no-repeat',
20
23
  backgroundSize: 'cover',
21
24
  backgroundPosition: 'center',
@@ -43,6 +43,7 @@ const types_1 = require("@blocklet/ai-runtime/types");
43
43
  const material_1 = require("@mui/material");
44
44
  const react_1 = require("react");
45
45
  const CustomComponentRenderer_1 = __importDefault(require("../../../../../components/CustomComponentRenderer"));
46
+ const asset_1 = require("../../api/asset");
46
47
  const ActiveAgent_1 = require("../../contexts/ActiveAgent");
47
48
  const CurrentAgent_1 = __importStar(require("../../contexts/CurrentAgent"));
48
49
  const use_appearances_1 = __importStar(require("../../hooks/use-appearances"));
@@ -58,11 +59,12 @@ function InputsView(_a) {
58
59
  function AgentAvatar(_a) {
59
60
  var _b;
60
61
  var { selected } = _a, props = __rest(_a, ["selected"]);
62
+ const { blockletDid, aid } = (0, runtime_1.useRuntimeState)();
61
63
  const { appearanceInput } = (0, use_appearances_1.default)();
62
64
  const profile = (0, use_appearances_1.useProfile)();
63
65
  if (!(appearanceInput === null || appearanceInput === void 0 ? void 0 : appearanceInput.componentId))
64
66
  return null;
65
- return ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({}, props, { sx: Object.assign({ p: 0, outline: selected ? 3 : 0, outlineColor: 'primary.light' }, props.sx), children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: profile === null || profile === void 0 ? void 0 : profile.avatar, children: (_b = profile.name) === null || _b === void 0 ? void 0 : _b.slice(0, 1) }) })));
67
+ return ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({}, props, { sx: Object.assign({ p: 0, outline: selected ? 3 : 0, outlineColor: 'primary.light' }, props.sx), children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: (0, asset_1.getAssetUrl)({ blockletDid, aid, filename: profile === null || profile === void 0 ? void 0 : profile.avatar, preset: 'avatar' }), children: (_b = profile.name) === null || _b === void 0 ? void 0 : _b.slice(0, 1) }) })));
66
68
  }
67
69
  function AgentInput() {
68
70
  const { aid } = (0, CurrentAgent_1.useCurrentAgent)();
@@ -43,15 +43,18 @@ const material_1 = require("@mui/material");
43
43
  const react_1 = require("react");
44
44
  const CustomComponentRenderer_1 = __importDefault(require("../../../../../components/CustomComponentRenderer"));
45
45
  const session_1 = require("../../../../session");
46
+ const asset_1 = require("../../api/asset");
46
47
  const AgentErrorBoundary_1 = require("../../components/AgentErrorBoundary");
47
48
  const UserInfo_1 = __importDefault(require("../../components/UserInfo"));
48
49
  const ComponentPreferences_1 = require("../../contexts/ComponentPreferences");
49
50
  const CurrentAgent_1 = __importDefault(require("../../contexts/CurrentAgent"));
50
51
  const CurrentMessage_1 = __importDefault(require("../../contexts/CurrentMessage"));
51
52
  const use_appearances_1 = __importStar(require("../../hooks/use-appearances"));
53
+ const runtime_1 = require("../../state/runtime");
52
54
  const UserMessageView_1 = __importDefault(require("./UserMessageView"));
53
55
  const MessageView = (0, react_1.memo)(({ message }) => {
54
56
  var _a, _b, _c, _d, _e, _f;
57
+ const { aid, blockletDid } = (0, runtime_1.useRuntimeState)();
55
58
  const preferences = (0, ComponentPreferences_1.useComponentPreferences)();
56
59
  const hasBg = !!((_a = preferences === null || preferences === void 0 ? void 0 : preferences.backgroundImage) === null || _a === void 0 ? void 0 : _a.url);
57
60
  const { session: authSession } = (0, session_1.useSessionContext)();
@@ -61,7 +64,7 @@ const MessageView = (0, react_1.memo)(({ message }) => {
61
64
  if (!(appearanceOutput === null || appearanceOutput === void 0 ? void 0 : appearanceOutput.componentId))
62
65
  return null;
63
66
  const agentMessage = ((0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "assistant", children: (0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { componentId: appearanceOutput.componentId, properties: appearanceOutput.componentProperties, fallbackRender: AgentErrorBoundary_1.AgentErrorView }, message.id) }));
64
- return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.agentId, children: (0, jsx_runtime_1.jsx)(CurrentMessage_1.default, { message: message, children: (0, jsx_runtime_1.jsxs)(material_1.Stack, { gap: 2, children: [!hideUserInputs && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: (_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, did: (_d = authSession.user) === null || _d === void 0 ? void 0 : _d.did, avatar: (_e = authSession.user) === null || _e === void 0 ? void 0 : _e.avatar, time: message.createdAt, reverse: true, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: (0, jsx_runtime_1.jsx)(material_1.Stack, { sx: { alignItems: 'flex-end' }, children: (0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "user", children: (0, jsx_runtime_1.jsx)(UserMessageView_1.default, {}) }) }) }) })), (0, jsx_runtime_1.jsx)(material_1.Box, { children: !hideAgentAvatar ? ((0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: profile.name, did: (_f = globalThis.blocklet) === null || _f === void 0 ? void 0 : _f.appId, avatar: profile.avatar, time: message.createdAt, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: agentMessage })) : (agentMessage) })] }) }) }));
67
+ return ((0, jsx_runtime_1.jsx)(CurrentAgent_1.default, { agentId: message.agentId, children: (0, jsx_runtime_1.jsx)(CurrentMessage_1.default, { message: message, children: (0, jsx_runtime_1.jsxs)(material_1.Stack, { gap: 2, children: [!hideUserInputs && ((0, jsx_runtime_1.jsx)(material_1.Box, { children: (0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: (_c = authSession.user) === null || _c === void 0 ? void 0 : _c.fullName, did: (_d = authSession.user) === null || _d === void 0 ? void 0 : _d.did, avatar: (0, asset_1.getAssetUrl)({ filename: (_e = authSession.user) === null || _e === void 0 ? void 0 : _e.avatar, preset: 'avatar' }), time: message.createdAt, reverse: true, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: (0, jsx_runtime_1.jsx)(material_1.Stack, { sx: { alignItems: 'flex-end' }, children: (0, jsx_runtime_1.jsx)(MessageBodyContainer, { messageRole: "user", children: (0, jsx_runtime_1.jsx)(UserMessageView_1.default, {}) }) }) }) })), (0, jsx_runtime_1.jsx)(material_1.Box, { children: !hideAgentAvatar ? ((0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: profile.name, did: (_f = globalThis.blocklet) === null || _f === void 0 ? void 0 : _f.appId, avatar: (0, asset_1.getAssetUrl)({ blockletDid, aid, filename: profile.avatar, preset: 'avatar' }), time: message.createdAt, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: agentMessage })) : (agentMessage) })] }) }) }));
65
68
  });
66
69
  exports.default = MessageView;
67
70
  function MessageBodyContainer(_a) {
@@ -7,14 +7,17 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const types_1 = require("@blocklet/ai-runtime/types");
8
8
  const react_1 = require("react");
9
9
  const CustomComponentRenderer_1 = __importDefault(require("../../../../../components/CustomComponentRenderer"));
10
+ const asset_1 = require("../../api/asset");
10
11
  const UserInfo_1 = __importDefault(require("../../components/UserInfo"));
11
12
  const constants_1 = require("../../constants");
12
13
  const ComponentPreferences_1 = require("../../contexts/ComponentPreferences");
13
14
  const CurrentAgent_1 = require("../../contexts/CurrentAgent");
14
15
  const use_appearances_1 = require("../../hooks/use-appearances");
16
+ const runtime_1 = require("../../state/runtime");
15
17
  const MessageView_1 = require("./MessageView");
16
18
  const OpeningMessageView = (0, react_1.memo)(({ isMessagesEmpty }) => {
17
19
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
20
+ const { blockletDid, aid } = (0, runtime_1.useRuntimeState)();
18
21
  const { hideAgentAvatar, backgroundImage } = (_a = (0, ComponentPreferences_1.useComponentPreferences)()) !== null && _a !== void 0 ? _a : {};
19
22
  const hasBg = !!(backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.url);
20
23
  const openingMessage = (0, use_appearances_1.useOpeningMessage)();
@@ -32,6 +35,11 @@ const OpeningMessageView = (0, react_1.memo)(({ isMessagesEmpty }) => {
32
35
  return null;
33
36
  }
34
37
  const children = ((0, jsx_runtime_1.jsxs)(MessageView_1.MessageBodyContainer, { children: [openingMessage && openingMessageOutput && openingMessageComponentId && ((0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { instanceId: openingMessageOutput.id, componentId: openingMessageComponentId, properties: (_f = openingMessageOutput.appearance) === null || _f === void 0 ? void 0 : _f.componentProperties, props: { output: openingMessageOutput, outputValue: openingMessage.message } })), isMessagesEmpty && openingQuestionsComponentId && ((0, jsx_runtime_1.jsx)(CustomComponentRenderer_1.default, { instanceId: agent.id, componentId: openingQuestionsComponentId, properties: (_g = openingQuestionsOutput === null || openingQuestionsOutput === void 0 ? void 0 : openingQuestionsOutput.appearance) === null || _g === void 0 ? void 0 : _g.componentProperties, props: { output: openingQuestionsOutput } }))] }));
35
- return hideAgentAvatar ? (children) : ((0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: ((_h = openingMessage === null || openingMessage === void 0 ? void 0 : openingMessage.profile) !== null && _h !== void 0 ? _h : profile).name, did: (_j = globalThis.blocklet) === null || _j === void 0 ? void 0 : _j.appId, avatar: ((_k = openingMessage === null || openingMessage === void 0 ? void 0 : openingMessage.profile) !== null && _k !== void 0 ? _k : profile).avatar, alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: children }));
38
+ return hideAgentAvatar ? (children) : ((0, jsx_runtime_1.jsx)(UserInfo_1.default, { name: ((_h = openingMessage === null || openingMessage === void 0 ? void 0 : openingMessage.profile) !== null && _h !== void 0 ? _h : profile).name, did: (_j = globalThis.blocklet) === null || _j === void 0 ? void 0 : _j.appId, avatar: (0, asset_1.getAssetUrl)({
39
+ blockletDid,
40
+ aid,
41
+ filename: ((_k = openingMessage === null || openingMessage === void 0 ? void 0 : openingMessage.profile) !== null && _k !== void 0 ? _k : profile).avatar,
42
+ preset: 'avatar',
43
+ }), alignItems: "flex-start", UserNameProps: { sx: { color: hasBg ? 'white' : undefined } }, children: children }));
36
44
  });
37
45
  exports.default = OpeningMessageView;