@aipanel/ui 1.2.0-beta.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 (153) hide show
  1. package/es/AI-panel-widget/composables/use-inspector.d.ts +52 -0
  2. package/es/AI-panel-widget/composables/use-inspector.mjs +437 -0
  3. package/es/AI-panel-widget/composables/use-persist-state.d.ts +32 -0
  4. package/es/AI-panel-widget/composables/use-persist-state.mjs +83 -0
  5. package/es/AI-panel-widget/composables/use-selection.d.ts +19 -0
  6. package/es/AI-panel-widget/composables/use-selection.mjs +112 -0
  7. package/es/AI-panel-widget/composables/use-session.d.ts +16 -0
  8. package/es/AI-panel-widget/composables/use-session.mjs +47 -0
  9. package/es/AI-panel-widget/composables/use-split.d.ts +30 -0
  10. package/es/AI-panel-widget/composables/use-split.mjs +133 -0
  11. package/es/AI-panel-widget/composables/use-widget.d.ts +27 -0
  12. package/es/AI-panel-widget/composables/use-widget.mjs +78 -0
  13. package/es/AI-panel-widget/index.d.ts +5 -0
  14. package/es/AI-panel-widget/index.mjs +9 -0
  15. package/es/AI-panel-widget/src/assets/logo.svg +13 -0
  16. package/es/AI-panel-widget/src/components/AIPanelLogo-sfc.css +1 -0
  17. package/es/AI-panel-widget/src/components/AIPanelLogo.vue.d.ts +8 -0
  18. package/es/AI-panel-widget/src/components/AIPanelLogo.vue.mjs +40 -0
  19. package/es/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -0
  20. package/es/AI-panel-widget/src/components/ChatPanel.vue.d.ts +179 -0
  21. package/es/AI-panel-widget/src/components/ChatPanel.vue.mjs +308 -0
  22. package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble-sfc.css +1 -0
  23. package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.d.ts +44 -0
  24. package/es/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.mjs +311 -0
  25. package/es/AI-panel-widget/src/components/FloatingBubble/index.d.ts +3 -0
  26. package/es/AI-panel-widget/src/components/FloatingBubble/index.mjs +5 -0
  27. package/es/AI-panel-widget/src/components/FloatingBubble/types.d.ts +24 -0
  28. package/es/AI-panel-widget/src/components/FloatingBubble/types.mjs +0 -0
  29. package/es/AI-panel-widget/src/components/Frame-sfc.css +1 -0
  30. package/es/AI-panel-widget/src/components/Frame.vue.d.ts +22 -0
  31. package/es/AI-panel-widget/src/components/Frame.vue.mjs +143 -0
  32. package/es/AI-panel-widget/src/components/Header-sfc.css +1 -0
  33. package/es/AI-panel-widget/src/components/Header.vue.d.ts +27 -0
  34. package/es/AI-panel-widget/src/components/Header.vue.mjs +683 -0
  35. package/es/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -0
  36. package/es/AI-panel-widget/src/components/ResizeHandle.vue.d.ts +22 -0
  37. package/es/AI-panel-widget/src/components/ResizeHandle.vue.mjs +79 -0
  38. package/es/AI-panel-widget/src/components/SelectHint-sfc.css +1 -0
  39. package/es/AI-panel-widget/src/components/SelectHint.vue.d.ts +3 -0
  40. package/es/AI-panel-widget/src/components/SelectHint.vue.mjs +40 -0
  41. package/es/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -0
  42. package/es/AI-panel-widget/src/components/SelectedBubbles.vue.d.ts +3 -0
  43. package/es/AI-panel-widget/src/components/SelectedBubbles.vue.mjs +84 -0
  44. package/es/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -0
  45. package/es/AI-panel-widget/src/components/SelectedNodes.vue.d.ts +3 -0
  46. package/es/AI-panel-widget/src/components/SelectedNodes.vue.mjs +103 -0
  47. package/es/AI-panel-widget/src/components/SessionList-sfc.css +1 -0
  48. package/es/AI-panel-widget/src/components/SessionList.vue.d.ts +13 -0
  49. package/es/AI-panel-widget/src/components/SessionList.vue.mjs +222 -0
  50. package/es/AI-panel-widget/src/components/SplitTrigger-sfc.css +1 -0
  51. package/es/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +18 -0
  52. package/es/AI-panel-widget/src/components/SplitTrigger.vue.mjs +112 -0
  53. package/es/AI-panel-widget/src/components/Trigger-sfc.css +1 -0
  54. package/es/AI-panel-widget/src/components/Trigger.vue.d.ts +28 -0
  55. package/es/AI-panel-widget/src/components/Trigger.vue.mjs +74 -0
  56. package/es/AI-panel-widget/src/context.d.ts +67 -0
  57. package/es/AI-panel-widget/src/context.mjs +16 -0
  58. package/es/AI-panel-widget/src/index-sfc.css +1 -0
  59. package/es/AI-panel-widget/src/index.vue.d.ts +69 -0
  60. package/es/AI-panel-widget/src/index.vue.mjs +782 -0
  61. package/es/AI-panel-widget/src/types.d.ts +2 -0
  62. package/es/AI-panel-widget/src/types.mjs +0 -0
  63. package/es/AI-panel-widget/style/index-pure.d.ts +0 -0
  64. package/es/AI-panel-widget/style/index-pure.mjs +0 -0
  65. package/es/AI-panel-widget/style/index.d.ts +0 -0
  66. package/es/AI-panel-widget/style/index.mjs +0 -0
  67. package/es/AI-panel-widget/style/less-pure.d.ts +0 -0
  68. package/es/AI-panel-widget/style/less-pure.mjs +0 -0
  69. package/es/AI-panel-widget/style/less.d.ts +0 -0
  70. package/es/AI-panel-widget/style/less.mjs +0 -0
  71. package/es/env.d.ts +15 -0
  72. package/es/index.d.ts +7 -0
  73. package/es/index.mjs +22 -0
  74. package/es/setup.d.ts +1 -0
  75. package/es/setup.mjs +4 -0
  76. package/lib/AI-panel-widget/composables/use-inspector.cjs +466 -0
  77. package/lib/AI-panel-widget/composables/use-inspector.d.ts +52 -0
  78. package/lib/AI-panel-widget/composables/use-persist-state.cjs +102 -0
  79. package/lib/AI-panel-widget/composables/use-persist-state.d.ts +32 -0
  80. package/lib/AI-panel-widget/composables/use-selection.cjs +131 -0
  81. package/lib/AI-panel-widget/composables/use-selection.d.ts +19 -0
  82. package/lib/AI-panel-widget/composables/use-session.cjs +66 -0
  83. package/lib/AI-panel-widget/composables/use-session.d.ts +16 -0
  84. package/lib/AI-panel-widget/composables/use-split.cjs +152 -0
  85. package/lib/AI-panel-widget/composables/use-split.d.ts +30 -0
  86. package/lib/AI-panel-widget/composables/use-widget.cjs +97 -0
  87. package/lib/AI-panel-widget/composables/use-widget.d.ts +27 -0
  88. package/lib/AI-panel-widget/index.cjs +39 -0
  89. package/lib/AI-panel-widget/index.d.ts +5 -0
  90. package/lib/AI-panel-widget/src/assets/logo.svg +13 -0
  91. package/lib/AI-panel-widget/src/components/AIPanelLogo-sfc.css +1 -0
  92. package/lib/AI-panel-widget/src/components/AIPanelLogo.vue.cjs +69 -0
  93. package/lib/AI-panel-widget/src/components/AIPanelLogo.vue.d.ts +8 -0
  94. package/lib/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -0
  95. package/lib/AI-panel-widget/src/components/ChatPanel.vue.cjs +337 -0
  96. package/lib/AI-panel-widget/src/components/ChatPanel.vue.d.ts +179 -0
  97. package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble-sfc.css +1 -0
  98. package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.cjs +330 -0
  99. package/lib/AI-panel-widget/src/components/FloatingBubble/FloatingBubble.vue.d.ts +44 -0
  100. package/lib/AI-panel-widget/src/components/FloatingBubble/index.cjs +35 -0
  101. package/lib/AI-panel-widget/src/components/FloatingBubble/index.d.ts +3 -0
  102. package/lib/AI-panel-widget/src/components/FloatingBubble/types.cjs +15 -0
  103. package/lib/AI-panel-widget/src/components/FloatingBubble/types.d.ts +24 -0
  104. package/lib/AI-panel-widget/src/components/Frame-sfc.css +1 -0
  105. package/lib/AI-panel-widget/src/components/Frame.vue.cjs +162 -0
  106. package/lib/AI-panel-widget/src/components/Frame.vue.d.ts +22 -0
  107. package/lib/AI-panel-widget/src/components/Header-sfc.css +1 -0
  108. package/lib/AI-panel-widget/src/components/Header.vue.cjs +702 -0
  109. package/lib/AI-panel-widget/src/components/Header.vue.d.ts +27 -0
  110. package/lib/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -0
  111. package/lib/AI-panel-widget/src/components/ResizeHandle.vue.cjs +98 -0
  112. package/lib/AI-panel-widget/src/components/ResizeHandle.vue.d.ts +22 -0
  113. package/lib/AI-panel-widget/src/components/SelectHint-sfc.css +1 -0
  114. package/lib/AI-panel-widget/src/components/SelectHint.vue.cjs +59 -0
  115. package/lib/AI-panel-widget/src/components/SelectHint.vue.d.ts +3 -0
  116. package/lib/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -0
  117. package/lib/AI-panel-widget/src/components/SelectedBubbles.vue.cjs +103 -0
  118. package/lib/AI-panel-widget/src/components/SelectedBubbles.vue.d.ts +3 -0
  119. package/lib/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -0
  120. package/lib/AI-panel-widget/src/components/SelectedNodes.vue.cjs +122 -0
  121. package/lib/AI-panel-widget/src/components/SelectedNodes.vue.d.ts +3 -0
  122. package/lib/AI-panel-widget/src/components/SessionList-sfc.css +1 -0
  123. package/lib/AI-panel-widget/src/components/SessionList.vue.cjs +241 -0
  124. package/lib/AI-panel-widget/src/components/SessionList.vue.d.ts +13 -0
  125. package/lib/AI-panel-widget/src/components/SplitTrigger-sfc.css +1 -0
  126. package/lib/AI-panel-widget/src/components/SplitTrigger.vue.cjs +131 -0
  127. package/lib/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +18 -0
  128. package/lib/AI-panel-widget/src/components/Trigger-sfc.css +1 -0
  129. package/lib/AI-panel-widget/src/components/Trigger.vue.cjs +103 -0
  130. package/lib/AI-panel-widget/src/components/Trigger.vue.d.ts +28 -0
  131. package/lib/AI-panel-widget/src/context.cjs +35 -0
  132. package/lib/AI-panel-widget/src/context.d.ts +67 -0
  133. package/lib/AI-panel-widget/src/index-sfc.css +1 -0
  134. package/lib/AI-panel-widget/src/index.vue.cjs +811 -0
  135. package/lib/AI-panel-widget/src/index.vue.d.ts +69 -0
  136. package/lib/AI-panel-widget/src/types.cjs +15 -0
  137. package/lib/AI-panel-widget/src/types.d.ts +2 -0
  138. package/lib/AI-panel-widget/style/index-pure.cjs +0 -0
  139. package/lib/AI-panel-widget/style/index-pure.d.ts +0 -0
  140. package/lib/AI-panel-widget/style/index.cjs +0 -0
  141. package/lib/AI-panel-widget/style/index.d.ts +0 -0
  142. package/lib/AI-panel-widget/style/less-pure.cjs +0 -0
  143. package/lib/AI-panel-widget/style/less-pure.d.ts +0 -0
  144. package/lib/AI-panel-widget/style/less.cjs +0 -0
  145. package/lib/AI-panel-widget/style/less.d.ts +0 -0
  146. package/lib/env.d.ts +15 -0
  147. package/lib/index.cjs +42 -0
  148. package/lib/index.css +0 -0
  149. package/lib/index.d.ts +7 -0
  150. package/lib/index.less +0 -0
  151. package/lib/setup.cjs +23 -0
  152. package/lib/setup.d.ts +1 -0
  153. package/package.json +42 -0
@@ -0,0 +1,39 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AI_panel_widget_exports = {};
30
+ __export(AI_panel_widget_exports, {
31
+ AIPanelLogo: () => import_AIPanelLogo_vue.default,
32
+ AIPanelWidget: () => import_index_vue.default,
33
+ default: () => AI_panel_widget_default
34
+ });
35
+ module.exports = __toCommonJS(AI_panel_widget_exports);
36
+ var import_index_vue = __toESM(require("./src/index.vue.cjs"));
37
+ var import_AIPanelLogo_vue = __toESM(require("./src/components/AIPanelLogo.vue.cjs"));
38
+ __reExport(AI_panel_widget_exports, require("./src/types.cjs"), module.exports);
39
+ var AI_panel_widget_default = import_index_vue.default;
@@ -0,0 +1,5 @@
1
+ import AIPanelWidget from "./src/index.vue";
2
+ import AIPanelLogo from "./src/components/AIPanelLogo.vue";
3
+ export { AIPanelWidget, AIPanelLogo };
4
+ export default AIPanelWidget;
5
+ export * from "./src/types";
@@ -0,0 +1,13 @@
1
+ <svg t="1775402599580" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5390" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%">
2
+ <defs>
3
+ <linearGradient id="aipanel-logo-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#667eea"/>
5
+ <stop offset="100%" style="stop-color:#764ba2"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <g transform="rotate(180 512 512)">
9
+ <path d="M512 981.33H85.34c-15.85 0-30.38-8.77-37.77-22.81a42.624 42.624 0 0 1 2.6-44.02L135 791.08C75.25 710.5 42.67 612.6 42.67 512 42.67 253.21 253.21 42.67 512 42.67S981.34 253.21 981.34 512 770.8 981.33 512 981.33zM166.44 896H512c211.73 0 384-172.27 384-384S723.73 128 512 128 128 300.27 128 512c0 91.29 32.83 179.9 92.46 249.46 12.58 14.69 13.73 36 2.77 51.94L166.44 896z" fill="url(#aipanel-logo-gradient)" p-id="5391"/>
10
+ <path d="M384 448m-64 0a64 64 0 1 0 128 0 64 64 0 1 0 -128 0Z" fill="url(#aipanel-logo-gradient)" p-id="5392"/>
11
+ <path d="M640 448m-64 0a64 64 0 1 0 128 0a64 64 0 1 0 -128 0Z" fill="url(#aipanel-logo-gradient)" p-id="5393"/>
12
+ </g>
13
+ </svg>
@@ -0,0 +1 @@
1
+ .aipanel-logo svg{display:block;width:100%;height:100%}
@@ -0,0 +1,69 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var AIPanelLogo_vue_exports = {};
29
+ __export(AIPanelLogo_vue_exports, {
30
+ default: () => AIPanelLogo_vue_default
31
+ });
32
+ module.exports = __toCommonJS(AIPanelLogo_vue_exports);
33
+ var import_AIPanelLogo_sfc = require("./AIPanelLogo-sfc.css");
34
+ var import_vue = require("vue");
35
+ var import_vue2 = require("vue");
36
+ var import_logo = __toESM(require("../assets/logo.svg?raw"));
37
+ var import_vue3 = require("vue");
38
+ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
39
+ __name: "AIPanelLogo",
40
+ props: {
41
+ size: { type: [String, Number], required: false, default: "100%" }
42
+ },
43
+ setup(__props, { expose: __expose }) {
44
+ __expose();
45
+ const props = __props;
46
+ const baseId = (0, import_vue2.useId)();
47
+ const gradientId = `aipanel-logo-gradient-${baseId}`;
48
+ const rendered = (0, import_vue2.computed)(
49
+ () => import_logo.default.replace('id="aipanel-logo-gradient"', `id="${gradientId}"`).replace(/url\(#aipanel-logo-gradient\)/g, `url(#${gradientId})`)
50
+ );
51
+ const sizeStyle = (0, import_vue2.computed)(() => {
52
+ const value = typeof props.size === "number" ? `${props.size}px` : props.size;
53
+ return { width: value, height: value };
54
+ });
55
+ const __returned__ = { props, baseId, gradientId, rendered, sizeStyle };
56
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
57
+ return __returned__;
58
+ }
59
+ });
60
+ const _hoisted_1 = ["innerHTML"];
61
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
62
+ return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("span", {
63
+ class: "aipanel-logo",
64
+ style: (0, import_vue3.normalizeStyle)([{ display: "inline-block", lineHeight: 0 }, $setup.sizeStyle]),
65
+ innerHTML: $setup.rendered
66
+ }, null, 12, _hoisted_1);
67
+ }
68
+ __vue_sfc__.render = __vue_render__;
69
+ var AIPanelLogo_vue_default = __vue_sfc__;
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ size?: string | number;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
5
+ size: string | number;
6
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1 @@
1
+ .aipanel-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--ap-bg-main);border-radius:16px;box-shadow:var(--ap-shadow-lg);overflow:hidden;display:flex;flex-direction:column;z-index:99999}.aipanel-chat:not(.split-mode){opacity:0;visibility:hidden;transition:all .3s ease;transform:translate3d(var(---animationOrigin\.x),var(---animationOrigin\.y),0) scale(.95)}.aipanel-chat.split-mode{position:fixed;top:0;bottom:0;height:100vh;max-height:100vh;border-radius:0;box-shadow:var(--ap-shadow-lg);overflow:visible;opacity:1;visibility:visible;transition:transform .3s ease}.aipanel-chat.split-mode.split-right{right:0;border-left:1px solid var(--ap-border-primary);transform:translate(100%)}.aipanel-chat.split-mode.split-left{left:0;border-right:1px solid var(--ap-border-primary);transform:translate(-100%)}.aipanel-chat.split-mode .aipanel-chat-content{overflow:hidden;flex:1}.aipanel-chat.split-mode.open{transform:translate(0)}.aipanel-chat.split-mode.dragging{transition:none}.aipanel-chat.dragging .aipanel-iframe{pointer-events:none}.aipanel-chat.extension-mode{position:static;width:100%;height:100%;bottom:auto;left:auto;right:auto;border-radius:0;border-left:none;border-right:none;max-height:none;box-shadow:none;transform:none;opacity:1;visibility:visible}.aipanel-chat:not(.split-mode){opacity:0;visibility:hidden;transition:all .3s ease}.aipanel-chat:not(.split-mode).open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.aipanel-chat.no-transition,.aipanel-chat.no-transition.open{transition:none!important}.aipanel-chat.minimized:not(.split-mode){width:320px;height:320px}.aipanel-chat.minimized:not(.split-mode) .aipanel-iframe-container{margin-top:-146px}.aipanel-chat-content{display:flex;flex:1;overflow:hidden}.aipanel-session-empty{padding:24px;text-align:center;color:var(--ap-text-placeholder);font-size:14px}.aipanel-split-toggle-btn{position:absolute;left:-21px;top:50%;transform:translateY(-50%);width:20px;height:48px;background:#fff;border:none;border-radius:8px 0 0 8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#667eea;box-shadow:0 4px 12px #667eea66;transition:all .3s ease;z-index:5;transform-origin:right center}.aipanel-split-toggle-btn.split-left{left:auto;right:-21px;border-radius:0 8px 8px 0;transform-origin:left center}.aipanel-split-toggle-btn:hover{transform:translateY(-50%) scale(1.1);box-shadow:0 6px 16px #667eea80}.aipanel-split-toggle-btn.split-left:hover{transform:translateY(-50%) scale(1.1)}.aipanel-split-toggle-btn.aipanel-theme-dark{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px #667eea4d}.aipanel-split-toggle-btn.aipanel-theme-dark:before{content:"";position:absolute;inset:-2px 0 -2px -2px;border-radius:8px 0 0 8px;background:linear-gradient(135deg,#8b9cf5,#9d6bc7);z-index:-1}.aipanel-split-toggle-btn.aipanel-theme-dark.split-left:before{left:0;right:-2px;border-radius:0 8px 8px 0}.aipanel-split-toggle-btn.aipanel-theme-dark:hover{box-shadow:0 6px 16px #667eea66}.aipanel-split-toggle-btn.thinking{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;animation:split-thinking-glow 2s ease-in-out infinite,split-thinking-pulse 2s ease-in-out infinite;box-shadow:0 0 20px #667eea99,0 0 40px #764ba266,0 0 60px #667eea33}.aipanel-split-toggle-btn.thinking:before{content:"";position:absolute;inset:-2px 0 -2px -2px;border-radius:8px 0 0 8px;background:linear-gradient(135deg,#8b9cf5,#9d6bc7);z-index:-1}.aipanel-split-toggle-btn.thinking.split-left:before{left:0;right:-2px;border-radius:0 8px 8px 0}.aipanel-split-toggle-btn.thinking:after{content:"";position:absolute;inset:-3px -1px -3px -3px;border-radius:8px 0 0 8px;background:conic-gradient(from 180deg,transparent,rgba(102,126,234,.3),transparent,rgba(118,75,162,.3),transparent);z-index:-2;animation:split-thinking-rotate 2s linear infinite reverse;filter:blur(8px)}.aipanel-split-toggle-btn.thinking.split-left:after{left:-1px;right:-3px;border-radius:0 8px 8px 0}@keyframes split-thinking-glow{0%,to{box-shadow:0 0 20px #667eea99,0 0 40px #764ba266,0 0 60px #667eea33}50%{box-shadow:0 0 30px #667eeacc,0 0 60px #764ba299,0 0 90px #667eea4d}}@keyframes split-thinking-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes split-thinking-pulse{0%,to{transform:translateY(-50%) scale(1)}50%{transform:translateY(-50%) scale(.92)}}.aipanel-split-toggle-icon{display:flex;align-items:center;justify-content:center;transition:transform .25s ease}.aipanel-split-toggle-btn:hover .aipanel-split-toggle-icon{transform:scale(1.1)}
@@ -0,0 +1,337 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var ChatPanel_vue_exports = {};
29
+ __export(ChatPanel_vue_exports, {
30
+ default: () => ChatPanel_vue_default
31
+ });
32
+ module.exports = __toCommonJS(ChatPanel_vue_exports);
33
+ var import_ChatPanel_sfc = require("./ChatPanel-sfc.css");
34
+ var import_vue = require("vue");
35
+ var import_vue2 = require("vue");
36
+ var import_Frame_vue = __toESM(require("./Frame.vue.cjs"));
37
+ var import_Header_vue = __toESM(require("./Header.vue.cjs"));
38
+ var import_SessionList_vue = __toESM(require("./SessionList.vue.cjs"));
39
+ var import_SelectedNodes_vue = __toESM(require("./SelectedNodes.vue.cjs"));
40
+ var import_ResizeHandle_vue = __toESM(require("./ResizeHandle.vue.cjs"));
41
+ var import_vue3 = require("vue");
42
+ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
43
+ ...{
44
+ name: "ChatPanel"
45
+ },
46
+ __name: "ChatPanel",
47
+ props: {
48
+ mode: { type: String, required: false, default: "bubble" },
49
+ open: { type: Boolean, required: false, default: false },
50
+ minimized: { type: Boolean, required: false, default: false },
51
+ positionStyle: { type: Object, required: false, default: () => ({}) },
52
+ animationOrigin: { type: Object, required: false, default: () => ({ x: "20px", y: "20px" }) },
53
+ panelWidth: { type: Number, required: false, default: 500 },
54
+ resizable: { type: Boolean, required: false, default: true },
55
+ minWidth: { type: Number, required: false, default: 400 },
56
+ maxWidth: { type: Number, required: false, default: 800 },
57
+ noTransition: { type: Boolean, required: false, default: false },
58
+ dragging: { type: Boolean, required: false, default: false },
59
+ thinking: { type: Boolean, required: false, default: false },
60
+ resolvedTheme: { type: String, required: false, default: "light" },
61
+ splitPosition: { type: String, required: false, default: "right" },
62
+ extension: { type: Boolean, required: false, default: false }
63
+ },
64
+ emits: ["resize", "resize-start", "resize-end", "toggle"],
65
+ setup(__props, { expose: __expose, emit: __emit }) {
66
+ (0, import_vue.useCssVars)((_ctx) => ({
67
+ "-animationOrigin.x": _ctx.animationOrigin.x,
68
+ "-animationOrigin.y": _ctx.animationOrigin.y
69
+ }));
70
+ const props = __props;
71
+ const emit = __emit;
72
+ const slots = (0, import_vue2.useSlots)();
73
+ const frameRef = (0, import_vue2.ref)(null);
74
+ const sendMessageToIframe = (type, data) => {
75
+ frameRef.value?.sendMessageToIframe(type, data);
76
+ };
77
+ __expose({
78
+ sendMessageToIframe,
79
+ frameRef
80
+ });
81
+ const handleResizeStart = () => {
82
+ emit("resize-start");
83
+ };
84
+ const handleResize = (width) => {
85
+ emit("resize", width);
86
+ };
87
+ const handleResizeEnd = () => {
88
+ emit("resize-end");
89
+ };
90
+ const handleToggle = () => {
91
+ emit("toggle");
92
+ };
93
+ const panelStyle = (0, import_vue2.computed)(() => {
94
+ if (props.extension) {
95
+ return {};
96
+ }
97
+ if (props.mode === "split") {
98
+ return {
99
+ width: `${props.panelWidth}px`
100
+ };
101
+ }
102
+ return props.positionStyle;
103
+ });
104
+ const panelClasses = (0, import_vue2.computed)(() => [
105
+ "aipanel-chat",
106
+ {
107
+ open: props.open,
108
+ minimized: props.minimized,
109
+ dragging: props.dragging,
110
+ "no-transition": props.noTransition,
111
+ "split-mode": props.mode === "split",
112
+ "split-left": props.mode === "split" && props.splitPosition === "left" && !props.extension,
113
+ "split-right": props.mode === "split" && props.splitPosition === "right" && !props.extension,
114
+ "extension-mode": props.extension
115
+ }
116
+ ]);
117
+ const __returned__ = { props, emit, slots, frameRef, sendMessageToIframe, handleResizeStart, handleResize, handleResizeEnd, handleToggle, panelStyle, panelClasses, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SessionList: import_SessionList_vue.default, SelectedNodes: import_SelectedNodes_vue.default, ResizeHandle: import_ResizeHandle_vue.default };
118
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
119
+ return __returned__;
120
+ }
121
+ });
122
+ const _hoisted_1 = ["aria-expanded"];
123
+ const _hoisted_2 = { class: "aipanel-split-toggle-icon" };
124
+ const _hoisted_3 = {
125
+ key: 0,
126
+ viewBox: "0 0 24 24",
127
+ width: "16",
128
+ height: "16",
129
+ fill: "none",
130
+ stroke: "currentColor",
131
+ "stroke-width": "2"
132
+ };
133
+ const _hoisted_4 = {
134
+ key: 1,
135
+ viewBox: "0 0 24 24",
136
+ width: "16",
137
+ height: "16",
138
+ fill: "none",
139
+ stroke: "currentColor",
140
+ "stroke-width": "2"
141
+ };
142
+ const _hoisted_5 = {
143
+ key: 2,
144
+ viewBox: "0 0 24 24",
145
+ width: "16",
146
+ height: "16",
147
+ fill: "none",
148
+ stroke: "currentColor",
149
+ "stroke-width": "2"
150
+ };
151
+ const _hoisted_6 = {
152
+ key: 3,
153
+ viewBox: "0 0 24 24",
154
+ width: "16",
155
+ height: "16",
156
+ fill: "none",
157
+ stroke: "currentColor",
158
+ "stroke-width": "2"
159
+ };
160
+ const _hoisted_7 = { class: "aipanel-chat-content" };
161
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
162
+ return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
163
+ "div",
164
+ {
165
+ class: (0, import_vue3.normalizeClass)($setup.panelClasses),
166
+ style: (0, import_vue3.normalizeStyle)($setup.panelStyle)
167
+ },
168
+ [
169
+ $props.mode === "split" && $props.resizable && $props.open ? ((0, import_vue3.openBlock)(), (0, import_vue3.createBlock)($setup["ResizeHandle"], {
170
+ key: 0,
171
+ width: $props.panelWidth,
172
+ "min-width": $props.minWidth,
173
+ "max-width": $props.maxWidth,
174
+ position: $props.splitPosition,
175
+ onResize: $setup.handleResize,
176
+ onResizeStart: $setup.handleResizeStart,
177
+ onResizeEnd: $setup.handleResizeEnd
178
+ }, null, 8, ["width", "min-width", "max-width", "position"])) : (0, import_vue3.createCommentVNode)("v-if", true),
179
+ $props.mode === "split" && $props.resizable ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("button", {
180
+ key: 1,
181
+ type: "button",
182
+ class: (0, import_vue3.normalizeClass)(["aipanel-split-toggle-btn", { open: $setup.props.open, thinking: $setup.props.thinking, "aipanel-theme-dark": $props.resolvedTheme === "dark", "split-left": $props.splitPosition === "left" }]),
183
+ "aria-expanded": $props.open,
184
+ "aria-label": "\u5207\u6362\u9762\u677F",
185
+ onClick: $setup.handleToggle
186
+ }, [
187
+ (0, import_vue3.createElementVNode)("span", _hoisted_2, [
188
+ $props.open && $props.splitPosition === "right" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_3, [..._cache[0] || (_cache[0] = [
189
+ (0, import_vue3.createElementVNode)(
190
+ "path",
191
+ {
192
+ d: "M9 18l6-6-6-6",
193
+ "stroke-linecap": "round",
194
+ "stroke-linejoin": "round"
195
+ },
196
+ null,
197
+ -1
198
+ /* CACHED */
199
+ )
200
+ ])])) : (0, import_vue3.createCommentVNode)("v-if", true),
201
+ !$props.open && $props.splitPosition === "right" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
202
+ (0, import_vue3.createElementVNode)(
203
+ "path",
204
+ {
205
+ d: "M15 18l-6-6 6-6",
206
+ "stroke-linecap": "round",
207
+ "stroke-linejoin": "round"
208
+ },
209
+ null,
210
+ -1
211
+ /* CACHED */
212
+ )
213
+ ])])) : (0, import_vue3.createCommentVNode)("v-if", true),
214
+ $props.open && $props.splitPosition === "left" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_5, [..._cache[2] || (_cache[2] = [
215
+ (0, import_vue3.createElementVNode)(
216
+ "path",
217
+ {
218
+ d: "M15 18l-6-6 6-6",
219
+ "stroke-linecap": "round",
220
+ "stroke-linejoin": "round"
221
+ },
222
+ null,
223
+ -1
224
+ /* CACHED */
225
+ )
226
+ ])])) : (0, import_vue3.createCommentVNode)("v-if", true),
227
+ !$props.open && $props.splitPosition === "left" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_6, [..._cache[3] || (_cache[3] = [
228
+ (0, import_vue3.createElementVNode)(
229
+ "path",
230
+ {
231
+ d: "M9 18l6-6-6-6",
232
+ "stroke-linecap": "round",
233
+ "stroke-linejoin": "round"
234
+ },
235
+ null,
236
+ -1
237
+ /* CACHED */
238
+ )
239
+ ])])) : (0, import_vue3.createCommentVNode)("v-if", true)
240
+ ])
241
+ ], 10, _hoisted_1)) : (0, import_vue3.createCommentVNode)("v-if", true),
242
+ (0, import_vue3.createVNode)(
243
+ $setup["Header"],
244
+ null,
245
+ (0, import_vue3.createSlots)({
246
+ _: 2
247
+ /* DYNAMIC */
248
+ }, [
249
+ $setup.slots["session-toggle-icon"] ? {
250
+ name: "session-toggle-icon",
251
+ fn: (0, import_vue3.withCtx)(() => [
252
+ (0, import_vue3.renderSlot)(_ctx.$slots, "session-toggle-icon")
253
+ ]),
254
+ key: "0"
255
+ } : void 0,
256
+ $setup.slots["select-icon"] ? {
257
+ name: "select-icon",
258
+ fn: (0, import_vue3.withCtx)(() => [
259
+ (0, import_vue3.renderSlot)(_ctx.$slots, "select-icon")
260
+ ]),
261
+ key: "1"
262
+ } : void 0,
263
+ $setup.slots["close-icon"] ? {
264
+ name: "close-icon",
265
+ fn: (0, import_vue3.withCtx)(() => [
266
+ (0, import_vue3.renderSlot)(_ctx.$slots, "close-icon")
267
+ ]),
268
+ key: "2"
269
+ } : void 0
270
+ ]),
271
+ 1024
272
+ /* DYNAMIC_SLOTS */
273
+ ),
274
+ (0, import_vue3.createElementVNode)("div", _hoisted_7, [
275
+ (0, import_vue3.createVNode)($setup["SessionList"], null, {
276
+ empty: (0, import_vue3.withCtx)(() => [
277
+ (0, import_vue3.renderSlot)(_ctx.$slots, "sessions-empty", {}, () => [
278
+ _cache[4] || (_cache[4] = (0, import_vue3.createElementVNode)(
279
+ "div",
280
+ { class: "aipanel-session-empty" },
281
+ "\u6682\u65E0\u4F1A\u8BDD",
282
+ -1
283
+ /* CACHED */
284
+ ))
285
+ ])
286
+ ]),
287
+ _: 3
288
+ /* FORWARDED */
289
+ }),
290
+ (0, import_vue3.createVNode)(
291
+ $setup["Frame"],
292
+ { ref: "frameRef" },
293
+ (0, import_vue3.createSlots)({
294
+ _: 2
295
+ /* DYNAMIC */
296
+ }, [
297
+ $setup.slots["empty-state"] ? {
298
+ name: "empty-state",
299
+ fn: (0, import_vue3.withCtx)(() => [
300
+ (0, import_vue3.renderSlot)(_ctx.$slots, "empty-state")
301
+ ]),
302
+ key: "0"
303
+ } : void 0,
304
+ $setup.slots.loading ? {
305
+ name: "loading",
306
+ fn: (0, import_vue3.withCtx)(() => [
307
+ (0, import_vue3.renderSlot)(_ctx.$slots, "loading")
308
+ ]),
309
+ key: "1"
310
+ } : void 0,
311
+ $setup.slots.error ? {
312
+ name: "error",
313
+ fn: (0, import_vue3.withCtx)(() => [
314
+ (0, import_vue3.renderSlot)(_ctx.$slots, "error")
315
+ ]),
316
+ key: "2"
317
+ } : void 0,
318
+ $setup.slots.content ? {
319
+ name: "content",
320
+ fn: (0, import_vue3.withCtx)(() => [
321
+ (0, import_vue3.renderSlot)(_ctx.$slots, "content")
322
+ ]),
323
+ key: "3"
324
+ } : void 0
325
+ ]),
326
+ 1536
327
+ /* NEED_PATCH, DYNAMIC_SLOTS */
328
+ ),
329
+ (0, import_vue3.createVNode)($setup["SelectedNodes"])
330
+ ])
331
+ ],
332
+ 6
333
+ /* CLASS, STYLE */
334
+ );
335
+ }
336
+ __vue_sfc__.render = __vue_render__;
337
+ var ChatPanel_vue_default = __vue_sfc__;
@@ -0,0 +1,179 @@
1
+ type __VLS_Props = {
2
+ mode?: "bubble" | "split";
3
+ open?: boolean;
4
+ minimized?: boolean;
5
+ positionStyle?: Record<string, string>;
6
+ animationOrigin?: {
7
+ x: string;
8
+ y: string;
9
+ };
10
+ panelWidth?: number;
11
+ resizable?: boolean;
12
+ minWidth?: number;
13
+ maxWidth?: number;
14
+ noTransition?: boolean;
15
+ dragging?: boolean;
16
+ thinking?: boolean;
17
+ resolvedTheme?: "light" | "dark";
18
+ splitPosition?: "left" | "right";
19
+ extension?: boolean;
20
+ };
21
+ declare var __VLS_17: {}, __VLS_20: {}, __VLS_23: {}, __VLS_32: {}, __VLS_43: {}, __VLS_46: {}, __VLS_49: {}, __VLS_52: {};
22
+ type __VLS_Slots = {} & {
23
+ 'session-toggle-icon'?: (props: typeof __VLS_17) => any;
24
+ } & {
25
+ 'select-icon'?: (props: typeof __VLS_20) => any;
26
+ } & {
27
+ 'close-icon'?: (props: typeof __VLS_23) => any;
28
+ } & {
29
+ 'sessions-empty'?: (props: typeof __VLS_32) => any;
30
+ } & {
31
+ 'empty-state'?: (props: typeof __VLS_43) => any;
32
+ } & {
33
+ loading?: (props: typeof __VLS_46) => any;
34
+ } & {
35
+ error?: (props: typeof __VLS_49) => any;
36
+ } & {
37
+ content?: (props: typeof __VLS_52) => any;
38
+ };
39
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
40
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
41
+ frameRef: import("vue").Ref<({
42
+ $: import("vue").ComponentInternalInstance;
43
+ $data: {};
44
+ $props: Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>;
45
+ $attrs: import("vue").Attrs;
46
+ $refs: {
47
+ [x: string]: unknown;
48
+ };
49
+ $slots: Readonly<{
50
+ [name: string]: import("vue").Slot<any> | undefined;
51
+ }>;
52
+ $root: import("vue").ComponentPublicInstance | null;
53
+ $parent: import("vue").ComponentPublicInstance | null;
54
+ $host: Element | null;
55
+ $emit: (event: string, ...args: any[]) => void;
56
+ $el: any;
57
+ $options: import("vue").ComponentOptionsBase<Readonly<{}> & Readonly<{}>, {
58
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
59
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
60
+ beforeCreate?: (() => void) | (() => void)[];
61
+ created?: (() => void) | (() => void)[];
62
+ beforeMount?: (() => void) | (() => void)[];
63
+ mounted?: (() => void) | (() => void)[];
64
+ beforeUpdate?: (() => void) | (() => void)[];
65
+ updated?: (() => void) | (() => void)[];
66
+ activated?: (() => void) | (() => void)[];
67
+ deactivated?: (() => void) | (() => void)[];
68
+ beforeDestroy?: (() => void) | (() => void)[];
69
+ beforeUnmount?: (() => void) | (() => void)[];
70
+ destroyed?: (() => void) | (() => void)[];
71
+ unmounted?: (() => void) | (() => void)[];
72
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
73
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
74
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
75
+ };
76
+ $forceUpdate: () => void;
77
+ $nextTick: typeof import("vue").nextTick;
78
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
79
+ } & Readonly<{}> & Omit<Readonly<{}> & Readonly<{}>, "sendMessageToIframe"> & {
80
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
81
+ } & {} & import("vue").ComponentCustomProperties & {} & {
82
+ $slots: {
83
+ 'empty-state'?: (props: {}) => any;
84
+ } & {
85
+ loading?: (props: {}) => any;
86
+ } & {
87
+ error?: (props: {}) => any;
88
+ } & {
89
+ content?: (props: {}) => any;
90
+ };
91
+ }) | null, ({
92
+ $: import("vue").ComponentInternalInstance;
93
+ $data: {};
94
+ $props: Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>;
95
+ $attrs: import("vue").Attrs;
96
+ $refs: {
97
+ [x: string]: unknown;
98
+ };
99
+ $slots: Readonly<{
100
+ [name: string]: import("vue").Slot<any> | undefined;
101
+ }>;
102
+ $root: import("vue").ComponentPublicInstance | null;
103
+ $parent: import("vue").ComponentPublicInstance | null;
104
+ $host: Element | null;
105
+ $emit: (event: string, ...args: any[]) => void;
106
+ $el: any;
107
+ $options: import("vue").ComponentOptionsBase<Readonly<{}> & Readonly<{}>, {
108
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
109
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
110
+ beforeCreate?: (() => void) | (() => void)[];
111
+ created?: (() => void) | (() => void)[];
112
+ beforeMount?: (() => void) | (() => void)[];
113
+ mounted?: (() => void) | (() => void)[];
114
+ beforeUpdate?: (() => void) | (() => void)[];
115
+ updated?: (() => void) | (() => void)[];
116
+ activated?: (() => void) | (() => void)[];
117
+ deactivated?: (() => void) | (() => void)[];
118
+ beforeDestroy?: (() => void) | (() => void)[];
119
+ beforeUnmount?: (() => void) | (() => void)[];
120
+ destroyed?: (() => void) | (() => void)[];
121
+ unmounted?: (() => void) | (() => void)[];
122
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
123
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
124
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
125
+ };
126
+ $forceUpdate: () => void;
127
+ $nextTick: typeof import("vue").nextTick;
128
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
129
+ } & Readonly<{}> & Omit<Readonly<{}> & Readonly<{}>, "sendMessageToIframe"> & {
130
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
131
+ } & {} & import("vue").ComponentCustomProperties & {} & {
132
+ $slots: {
133
+ 'empty-state'?: (props: {}) => any;
134
+ } & {
135
+ loading?: (props: {}) => any;
136
+ } & {
137
+ error?: (props: {}) => any;
138
+ } & {
139
+ content?: (props: {}) => any;
140
+ };
141
+ }) | null>;
142
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
143
+ resize: (width: number) => any;
144
+ "resize-start": () => any;
145
+ "resize-end": () => any;
146
+ toggle: () => any;
147
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
148
+ onResize?: ((width: number) => any) | undefined;
149
+ "onResize-start"?: (() => any) | undefined;
150
+ "onResize-end"?: (() => any) | undefined;
151
+ onToggle?: (() => any) | undefined;
152
+ }>, {
153
+ extension: boolean;
154
+ resolvedTheme: "light" | "dark";
155
+ minimized: boolean;
156
+ mode: "bubble" | "split";
157
+ splitPosition: "left" | "right";
158
+ thinking: boolean;
159
+ minWidth: number;
160
+ maxWidth: number;
161
+ open: boolean;
162
+ positionStyle: Record<string, string>;
163
+ animationOrigin: {
164
+ x: string;
165
+ y: string;
166
+ };
167
+ panelWidth: number;
168
+ resizable: boolean;
169
+ noTransition: boolean;
170
+ dragging: boolean;
171
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
172
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
173
+ declare const _default: typeof __VLS_export;
174
+ export default _default;
175
+ type __VLS_WithSlots<T, S> = T & {
176
+ new (): {
177
+ $slots: S;
178
+ };
179
+ };