@super_studio/ecforce-ai-agent-react 0.3.1 → 0.4.0

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.
Files changed (48) hide show
  1. package/dist/components/chatbot-frame.d.ts +7 -0
  2. package/dist/components/chatbot-frame.d.ts.map +1 -0
  3. package/dist/components/chatbot-sheet.d.ts +8 -0
  4. package/dist/components/chatbot-sheet.d.ts.map +1 -0
  5. package/dist/components/provider/chatbot-proivder.d.ts +36 -0
  6. package/dist/components/provider/chatbot-proivder.d.ts.map +1 -0
  7. package/dist/components/provider/use-chatbot-frame-handler.d.ts +44 -0
  8. package/dist/components/provider/use-chatbot-frame-handler.d.ts.map +1 -0
  9. package/dist/components/provider/use-chatbot-window-states.d.ts +9 -0
  10. package/dist/components/provider/use-chatbot-window-states.d.ts.map +1 -0
  11. package/dist/components/sheet.d.ts.map +1 -0
  12. package/dist/components/tooltip.d.ts.map +1 -0
  13. package/dist/hooks/use-chatbot-config.d.ts +19 -0
  14. package/dist/hooks/use-chatbot-config.d.ts.map +1 -0
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +197 -167
  18. package/dist/index.mjs +199 -169
  19. package/dist/lib/constants.d.ts.map +1 -0
  20. package/package.json +3 -3
  21. package/src/components/chatbot-frame.tsx +26 -0
  22. package/src/{chatbot-sheet.tsx → components/chatbot-sheet.tsx} +25 -31
  23. package/src/components/provider/chatbot-proivder.tsx +79 -0
  24. package/src/components/provider/use-chatbot-frame-handler.tsx +130 -0
  25. package/src/components/provider/use-chatbot-window-states.tsx +15 -0
  26. package/src/{sheet.tsx → components/sheet.tsx} +1 -3
  27. package/src/{tooltip.tsx → components/tooltip.tsx} +0 -2
  28. package/src/hooks/use-chatbot-config.tsx +60 -0
  29. package/src/index.ts +6 -5
  30. package/dist/agent-frame.d.ts +0 -32
  31. package/dist/agent-frame.d.ts.map +0 -1
  32. package/dist/chatbot-proivder.d.ts +0 -15
  33. package/dist/chatbot-proivder.d.ts.map +0 -1
  34. package/dist/chatbot-sheet.d.ts +0 -6
  35. package/dist/chatbot-sheet.d.ts.map +0 -1
  36. package/dist/constants.d.ts.map +0 -1
  37. package/dist/sheet.d.ts.map +0 -1
  38. package/dist/tooltip.d.ts.map +0 -1
  39. package/src/agent-frame.tsx +0 -196
  40. package/src/chatbot-proivder.tsx +0 -51
  41. /package/dist/{sheet.d.ts → components/sheet.d.ts} +0 -0
  42. /package/dist/{tooltip.d.ts → components/tooltip.d.ts} +0 -0
  43. /package/dist/{constants.d.ts → lib/constants.d.ts} +0 -0
  44. /package/dist/{chatbot-sheet.css → styles/chatbot-sheet.css} +0 -0
  45. /package/dist/{preset.css → styles/preset.css} +0 -0
  46. /package/src/{constants.ts → lib/constants.ts} +0 -0
  47. /package/src/{chatbot-sheet.css → styles/chatbot-sheet.css} +0 -0
  48. /package/src/{preset.css → styles/preset.css} +0 -0
@@ -0,0 +1,7 @@
1
+ export type ChatbotFrameProps = {
2
+ agentId: string;
3
+ url?: string;
4
+ className?: string;
5
+ };
6
+ export declare function ChatbotFrame({ agentId, className, url }: ChatbotFrameProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=chatbot-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-frame.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-frame.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,iBAAiB,2CAgB1E"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { type ChatbotFrameProps } from "./chatbot-frame";
3
+ type ChatbotSheetProps = ChatbotFrameProps & {
4
+ sheetStyle?: React.CSSProperties;
5
+ };
6
+ export declare function ChatbotSheet({ sheetStyle, ...props }: ChatbotSheetProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=chatbot-sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-sheet.d.ts","sourceRoot":"","sources":["../../src/components/chatbot-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAUvE,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,2CAoBvE"}
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import { type InitProps, type MCP } from "./use-chatbot-frame-handler";
3
+ type ChatbotContextType = {
4
+ /** 1回チャットボットを開いたら、固定でtrueになる */
5
+ hasOpened: boolean;
6
+ /** チャットボットを開いているか */
7
+ open: boolean;
8
+ /** チャットボットを開く */
9
+ setOpen: (open: boolean) => void;
10
+ /** チャットボットを展開しているか */
11
+ isExpanded: boolean;
12
+ /** チャットボットを展開する */
13
+ setIsExpanded: (expanded: boolean) => void;
14
+ /** チャットボットを初期化 */
15
+ init: (props: InitProps) => void;
16
+ /** MCPを設定 */
17
+ setMcps: (mcps: MCP[]) => void;
18
+ /** アプリ名を設定 */
19
+ setAppName: (appName: string) => void;
20
+ /** チャットボットが準備できたか */
21
+ isReady: boolean;
22
+ /** チャットボットが初期化されたか */
23
+ isInitialized: boolean;
24
+ /**
25
+ * @internal
26
+ * チャットボットのiframe要素を設定
27
+ */
28
+ setIframeEl: (iframeEl: HTMLIFrameElement | null) => void;
29
+ };
30
+ export declare function useChatbot(): ChatbotContextType;
31
+ type ChatbotProviderProps = {
32
+ children: React.ReactNode;
33
+ };
34
+ export declare function ChatbotProvider({ children }: ChatbotProviderProps): import("react/jsx-runtime").JSX.Element;
35
+ export {};
36
+ //# sourceMappingURL=chatbot-proivder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatbot-proivder.d.ts","sourceRoot":"","sources":["../../../src/components/provider/chatbot-proivder.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,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,2CA0BjE"}
@@ -0,0 +1,44 @@
1
+ import React from "react";
2
+ export type IframeMessage = {
3
+ type: "CHATBOT_READY";
4
+ } | {
5
+ type: "CHATBOT_INITIALIZED";
6
+ } | {
7
+ type: "CLOSE_CHATBOT";
8
+ } | {
9
+ type: "EXPAND_CHATBOT";
10
+ } | {
11
+ type: "SHRINK_CHATBOT";
12
+ };
13
+ export type MCP = {
14
+ name: string;
15
+ url: string;
16
+ headers?: Record<string, string>;
17
+ };
18
+ export type InitProps = {
19
+ mcps?: MCP[];
20
+ appName?: string;
21
+ };
22
+ export type ParentMessage = {
23
+ type: "mcps";
24
+ mcps: MCP[];
25
+ } | {
26
+ type: "appName";
27
+ appName: string;
28
+ } | {
29
+ type: "init";
30
+ mcps?: MCP[];
31
+ appName?: string;
32
+ };
33
+ export declare function useChatbotFrameHandler({ setOpen, setIsExpanded, }: {
34
+ setOpen: (open: boolean) => void;
35
+ setIsExpanded: (expanded: boolean) => void;
36
+ }): {
37
+ init: (props: InitProps) => void;
38
+ setMcps: (mcps: MCP[]) => void;
39
+ setAppName: (appName: string) => void;
40
+ setIframeEl: React.Dispatch<React.SetStateAction<HTMLIFrameElement | null>>;
41
+ isReady: boolean;
42
+ isInitialized: boolean;
43
+ };
44
+ //# sourceMappingURL=use-chatbot-frame-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chatbot-frame-handler.d.ts","sourceRoot":"","sources":["../../../src/components/provider/use-chatbot-frame-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;CACb,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,GACd,EAAE;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;kBAqBW,SAAS;oBAUV,GAAG,EAAE;0BAOF,MAAM;;;;EAkDnB"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ export declare function useChatbotWindowStates(): {
3
+ hasOpened: boolean;
4
+ open: boolean;
5
+ isExpanded: boolean;
6
+ setOpen: React.Dispatch<React.SetStateAction<boolean>>;
7
+ setIsExpanded: React.Dispatch<React.SetStateAction<boolean>>;
8
+ };
9
+ //# sourceMappingURL=use-chatbot-window-states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chatbot-window-states.d.ts","sourceRoot":"","sources":["../../../src/components/provider/use-chatbot-window-states.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,sBAAsB;;;;;;EAYrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../src/components/sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAW5E;AAED,QAAA,MAAM,YAAY,mKAUhB,CAAC;AAGH,QAAA,MAAM,UAAU,iKAUd,CAAC;AASH,QAAA,MAAM,YAAY,6JAgChB,CAAC;AAGH,QAAA,MAAM,WAAW,6GAUf,CAAC;AAGH,QAAA,MAAM,WAAW,6GAUf,CAAC;AAGH,QAAA,MAAM,UAAU,mKAUd,CAAC;AAGH,QAAA,MAAM,gBAAgB,6KAUpB,CAAC;AAGH,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AASA,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChD,KAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExC,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,OAAO,EACP,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,GAChB,EAAE,YAAY,2CA0Cd"}
@@ -0,0 +1,19 @@
1
+ import { type MCP } from "../components/provider/use-chatbot-frame-handler";
2
+ type ChatbotConfig = {
3
+ /** エージェントにつなげるMCPの情報 */
4
+ mcps?: MCP[];
5
+ /** アプリ名のメタデータ */
6
+ appName?: string;
7
+ /**
8
+ * trueになるまで、初期化されません。
9
+ * 初期化せれたあとはもう使われません。
10
+ * @default true
11
+ */
12
+ enabled?: boolean;
13
+ };
14
+ /**
15
+ * このフックに渡される情報で受動的にinitを呼び出し、mcpsとappNameを更新する
16
+ */
17
+ export declare function useChatbotConfig({ mcps, appName, enabled, }: ChatbotConfig): void;
18
+ export {};
19
+ //# sourceMappingURL=use-chatbot-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chatbot-config.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chatbot-config.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,kDAAkD,CAAC;AAE5E,KAAK,aAAa,GAAG;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,OAAc,GACf,EAAE,aAAa,QAmCf"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export * from "./chatbot-proivder";
2
- export * from "./agent-frame";
3
- export * from "./chatbot-sheet";
4
- export * from "./sheet";
5
- export * from "./tooltip";
1
+ export * from "./components/provider/chatbot-proivder";
2
+ export * from "./hooks/use-chatbot-config";
3
+ export * from "./components/chatbot-frame";
4
+ export * from "./components/chatbot-sheet";
5
+ export * from "./components/sheet";
6
+ export * from "./components/tooltip";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -31,169 +31,200 @@ var __objRest = (source, exclude) => {
31
31
  return target;
32
32
  };
33
33
 
34
- // src/chatbot-proivder.tsx
35
- var _react = require('react'); var React2 = _interopRequireWildcard(_react);
34
+ // src/components/provider/chatbot-proivder.tsx
35
+ var _react = require('react'); var React5 = _interopRequireWildcard(_react);
36
+
37
+ // src/components/provider/use-chatbot-frame-handler.tsx
38
+
39
+ function useChatbotFrameHandler({
40
+ setOpen,
41
+ setIsExpanded
42
+ }) {
43
+ const [iframeEl, setIframeEl] = React5.default.useState(
44
+ null
45
+ );
46
+ const [isReady, setIsReady] = React5.default.useState(false);
47
+ const [isInitialized, setIsInitialized] = React5.default.useState(false);
48
+ const postMessage = React5.default.useCallback(
49
+ (message) => {
50
+ if (iframeEl == null ? void 0 : iframeEl.contentWindow) {
51
+ if (process.env.NODE_ENV === "development") {
52
+ console.log("sending message to iframe", message);
53
+ }
54
+ iframeEl.contentWindow.postMessage(message, "*");
55
+ }
56
+ },
57
+ [iframeEl]
58
+ );
59
+ const init = React5.default.useCallback(
60
+ (props) => {
61
+ postMessage(__spreadValues({
62
+ type: "init"
63
+ }, props));
64
+ },
65
+ [postMessage]
66
+ );
67
+ const setMcps = React5.default.useCallback(
68
+ (mcps) => {
69
+ postMessage({ type: "mcps", mcps });
70
+ },
71
+ [postMessage]
72
+ );
73
+ const setAppName = React5.default.useCallback(
74
+ (appName) => {
75
+ postMessage({ type: "appName", appName });
76
+ },
77
+ [postMessage]
78
+ );
79
+ React5.default.useEffect(() => {
80
+ const iframe = iframeEl;
81
+ if (!iframe) {
82
+ return;
83
+ }
84
+ const handleMessage = (event) => {
85
+ var _a;
86
+ if (process.env.NODE_ENV === "development") {
87
+ console.log("iframe message", event.data);
88
+ }
89
+ switch ((_a = event.data) == null ? void 0 : _a.type) {
90
+ case "CHATBOT_READY":
91
+ setIsReady(true);
92
+ break;
93
+ case "CHATBOT_INITIALIZED":
94
+ setIsInitialized(true);
95
+ break;
96
+ case "CLOSE_CHATBOT":
97
+ setOpen(false);
98
+ break;
99
+ case "EXPAND_CHATBOT":
100
+ setIsExpanded(true);
101
+ break;
102
+ case "SHRINK_CHATBOT":
103
+ setIsExpanded(false);
104
+ break;
105
+ }
106
+ };
107
+ const handleIframeLoad = () => {
108
+ window.addEventListener("message", handleMessage);
109
+ };
110
+ iframe.addEventListener("load", handleIframeLoad);
111
+ return () => {
112
+ window.removeEventListener("message", handleMessage);
113
+ iframe.removeEventListener("load", handleIframeLoad);
114
+ };
115
+ }, [iframeEl]);
116
+ return { init, setMcps, setAppName, setIframeEl, isReady, isInitialized };
117
+ }
118
+
119
+ // src/components/provider/use-chatbot-window-states.tsx
120
+
121
+ function useChatbotWindowStates() {
122
+ const [hasOpened, setHasOpened] = React5.default.useState(false);
123
+ const [open, setOpen] = React5.default.useState(false);
124
+ const [isExpanded, setIsExpanded] = React5.default.useState(false);
125
+ React5.default.useEffect(() => {
126
+ if (open) {
127
+ setHasOpened(true);
128
+ }
129
+ }, [open]);
130
+ return { hasOpened, open, isExpanded, setOpen, setIsExpanded };
131
+ }
132
+
133
+ // src/components/provider/chatbot-proivder.tsx
36
134
  var _jsxruntime = require('react/jsx-runtime');
37
- var ChatbotContext = React2.default.createContext(
135
+ var ChatbotContext = React5.default.createContext(
38
136
  void 0
39
137
  );
40
138
  function useChatbot() {
41
- const context = React2.default.useContext(ChatbotContext);
139
+ const context = React5.default.useContext(ChatbotContext);
42
140
  if (!context) {
43
141
  throw new Error("useChatbot must be used within a ChatbotProvider");
44
142
  }
45
143
  return context;
46
144
  }
47
145
  function ChatbotProvider({ children }) {
48
- const [hasOpened, setHasOpened] = React2.default.useState(false);
49
- const [open, setOpen] = React2.default.useState(false);
50
- const [isExpanded, setIsExpanded] = React2.default.useState(false);
51
- React2.default.useEffect(() => {
52
- if (open) {
53
- setHasOpened(true);
54
- }
55
- }, [open]);
146
+ const { hasOpened, open, isExpanded, setOpen, setIsExpanded } = useChatbotWindowStates();
147
+ const { setMcps, setAppName, init, isReady, isInitialized, setIframeEl } = useChatbotFrameHandler({
148
+ setOpen,
149
+ setIsExpanded
150
+ });
56
151
  const value = {
57
152
  hasOpened,
58
153
  open,
59
154
  setOpen,
60
155
  isExpanded,
61
- setIsExpanded
156
+ setIsExpanded,
157
+ init,
158
+ setMcps,
159
+ setAppName,
160
+ isReady,
161
+ isInitialized,
162
+ setIframeEl
62
163
  };
63
164
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatbotContext.Provider, { value, children });
64
165
  }
65
166
 
66
- // src/agent-frame.tsx
67
-
68
-
69
-
70
-
71
-
72
-
73
-
167
+ // src/hooks/use-chatbot-config.tsx
74
168
 
169
+ function useChatbotConfig({
170
+ mcps,
171
+ appName,
172
+ enabled = true
173
+ }) {
174
+ const { init, setMcps, setAppName, isReady } = useChatbot();
175
+ const sentInitRef = React5.default.useRef(false);
176
+ const [currentMcps, setCurrentMcps] = React5.default.useState();
177
+ const [currentAppName, setCurrentAppName] = React5.default.useState();
178
+ React5.default.useEffect(() => {
179
+ if (enabled && isReady && !sentInitRef.current) {
180
+ init({ mcps, appName });
181
+ sentInitRef.current = true;
182
+ setCurrentMcps(mcps);
183
+ setCurrentAppName(appName);
184
+ }
185
+ }, [enabled, init, mcps, appName, isReady]);
186
+ React5.default.useEffect(() => {
187
+ if (sentInitRef.current && mcps && JSON.stringify(currentMcps) !== JSON.stringify(mcps)) {
188
+ setMcps(mcps);
189
+ setCurrentMcps(mcps);
190
+ }
191
+ }, [mcps]);
192
+ React5.default.useEffect(() => {
193
+ if (sentInitRef.current && appName && currentAppName !== appName) {
194
+ setCurrentAppName(appName);
195
+ setAppName(appName);
196
+ }
197
+ }, [appName]);
198
+ }
75
199
 
76
- // src/constants.ts
200
+ // src/lib/constants.ts
77
201
  var PROD_CHATBOT_URL = "https://ecforce-ai-agent.vercel.app";
78
202
 
79
- // src/agent-frame.tsx
80
-
81
- var AgentFrame = _react.forwardRef.call(void 0,
82
- ({ agentId, mcps = [], appName, className, url }, ref) => {
83
- var _a;
84
- const chatbotUrl = (_a = url != null ? url : process.env.CHATBOT_URL) != null ? _a : PROD_CHATBOT_URL;
85
- const iframeRef = _react.useRef.call(void 0, null);
86
- const [isReady, setIsReady] = _react.useState.call(void 0, false);
87
- const [hasInitialized, setHasInitialized] = _react.useState.call(void 0, false);
88
- const [currentMcps, setCurrentMcps] = _react.useState.call(void 0, mcps);
89
- const { setIsExpanded, setOpen } = useChatbot();
90
- const postMessage = _react.useCallback.call(void 0, (message) => {
91
- var _a2;
92
- if ((_a2 = iframeRef.current) == null ? void 0 : _a2.contentWindow) {
93
- iframeRef.current.contentWindow.postMessage(message, "*");
94
- }
95
- }, []);
96
- const init = _react.useCallback.call(void 0,
97
- (props) => {
98
- postMessage(__spreadValues({
99
- type: "init"
100
- }, props));
101
- },
102
- [postMessage]
103
- );
104
- const setMcps = _react.useCallback.call(void 0,
105
- (mcps2) => {
106
- postMessage({ type: "mcps", mcps: mcps2 });
107
- },
108
- [postMessage]
109
- );
110
- const setAppName = _react.useCallback.call(void 0,
111
- (appName2) => {
112
- postMessage({ type: "appName", appName: appName2 });
113
- },
114
- [postMessage]
115
- );
116
- _react.useImperativeHandle.call(void 0,
117
- ref,
118
- () => ({
119
- setMcps,
120
- setAppName,
121
- get isReady() {
122
- return isReady;
123
- }
124
- }),
125
- [setMcps, setAppName, isReady]
126
- );
127
- _react.useEffect.call(void 0, () => {
128
- const iframe = iframeRef.current;
129
- if (!iframe) {
130
- return;
131
- }
132
- const handleMessage = (event) => {
133
- var _a2;
134
- if (process.env.NODE_ENV === "development") {
135
- console.log("iframe message", event.data);
136
- }
137
- switch ((_a2 = event.data) == null ? void 0 : _a2.type) {
138
- case "CHATBOT_READY":
139
- setIsReady(true);
140
- break;
141
- case "CLOSE_CHATBOT":
142
- setOpen(false);
143
- break;
144
- case "EXPAND_CHATBOT":
145
- setIsExpanded(true);
146
- break;
147
- case "SHRINK_CHATBOT":
148
- setIsExpanded(false);
149
- break;
150
- }
151
- };
152
- const handleIframeLoad = () => {
153
- window.addEventListener("message", handleMessage);
154
- };
155
- iframe.addEventListener("load", handleIframeLoad);
156
- return () => {
157
- window.removeEventListener("message", handleMessage);
158
- iframe.removeEventListener("load", handleIframeLoad);
159
- };
160
- }, []);
161
- _react.useEffect.call(void 0, () => {
162
- if (isReady && !hasInitialized) {
163
- setHasInitialized(true);
164
- init({ mcps });
165
- if (appName) {
166
- setAppName(appName);
167
- }
168
- }
169
- }, [isReady, init, mcps, appName, hasInitialized, setAppName]);
170
- _react.useEffect.call(void 0, () => {
171
- if (JSON.stringify(currentMcps) !== JSON.stringify(mcps)) {
172
- setCurrentMcps(mcps);
173
- setMcps(mcps);
174
- }
175
- }, [setMcps, mcps, currentMcps]);
176
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
177
- "iframe",
178
- {
179
- ref: iframeRef,
180
- src: `${chatbotUrl}/embed/${agentId}`,
181
- className,
182
- allow: "clipboard-write",
183
- style: {
184
- width: "100%",
185
- height: "100%"
186
- }
203
+ // src/components/chatbot-frame.tsx
204
+
205
+ function ChatbotFrame({ agentId, className, url }) {
206
+ var _a;
207
+ const chatbotUrl = (_a = url != null ? url : process.env.CHATBOT_URL) != null ? _a : PROD_CHATBOT_URL;
208
+ const { setIframeEl } = useChatbot();
209
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
210
+ "iframe",
211
+ {
212
+ ref: setIframeEl,
213
+ src: `${chatbotUrl}/embed/${agentId}`,
214
+ className,
215
+ allow: "clipboard-write",
216
+ style: {
217
+ width: "100%",
218
+ height: "100%"
187
219
  }
188
- );
189
- }
190
- );
191
- AgentFrame.displayName = "AgentFrame";
220
+ }
221
+ );
222
+ }
192
223
 
193
- // src/chatbot-sheet.tsx
224
+ // src/components/chatbot-sheet.tsx
194
225
 
195
226
 
196
- // src/sheet.tsx
227
+ // src/components/sheet.tsx
197
228
  var _reactdialog = require('@radix-ui/react-dialog'); var SheetPrimitive = _interopRequireWildcard(_reactdialog);
198
229
 
199
230
 
@@ -210,7 +241,7 @@ function Sheet(_a) {
210
241
  }, props)
211
242
  );
212
243
  }
213
- var SheetTrigger = React2.forwardRef((_a, ref) => {
244
+ var SheetTrigger = React5.forwardRef((_a, ref) => {
214
245
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
215
246
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
216
247
  SheetPrimitive.Trigger,
@@ -222,7 +253,7 @@ var SheetTrigger = React2.forwardRef((_a, ref) => {
222
253
  );
223
254
  });
224
255
  SheetTrigger.displayName = SheetPrimitive.Trigger.displayName;
225
- var SheetClose = React2.forwardRef((_a, ref) => {
256
+ var SheetClose = React5.forwardRef((_a, ref) => {
226
257
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
227
258
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
228
259
  SheetPrimitive.Close,
@@ -238,7 +269,7 @@ function SheetPortal(_a) {
238
269
  var props = __objRest(_a, []);
239
270
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetPrimitive.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
240
271
  }
241
- var SheetContent = React2.forwardRef((_a, ref) => {
272
+ var SheetContent = React5.forwardRef((_a, ref) => {
242
273
  var _b = _a, { className, children, style } = _b, props = __objRest(_b, ["className", "children", "style"]);
243
274
  const { isExpanded, open, hasOpened } = useChatbot();
244
275
  const width = isExpanded ? "848px" : "400px";
@@ -262,7 +293,7 @@ var SheetContent = React2.forwardRef((_a, ref) => {
262
293
  ) });
263
294
  });
264
295
  SheetContent.displayName = SheetPrimitive.Content.displayName;
265
- var SheetHeader = React2.forwardRef((_a, ref) => {
296
+ var SheetHeader = React5.forwardRef((_a, ref) => {
266
297
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
267
298
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
268
299
  "div",
@@ -274,7 +305,7 @@ var SheetHeader = React2.forwardRef((_a, ref) => {
274
305
  );
275
306
  });
276
307
  SheetHeader.displayName = "SheetHeader";
277
- var SheetFooter = React2.forwardRef((_a, ref) => {
308
+ var SheetFooter = React5.forwardRef((_a, ref) => {
278
309
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
279
310
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
280
311
  "div",
@@ -286,7 +317,7 @@ var SheetFooter = React2.forwardRef((_a, ref) => {
286
317
  );
287
318
  });
288
319
  SheetFooter.displayName = "SheetFooter";
289
- var SheetTitle = React2.forwardRef((_a, ref) => {
320
+ var SheetTitle = React5.forwardRef((_a, ref) => {
290
321
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
291
322
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
292
323
  SheetPrimitive.Title,
@@ -298,7 +329,7 @@ var SheetTitle = React2.forwardRef((_a, ref) => {
298
329
  );
299
330
  });
300
331
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
301
- var SheetDescription = React2.forwardRef((_a, ref) => {
332
+ var SheetDescription = React5.forwardRef((_a, ref) => {
302
333
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
303
334
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
304
335
  SheetPrimitive.Description,
@@ -311,7 +342,7 @@ var SheetDescription = React2.forwardRef((_a, ref) => {
311
342
  });
312
343
  SheetDescription.displayName = SheetPrimitive.Description.displayName;
313
344
 
314
- // src/tooltip.tsx
345
+ // src/components/tooltip.tsx
315
346
 
316
347
 
317
348
 
@@ -374,29 +405,27 @@ function Tooltip({
374
405
  );
375
406
  }
376
407
 
377
- // src/chatbot-sheet.tsx
408
+ // src/components/chatbot-sheet.tsx
378
409
 
379
- var ChatbotSheet = _react.forwardRef.call(void 0,
380
- (_a, ref) => {
381
- var _b = _a, { sheetStyle } = _b, props = __objRest(_b, ["sheetStyle"]);
382
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Sheet, { children: [
383
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
384
- Tooltip,
385
- {
386
- side: "top",
387
- align: "end",
388
- content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
389
- trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EcforceAiIcon, {}) })
390
- }
391
- ),
392
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetContent, { style: sheetStyle, children: [
393
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTitle, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
394
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetDescription, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
395
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AgentFrame, __spreadProps(__spreadValues({}, props), { ref }))
396
- ] })
397
- ] });
398
- }
399
- );
410
+ function ChatbotSheet(_a) {
411
+ var _b = _a, { sheetStyle } = _b, props = __objRest(_b, ["sheetStyle"]);
412
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Sheet, { children: [
413
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
414
+ Tooltip,
415
+ {
416
+ side: "top",
417
+ align: "end",
418
+ content: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046",
419
+ trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTrigger, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EcforceAiIcon, {}) })
420
+ }
421
+ ),
422
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetContent, { style: sheetStyle, children: [
423
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetTitle, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
424
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetDescription, { children: "AI\u306B\u8CEA\u554F\u3057\u3066\u307F\u307E\u3057\u3087\u3046" }),
425
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatbotFrame, __spreadValues({}, props))
426
+ ] })
427
+ ] });
428
+ }
400
429
  function EcforceAiIcon() {
401
430
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
402
431
  "svg",
@@ -431,4 +460,5 @@ function EcforceAiIcon() {
431
460
 
432
461
 
433
462
 
434
- exports.AgentFrame = AgentFrame; exports.ChatbotProvider = ChatbotProvider; exports.ChatbotSheet = ChatbotSheet; exports.Sheet = Sheet; exports.SheetClose = SheetClose; exports.SheetContent = SheetContent; exports.SheetDescription = SheetDescription; exports.SheetFooter = SheetFooter; exports.SheetHeader = SheetHeader; exports.SheetTitle = SheetTitle; exports.SheetTrigger = SheetTrigger; exports.Tooltip = Tooltip; exports.useChatbot = useChatbot;
463
+
464
+ exports.ChatbotFrame = ChatbotFrame; exports.ChatbotProvider = ChatbotProvider; exports.ChatbotSheet = ChatbotSheet; exports.Sheet = Sheet; exports.SheetClose = SheetClose; exports.SheetContent = SheetContent; exports.SheetDescription = SheetDescription; exports.SheetFooter = SheetFooter; exports.SheetHeader = SheetHeader; exports.SheetTitle = SheetTitle; exports.SheetTrigger = SheetTrigger; exports.Tooltip = Tooltip; exports.useChatbot = useChatbot; exports.useChatbotConfig = useChatbotConfig;