@super_studio/ecforce-ai-agent-react 0.5.1 → 0.5.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/components/chatbot-frame.d.ts +3 -1
- package/dist/components/chatbot-frame.d.ts.map +1 -1
- package/dist/components/chatbot-sheet.d.ts.map +1 -1
- package/dist/components/lottie-ai-icon.d.ts +13 -0
- package/dist/components/lottie-ai-icon.d.ts.map +1 -0
- package/dist/components/provider/{chatbot-proivder.d.ts → chatbot-provider.d.ts} +1 -1
- package/dist/components/provider/{chatbot-proivder.d.ts.map → chatbot-provider.d.ts.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +95 -34
- package/dist/index.mjs +115 -54
- package/dist/lib/constants.d.ts +1 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chatbot-frame.tsx +28 -3
- package/src/components/chatbot-sheet.tsx +9 -19
- package/src/components/lottie-ai-icon.tsx +73 -0
- package/src/components/sheet.tsx +1 -1
- package/src/index.ts +1 -1
- package/src/lib/constants.ts +1 -1
- /package/src/components/provider/{chatbot-proivder.tsx → chatbot-provider.tsx} +0 -0
|
@@ -2,6 +2,8 @@ import type { MCP } from "./provider/use-chatbot-frame-handler";
|
|
|
2
2
|
export type ChatbotFrameProps = {
|
|
3
3
|
/** 管理画面上のエージェントID */
|
|
4
4
|
agentId: string;
|
|
5
|
+
/** 初期化時のチャットID */
|
|
6
|
+
initialChatId?: string;
|
|
5
7
|
/** エージェントにつなげるMCPの情報 */
|
|
6
8
|
mcps?: MCP[];
|
|
7
9
|
/** アプリ名のメタデータ */
|
|
@@ -27,7 +29,7 @@ export type ChatbotFrameProps = {
|
|
|
27
29
|
url?: string;
|
|
28
30
|
className?: string;
|
|
29
31
|
};
|
|
30
|
-
export declare function ChatbotFrame({ agentId, appName, mcps, getSession, enabled, url, className, }: ChatbotFrameProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export declare function ChatbotFrame({ agentId, appName, initialChatId, mcps, getSession, enabled, url, className, }: ChatbotFrameProps): import("react/jsx-runtime").JSX.Element;
|
|
31
33
|
export type SessionData = {
|
|
32
34
|
sessionId: string;
|
|
33
35
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-frame.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-frame.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,OAAO,EACP,IAAI,EACJ,UAAU,EACV,OAAc,EACd,GAAG,EACH,SAAS,GACV,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"chatbot-frame.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-frame.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,OAAO,EACP,aAAa,EACb,IAAI,EACJ,UAAU,EACV,OAAc,EACd,GAAG,EACH,SAAS,GACV,EAAE,iBAAiB,2CAgFnB;AAoBD,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,sBAuCzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-sheet.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"chatbot-sheet.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAWvE,KAAK,iBAAiB,GAAG,iBAAiB,GAAG;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAClC,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CA0BvE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type LottieAiIconProps = {
|
|
3
|
+
src: string;
|
|
4
|
+
width?: number;
|
|
5
|
+
height?: number;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
autoplay?: boolean;
|
|
8
|
+
hover?: boolean;
|
|
9
|
+
fallback?: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export declare function LottieAiIcon({ src, width, height, loop, autoplay, hover, fallback, }: LottieAiIconProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=lottie-ai-icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lottie-ai-icon.d.ts","sourceRoot":"","sources":["../../src/components/lottie-ai-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,KAAU,EACV,MAAW,EACX,IAAW,EACX,QAAgB,EAChB,KAAa,EACb,QAAQ,GACT,EAAE,iBAAiB,2CAoDnB"}
|
|
@@ -35,4 +35,4 @@ type ChatbotProviderProps = {
|
|
|
35
35
|
};
|
|
36
36
|
export declare function ChatbotProvider({ children }: ChatbotProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
37
37
|
export {};
|
|
38
|
-
//# sourceMappingURL=chatbot-
|
|
38
|
+
//# sourceMappingURL=chatbot-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot-
|
|
1
|
+
{"version":3,"file":"chatbot-provider.d.ts","sourceRoot":"","sources":["../../../src/components/provider/chatbot-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,GAAG,EACT,MAAM,6BAA6B,CAAC;AAGrC,KAAK,kBAAkB,GAAG;IACxB,gCAAgC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,iBAAiB;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,sBAAsB;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB;IACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,kBAAkB;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,aAAa;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC/B,cAAc;IACd,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mBAAmB;IACnB,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D,CAAC;AAMF,wBAAgB,UAAU,uBAMzB;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAkCjE"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -31,8 +31,8 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
return target;
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
// src/components/provider/chatbot-
|
|
35
|
-
var _react = require('react'); var React5 = _interopRequireWildcard(_react);
|
|
34
|
+
// src/components/provider/chatbot-provider.tsx
|
|
35
|
+
var _react = require('react'); var React5 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react);
|
|
36
36
|
|
|
37
37
|
// src/components/provider/use-chatbot-frame-handler.tsx
|
|
38
38
|
|
|
@@ -144,7 +144,7 @@ function useChatbotWindowStates() {
|
|
|
144
144
|
return { hasOpened, open, isExpanded, setOpen, setIsExpanded };
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
// src/components/provider/chatbot-
|
|
147
|
+
// src/components/provider/chatbot-provider.tsx
|
|
148
148
|
var _jsxruntime = require('react/jsx-runtime');
|
|
149
149
|
var ChatbotContext = React5.default.createContext(
|
|
150
150
|
void 0
|
|
@@ -191,13 +191,14 @@ function ChatbotProvider({ children }) {
|
|
|
191
191
|
|
|
192
192
|
|
|
193
193
|
// src/lib/constants.ts
|
|
194
|
-
var PROD_CHATBOT_URL = "https://
|
|
194
|
+
var PROD_CHATBOT_URL = "https://agent.ec-force.com";
|
|
195
195
|
|
|
196
196
|
// src/components/chatbot-frame.tsx
|
|
197
197
|
|
|
198
198
|
function ChatbotFrame({
|
|
199
199
|
agentId,
|
|
200
200
|
appName,
|
|
201
|
+
initialChatId,
|
|
201
202
|
mcps,
|
|
202
203
|
getSession,
|
|
203
204
|
enabled = true,
|
|
@@ -205,7 +206,7 @@ function ChatbotFrame({
|
|
|
205
206
|
className
|
|
206
207
|
}) {
|
|
207
208
|
var _a;
|
|
208
|
-
const
|
|
209
|
+
const baseUrl = (_a = url != null ? url : process.env.CHATBOT_URL) != null ? _a : PROD_CHATBOT_URL;
|
|
209
210
|
const { setIframeEl } = useChatbot();
|
|
210
211
|
const { init, setMcps, setAppName, setSessionToken, isReady } = useChatbot();
|
|
211
212
|
const sentInitRef = React5.default.useRef(false);
|
|
@@ -250,7 +251,11 @@ function ChatbotFrame({
|
|
|
250
251
|
"iframe",
|
|
251
252
|
{
|
|
252
253
|
ref: setIframeEl,
|
|
253
|
-
src:
|
|
254
|
+
src: buildIframeUrl({
|
|
255
|
+
baseUrl,
|
|
256
|
+
agentId,
|
|
257
|
+
initialChatId
|
|
258
|
+
}),
|
|
254
259
|
className,
|
|
255
260
|
allow: "clipboard-write",
|
|
256
261
|
style: {
|
|
@@ -260,6 +265,17 @@ function ChatbotFrame({
|
|
|
260
265
|
}
|
|
261
266
|
);
|
|
262
267
|
}
|
|
268
|
+
function buildIframeUrl({
|
|
269
|
+
baseUrl,
|
|
270
|
+
agentId,
|
|
271
|
+
initialChatId
|
|
272
|
+
}) {
|
|
273
|
+
const url = new URL(`/embed/${agentId}`, baseUrl);
|
|
274
|
+
if (initialChatId) {
|
|
275
|
+
url.searchParams.set("initialChatId", initialChatId);
|
|
276
|
+
}
|
|
277
|
+
return url.toString();
|
|
278
|
+
}
|
|
263
279
|
function useSession({ getSession }) {
|
|
264
280
|
const { setSessionToken } = useChatbot();
|
|
265
281
|
const [session, setSession] = React5.default.useState();
|
|
@@ -294,6 +310,62 @@ function useSession({ getSession }) {
|
|
|
294
310
|
// src/components/chatbot-sheet.tsx
|
|
295
311
|
|
|
296
312
|
|
|
313
|
+
// src/components/lottie-ai-icon.tsx
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
function LottieAiIcon({
|
|
317
|
+
src,
|
|
318
|
+
width = 18,
|
|
319
|
+
height = 18,
|
|
320
|
+
loop = true,
|
|
321
|
+
autoplay = false,
|
|
322
|
+
hover = false,
|
|
323
|
+
fallback
|
|
324
|
+
}) {
|
|
325
|
+
const containerRef = React5.useRef(null);
|
|
326
|
+
const [ready, setReady] = React5.useState(false);
|
|
327
|
+
React5.useEffect(() => {
|
|
328
|
+
if (typeof window === "undefined") return;
|
|
329
|
+
const existing = document.querySelector("script[data-dotlottie-player]");
|
|
330
|
+
if (!existing) {
|
|
331
|
+
const scriptEl = document.createElement("script");
|
|
332
|
+
scriptEl.type = "module";
|
|
333
|
+
scriptEl.async = true;
|
|
334
|
+
scriptEl.src = "https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
|
|
335
|
+
scriptEl.setAttribute("data-dotlottie-player", "true");
|
|
336
|
+
scriptEl.onload = () => setReady(true);
|
|
337
|
+
scriptEl.onerror = () => setReady(false);
|
|
338
|
+
document.head.appendChild(scriptEl);
|
|
339
|
+
} else {
|
|
340
|
+
setReady(true);
|
|
341
|
+
}
|
|
342
|
+
}, []);
|
|
343
|
+
React5.useEffect(() => {
|
|
344
|
+
if (!ready || !containerRef.current) return;
|
|
345
|
+
const container = containerRef.current;
|
|
346
|
+
container.innerHTML = "";
|
|
347
|
+
const player = document.createElement("dotlottie-player");
|
|
348
|
+
player.setAttribute("src", src);
|
|
349
|
+
player.setAttribute("style", `width:${width}px;height:${height}px`);
|
|
350
|
+
if (loop) player.setAttribute("loop", "");
|
|
351
|
+
if (autoplay) player.setAttribute("autoplay", "");
|
|
352
|
+
if (hover) player.setAttribute("hover", "");
|
|
353
|
+
container.appendChild(player);
|
|
354
|
+
return () => {
|
|
355
|
+
container.innerHTML = "";
|
|
356
|
+
};
|
|
357
|
+
}, [ready, src, width, height, loop, autoplay, hover]);
|
|
358
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: containerRef, "aria-hidden": "true", children: !ready && (fallback != null ? fallback : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
359
|
+
"svg",
|
|
360
|
+
{
|
|
361
|
+
width,
|
|
362
|
+
height,
|
|
363
|
+
viewBox: "0 0 24 24",
|
|
364
|
+
fill: "currentColor"
|
|
365
|
+
}
|
|
366
|
+
)) });
|
|
367
|
+
}
|
|
368
|
+
|
|
297
369
|
// src/components/sheet.tsx
|
|
298
370
|
var _reactdialog = require('@radix-ui/react-dialog'); var SheetPrimitive = _interopRequireWildcard(_reactdialog);
|
|
299
371
|
|
|
@@ -311,7 +383,7 @@ function Sheet(_a) {
|
|
|
311
383
|
}, props)
|
|
312
384
|
);
|
|
313
385
|
}
|
|
314
|
-
var SheetTrigger =
|
|
386
|
+
var SheetTrigger = React6.forwardRef((_a, ref) => {
|
|
315
387
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
316
388
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
317
389
|
SheetPrimitive.Trigger,
|
|
@@ -323,7 +395,7 @@ var SheetTrigger = React5.forwardRef((_a, ref) => {
|
|
|
323
395
|
);
|
|
324
396
|
});
|
|
325
397
|
SheetTrigger.displayName = SheetPrimitive.Trigger.displayName;
|
|
326
|
-
var SheetClose =
|
|
398
|
+
var SheetClose = React6.forwardRef((_a, ref) => {
|
|
327
399
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
328
400
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
329
401
|
SheetPrimitive.Close,
|
|
@@ -339,7 +411,7 @@ function SheetPortal(_a) {
|
|
|
339
411
|
var props = __objRest(_a, []);
|
|
340
412
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
|
|
341
413
|
}
|
|
342
|
-
var SheetContent =
|
|
414
|
+
var SheetContent = React6.forwardRef((_a, ref) => {
|
|
343
415
|
var _b = _a, { className, children, style } = _b, props = __objRest(_b, ["className", "children", "style"]);
|
|
344
416
|
const { isExpanded, open, hasOpened } = useChatbot();
|
|
345
417
|
const width = isExpanded ? "848px" : "400px";
|
|
@@ -363,7 +435,7 @@ var SheetContent = React5.forwardRef((_a, ref) => {
|
|
|
363
435
|
) });
|
|
364
436
|
});
|
|
365
437
|
SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
366
|
-
var SheetHeader =
|
|
438
|
+
var SheetHeader = React6.forwardRef((_a, ref) => {
|
|
367
439
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
368
440
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
369
441
|
"div",
|
|
@@ -375,7 +447,7 @@ var SheetHeader = React5.forwardRef((_a, ref) => {
|
|
|
375
447
|
);
|
|
376
448
|
});
|
|
377
449
|
SheetHeader.displayName = "SheetHeader";
|
|
378
|
-
var SheetFooter =
|
|
450
|
+
var SheetFooter = React6.forwardRef((_a, ref) => {
|
|
379
451
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
380
452
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
381
453
|
"div",
|
|
@@ -387,7 +459,7 @@ var SheetFooter = React5.forwardRef((_a, ref) => {
|
|
|
387
459
|
);
|
|
388
460
|
});
|
|
389
461
|
SheetFooter.displayName = "SheetFooter";
|
|
390
|
-
var SheetTitle =
|
|
462
|
+
var SheetTitle = React6.forwardRef((_a, ref) => {
|
|
391
463
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
392
464
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
393
465
|
SheetPrimitive.Title,
|
|
@@ -399,7 +471,7 @@ var SheetTitle = React5.forwardRef((_a, ref) => {
|
|
|
399
471
|
);
|
|
400
472
|
});
|
|
401
473
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
402
|
-
var SheetDescription =
|
|
474
|
+
var SheetDescription = React6.forwardRef((_a, ref) => {
|
|
403
475
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
404
476
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
405
477
|
SheetPrimitive.Description,
|
|
@@ -486,7 +558,16 @@ function ChatbotSheet(_a) {
|
|
|
486
558
|
side: "top",
|
|
487
559
|
align: "end",
|
|
488
560
|
content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
|
|
489
|
-
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
561
|
+
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
562
|
+
LottieAiIcon,
|
|
563
|
+
{
|
|
564
|
+
src: `${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`,
|
|
565
|
+
width: 20,
|
|
566
|
+
height: 20,
|
|
567
|
+
autoplay: true,
|
|
568
|
+
loop: true
|
|
569
|
+
}
|
|
570
|
+
) })
|
|
490
571
|
}
|
|
491
572
|
),
|
|
492
573
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetContent, { style: sheetStyle, children: [
|
|
@@ -496,26 +577,6 @@ function ChatbotSheet(_a) {
|
|
|
496
577
|
] })
|
|
497
578
|
] });
|
|
498
579
|
}
|
|
499
|
-
function EcforceAiIcon() {
|
|
500
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
501
|
-
"svg",
|
|
502
|
-
{
|
|
503
|
-
width: "18",
|
|
504
|
-
height: "18",
|
|
505
|
-
viewBox: "0 0 24 24",
|
|
506
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
507
|
-
fill: "currentColor",
|
|
508
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
509
|
-
"path",
|
|
510
|
-
{
|
|
511
|
-
fillRule: "evenodd",
|
|
512
|
-
clipRule: "evenodd",
|
|
513
|
-
d: "M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
|
|
514
|
-
}
|
|
515
|
-
)
|
|
516
|
-
}
|
|
517
|
-
);
|
|
518
|
-
}
|
|
519
580
|
|
|
520
581
|
|
|
521
582
|
|
package/dist/index.mjs
CHANGED
|
@@ -31,7 +31,7 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
return target;
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
// src/components/provider/chatbot-
|
|
34
|
+
// src/components/provider/chatbot-provider.tsx
|
|
35
35
|
import React3 from "react";
|
|
36
36
|
|
|
37
37
|
// src/components/provider/use-chatbot-frame-handler.tsx
|
|
@@ -144,7 +144,7 @@ function useChatbotWindowStates() {
|
|
|
144
144
|
return { hasOpened, open, isExpanded, setOpen, setIsExpanded };
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
// src/components/provider/chatbot-
|
|
147
|
+
// src/components/provider/chatbot-provider.tsx
|
|
148
148
|
import { jsx } from "react/jsx-runtime";
|
|
149
149
|
var ChatbotContext = React3.createContext(
|
|
150
150
|
void 0
|
|
@@ -191,13 +191,14 @@ function ChatbotProvider({ children }) {
|
|
|
191
191
|
import React4 from "react";
|
|
192
192
|
|
|
193
193
|
// src/lib/constants.ts
|
|
194
|
-
var PROD_CHATBOT_URL = "https://
|
|
194
|
+
var PROD_CHATBOT_URL = "https://agent.ec-force.com";
|
|
195
195
|
|
|
196
196
|
// src/components/chatbot-frame.tsx
|
|
197
197
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
198
198
|
function ChatbotFrame({
|
|
199
199
|
agentId,
|
|
200
200
|
appName,
|
|
201
|
+
initialChatId,
|
|
201
202
|
mcps,
|
|
202
203
|
getSession,
|
|
203
204
|
enabled = true,
|
|
@@ -205,7 +206,7 @@ function ChatbotFrame({
|
|
|
205
206
|
className
|
|
206
207
|
}) {
|
|
207
208
|
var _a;
|
|
208
|
-
const
|
|
209
|
+
const baseUrl = (_a = url != null ? url : process.env.CHATBOT_URL) != null ? _a : PROD_CHATBOT_URL;
|
|
209
210
|
const { setIframeEl } = useChatbot();
|
|
210
211
|
const { init, setMcps, setAppName, setSessionToken, isReady } = useChatbot();
|
|
211
212
|
const sentInitRef = React4.useRef(false);
|
|
@@ -250,7 +251,11 @@ function ChatbotFrame({
|
|
|
250
251
|
"iframe",
|
|
251
252
|
{
|
|
252
253
|
ref: setIframeEl,
|
|
253
|
-
src:
|
|
254
|
+
src: buildIframeUrl({
|
|
255
|
+
baseUrl,
|
|
256
|
+
agentId,
|
|
257
|
+
initialChatId
|
|
258
|
+
}),
|
|
254
259
|
className,
|
|
255
260
|
allow: "clipboard-write",
|
|
256
261
|
style: {
|
|
@@ -260,6 +265,17 @@ function ChatbotFrame({
|
|
|
260
265
|
}
|
|
261
266
|
);
|
|
262
267
|
}
|
|
268
|
+
function buildIframeUrl({
|
|
269
|
+
baseUrl,
|
|
270
|
+
agentId,
|
|
271
|
+
initialChatId
|
|
272
|
+
}) {
|
|
273
|
+
const url = new URL(`/embed/${agentId}`, baseUrl);
|
|
274
|
+
if (initialChatId) {
|
|
275
|
+
url.searchParams.set("initialChatId", initialChatId);
|
|
276
|
+
}
|
|
277
|
+
return url.toString();
|
|
278
|
+
}
|
|
263
279
|
function useSession({ getSession }) {
|
|
264
280
|
const { setSessionToken } = useChatbot();
|
|
265
281
|
const [session, setSession] = React4.useState();
|
|
@@ -294,14 +310,70 @@ function useSession({ getSession }) {
|
|
|
294
310
|
// src/components/chatbot-sheet.tsx
|
|
295
311
|
import "react";
|
|
296
312
|
|
|
297
|
-
// src/components/
|
|
298
|
-
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
313
|
+
// src/components/lottie-ai-icon.tsx
|
|
299
314
|
import * as React5 from "react";
|
|
300
315
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
316
|
+
function LottieAiIcon({
|
|
317
|
+
src,
|
|
318
|
+
width = 18,
|
|
319
|
+
height = 18,
|
|
320
|
+
loop = true,
|
|
321
|
+
autoplay = false,
|
|
322
|
+
hover = false,
|
|
323
|
+
fallback
|
|
324
|
+
}) {
|
|
325
|
+
const containerRef = React5.useRef(null);
|
|
326
|
+
const [ready, setReady] = React5.useState(false);
|
|
327
|
+
React5.useEffect(() => {
|
|
328
|
+
if (typeof window === "undefined") return;
|
|
329
|
+
const existing = document.querySelector("script[data-dotlottie-player]");
|
|
330
|
+
if (!existing) {
|
|
331
|
+
const scriptEl = document.createElement("script");
|
|
332
|
+
scriptEl.type = "module";
|
|
333
|
+
scriptEl.async = true;
|
|
334
|
+
scriptEl.src = "https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
|
|
335
|
+
scriptEl.setAttribute("data-dotlottie-player", "true");
|
|
336
|
+
scriptEl.onload = () => setReady(true);
|
|
337
|
+
scriptEl.onerror = () => setReady(false);
|
|
338
|
+
document.head.appendChild(scriptEl);
|
|
339
|
+
} else {
|
|
340
|
+
setReady(true);
|
|
341
|
+
}
|
|
342
|
+
}, []);
|
|
343
|
+
React5.useEffect(() => {
|
|
344
|
+
if (!ready || !containerRef.current) return;
|
|
345
|
+
const container = containerRef.current;
|
|
346
|
+
container.innerHTML = "";
|
|
347
|
+
const player = document.createElement("dotlottie-player");
|
|
348
|
+
player.setAttribute("src", src);
|
|
349
|
+
player.setAttribute("style", `width:${width}px;height:${height}px`);
|
|
350
|
+
if (loop) player.setAttribute("loop", "");
|
|
351
|
+
if (autoplay) player.setAttribute("autoplay", "");
|
|
352
|
+
if (hover) player.setAttribute("hover", "");
|
|
353
|
+
container.appendChild(player);
|
|
354
|
+
return () => {
|
|
355
|
+
container.innerHTML = "";
|
|
356
|
+
};
|
|
357
|
+
}, [ready, src, width, height, loop, autoplay, hover]);
|
|
358
|
+
return /* @__PURE__ */ jsx3("div", { ref: containerRef, "aria-hidden": "true", children: !ready && (fallback != null ? fallback : /* @__PURE__ */ jsx3(
|
|
359
|
+
"svg",
|
|
360
|
+
{
|
|
361
|
+
width,
|
|
362
|
+
height,
|
|
363
|
+
viewBox: "0 0 24 24",
|
|
364
|
+
fill: "currentColor"
|
|
365
|
+
}
|
|
366
|
+
)) });
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// src/components/sheet.tsx
|
|
370
|
+
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
371
|
+
import * as React6 from "react";
|
|
372
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
301
373
|
function Sheet(_a) {
|
|
302
374
|
var props = __objRest(_a, []);
|
|
303
375
|
const { open, setOpen } = useChatbot();
|
|
304
|
-
return /* @__PURE__ */
|
|
376
|
+
return /* @__PURE__ */ jsx4(
|
|
305
377
|
SheetPrimitive.Root,
|
|
306
378
|
__spreadValues({
|
|
307
379
|
"data-slot": "sheet",
|
|
@@ -311,9 +383,9 @@ function Sheet(_a) {
|
|
|
311
383
|
}, props)
|
|
312
384
|
);
|
|
313
385
|
}
|
|
314
|
-
var SheetTrigger =
|
|
386
|
+
var SheetTrigger = React6.forwardRef((_a, ref) => {
|
|
315
387
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
316
|
-
return /* @__PURE__ */
|
|
388
|
+
return /* @__PURE__ */ jsx4(
|
|
317
389
|
SheetPrimitive.Trigger,
|
|
318
390
|
__spreadValues({
|
|
319
391
|
ref,
|
|
@@ -323,9 +395,9 @@ var SheetTrigger = React5.forwardRef((_a, ref) => {
|
|
|
323
395
|
);
|
|
324
396
|
});
|
|
325
397
|
SheetTrigger.displayName = SheetPrimitive.Trigger.displayName;
|
|
326
|
-
var SheetClose =
|
|
398
|
+
var SheetClose = React6.forwardRef((_a, ref) => {
|
|
327
399
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
328
|
-
return /* @__PURE__ */
|
|
400
|
+
return /* @__PURE__ */ jsx4(
|
|
329
401
|
SheetPrimitive.Close,
|
|
330
402
|
__spreadValues({
|
|
331
403
|
ref,
|
|
@@ -337,9 +409,9 @@ var SheetClose = React5.forwardRef((_a, ref) => {
|
|
|
337
409
|
SheetClose.displayName = SheetPrimitive.Close.displayName;
|
|
338
410
|
function SheetPortal(_a) {
|
|
339
411
|
var props = __objRest(_a, []);
|
|
340
|
-
return /* @__PURE__ */
|
|
412
|
+
return /* @__PURE__ */ jsx4(SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
|
|
341
413
|
}
|
|
342
|
-
var SheetContent =
|
|
414
|
+
var SheetContent = React6.forwardRef((_a, ref) => {
|
|
343
415
|
var _b = _a, { className, children, style } = _b, props = __objRest(_b, ["className", "children", "style"]);
|
|
344
416
|
const { isExpanded, open, hasOpened } = useChatbot();
|
|
345
417
|
const width = isExpanded ? "848px" : "400px";
|
|
@@ -348,7 +420,7 @@ var SheetContent = React5.forwardRef((_a, ref) => {
|
|
|
348
420
|
"--sheet-width": width,
|
|
349
421
|
transform: `translateX(${translateX})`
|
|
350
422
|
}, style);
|
|
351
|
-
return /* @__PURE__ */
|
|
423
|
+
return /* @__PURE__ */ jsx4(SheetPortal, { forceMount: hasOpened || void 0, children: /* @__PURE__ */ jsx4(
|
|
352
424
|
SheetPrimitive.Content,
|
|
353
425
|
__spreadProps(__spreadValues({
|
|
354
426
|
ref,
|
|
@@ -363,9 +435,9 @@ var SheetContent = React5.forwardRef((_a, ref) => {
|
|
|
363
435
|
) });
|
|
364
436
|
});
|
|
365
437
|
SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
366
|
-
var SheetHeader =
|
|
438
|
+
var SheetHeader = React6.forwardRef((_a, ref) => {
|
|
367
439
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
368
|
-
return /* @__PURE__ */
|
|
440
|
+
return /* @__PURE__ */ jsx4(
|
|
369
441
|
"div",
|
|
370
442
|
__spreadValues({
|
|
371
443
|
ref,
|
|
@@ -375,9 +447,9 @@ var SheetHeader = React5.forwardRef((_a, ref) => {
|
|
|
375
447
|
);
|
|
376
448
|
});
|
|
377
449
|
SheetHeader.displayName = "SheetHeader";
|
|
378
|
-
var SheetFooter =
|
|
450
|
+
var SheetFooter = React6.forwardRef((_a, ref) => {
|
|
379
451
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
380
|
-
return /* @__PURE__ */
|
|
452
|
+
return /* @__PURE__ */ jsx4(
|
|
381
453
|
"div",
|
|
382
454
|
__spreadValues({
|
|
383
455
|
ref,
|
|
@@ -387,9 +459,9 @@ var SheetFooter = React5.forwardRef((_a, ref) => {
|
|
|
387
459
|
);
|
|
388
460
|
});
|
|
389
461
|
SheetFooter.displayName = "SheetFooter";
|
|
390
|
-
var SheetTitle =
|
|
462
|
+
var SheetTitle = React6.forwardRef((_a, ref) => {
|
|
391
463
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
392
|
-
return /* @__PURE__ */
|
|
464
|
+
return /* @__PURE__ */ jsx4(
|
|
393
465
|
SheetPrimitive.Title,
|
|
394
466
|
__spreadValues({
|
|
395
467
|
ref,
|
|
@@ -399,9 +471,9 @@ var SheetTitle = React5.forwardRef((_a, ref) => {
|
|
|
399
471
|
);
|
|
400
472
|
});
|
|
401
473
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
402
|
-
var SheetDescription =
|
|
474
|
+
var SheetDescription = React6.forwardRef((_a, ref) => {
|
|
403
475
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
404
|
-
return /* @__PURE__ */
|
|
476
|
+
return /* @__PURE__ */ jsx4(
|
|
405
477
|
SheetPrimitive.Description,
|
|
406
478
|
__spreadValues({
|
|
407
479
|
ref,
|
|
@@ -421,7 +493,7 @@ import {
|
|
|
421
493
|
Root as Root2,
|
|
422
494
|
Trigger as Trigger2
|
|
423
495
|
} from "@radix-ui/react-tooltip";
|
|
424
|
-
import { jsx as
|
|
496
|
+
import { jsx as jsx5, jsxs } from "react/jsx-runtime";
|
|
425
497
|
function Tooltip({
|
|
426
498
|
content,
|
|
427
499
|
trigger,
|
|
@@ -437,13 +509,13 @@ function Tooltip({
|
|
|
437
509
|
arrowClassName,
|
|
438
510
|
keepTooltipOpen
|
|
439
511
|
}) {
|
|
440
|
-
return /* @__PURE__ */
|
|
512
|
+
return /* @__PURE__ */ jsx5(
|
|
441
513
|
Provider,
|
|
442
514
|
{
|
|
443
515
|
delayDuration: delayDuration != null ? delayDuration : 200,
|
|
444
516
|
skipDelayDuration: skipDelayDuration != null ? skipDelayDuration : 200,
|
|
445
517
|
children: /* @__PURE__ */ jsxs(Root2, { open: disabled ? false : open, children: [
|
|
446
|
-
/* @__PURE__ */
|
|
518
|
+
/* @__PURE__ */ jsx5(
|
|
447
519
|
Trigger2,
|
|
448
520
|
{
|
|
449
521
|
onClick: keepTooltipOpen ? (event) => {
|
|
@@ -453,7 +525,7 @@ function Tooltip({
|
|
|
453
525
|
children: trigger
|
|
454
526
|
}
|
|
455
527
|
),
|
|
456
|
-
/* @__PURE__ */
|
|
528
|
+
/* @__PURE__ */ jsx5(Portal2, { children: /* @__PURE__ */ jsxs(
|
|
457
529
|
Content2,
|
|
458
530
|
{
|
|
459
531
|
className: `tooltip-content ${className || ""}`,
|
|
@@ -465,7 +537,7 @@ function Tooltip({
|
|
|
465
537
|
event.preventDefault();
|
|
466
538
|
} : void 0,
|
|
467
539
|
children: [
|
|
468
|
-
/* @__PURE__ */
|
|
540
|
+
/* @__PURE__ */ jsx5(Arrow, { className: arrowClassName }),
|
|
469
541
|
content
|
|
470
542
|
]
|
|
471
543
|
}
|
|
@@ -476,46 +548,35 @@ function Tooltip({
|
|
|
476
548
|
}
|
|
477
549
|
|
|
478
550
|
// src/components/chatbot-sheet.tsx
|
|
479
|
-
import { jsx as
|
|
551
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
480
552
|
function ChatbotSheet(_a) {
|
|
481
553
|
var _b = _a, { sheetStyle } = _b, props = __objRest(_b, ["sheetStyle"]);
|
|
482
554
|
return /* @__PURE__ */ jsxs2(Sheet, { children: [
|
|
483
|
-
/* @__PURE__ */
|
|
555
|
+
/* @__PURE__ */ jsx6(
|
|
484
556
|
Tooltip,
|
|
485
557
|
{
|
|
486
558
|
side: "top",
|
|
487
559
|
align: "end",
|
|
488
560
|
content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
|
|
489
|
-
trigger: /* @__PURE__ */
|
|
561
|
+
trigger: /* @__PURE__ */ jsx6(SheetTrigger, { children: /* @__PURE__ */ jsx6(
|
|
562
|
+
LottieAiIcon,
|
|
563
|
+
{
|
|
564
|
+
src: `${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`,
|
|
565
|
+
width: 20,
|
|
566
|
+
height: 20,
|
|
567
|
+
autoplay: true,
|
|
568
|
+
loop: true
|
|
569
|
+
}
|
|
570
|
+
) })
|
|
490
571
|
}
|
|
491
572
|
),
|
|
492
573
|
/* @__PURE__ */ jsxs2(SheetContent, { style: sheetStyle, children: [
|
|
493
|
-
/* @__PURE__ */
|
|
494
|
-
/* @__PURE__ */
|
|
495
|
-
/* @__PURE__ */
|
|
574
|
+
/* @__PURE__ */ jsx6(SheetTitle, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
|
|
575
|
+
/* @__PURE__ */ jsx6(SheetDescription, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
|
|
576
|
+
/* @__PURE__ */ jsx6(ChatbotFrame, __spreadValues({}, props))
|
|
496
577
|
] })
|
|
497
578
|
] });
|
|
498
579
|
}
|
|
499
|
-
function EcforceAiIcon() {
|
|
500
|
-
return /* @__PURE__ */ jsx5(
|
|
501
|
-
"svg",
|
|
502
|
-
{
|
|
503
|
-
width: "18",
|
|
504
|
-
height: "18",
|
|
505
|
-
viewBox: "0 0 24 24",
|
|
506
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
507
|
-
fill: "currentColor",
|
|
508
|
-
children: /* @__PURE__ */ jsx5(
|
|
509
|
-
"path",
|
|
510
|
-
{
|
|
511
|
-
fillRule: "evenodd",
|
|
512
|
-
clipRule: "evenodd",
|
|
513
|
-
d: "M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
|
|
514
|
-
}
|
|
515
|
-
)
|
|
516
|
-
}
|
|
517
|
-
);
|
|
518
|
-
}
|
|
519
580
|
export {
|
|
520
581
|
ChatbotFrame,
|
|
521
582
|
ChatbotProvider,
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PROD_CHATBOT_URL = "https://
|
|
1
|
+
export declare const PROD_CHATBOT_URL = "https://agent.ec-force.com";
|
|
2
2
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,+BAA+B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { PROD_CHATBOT_URL } from "../lib/constants";
|
|
3
|
-
import { useChatbot } from "./provider/chatbot-
|
|
3
|
+
import { useChatbot } from "./provider/chatbot-provider";
|
|
4
4
|
import type { MCP } from "./provider/use-chatbot-frame-handler";
|
|
5
5
|
|
|
6
6
|
export type ChatbotFrameProps = {
|
|
7
7
|
/** 管理画面上のエージェントID */
|
|
8
8
|
agentId: string;
|
|
9
|
+
/** 初期化時のチャットID */
|
|
10
|
+
initialChatId?: string;
|
|
9
11
|
/** エージェントにつなげるMCPの情報 */
|
|
10
12
|
mcps?: MCP[];
|
|
11
13
|
/** アプリ名のメタデータ */
|
|
@@ -35,13 +37,14 @@ export type ChatbotFrameProps = {
|
|
|
35
37
|
export function ChatbotFrame({
|
|
36
38
|
agentId,
|
|
37
39
|
appName,
|
|
40
|
+
initialChatId,
|
|
38
41
|
mcps,
|
|
39
42
|
getSession,
|
|
40
43
|
enabled = true,
|
|
41
44
|
url,
|
|
42
45
|
className,
|
|
43
46
|
}: ChatbotFrameProps) {
|
|
44
|
-
const
|
|
47
|
+
const baseUrl = url ?? process.env.CHATBOT_URL ?? PROD_CHATBOT_URL;
|
|
45
48
|
const { setIframeEl } = useChatbot();
|
|
46
49
|
const { init, setMcps, setAppName, setSessionToken, isReady } = useChatbot();
|
|
47
50
|
const sentInitRef = React.useRef(false);
|
|
@@ -107,7 +110,11 @@ export function ChatbotFrame({
|
|
|
107
110
|
return (
|
|
108
111
|
<iframe
|
|
109
112
|
ref={setIframeEl}
|
|
110
|
-
src={
|
|
113
|
+
src={buildIframeUrl({
|
|
114
|
+
baseUrl,
|
|
115
|
+
agentId,
|
|
116
|
+
initialChatId,
|
|
117
|
+
})}
|
|
111
118
|
className={className}
|
|
112
119
|
allow="clipboard-write"
|
|
113
120
|
style={{
|
|
@@ -118,6 +125,24 @@ export function ChatbotFrame({
|
|
|
118
125
|
);
|
|
119
126
|
}
|
|
120
127
|
|
|
128
|
+
function buildIframeUrl({
|
|
129
|
+
baseUrl,
|
|
130
|
+
agentId,
|
|
131
|
+
initialChatId,
|
|
132
|
+
}: {
|
|
133
|
+
baseUrl: string;
|
|
134
|
+
agentId: string;
|
|
135
|
+
initialChatId?: string;
|
|
136
|
+
}) {
|
|
137
|
+
const url = new URL(`/embed/${agentId}`, baseUrl);
|
|
138
|
+
|
|
139
|
+
if (initialChatId) {
|
|
140
|
+
url.searchParams.set("initialChatId", initialChatId);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return url.toString();
|
|
144
|
+
}
|
|
145
|
+
|
|
121
146
|
export type SessionData = {
|
|
122
147
|
sessionId: string;
|
|
123
148
|
token: string;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { PROD_CHATBOT_URL } from "@/lib/constants";
|
|
2
3
|
import { ChatbotFrame, type ChatbotFrameProps } from "./chatbot-frame";
|
|
4
|
+
import { LottieAiIcon } from "./lottie-ai-icon";
|
|
3
5
|
import {
|
|
4
6
|
Sheet,
|
|
5
7
|
SheetContent,
|
|
@@ -22,7 +24,13 @@ export function ChatbotSheet({ sheetStyle, ...props }: ChatbotSheetProps) {
|
|
|
22
24
|
content="AIに質問してみましょう"
|
|
23
25
|
trigger={
|
|
24
26
|
<SheetTrigger>
|
|
25
|
-
<
|
|
27
|
+
<LottieAiIcon
|
|
28
|
+
src={`${PROD_CHATBOT_URL}/animations/ai-icon.v1.lottie`}
|
|
29
|
+
width={20}
|
|
30
|
+
height={20}
|
|
31
|
+
autoplay
|
|
32
|
+
loop
|
|
33
|
+
/>
|
|
26
34
|
</SheetTrigger>
|
|
27
35
|
}
|
|
28
36
|
/>
|
|
@@ -34,21 +42,3 @@ export function ChatbotSheet({ sheetStyle, ...props }: ChatbotSheetProps) {
|
|
|
34
42
|
</Sheet>
|
|
35
43
|
);
|
|
36
44
|
}
|
|
37
|
-
|
|
38
|
-
function EcforceAiIcon() {
|
|
39
|
-
return (
|
|
40
|
-
<svg
|
|
41
|
-
width="18"
|
|
42
|
-
height="18"
|
|
43
|
-
viewBox="0 0 24 24"
|
|
44
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
45
|
-
fill="currentColor"
|
|
46
|
-
>
|
|
47
|
-
<path
|
|
48
|
-
fillRule="evenodd"
|
|
49
|
-
clipRule="evenodd"
|
|
50
|
-
d="M9.2 13.704s3.7-.812 4.325-3.74c.624-2.93.76-3.364 1.112-3.364.352 0 .42.309.5.618.08.309.51 2.276.613 2.745.102.47.783 2.93 3.712 3.616 2.93.686 3.338.697 3.338 1.12 0 .459-2.361.859-3.338 1.122-.976.263-3.042 1.007-3.587 3.49-.534 2.482-.681 3.489-1.238 3.489-.556 0-.545-.584-.613-.87-.068-.286-.34-1.819-.5-2.494-.147-.675-1.044-2.837-2.962-3.363-1.93-.527-3.962-.847-3.962-1.373s2.134-.824 2.6-.995ZM2.462 4.613s1.785-.39 2.08-1.798c.296-1.409.365-1.615.535-1.615.17 0 .205.149.239.298s.25 1.088.296 1.317c.045.229.375 1.409 1.785 1.74 1.41.333 1.603.333 1.603.54 0 .217-1.137.412-1.603.538-.466.126-1.467.48-1.729 1.683C5.407 8.507 5.338 9 5.078 9c-.262 0-.262-.286-.296-.424-.035-.137-.16-.882-.24-1.202-.079-.321-.5-1.363-1.432-1.615-.932-.252-1.91-.413-1.91-.665 0-.252 1.023-.4 1.25-.48h.012Z"
|
|
51
|
-
/>
|
|
52
|
-
</svg>
|
|
53
|
-
);
|
|
54
|
-
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
type LottieAiIconProps = {
|
|
4
|
+
src: string;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
loop?: boolean;
|
|
8
|
+
autoplay?: boolean;
|
|
9
|
+
hover?: boolean;
|
|
10
|
+
fallback?: React.ReactNode;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function LottieAiIcon({
|
|
14
|
+
src,
|
|
15
|
+
width = 18,
|
|
16
|
+
height = 18,
|
|
17
|
+
loop = true,
|
|
18
|
+
autoplay = false,
|
|
19
|
+
hover = false,
|
|
20
|
+
fallback,
|
|
21
|
+
}: LottieAiIconProps) {
|
|
22
|
+
const containerRef = React.useRef<HTMLDivElement>(null);
|
|
23
|
+
const [ready, setReady] = React.useState(false);
|
|
24
|
+
|
|
25
|
+
React.useEffect(() => {
|
|
26
|
+
if (typeof window === "undefined") return;
|
|
27
|
+
|
|
28
|
+
const existing = document.querySelector("script[data-dotlottie-player]");
|
|
29
|
+
if (!existing) {
|
|
30
|
+
const scriptEl = document.createElement("script");
|
|
31
|
+
scriptEl.type = "module";
|
|
32
|
+
scriptEl.async = true;
|
|
33
|
+
scriptEl.src =
|
|
34
|
+
"https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.js";
|
|
35
|
+
scriptEl.setAttribute("data-dotlottie-player", "true");
|
|
36
|
+
scriptEl.onload = () => setReady(true);
|
|
37
|
+
scriptEl.onerror = () => setReady(false);
|
|
38
|
+
document.head.appendChild(scriptEl);
|
|
39
|
+
} else {
|
|
40
|
+
setReady(true);
|
|
41
|
+
}
|
|
42
|
+
}, []);
|
|
43
|
+
|
|
44
|
+
React.useEffect(() => {
|
|
45
|
+
if (!ready || !containerRef.current) return;
|
|
46
|
+
const container = containerRef.current;
|
|
47
|
+
container.innerHTML = "";
|
|
48
|
+
const player = document.createElement("dotlottie-player");
|
|
49
|
+
player.setAttribute("src", src);
|
|
50
|
+
player.setAttribute("style", `width:${width}px;height:${height}px`);
|
|
51
|
+
if (loop) player.setAttribute("loop", "");
|
|
52
|
+
if (autoplay) player.setAttribute("autoplay", "");
|
|
53
|
+
if (hover) player.setAttribute("hover", "");
|
|
54
|
+
container.appendChild(player);
|
|
55
|
+
return () => {
|
|
56
|
+
container.innerHTML = "";
|
|
57
|
+
};
|
|
58
|
+
}, [ready, src, width, height, loop, autoplay, hover]);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<div ref={containerRef} aria-hidden="true">
|
|
62
|
+
{!ready &&
|
|
63
|
+
(fallback ?? (
|
|
64
|
+
<svg
|
|
65
|
+
width={width}
|
|
66
|
+
height={height}
|
|
67
|
+
viewBox="0 0 24 24"
|
|
68
|
+
fill="currentColor"
|
|
69
|
+
/>
|
|
70
|
+
))}
|
|
71
|
+
</div>
|
|
72
|
+
);
|
|
73
|
+
}
|
package/src/components/sheet.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import { useChatbot } from "./provider/chatbot-
|
|
3
|
+
import { useChatbot } from "./provider/chatbot-provider";
|
|
4
4
|
|
|
5
5
|
function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
|
|
6
6
|
const { open, setOpen } = useChatbot();
|
package/src/index.ts
CHANGED
package/src/lib/constants.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PROD_CHATBOT_URL = "https://
|
|
1
|
+
export const PROD_CHATBOT_URL = "https://agent.ec-force.com";
|
|
File without changes
|